{"id":50503091,"url":"https://github.com/jimisola/git-dyn-semver-gradle-plugin","last_synced_at":"2026-06-02T13:03:59.864Z","repository":{"id":355940511,"uuid":"1230320940","full_name":"jimisola/git-dyn-semver-gradle-plugin","owner":"jimisola","description":"Gradle plugin that sets project version from git tags using Conventional Commits bump logic. Pure JGit — no git CLI required.","archived":false,"fork":false,"pushed_at":"2026-06-01T11:04:40.000Z","size":113,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T12:27:41.808Z","etag":null,"topics":["automation","conventional-commits","git","git-tag","gradle-plugin","jgit","semantic-versioning","semver","versioning"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","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/jimisola.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-05T22:13:49.000Z","updated_at":"2026-06-01T10:59:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jimisola/git-dyn-semver-gradle-plugin","commit_stats":null,"previous_names":["jimisola/git-dyn-semver-gradle-plugin"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/jimisola/git-dyn-semver-gradle-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimisola%2Fgit-dyn-semver-gradle-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimisola%2Fgit-dyn-semver-gradle-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimisola%2Fgit-dyn-semver-gradle-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimisola%2Fgit-dyn-semver-gradle-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jimisola","download_url":"https://codeload.github.com/jimisola/git-dyn-semver-gradle-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimisola%2Fgit-dyn-semver-gradle-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33822823,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["automation","conventional-commits","git","git-tag","gradle-plugin","jgit","semantic-versioning","semver","versioning"],"created_at":"2026-06-02T13:03:59.125Z","updated_at":"2026-06-02T13:03:59.858Z","avatar_url":"https://github.com/jimisola.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Commit Activity](https://img.shields.io/github/commit-activity/m/jimisola/git-dyn-semver-gradle-plugin?label=commits\u0026style=for-the-badge)](https://github.com/jimisola/git-dyn-semver-gradle-plugin/pulse)\n[![GitHub Issues](https://img.shields.io/github/issues/jimisola/git-dyn-semver-gradle-plugin?style=for-the-badge\u0026logo=github)](https://github.com/jimisola/git-dyn-semver-gradle-plugin/issues)\n[![License](https://img.shields.io/github/license/jimisola/git-dyn-semver-gradle-plugin?style=for-the-badge\u0026logo=opensourceinitiative)](https://opensource.org/license/mit/)\n[![Build](https://img.shields.io/github/actions/workflow/status/jimisola/git-dyn-semver-gradle-plugin/build.yml?style=for-the-badge\u0026logo=github)](https://github.com/jimisola/git-dyn-semver-gradle-plugin/actions/workflows/build.yml)\n\n# Git Dynamic Semantic Versioning Gradle Plugin\n\nGradle plugin that automatically sets the project version from git tags using [Conventional Commits](https://www.conventionalcommits.org/) bump logic. Pure JGit — no git CLI required.\n\n## Overview\n\nOn every build the plugin walks back to the nearest semver tag and computes the next version based on the commit messages since that tag:\n\n| Commits since tag | Highest bump | Example result |\n|---|---|---|\n| None | — | `1.2.3` (exact tag, release build) |\n| `fix:` only | patch | `1.2.4-3-SNAPSHOT` |\n| `feat:` present | minor | `1.3.0-3-SNAPSHOT` |\n| `feat!:` or `BREAKING CHANGE:` present | major | `2.0.0-3-SNAPSHOT` |\n| No reachable tag | — | `0.1.0-5-SNAPSHOT` |\n\nThe snapshot version format is `{next-version}-{distance}-SNAPSHOT` where `distance` is the number of commits since the tag.\n\n## Installation\n\nAdd the plugin to your `build.gradle.kts`:\n\n```kotlin\nplugins {\n    id(\"io.github.jimisola.git-dyn-semver\") version \"\u003cversion\u003e\"\n}\n```\n\nOr `build.gradle`:\n\n```groovy\nplugins {\n    id 'io.github.jimisola.git-dyn-semver' version '\u003cversion\u003e'\n}\n```\n\nThat's it — the project version is set automatically. No further configuration required.\n\n## Configuration\n\nAll settings are optional. The `gitDynSemVer` extension is available to customise behaviour:\n\n```kotlin\ngitDynSemVer {\n    includeBuildNumber.set(true)   // default: true\n    snapshotSuffix.set(\"SNAPSHOT\") // default: \"SNAPSHOT\"\n}\n```\n\n| Property | Type | Default | Description |\n|---|---|---|---|\n| `includeBuildNumber` | `Property\u003cBoolean\u003e` | `true` | Include commit distance in snapshot versions, e.g. `1.3.0-4-SNAPSHOT` vs `1.3.0-SNAPSHOT` |\n| `snapshotSuffix` | `Property\u003cString\u003e` | `\"SNAPSHOT\"` | Suffix appended to pre-release versions |\n\n### Forcing a specific version\n\nPass `-Pversion.force=X.Y.Z` on the command line to override the computed version. Useful in CI release pipelines:\n\n```bash\n./gradlew publish -Pversion.force=1.5.0\n```\n\n## Task reference\n\n### `printVersion`\n\nPrints the resolved project version to stdout. Useful for inspecting the computed version before publishing:\n\n```bash\n./gradlew printVersion\n```\n\n## Tagging conventions\n\nThe plugin matches tags of the form `{major}.{minor}.{patch}` (no prefix). Create a release tag with:\n\n```bash\ngit tag 1.2.3\ngit push origin 1.2.3\n```\n\nBoth lightweight and annotated tags are supported.\n\n## Contributing\n\nContributions are welcome. Please open an issue or pull request on [GitHub](https://github.com/jimisola/git-dyn-semver-gradle-plugin).\n\n## License\n\nMIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimisola%2Fgit-dyn-semver-gradle-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjimisola%2Fgit-dyn-semver-gradle-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimisola%2Fgit-dyn-semver-gradle-plugin/lists"}