Skip to main content

Pretty-print git repository collaborators sorted by contributions.

Py-Versions PyPI Conda-Forge Docker Snapcraft

Build-Status Coverage-Status Branch-Coverage-Status Codacy-Grade Libraries-Rank PyPI-Downloads

DOI-URI LICENCE OpenHub-Status Sponsor-Casper

https://git-fame.cdcl.ml/gh/{owner}/{repo}

Contributions

git-fame --cost hour,month --loc ins
Processing: 100%|██████████████████████████| 1/1 [00:00<00:00,  2.16repo/s]
Total commits: 1775
Total atimes: 2770
Total files: 461
Total hours: 449.7
Total loc: 41659
Total months: 151.0
| Author               |   hrs |   mths |   loc |   coms |   fils |  distribution   |
|:---------------------|------:|-------:|------:|-------:|-------:|:----------------|
| Casper da Costa-Luis |   228 |    108 | 28572 |   1314 |    172 | 68.6/74.0/37.3  |
| Stephen Larroque     |    28 |     18 |  5243 |    203 |     25 | 12.6/11.4/ 5.4  |
| pgajdos              |     2 |      9 |  2606 |      2 |     18 | 6.3/ 0.1/ 3.9   |
| Martin Zugnoni       |     2 |      5 |  1656 |      3 |      3 | 4.0/ 0.2/ 0.7   |
| Kyle Altendorf       |     7 |      2 |   541 |     31 |      7 | 1.3/ 1.7/ 1.5   |
| Hadrien Mary         |     5 |      1 |   469 |     31 |     17 | 1.1/ 1.7/ 3.7   |
| Richard Sheridan     |     2 |      1 |   437 |     23 |      3 | 1.0/ 1.3/ 0.7   |
| Guangshuo Chen       |     3 |      1 |   321 |     18 |      7 | 0.8/ 1.0/ 1.5   |
| Noam Yorav-Raphael   |     4 |      1 |   229 |     11 |      6 | 0.5/ 0.6/ 1.3   |
| github-actions[bot]  |     2 |      1 |   186 |      1 |     51 | 0.4/ 0.1/11.1   |
...

The distribution column is a percentage breakdown of loc/coms/fils. (e.g. in the table above, Casper has written surviving code in 172/461 = 37.3% of all files).


Installation

Latest PyPI stable release

PyPI PyPI-Downloads Libraries-Dependents

pip install git-fame

Latest development release on GitHub

GitHub-Status GitHub-Stars GitHub-Commits GitHub-Forks GitHub-Updated

Pull and install:

pip install "git+https://github.com/casperdcl/git-fame.git@main#egg=git-fame"

Latest Conda release

Conda-Forge

conda install -c conda-forge git-fame

Latest Snapcraft release

Snapcraft

snap install git-fame

Latest Docker release

Docker

docker run --rm casperdcl/git-fame --help
docker run --rm -v "/local/path/to/repository:/repo" -u "$(id -u)" casperdcl/git-fame

Register alias with git

On Windows, run:

git config --global alias.fame "!python -m gitfame"

This is probably not necessary on UNIX systems. If git fame doesn’t work after restarting the terminal on Linux & Mac OS, try (with single quotes):

git config --global alias.fame '!python -m gitfame'

Tab completion

This doesn’t currently work with the alias (git fame), but does work with git-fame.

Completion scripts are generated by git-fame --print-completion <shell>. For example, in bash:

$ # Ensure completion works for `git` itself
$ sudo apt-get install bash-completion

$ # Install `git-fame` completions
$ git-fame --print-completion bash |
  sudo tee /etc/bash_completion.d/git-fame_completion.bash

See shtab for more information on where to place the completion script for your shell.

Changelog

The list of all changes is available on the Releases page: GitHub-Status

Usage

git-fame              # Console script (with tab completion support)
git-fame -h           # Print help
python -m gitfame     # Alternative execution as python module
git fame              # Alternative git alias (see above)

For example, to print statistics regarding all source files in a C++/CUDA repository (*.c/h/t(pp), *.cu(h)), carefully handling whitespace and line copies:

git-fame --incl '\.[cht][puh]{0,2}$' -twMC

It is also possible to run from within a python shell or script.

>>> import gitfame
>>> gitfame.main(['--sort=commits', '-wt', '/path/to/my/repo'])

Finally, there is a live server for public GitHub repositories at git-fame.cdcl.ml/gh/{owner}/{repo}.

Sponsor-Casper perks: the rendered by git-fame.cdcl.ml watermark is removed & some options are unlocked (non-default branch, auth, show, ttl).

Documentation

Usage:
  git-fame [--help | options] [<gitdir>...]

Arguments:
  <gitdir>       Git directory [default: ./].
                 May be specified multiple times to aggregate across
                 multiple repositories.

Options:
  -h, --help     Print this help and exit.
  -v, --version  Print module version and exit.
  --branch=<b>   Branch or tag [default: HEAD] up to which to check.
  --sort=<key>   [default: loc]|commits|files|hours|months.
  --min=<val>    Minimum value (of `--sort` key) to show [default: 0:int].
  --loc=<type>   surv(iving)|ins(ertions)|del(etions)
                 What `loc` represents. Use 'ins,del' to count both.
                 defaults to 'surviving' unless `--cost` is specified.
  --excl=<f>     Excluded files (default: None).
                 In no-regex mode, may be a comma-separated list.
                 Escape (\,) for a literal comma (may require \\, in shell).
  --incl=<f>     Included files [default: .*]. See `--excl` for format.
  --since=<date>  Date from which to check. Can be absolute (eg: 1970-01-31)
                  or relative to now (eg: 3.weeks).
  --until=<date>  Date to which to check. See `--since` for format.
  --cost=<method>  Include time cost in person-months (COCOMO) or
                   person-hours (based on author times).
                   Methods: month(s)|cocomo|hour(s).
                   May be multiple comma-separated values.
                   Alters `--loc` default to imply 'ins' (COCOMO) or
                   'ins,del' (hours).
  -R, --recurse  Recursively find repositories & submodules within <gitdir>.
  -n, --no-regex  Assume <f> are comma-separated exact matches
                  rather than regular expressions [default: False].
                  NB: if regex is enabled ',' is equivalent to '|'.
  -s, --silent-progress    Suppress `tqdm` [default: False].
  -j=<n>, --jobs=<n>  Number of concurrent `git blame` threads per <gitfir>
                      [default: 0:int]: automatic.
  --warn-binary  Don't silently skip files which appear to be binary data
                 [default: False].
  --auth=<strat>  Credit commit trailers (`Co-authored-by`, `Assisted-by`):
                  [default: git]|first|share, i.e.: only use 'git' author,
                  only use 'first' trailer, or 'share' equally with git &
                  all trailers.
  --show=<info>  Author information to show [default: name]|email.
                 Use 'name,email' to show both.
  -e, --show-email  Shortcut for `--show=email`.
  --enum         Show row numbers [default: False].
  -t, --bytype             Show stats per file extension [default: False].
  -w, --ignore-whitespace  Ignore whitespace when comparing the parent's
                           version and the child's to find where the lines
                           came from [default: False].
  -M             Detect intra-file line moves and copies [default: False].
  -C             Detect inter-file line moves and copies [default: False].
  --ignore-rev=<rev>       Ignore changes made by the given revision
                           (requires `--loc=surviving`).
  --ignore-revs-file=<f>   Ignore revisions listed in the given file
                           (requires `--loc=surviving`).
  --format=<format>        Table format
      fame|svg|[default: md]|yaml|json|csv|tsv.
      Any `tabulate.tabulate_formats` is also accepted.
      Most formats can also be prefixex by `svg-`, e.g. `svg-fame`.
  --log=<lvl>    FATAL|CRITICAL|ERROR|WARN(ING)|[default: INFO]|DEBUG|NOTSET.

If multiple user names and/or emails correspond to the same user, aggregate git-fame statistics and maintain a git repository properly by adding a .mailmap file.

FAQs

Options such as -w, -M, and -C can increase accuracy, but take longer to compute.

Note that specifying --sort=hours or --sort=months requires --cost to be specified appropriately.

Note that --cost=months (--cost=COCOMO) approximates person-months and should be used with --loc=ins.

Meanwhile, --cost=hours (--cost=commits) approximates person-hours.

Extra care should be taken when using ins and/or del for --loc since all historical files (including those no longer surviving) are counted. In such cases, --excl may need to be significantly extended. On the plus side, it is faster to compute ins and del compared to surv.

Examples

Badges

An SVG image for inclusion in README files and websites:

git-fame -wMC --format svg --min 1 > docs/authors.svg

Which can also be dynamically created for public GitHub repositories:

![markdown-image](https://git-fame.cdcl.ml/gh/{owner}/{repo}?min=1&auth=share)

CODEOWNERS

Generating CODEOWNERS:

# bash syntax function for current directory git repository
owners(){
  for f in $(git ls-files); do
    # filename
    echo -n "$f "
    # author emails if loc distribution >= 30%
    git-fame -esnwMC --incl "$f" | tr '/' '|' \
      | awk -F '|' '(NR>6 && $6>=30) {print $2}' \
      | xargs echo
  done
}

# print to screen and file
owners | tee .github/CODEOWNERS

# same but with `tqdm` progress for large repos
owners \
  | tqdm --total $(git ls-files | wc -l) \
    --unit file --desc "Generating CODEOWNERS" \
  > .github/CODEOWNERS

Zenodo config

Generating .zenodo.json:

git-fame -wMC --format json \
  | jq -c '{creators: [.data[] | {name: .[0]}]}' \
  | sed -r -e 's/(\{"name")/\n    \1/g' -e 's/:/: /g' \
  > .zenodo.json

Contributions

GitHub-Commits GitHub-Issues GitHub-PRs OpenHub-Status

All source code is hosted on GitHub. Contributions are welcome.

Contributions

Sponsor-Casper perks: the rendered by git-fame.cdcl.ml watermark is removed & some options are unlocked (non-default branch, auth, show, ttl).

LICENCE

Open Source (OSI approved): LICENCE

Citation information: DOI-URI

README-Hits

Metadata

Release files for git-fame 4.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for git-fame 4.2.1
File Size Uploaded
git_fame-4.2.1.tar.gz 30.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for git-fame 4.2.1
File Interpreter ABI Platform
git_fame-4.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 49.8 kB

Release files / git_fame-4.2.1.tar.gz

Download URL git_fame-4.2.1.tar.gz
Size 30.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4d37124614c5263ab42d95a43ba167705773ef01a5ed369641257a0d1f96b298
BLAKE2b-256 checksum
How to use checksums
8cfc4329f146838e542cf21173e735e1715d888d1436359a5132f9b26c6ffd9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.14.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / git_fame-4.2.1-py3-none-any.whl

Download URL git_fame-4.2.1-py3-none-any.whl
Size 19.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b68126f7ec8f5f76dbae065a3c547ab01e54e93c51597389491ef9896e12c0c5
BLAKE2b-256 checksum
How to use checksums
f8c796dfa9d690e88d779714b13cd2caa41179836192a46881763900c4c05118
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.14.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

4.2.1 This release

2 release files

4.2.0

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.1.3

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.15.2

2 release files

1.15.1

2 release files

1.15.0

2 release files

1.13.1

2 release files

1.13.0

2 release files

1.12.0

2 release files

1.11.1

2 release files

1.11.0

2 release files

1.10.2

2 release files

1.10.0

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

4 release files

1.1.0

3 release files

1.0.3

3 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page