{"id":25947433,"url":"https://github.com/chocolacula/verbm","last_synced_at":"2025-03-04T10:19:31.731Z","repository":{"id":262087704,"uuid":"886180757","full_name":"chocolacula/verbm","owner":"chocolacula","description":"language agnostic version bump tool","archived":false,"fork":false,"pushed_at":"2025-01-25T16:20:45.000Z","size":159,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-01T13:19:00.637Z","etag":null,"topics":["bump","versioning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chocolacula.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":"2024-11-10T12:20:22.000Z","updated_at":"2025-01-25T16:20:49.000Z","dependencies_parsed_at":"2024-11-10T13:29:34.513Z","dependency_job_id":"40d5bf8e-376b-4dc4-bfcd-b8bfd5c0c371","html_url":"https://github.com/chocolacula/verbm","commit_stats":null,"previous_names":["chocolacula/verbum","chocolacula/verbm"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chocolacula%2Fverbm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chocolacula%2Fverbm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chocolacula%2Fverbm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chocolacula%2Fverbm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chocolacula","download_url":"https://codeload.github.com/chocolacula/verbm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241827070,"owners_count":20026601,"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":["bump","versioning"],"created_at":"2025-03-04T10:19:31.294Z","updated_at":"2025-03-04T10:19:31.716Z","avatar_url":"https://github.com/chocolacula.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/chocolacula/verbm/refs/heads/main/readme/logo.png\" alt=\"logo\" /\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003everbm\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/chocolacula/verbm/actions/workflows/mypy.yml\"\u003e\u003cimg src=\"https://github.com/chocolacula/verbm/actions/workflows/mypy.yml/badge.svg\" alt=\"mypy\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/chocolacula/verbm/actions/workflows/test.yml\"\u003e\u003cimg src=\"https://github.com/chocolacula/verbm/actions/workflows/test.yml/badge.svg\" alt=\"test\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/chocolacula/verbm\"\u003e\u003cimg src=\"https://codecov.io/gh/chocolacula/verbm/graph/badge.svg?token=KBSAZR4JKI\" alt=\"codecov\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://docs.python.org/3/whatsnew/3.9.html\"\u003e\u003cimg src=\"https://img.shields.io/badge/Python-3.9-blue?logo=python\u0026logoColor=fff\" alt=\"python3.9\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/verbm\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/verbm?logo=pypi\u0026logoColor=fff\" alt=\"pypi\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/verbm\"\u003e\u003cimg src=\"https://img.shields.io/pypi/dd/verbm\" alt=\"downloads\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nLanguage agnostic **VER**sion **B**u**M**p tool that simplifies routine version management. Its capabilities include:\n\n- `set` version, `up` or `down` specific version component\n- modify the version in the source code, make a commit, and create a tag\n- analyze git history to automatically determine which component to increment\n- support monorepos, you can manage a few versions in one repo\n- support squash commits\n- be easily customized to fit your needs!\n\nIt similar to [bumpr](https://github.com/noirbizarre/bumpr), [tbump](https://github.com/your-tools/tbump) or [bump2version](https://github.com/c4urself/bump2version?tab=readme-ov-file) but it automates most of the work.\n\n## Installation\n\nMake sure Python 3.9 or later, along with `pip` or `pipx`, is installed.\n\n```sh\npipx install verbm\n```\n\n## Usage\n\nTo begin, you need a configuration file. You can use `verbm` to generate a well documented default configuration file by running the following command:\n\n```sh\ncd /path/to/project\n\nverbm init\n```\n\nIt will attempt to retrieve the current version from the latest `git` tag, as well as the user's name and email. If these attempts are unsuccessful, it will use default placeholders instead. The current [version.yml](./version.yml) in the project is an ideal example of a default configuration file.\n\nThe basic commands are `get` and `set`:\n\n```sh\nverbm get\n\nverbm set 0.1.3-rc\n```\n\nIt's possible to ensure version consistency across all source files:\n\n```sh\nverbm validate --file /path/to/version.yml\n```\n\n\u003e Most commands support the `--file` option and can be executed from a different directory.\n\nYou can increment or decrement a specific component of the semantic versioning by:\n\n```sh\nverbm up patch\nverbm down minor\n```\n\nHowever, the most intriguing option is to analyze the output of `git log` and decide which component to increment. With the following options it updates source files, creates a commit and tag, and pushes these changes to the repository with a single command:\n\n```sh\nverbm up auto --commit --tag --push\n```\n\nVerbm follows the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) style but is slightly relaxed by default.\nIt checks both the commit message and the description. This enables the analysis of GitHub and GitLab **squash** commits, which gather all commits in the description each beginning with an `*` asterisk symbol.\n\nCommit tags for specific version components can be easily customized in the configuration file using regular expressions.\n\nIf your project includes multiple subprojects and you want to use separate `version.yml` files, it can become challenging due to the `git log` containing commits that affect multiple subprojects simultaneously. To address this, use the `--filter` argument.\n\n```sh\nverbm up auto --filter '/src/subproject/.*' '/src/common/.*'\n```\n\nAnd files that have been changed but do not match the specified regex will be excluded from the log.\n\n## Contributing\n\nIf you are not familiar with Python, I recommend create a virtual environment first, then install dev dependencies:\n\n```sh\npython3 -m venv .venv\n\nsource .venv/bin/activate\n\npip install -r requirements.txt\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchocolacula%2Fverbm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchocolacula%2Fverbm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchocolacula%2Fverbm/lists"}