{"id":13432828,"url":"https://github.com/cocogitto/cocogitto","last_synced_at":"2025-05-14T01:08:04.652Z","repository":{"id":37754453,"uuid":"293570349","full_name":"cocogitto/cocogitto","owner":"cocogitto","description":"The Conventional Commits toolbox","archived":false,"fork":false,"pushed_at":"2025-04-16T07:17:14.000Z","size":3214,"stargazers_count":840,"open_issues_count":41,"forks_count":73,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-16T09:17:54.554Z","etag":null,"topics":["changelog","cli","cli-app","conventional-changelog","conventional-commits","git","hacktoberfest","rust","rust-cli","semver","semver-convention","semver-release"],"latest_commit_sha":null,"homepage":"https://docs.cocogitto.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cocogitto.png","metadata":{"funding":{"github":"oknozor"},"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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":"2020-09-07T15:51:44.000Z","updated_at":"2025-04-16T07:17:16.000Z","dependencies_parsed_at":"2023-02-13T01:01:05.300Z","dependency_job_id":"8b193ea6-1ffe-45aa-a4c9-1d6881cc177a","html_url":"https://github.com/cocogitto/cocogitto","commit_stats":{"total_commits":370,"total_committers":28,"mean_commits":"13.214285714285714","dds":0.2189189189189189,"last_synced_commit":"af08a7e86c714fcdd0977d283d4887f3e98b6aa2"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cocogitto%2Fcocogitto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cocogitto%2Fcocogitto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cocogitto%2Fcocogitto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cocogitto%2Fcocogitto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cocogitto","download_url":"https://codeload.github.com/cocogitto/cocogitto/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249228402,"owners_count":21233852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","cli","cli-app","conventional-changelog","conventional-commits","git","hacktoberfest","rust","rust-cli","semver","semver-convention","semver-release"],"created_at":"2024-07-31T02:01:17.187Z","updated_at":"2025-04-19T16:17:02.953Z","avatar_url":"https://github.com/cocogitto.png","language":"Rust","funding_links":["https://github.com/sponsors/oknozor"],"categories":["Rust","git","Projects using Tera","cli","Changelog Tools"],"sub_categories":["Editor Support","CLI Tools"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg\n    width=\"250\"\n    src=\"./docs/logo/COCOGITTO_LP_LOGO_TEXT_72dpi.png\"\n    alt=\"Cocogitto – The conventional commits tool box\"\n  /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/cocogitto/cocogitto/actions\"\n    \u003e\u003cimg\n      src=\"https://github.com/cocogitto/cocogitto/workflows/CI/badge.svg\"\n      alt=\"GitHub Actions workflow status\"\n  /\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/cocogitto/cocogitto\"\n    \u003e\u003cimg\n      src=\"https://codecov.io/gh/cocogitto/cocogitto/branch/main/graph/badge.svg\"\n      alt=\"Code coverage status\"\n  /\u003e\u003c/a\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://conventionalcommits.org\"\n    \u003e\u003cimg\n      src=\"https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg\"\n      alt=\"Conventional commits\"\n  /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/cocogitto/cocogitto/blob/main/LICENSE\"\n    \u003e\u003cimg\n      src=\"https://img.shields.io/github/license/cocogitto/cocogitto\"\n      alt=\"Repository license\"\n  /\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/WeZRdhtuf6\"\u003e\n    \u003cimg alt=\"Discord logo\" src=\"https://img.shields.io/discord/951009223121195021?color=blue\u0026logo=discord\"\u003e\n  \u003c/a\u003e\n\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://docs.cocogitto.io\"\u003eWebsite\u003c/a\u003e\n  ·\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\n  ·\n  \u003ca href=\"https://docs.cocogitto.io/config\"\u003eConfiguration\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1\u003e\u003c/h1\u003e\n\n**The Conventional Commits toolbox**\n\n- **Verified commits:** create conventional compliant commits with ease.\n- **Automatic Version bump and changelog:** automatically bump versions and generate changelogs with your own custom steps\n  and workflows.\n- **Release profiles:** your branching model requires different steps for releases, pre-release, hotfixes ? We got you\n  covered !\n- **Depends only on libgit2:** cocogitto has one standalone binary, the only system dependency is libgit2.\n- **Conventional git log:** search your commit history matching Conventional Commits items such as scope and commit type.\n- **GitHub integration:** enforce the conventional commits specification with our GitHub action and bot.\n- **Monorepo support:** Automatic versioning for mono-repositories is supported out of the box.\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://docs.cocogitto.io/\"\u003e\u003cstrong\u003eExplore Cocogitto's docs\u0026nbsp;\u0026nbsp;▶\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Foreword\n\n### What is it ?\n\nCocogitto is a CLI and GitOps toolbox for the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)\nand [Semver](https://semver.org/) specifications.\n\n### Why ?\n\nThere are plenty of tools listed on\nthe [conventional commits website](https://www.conventionalcommits.org/en/about/)\nto help you generate changelog, git hooks, commit template etc. Some of them are specifically designed for the\nConventional Commits specification, and some of them are general purpose.\n\n**Cocogitto was designed to help you respect the\nconventional and semver standard and is not intended to be used in any other context.**\n\nIt strives to be a set of simple, modern and fast command line interfaces.\n\n### Goals\n\n- Make using the conventional commits spec easy and fun.\n- Enable people to focus on their work instead of correcting small mistakes and typos.\n- Enforce correctness regarding Semver and Conventional Commits.\n- Automate things when possible (ex: bumping versions).\n\n### Non goals\n\n- Cocogitto is not a `git` replacement. It uses some of libgit2 but only to provide features related to the\n  Conventional Commits specification. Anything else shall be done with `git`.\n- Supporting other commit conventions or git workflows.\n\n## Quick start\n\nThis readme is a quick tour of what you can do with Cocogitto, for an in-depth guide please refer\nto [the documentation](https://docs.cocogitto.io).\n\n## Installation\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/cocogitto.svg)](https://repology.org/project/cocogitto/versions)\n\n#### Archlinux\n\n```shell\npacman -S cocogitto\n```\n\n#### Cargo\n\n```shell\ncargo install --locked cocogitto\n```\n\n#### NixOS\n\n```shell\nnix-env -iA cocogitto\n```\n\n#### Void Linux\n\n```shell\nxbps-install cocogitto\n```\n\n#### MacOS\n\n```shell\nbrew install cocogitto\n```\n\n## Conventional commits\n\nTo create conventional commits you can use the `cog commit` command.\nIt has subcommands for the default `fix` and `feat` Conventional Commits types\nplus the [angular commit](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines)\nconventional commit types.\n\n**Example:**\n\n```shell\n# With cog\ncog commit feat \"add awesome feature\"\n\n# With git\ngit commit -m \"feat: add awesome feature\"\n```\n\nSee [User guide -\u003e Conventional commits](https://docs.cocogitto.io/guide/commit#conventional-commits).\n\n## Configuration\n\nUse `cog.toml` file to configure your usage of Cocogitto.\n\nFor the full list of options, see [User guide -\u003e  Configuration reference](https://docs.cocogitto.io/reference/config#configuration-reference).\n\n## Auto-bumps\n\nCreating a version with `cog bump` will perform the following actions :\n\n1. Determine a version number according to your commit history.\n2. Perform configuration defined pre-bump commands.\n3. Append the version's changelog to your repository changelog file.\n4. Create a version commit and tag it.\n5. Perform post-bump commands\n\n**Example:**\n\n```shell\n# File: cog.toml\npre_bump_hooks = [\n    \"echo {{version}}\",\n]\n\n\npost_bump_hooks = [\n    \"git push\",\n    \"git push origin {{version}}\",\n]\n\n[changelog]\npath = \"CHANGELOG.md\"\ntemplate = \"remote\"\nremote = \"github.com\"\nrepository = \"cocogitto_bot_playground\"\nowner = \"cocogitto\"\nauthors = [\n  { username = \"oknozor\", signature = \"Paul Delafosse\"}\n]\n```\n\n![cog bump example](./docs/assets/cog-bump-example.png)\n\n## Changelogs\n\n`cog changelog` uses [tera](https://keats.github.io/tera/) templates to generate markdown changelogs. It has several built-in\ntemplates, and you can define your own.\n\n**Example:**\n\n```shell\ncog changelog\n```\n\nOutput :\n\n```markdown\n## 1.2.0 - 2021-11-26\n\n#### Bug Fixes\n\n- **(parser)** handle lowercase identifier - (7521015) - *oknozor*\n- handle unknown flag - (e2388dc) - oknozor\n\n#### Features\n\n- **(parser)** simple parser implementation - (0b25eb6) - *oknozor*\n- add a new cli flag - (ff84173) - oknozor\n\n#### Miscellaneous Chores\n\n- **(version)** 1.2.0 - (15d1333) - *oknozor*\n\n#### Refactoring\n\n- **(parser)** use a parser interface instead of concrete impl - (ea24c36) - *oknozor*\n\n#### Tests\n\n- add integration test - (bae629c) - *oknozor*\n```\n\nSee [User guide -\u003e Changelogs](https://docs.cocogitto.io/guide/#changelogs).\n\n## Docker\n\nThere is a docker image for `cog` available [ghcr.io/cocogitto/latest](https://github.com/cocogitto/cocogitto/pkgs/container/cog).\n\n**Usage:**\n\n```shell\ndocker pull ghcr.io/cocogitto/cog:latest\ndocker run -t -v \"$(pwd)\":/app/ check\n```\n\nNote that you need to mount a volume pointing to your target directory for `cog` to be able to operate on your git log.\n\nSee [Docker -\u003e  Using cocogitto with docker](./docker/#Using-cocogitto-with-docker).\n\n## GitHub integration\n\n**GitHub action:**\n\nYou can run cog check and perform automatic releases via GitHub action\nusing [cocogitto-action](https://github.com/cocogitto/cocogitto-action).\n\n**Example:**\n```yaml\n  - name: Semver release\n    uses: cocogitto/cocogitto-action@main\n    with:\n      release: true\n      git-user: 'Cog Bot'\n      git-user-email: 'mycoolproject@org.org'\n```\n\nSee [Github integration -\u003e GitHub action](https://docs.cocogitto.io/ci_cd/action#github-action)\n\n**GitHub bot:**\n\n[cocogitto-bot](https://github.com/apps/cocogitto-bot) is a standalone, zero-config bot checking your pull requests\nagainst the Conventional Commits specification.\n\n![cog bot example](./docs/assets/cog-bot-example.png)\n\nSee [Github integration -\u003e GitHub-bot](https://docs.cocogitto.io/ci_cd/#github-bot)\n\n## Similar projects\n\n- [git-cliff](https://github.com/orhun/git-cliff)\n- [convco](https://github.com/convco/convco)\n- [koji](https://github.com/its-danny/koji)\n- [semantic-release](https://semantic-release.gitbook.io)\n- [commitlint](https://github.com/conventional-changelog/commitlint)\n- [cargo-smart-release](https://github.com/byron/gitoxide/tree/a1c68da4b0fa080a383cbbfa50fd54e8bb45330c/cargo-smart-release)\n\n## Contributing\n\nFound a bug, have a suggestion for a new feature? Please read the [contribution guideline](CONTRIBUTING.md) and [submit an issue](https://github.com/cocogitto/cocogitto/issues/new/choose).\n\n## Licence\n\nAll the code in this repository is released under the MIT License, for more information take a look at\nthe [LICENSE](LICENSE) file.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcocogitto%2Fcocogitto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcocogitto%2Fcocogitto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcocogitto%2Fcocogitto/lists"}