sbt/sbt-git
63.5
Adequate · 20 September 2026
837
lines of production code
Scala
primary language
1
measurement over time
What this system is
This system is an SBT plugin designed to manage Git-based versioning for Scala projects. It provides configurable backends, allowing users to choose between the system Git executable and the embedded JGit library, with a default preference for the system Git. The plugin handles tag detection, version description, and uncommitted change tracking to generate accurate build versions.
Features
Initial project scaffolding and configuration
This change introduces the foundational configuration files for the sbt-git plugin, including a \.gitignore\ to exclude build artifacts, a \.scalafmt.conf\ to enforce code formatting (version 3.11.5), and a \.scala-steward.conf\ to pin dependency updates for JGit and Scala library. It also adds a \LICENSE\ file under the BSD license, a \README.md\ detailing installation and usage for Java 8+, and a \RELEASE.md\ outlining the GitHub Actions release process.
(repo-wide) · high confidence
Removals
Removal of built-in Git plugin and runner abstractions
The \GitPlugin\ and its associated \GitRunner\ implementations (including \JGitRunner\ and \ConsoleGitRunner\) have been removed from the codebase. This eliminates the previously available SBT plugin functionality that allowed builds to interact with Git repositories via JGit or shell commands, meaning users can no longer use the provided \gitRunner\ task or related keys for Git operations within their SBT builds.
src/main/scala · high confidence
Behavioural changes
Introduce configurable Git backend selection (System Git vs JGit)
Users can now choose which Git implementation the plugin uses for reading repository metadata and running operations. The new \git-read-backend\ and \git-operation-backend\ settings allow selecting between the system \git\ executable and the embedded JGit library, with options to prefer system git, use it exclusively, or force JGit. By default, the plugin now prefers the system \git\ executable, falling back to JGit only if system git is unavailable. This change also introduces \ConsoleGitReadableOnly\ and \ConsoleGitRunner\ to handle system git interactions, providing a more consistent and performant experience when the system git is present, while maintaining JGit as a reliable fallback for environments where system git is missing or incompatible.
src/main/scala/com · high confidence
Test coverage
Add scripted tests for git versioning and backend configuration; Added scripted tests for git-versioning scenarios; Added unit tests for SbtGit SCM parsing and Git backend selection.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 64.
Lenses
- Code Health 95
- Architecture 100
- Maturity 56
- Readiness 59
- Security 70
Changes since last survey
- 300 commits — 292 feature/other, 8 fixes
By area
- (repo) — 137 commits
- (root) — 81 commits
- project/build.properties — 31 commits
- src/main — 17 commits
- project/plugins.sbt — 16 commits
- .github/workflows — 12 commits
- src/sbt-test — 5 commits
- .github/dependabot.yml — 1 commit
Notable commits
- fix: Feedback from PR, fix more Scala3 syntax hints
- fix: Fix Scala 3 compiler warnings
- fix: Fix Scala 3 errors, sbt deprecation warnings
- fix: Fix console reader issues (#219)
- fix: Fix versioning on CI
- fix: Merge pull request #256 from BillyAutrey/fix-sbt-deprecation-warnings
- fix: Revert "Remove GitVersioning plugin, we use sbt-ci-release + dynver"
- fix: Update to newer JavaConverters, fix type error in Scala3
- change: Add 'Reformat with scalafmt 3.8.5' to .git-blame-ignore-revs
- change: Add build matrix, and build for sbt 2.0 (#260)
- change: Add dependabot.yml for GitHub Actions update
- change: Add scala3/sbt2 crossbuild, raise 2.12 sbt minversion
- change: Added support for different git describe patterns and tagToVersion functions across modules in a multi-module project
- change: Adding a describedVersion(...) for ConsoleGitReadableOnly
- change: Align Scala 3 version with sbt-2.0.0-M3
- change: Align system git read semantics
- change: Allow changing useConsoleForROGit by using a environment variable
- change: Bump actions/checkout from 4 to 5
- change: Bump actions/checkout from 5 to 6
- change: Bump actions/checkout from 6 to 7
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
sbt/sbt-git was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 2ebd515f8526eaf049a13f1152406a76eb025ae8 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.