Code Ownership
Ownership is measured by how many commits each author made to each file in the current tree. It highlights bus-factor risk (files only one person has ever touched) and where knowledge is concentrated. The bus factor is the smallest number of people who are, between them, primary owner of more than half of the files.
- Files Tracked
- 4,760
- in the current tree
- Bus Factor
- 5
- 5 authors are primary owner of 2,427 of 4,760 files
- Single-Owner Files
- 1,855
- 39.0% of tracked files
- Contributors
- 1,935
- authors who changed files
Bus factor risk — single-owner files
Files only one author has ever changed. The more a file has changed, the more knowledge is at risk if that person leaves.
| File | Sole owner | Commits |
|---|---|---|
| Documentation/RelNotes/2.56.0.adoc | Junio C Hamano | 32 |
| Documentation/RelNotes/2.55.0.adoc | Junio C Hamano | 22 |
| Documentation/RelNotes/2.98.0.adoc | Junio C Hamano | 13 |
| t/t7424-submodule-mixed-ref-formats.sh | Patrick Steinhardt | 12 |
| odb/source-files.h | Patrick Steinhardt | 11 |
| diff-merges.h | Sergey Organov | 11 |
| odb/source-packed.h | Patrick Steinhardt | 10 |
| po/AGENTS.md | Jiang Xin | 10 |
| odb/source-loose.h | Patrick Steinhardt | 8 |
| odb/source.c | Patrick Steinhardt | 8 |
Table: the 100 most-changed of 1,855 single-owner files
| File | Sole owner | Commits |
|---|---|---|
| Documentation/RelNotes/2.56.0.adoc | Junio C Hamano | 32 |
| Documentation/RelNotes/2.55.0.adoc | Junio C Hamano | 22 |
| Documentation/RelNotes/2.98.0.adoc | Junio C Hamano | 13 |
| t/t7424-submodule-mixed-ref-formats.sh | Patrick Steinhardt | 12 |
| odb/source-files.h | Patrick Steinhardt | 11 |
| diff-merges.h | Sergey Organov | 11 |
| odb/source-packed.h | Patrick Steinhardt | 10 |
| po/AGENTS.md | Jiang Xin | 10 |
| odb/source-loose.h | Patrick Steinhardt | 8 |
| odb/source.c | Patrick Steinhardt | 8 |
| reftable/system.c | Patrick Steinhardt | 8 |
| GIT-BUILD-OPTIONS.in | Patrick Steinhardt | 8 |
| src/hash.rs | brian m. carlson | 7 |
| t/t7425-submodule-gitdir-path-extension.sh | Adrian Ratiu | 7 |
| t/lib-subtest.sh | Ævar Arnfjörð Bjarmason | 6 |
| reftable/reftable-basics.h | Patrick Steinhardt | 5 |
| reftable/reftable-table.h | Patrick Steinhardt | 5 |
| contrib/meson.build | Patrick Steinhardt | 5 |
| t/unit-tests/clar/.github/workflows/ci.yml | Patrick Steinhardt | 5 |
| t/t7706-repack-drop-filtered.sh | Siddharth Shrimali | 5 |
| Documentation/git-last-modified.adoc | Toon Claes | 5 |
| parallel-checkout.h | Matheus Tavares | 5 |
| t/t0611-reftable-httpd.sh | Patrick Steinhardt | 4 |
| odb/source-inmemory.h | Patrick Steinhardt | 4 |
| oss-fuzz/meson.build | Patrick Steinhardt | 4 |
| reftable/reftable-block.h | Patrick Steinhardt | 4 |
| t/unit-tests/clar/clar.h | Patrick Steinhardt | 4 |
| add-patch.h | Patrick Steinhardt | 4 |
| t/unit-tests/unit-test.h | Patrick Steinhardt | 4 |
| t/unit-tests/clar/clar/sandbox.h | Patrick Steinhardt | 4 |
| reftable/table.h | Patrick Steinhardt | 4 |
| Documentation/technical/paint-down-to-common.adoc | Kristofer Karlsson | 4 |
| t/t0034-root-safe-directory.sh | Carlo Marcelo Arenas Belón | 4 |
| subprojects/expat.wrap | Patrick Steinhardt | 3 |
| subprojects/pcre2.wrap | Patrick Steinhardt | 3 |
| contrib/completion/meson.build | Patrick Steinhardt | 3 |
| t/unit-tests/clar/generate.py | Patrick Steinhardt | 3 |
| t/unit-tests/clar/test/expected/quiet | Patrick Steinhardt | 3 |
| t/unit-tests/clar/test/expected/summary_with_filename | Patrick Steinhardt | 3 |
| t/unit-tests/clar/test/expected/summary_without_filename | Patrick Steinhardt | 3 |
| t/unit-tests/clar/test/expected/tap | Patrick Steinhardt | 3 |
| t/unit-tests/clar/test/expected/without_arguments | Patrick Steinhardt | 3 |
| t/unit-tests/clar/test/selftest.c | Patrick Steinhardt | 3 |
| ci/run-rust-checks.sh | Patrick Steinhardt | 3 |
| t/unit-tests/clar/test/CMakeLists.txt | Patrick Steinhardt | 3 |
| t/unit-tests/clar/test/main.c | Patrick Steinhardt | 3 |
| t/unit-tests/clar/clar/summary.h | Patrick Steinhardt | 3 |
| contrib/credential/netrc/meson.build | Patrick Steinhardt | 3 |
| bin-wrappers/wrap-for-bin.sh | Patrick Steinhardt | 3 |
| ci/run-style-check.sh | Karthik Nayak | 3 |
| t/interop/interop-lib.sh | Jeff King | 3 |
| Documentation/lint-documentation-style.perl | Jean-Noël Avila | 3 |
| t/t4218-log-graph-indentation.sh | Pablo Sabater | 3 |
| trace2/tr2_tbuf.h | Jeff Hostetler | 3 |
| t/t5100/msg0002 | Junio C Hamano | 2 |
| t/t5100/msg0003 | Junio C Hamano | 2 |
| t/t5100/info0014 | Junio C Hamano | 2 |
| t/t5100/msg0014 | Junio C Hamano | 2 |
| subprojects/curl.wrap | Patrick Steinhardt | 2 |
| subprojects/openssl.wrap | Patrick Steinhardt | 2 |
| subprojects/zlib.wrap | Patrick Steinhardt | 2 |
| reftable/reftable-system.h | Patrick Steinhardt | 2 |
| tools/meson.build | Patrick Steinhardt | 2 |
| t/t3450-history.sh | Patrick Steinhardt | 2 |
| t/unit-tests/clar/test/suites/combined.c | Patrick Steinhardt | 2 |
| Cargo.toml | Patrick Steinhardt | 2 |
| src/varint.rs | Patrick Steinhardt | 2 |
| t/unit-tests/clar/test/expected/help | Patrick Steinhardt | 2 |
| t/unit-tests/clar/test/expected/specific_test | Patrick Steinhardt | 2 |
| t/unit-tests/clar/test/expected/stop_on_failure | Patrick Steinhardt | 2 |
| t/unit-tests/clar/test/expected/suite_names | Patrick Steinhardt | 2 |
| t/unit-tests/clar/test/expected/summary.xml | Patrick Steinhardt | 2 |
| t/unit-tests/clar/test/selftest.h | Patrick Steinhardt | 2 |
| t/unit-tests/clar/CMakeLists.txt | Patrick Steinhardt | 2 |
| t/unit-tests/clar/clar/fixtures.h | Patrick Steinhardt | 2 |
| gitweb/meson.build | Patrick Steinhardt | 2 |
| templates/meson.build | Patrick Steinhardt | 2 |
| t/t5413-connectivity-check.sh | Kristofer Karlsson | 2 |
| Documentation/technical/connectivity-check.adoc | Kristofer Karlsson | 2 |
| t/perf/p5413-connectivity-check.sh | Kristofer Karlsson | 2 |
| Documentation/git-diff-pairs.adoc | Justin Tobler | 2 |
| builtin/diff-pairs.c | Justin Tobler | 2 |
| t/t4070-diff-pairs.sh | Justin Tobler | 2 |
| t/perf/p6010-merge-base.sh | René Scharfe | 2 |
| t/t4051/hello.c | René Scharfe | 2 |
| compat/memmem.c | René Scharfe | 2 |
| t/t7505/expected-rebase-i | Phillip Wood | 2 |
| tools/coccinelle/hash.cocci | Jeff King | 2 |
| t/interop/README | Jeff King | 2 |
| t/lib-chunk/corrupt-chunk-file.pl | Jeff King | 2 |
| t/t5559-http-fetch-smart-http2.sh | Jeff King | 2 |
| t/perf/p5304-prune.sh | Jeff King | 2 |
| t/perf/lib-pack.sh | Jeff King | 2 |
| t/perf/p5550-fetch-tags.sh | Jeff King | 2 |
| t/perf/bisect_run_script | Christian Couder | 2 |
| po/af.po | Stéfan Driaan Turvey | 2 |
| t/unit-tests/u-utf8-width.c | Jiang Xin | 2 |
| compat/win32/exit-process.h | Johannes Schindelin | 2 |
| ci/make-test-artifacts.sh | Johannes Schindelin | 2 |
| t/lib-shell-parser.pl | Michael Montalbo | 2 |
Ownership by author
Primary owner = the author with the most commits to a file. Solely owned = files only that author has touched.
| Author | Files owned | Solely owned | Files touched |
|---|---|---|---|
| brian m. carlson | 885 | 693 | 1,529 |
| Patrick Steinhardt | 528 | 145 | 1,885 |
| Junio C Hamano | 425 | 116 | 1,316 |
| Jeff King | 329 | 46 | 1,346 |
| Ævar Arnfjörð Bjarmason | 260 | 14 | 1,241 |
| Johannes Schindelin | 172 | 39 | 1,160 |
| Elijah Newren | 116 | 10 | 833 |
| Phillip Wood | 112 | 87 | 264 |
| Eric Sunshine | 102 | 0 | 484 |
| Nguyễn Thái Ngọc Duy | 88 | 10 | 603 |
| Taylor Blau | 69 | 14 | 344 |
| René Scharfe | 64 | 17 | 536 |
| Thomas Rast | 53 | 41 | 215 |
| Derrick Stolee | 51 | 3 | 380 |
| Michael Montalbo | 49 | 44 | 432 |
| Jeff Hostetler | 49 | 14 | 205 |
| Michael Haggerty | 47 | 19 | 187 |
| Santi Béjar | 42 | 3 | 57 |
| Jiang Xin | 40 | 3 | 165 |
| Johannes Sixt | 37 | 30 | 289 |
| Jonathan Nieder | 34 | 21 | 406 |
| Eric Wong | 34 | 8 | 197 |
| Jean-Noël Avila | 31 | 2 | 222 |
| Zbigniew Jędrzejewski-Szmek | 29 | 0 | 59 |
| Đoàn Trần Công Danh | 26 | 8 | 110 |
Most shared files
Files touched by the most people — shared code where changes are most likely to need coordination.
| File | Contributors | Primary owner | Owner share |
|---|---|---|---|
| Makefile | 320 | Junio C Hamano | 15.9% |
| diff.c | 169 | Junio C Hamano | 24.4% |
| contrib/completion/git-completion.bash | 159 | SZEDER Gábor | 17.2% |
| git.c | 140 | Junio C Hamano | 15.4% |
| git-svn.perl | 134 | Eric Wong | 49.9% |
| git-compat-util.h | 134 | Jeff King | 12.0% |
| git-send-email.perl | 134 | Ævar Arnfjörð Bjarmason | 11.1% |
| config.c | 131 | Jeff King | 15.0% |
| revision.c | 118 | Junio C Hamano | 19.3% |
| gitweb/gitweb.perl | 114 | Jakub Narębski | 45.9% |
| .gitignore | 106 | Junio C Hamano | 16.1% |
| builtin/commit.c | 105 | Jeff King | 11.0% |
| read-cache.c | 103 | Junio C Hamano | 15.3% |
| refs.c | 100 | Michael Haggerty | 25.5% |
| t/test-lib.sh | 100 | Jeff King | 13.3% |
| remote.c | 100 | Jeff King | 14.2% |
| http.c | 95 | Jeff King | 23.5% |
| sequencer.c | 93 | Johannes Schindelin | 18.4% |
| wt-status.c | 89 | Jeff King | 12.7% |
| git-submodule.sh | 89 | Stefan Beller | 12.5% |
How Git compares with other open source languages and developer tools →
How Git ranks among open source languages and developer tools by AI-assisted commits →
Generate this report for your own repository with gitstats-action · All Gallery reports
The smallest workflow
Publishes the report to GitHub Pages on every push to main: turn on Pages for the gh-pages branch.
# .github/workflows/gitstats.yml
name: GitStats Report
on:
push:
branches: [main]
permissions:
contents: write
jobs:
gitstats:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: shenxianpeng/gitstats-action@v1
with:
deploy-to-pages: true