git-fame is a command-line tool that helps you summarize and pretty-print collaborators in a git repository based on contributions.
Statistics generated from this git repository using git fame .
Statistics based on master
Active files: 21
Active lines: 967
Total commits: 109
Note: Files matching MIME type image, binary has been ignored
+----------------+-----+---------+-------+---------------------+
| name | loc | commits | files | distribution (%) |
+----------------+-----+---------+-------+---------------------+
| Linus Oleander | 914 | 106 | 21 | 94.5 / 97.2 / 100.0 |
| f1yegor | 47 | 2 | 7 | 4.9 / 1.8 / 33.3 |
| David Selassie | 6 | 1 | 2 | 0.6 / 0.9 / 9.5 |
+----------------+-----+---------+-------+---------------------+
[sudo] gem install git_fame
From a git repository run git fame .
git fame --by-typeGroup line counts by file extension (i.e. .rb, .erb, .yml). See the by type section below.git fame --exclude=path1/*,path2/*Comma separated, glob file path to exclude.git fame --include=path1/*,path2/*Comma separated, glob file path to include.git fame --sort=locOrder table byloc. Available options are:loc,filesandcommits. Default isloc.git fame --hide-progressbarHide progressbar.git fame --whitespaceIgnore whitespace changes when blaming files. More about git blame and whitespace.git fame --repository=/path/to/repoGit repository to be used. Default is the current folder.git fame --branch=masterBranch to run on. Default is whatHEADpoints to.git fame --format=outputOutput format. Default ispretty. Additional:csv.git fame --after=2010-01-01Only use commits after this date. Format: yyyy-mm-dd. Note that the given date is included.git fame --before=2016-02-01Only use commits before this date. Format: yyyy-mm-dd. Note that the given date is included.git fame --verbosePrint shell commands used bygit-fame.git fame --everythingImages and binaries are ignored by default. Include them as well.git fame --timeoutSet timeout in seconds for each git command.
--by-type adds extra columns file types.
+----------------+-----+---------+-------+---------------------+---------+-----+----+---------+-----+
| name | loc | commits | files | distribution (%) | unknown | yml | md | gemspec | rb |
+----------------+-----+---------+-------+---------------------+---------+-----+----+---------+-----+
| Linus Oleander | 914 | 106 | 21 | 94.5 / 97.2 / 100.0 | 32 | 5 | 61 | 23 | 257 |
| f1yegor | 47 | 2 | 7 | 4.9 / 1.8 / 33.3 | 3 | 5 | 6 | 1 | 10 |
| David Selassie | 6 | 1 | 2 | 0.6 / 0.9 / 9.5 | 2 | 0 | 3 | 0 | 0 |
+----------------+-----+---------+-------+---------------------+---------+-----+----+---------+-----+
Want to work with the data before using it? Here's how.
options is a hash with most of the arguments passed to the binary defined above.
Take a look at the bin/git-fame file for more information.
repository = GitFame::Base.new(options)repository.pretty_puts outputs the statistics as an ascii table.
repository.csv_puts outputs the statistics as csv.
repository.loc(Fixnum) Total number of lines.repository.commits(Fixnum) Total number of commits.repository.files(Fixnum) Total number of files.repository.authors(Array< Author >) All authors.
author = repository.authors.first
- Formated
author.loc(String) Number of lines.author.commits(String) Number of commits.author.files(String) Number of files changed.
- Non formated
author.distribution(String) Distribution (in %) between users (loc/commits/files)author.raw_loc(Fixnum) Number of lines.author.raw_commits(Fixnum) Number of commits.author.raw_files(Fixnum) Number of files changed.author.file_type_counts(Array) File types (k) and loc (v)
- Download fixtures (
spec/fixtures) usinggit submodule update --init. - Run rspec using
bundle exec rspec.
Note that puts has been disabled to avoid unnecessary output during testing.
Visit spec/spec_helper.rb to enable it again.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Added some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
GitFame should work on all Unix based operating system with Git installed.
GitFame is released under the MIT license.