Communicating through git professionally
autogit is a CLI tool to validate submitted commits according to git conventional commits standard. the tool allows to generate changelogs for releases in different formats. the ability to see quickly how your changelog looks motivates you to write more meaningful commits.
as a result of the tool work, you have decreased toll on release documentation writing, you communicate developer work better to other developers/users, and have a more professional-looking repository in terms of commits, tags, versions, releases, and changelogs.
autogit hook activate --global
(flag to turn it on for all repos)autogit semver
autogit changelog
command
--validate
to run validation of commits (for CI usage)autogit semver --tag --push
autogit init
inside a git repo
autogit [any set of sub commands] --help
apt install -y git
git init && git config user.email "you@example.com" && git config user.name example
autogit hook activate --global
(optionally global for all repos)echo 123 >> README.md && git add -A && git commit -m "feat: init repo with first code"
echo 123 >> README.md && git add -A && git commit -m "fix: memory leak in sql connection opener"
echo 123 >> README.md && git add -A && git commit -m "feat: new super feature"
echo 123 >> README.md && git add -A && git commit -m 'feat!: new super feature'
BREAKING CHANGE: api for endpoint status changed to users-status'
!
as a keyword syntax, we need to use ''
single quotes
echo 123 >> README.md && git add -A && git commit -m "fix(api): example of scoped bug fix"
autogit changelog
https://github.com/darklab8/autogit/assets/20555918/44a05f9b-393f-4f6c-aea5-f4732f4fde73
go install github.com/darklab8/autogit/v2@latest
apt update && apt install -y curl
for debian/ubuntu)apt update && apt install -y git
for debian/ubuntu)sudo rm $(which autogit) ; sudo rm /usr/local/bin/autogit ; sudo curl -L $(curl -Ls -o /dev/null -w %{url_effective} https://github.com/darklab8/autogit/releases/latest | sed "s/releases\/tag/releases\/download/")/autogit-linux-amd64 -o /usr/local/bin/autogit && sudo chmod 777 /usr/local/bin/autogit
autogit version
command. Expect to see OK autogit version: v{version}
sudo rm $(which autogit) ; sudo rm /usr/local/bin/autogit ; sudo curl -L https://github.com/darklab8/autogit/releases/download/v{VERSION}/autogit-linux-amd64 -o /usr/local/bin/autogit && sudo chmod 777 /usr/local/bin/autogit
mkdir -p ~/bin ; rm $(which autogit) ; curl -L $(curl -Ls -o /dev/null -w %{url_effective} https://github.com/darklab8/autogit/releases/latest | sed "s/releases\/tag/releases\/download/")/autogit-windows-amd64.exe -o ~/bin/autogit.exe && chmod 777 ~/bin/autogit.exe
autogit version
command. Expect to see OK autogit version: v{version}
P.S. ~/bin/autogit.exe
must be any valid bin path (echo $PATH
, echo %PATH%
to get the list) accessable by your tool from where u are going to use it.
flowchart TD
UI[Interface-CLI\nUser interface via Cobra CLI third party lib]
UI --> Actions[Actions\nreusable actions without\nattachements to UI details]
Actions --> SemanticGit[Semantic Git\nImplements main business logic of repository\nwith added logic of conventional commits\nAnd semantic versioning]
Actions --> Validator[Validator\nRules for optional validations]
Validator --> SemanticGit
Actions --> Changelog[Changelog\nHow to generate one]
Changelog ---> SemanticGit
Changelog --> Markdown[in Markdown]
Changelog ---> OtherFormats[in other formats]
SemanticGit --> SemVer[SemVer\nimplements original Semantic Version\naccording to SemVer2.0.0 standard\nImplemented in current repo]
SemanticGit --> Git[Git\ngit wrapper to simple interface\nfor current repository logic\nimplemented in current repo]
Git --> GitGo[Git-Go\nEngine under the hood for\nGit repository operations\nImplemented by third party]
type NewType string
for more self-documentationdark.dreamflyer@gmail.com
autogit was originally created by Andrei Novoselov (aka darkwind, aka dd84ai) The work is released under GPL license, free to modify, copy and etc. as long as you keep code open source and mentioned original author. See LICENSE file for details.