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-type
Group 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=loc
Order table byloc
. Available options are:loc
,files
andcommits
. Default isloc
.git fame --hide-progressbar
Hide progressbar.git fame --whitespace
Ignore whitespace changes when blaming files. More about git blame and whitespace.git fame --repository=/path/to/repo
Git repository to be used. Default is the current folder.git fame --branch=master
Branch to run on. Default is whatHEAD
points to.git fame --format=output
Output format. Default ispretty
. Additional:csv
.git fame --after=2010-01-01
Only use commits after this date. Format: yyyy-mm-dd. Note that the given date is included.git fame --before=2016-02-01
Only use commits before this date. Format: yyyy-mm-dd. Note that the given date is included.git fame --verbose
Print shell commands used bygit-fame
.git fame --everything
Images and binaries are ignored by default. Include them as well.git fame --timeout
Set 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.