{"id":41374273,"url":"https://github.com/darklab8/autogit","last_synced_at":"2026-01-23T09:58:44.232Z","repository":{"id":64605484,"uuid":"576718829","full_name":"darklab8/autogit","owner":"darklab8","description":"Automated git conventional commits and semantic versioning","archived":false,"fork":false,"pushed_at":"2025-12-27T16:39:40.000Z","size":6540,"stargazers_count":11,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-12-29T13:47:59.166Z","etag":null,"topics":["changelog","commit-validation","git","git-conventional-commits","git-hooks","semantic-versioning","semver"],"latest_commit_sha":null,"homepage":"https://darklab8.github.io/blog/article/git_conventional_commits.html","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darklab8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-10T18:53:10.000Z","updated_at":"2025-12-27T16:38:47.000Z","dependencies_parsed_at":"2023-01-29T21:45:18.179Z","dependency_job_id":"55dedf39-2ac9-4386-84fb-47792c05dd90","html_url":"https://github.com/darklab8/autogit","commit_stats":null,"previous_names":["darklab8/autogit"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/darklab8/autogit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Fautogit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Fautogit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Fautogit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Fautogit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darklab8","download_url":"https://codeload.github.com/darklab8/autogit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Fautogit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28687413,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T05:48:07.525Z","status":"ssl_error","status_checked_at":"2026-01-23T05:48:07.129Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["changelog","commit-validation","git","git-conventional-commits","git-hooks","semantic-versioning","semver"],"created_at":"2026-01-23T09:58:42.435Z","updated_at":"2026-01-23T09:58:44.226Z","avatar_url":"https://github.com/darklab8.png","language":"Go","readme":"# Autogit\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.png\" style=\"width: 200px; height: 200px;\"/\u003e\n\u003c/p\u003e\n\n**Communicating through git professionally**\n\nautogit is a CLI tool to validate submitted commits according to [git conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) 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.\n\nas 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.\n\n# Features\n\n- hooks to git-hooks and works to validate your git commits to [git conventional commits]((https://www.conventionalcommits.org/en/v1.0.0/)) standard for any git tool.\n  - has extra possible validating rules to configure, like having a minimum of 3 words in a subject of commit.\n  - `autogit hook activate --global`(flag to turn it on for all repos)\n- suggests next [semantic version](https://semver.org/) for your product release with `autogit semver`\n  - has options to suggest the next version as alpha, beta, or pre-release version with build metadata.\n- generates changelogs with `autogit changelog` command\n  - currently supports markdown and bbcode formats\n  - has option `--validate` to run validation of commits (for CI usage)\n- easy create and push of a git tag with auto-inserted changelog through `autogit semver --tag --push`\n- initialize settings for more customization with `autogit init` inside a git repo\n  - uncomment and override desired settings\n- find out more commands and options with `autogit [any set of sub commands] --help`\n- CI-friendly binary file, which not require any dependencies for its usage for everything\n  - see [CI example](.github/workflows/validate.yml)\n  - compiled for linux/windows/macos and amd64/arm64/386/arm\n  - Contains inbuilt git. Not requiring git to be installed for its functionality\n\n\n# Getting started\n\n## text version at ubuntu 22.04:\n- [install latest](#install-latest)\n- install git if not present with `apt install -y git`\n- init git repo if not present `git init \u0026\u0026 git config user.email \"you@example.com\" \u0026\u0026 git config user.name example`\n- activating git hook, `autogit hook activate --global` (optionally global for all repos)\n- write some commits:\n  - `echo 123 \u003e\u003e README.md \u0026\u0026 git add -A \u0026\u0026 git commit -m \"feat: init repo with first code\"`\n  - `echo 123 \u003e\u003e README.md \u0026\u0026 git add -A \u0026\u0026 git commit -m \"fix: memory leak in sql connection opener\"`\n  - `echo 123 \u003e\u003e README.md \u0026\u0026 git add -A \u0026\u0026 git commit -m \"feat: new super feature\"`\n  - `echo 123 \u003e\u003e README.md \u0026\u0026 git add -A \u0026\u0026 git commit -m 'feat!: new super feature'`\n\n`BREAKING CHANGE: api for endpoint status changed to users-status'`\n    - due to bash using `!` as a keyword syntax, we need to use `''` single quotes\n  - `echo 123 \u003e\u003e README.md \u0026\u0026 git add -A \u0026\u0026 git commit -m \"fix(api): example of scoped bug fix\"`\n  - generate changelog with `autogit changelog`\n\n![changelog example](assets/changelog_example.png)\n\n## video version:\n\nhttps://github.com/darklab8/autogit/assets/20555918/44a05f9b-393f-4f6c-aea5-f4732f4fde73\n\n# Installation\n\n## Through golang\n\n- `go install github.com/darklab8/autogit/v2@latest`\n\n## Linux\n\n### Install latest\n\n- install curl if not installed.(`apt update \u0026\u0026 apt install -y curl` for debian/ubuntu)\n- install git if not present (`apt update \u0026\u0026 apt install -y git` for debian/ubuntu)\n- install autogit with `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 \u0026\u0026 sudo chmod 777 /usr/local/bin/autogit`\n- check installation with `autogit version` command. Expect to see `OK autogit version: v{version}`\n\n### install specific version\n\n- install with `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 \u0026\u0026 sudo chmod 777 /usr/local/bin/autogit`\n\n## Windows\n\n- install [Git Bash](https://git-scm.com/downloads)\n- install lautogit `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 \u0026\u0026 chmod 777 ~/bin/autogit.exe`\n- check installation with `autogit version` command. Expect to see `OK autogit version: v{version}`\n\nP.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.\n\n## Code architecture\n\n```mermaid\nflowchart TD\n  UI[Interface-CLI\\nUser interface via Cobra CLI third party lib]\n  UI --\u003e Actions[Actions\\nreusable actions without\\nattachements to UI details]\n  Actions --\u003e SemanticGit[Semantic Git\\nImplements main business logic of repository\\nwith added logic of conventional commits\\nAnd semantic versioning]\n  Actions --\u003e Validator[Validator\\nRules for optional validations]\n  Validator --\u003e SemanticGit\n  Actions --\u003e Changelog[Changelog\\nHow to generate one]\n  Changelog ---\u003e SemanticGit\n    Changelog --\u003e Markdown[in Markdown]\n  Changelog ---\u003e OtherFormats[in other formats]\n\n  SemanticGit --\u003e SemVer[SemVer\\nimplements original Semantic Version\\naccording to SemVer2.0.0 standard\\nImplemented in current repo]\n  SemanticGit --\u003e Git[Git\\ngit wrapper to simple interface\\nfor current repository logic\\nimplemented in current repo]\n  Git --\u003e GitGo[Git-Go\\nEngine under the hood for\\nGit repository operations\\nImplemented by third party]\n```\n\n### Architecture goals\n\n- Unit testable first, everything else later.\n- Justified abstractions will appear with a strict minimal interface to reduce the overall complexity of a code.\n- High usage of `type NewType string` for more self-documentation\n- Trying to find the domain language of the tool\n- Minimize third-party lib dependencies\n- Simplify end-user installation\n- No auto-updates inside the program. Everything should work offline.\n- CI-friendly, zero system dependencies solution\n- Unit testing for Linux, checking for Windows, and compiling for macOS.\n\n# Other docs\n\n- [Article](docs/git-conventional-commits.md)\n- [Algorithms](docs/development/algos.md)\n- [Dev setup](docs/development/dev_setup.md)\n- [Future plans](docs/development/plans.md)\n\n# Contacts\n\n- [@dd84ai](https://github.com/dd84ai) at `dark.dreamflyer@gmail.com`\n- open [Pull Requests with question](https://github.com/darklab8/autogit/issues)\n- [Darklab Discord server](https://discord.gg/aukHmTK82J)\n\n# License\n\nautogit was originally created by Andrei Novoselov (aka darkwind, aka dd84ai)\nThe work is released under GPL license, free to modify, copy and etc. as long as you keep code open source and mentioned original author.\nSee [LICENSE](./LICENSE) file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarklab8%2Fautogit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarklab8%2Fautogit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarklab8%2Fautogit/lists"}