Skip to content

Pretty-print `git` repository collaborators sorted by contributions.

Notifications You must be signed in to change notification settings

evergreendigital/git-fame

 
 

Repository files navigation

git-fame

PyPI-Status PyPI-Versions

Build-Status Coverage-Status Branch-Coverage-Status Codacy-Grade

LICENCE Donate OpenHub-Status

Pretty-print git repository collaborators sorted by contributions.

~$ git fame
Blame: 100%|███████████████████████████████████| 11/11 [00:00<00:00, 208.43it/s]
Total commits: 302
Total files: 37
Total loc: 3134
+----------------------+------+------+------+----------------+
| Author               |  loc | coms | fils |  distribution  |
+======================+======+======+======+================+
| Casper da Costa-Luis | 3123 |  297 |   35 | 99.6/98.3/85.4 |
| Not Committed Yet    |    7 |    4 |    2 |  0.2/ 1.3/ 4.9 |
| Evïan Etàcidñys      |    4 |    1 |    1 |  0.1/ 0.3/ 2.4 |
+----------------------+------+------+------+----------------+

The distribution column is a percentage breakdown of the other columns (e.g. in the table above, Casper has written surviving code in 35/37 = 85.4% of all files)


PyPI-Status

pip install git-fame

GitHub-Status

Pull and install in the current directory:

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

This is probably not necessary on UNIX systems.

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

Optionally, systems with bash-completion can install tab completion support. The git-fame_completion.bash file needs to be copied to an appropriate folder.

On Ubuntu, the procedure would be:

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

$ # Install `git fame` completions
$ sudo cp git-fame_completion.bash /etc/bash_completion.d/

followed by a terminal restart.

git fame              # If alias registered with git (see above)
git-fame              # Alternative execution as python console script
python -m gitfame     # Alternative execution as python module
git-fame -h           # Print help

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
>>> import sys
>>> sys.argv = ['', '--sort=commits', '-wt', './path/to/my/repo']
>>> gitfame.main()
Usage:
  gitfame [--help | options] [<gitdir>]

Options:
  -h, --help     Print this help and exit.
  -v, --version  Print module version and exit.
  --sort=<key>    Options: [default: loc], files, commits.
  --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.
  -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 `git-fame` [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].

Arguments:
  <gitdir>       Git directory [default: ./].

Open Source (OSI approved): LICENCE

Copyright (c) 2016-7 Casper da Costa-Luis.

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.

OpenHub-Status

About

Pretty-print `git` repository collaborators sorted by contributions.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 91.0%
  • Makefile 7.2%
  • Shell 1.8%