oleander / git-fame-rb

A command-line tool that helps you summarize and pretty-print collaborators based on contributions
MIT License
957 stars 74 forks source link
code-statistics command-line-tool contributor-analysis git

git-fame git-fame Gem Test Coverage Maintainability

git-fame

git-fame is a command-line tool that helps you summarize and pretty-print collaborators, based on the number of contributions.

The statistics are mostly based on the output of git blame on the current branch. git fame counts the total number of current lines of code (and files) that were last touched by each author, and prints out these totals, along with the number of commits per author, as a sorted table.

Installation

gem install git_fame

Usage

Usage: git fame [OPTIONS] [PATH]

GitFame is a tool to generate a contributor list from git history

Arguments:
  PATH  Path or sub path to the git repository

Options:
  -A, --after [DATE]       Only changes made after this date
  -B, --before [DATE]      Only changes made before this date
      --branch [NAME]      Branch to be used as starting point (default
                           "HEAD")
  -E, --exclude [GLOB]     Exclude files matching the given glob pattern
  -e, --extensions [EXT]   File extensions to be included starting with a
                           period
  -h, --help               Print usage
  -I, --include [GLOB]     Include files matching the given glob pattern
      --log-level [LEVEL]  Log level (permitted: debug,info,warn,error,fatal)

Examples:
  Include commits made since 2010
  git fame --after 2010-01-01

  Include commits made before 2015
  git fame --before 2015-01-01

  Include commits made since 2010 and before 2015
  git fame --after 2010-01-01 --before 2015-01-01

  Only changes made to the main branch
  git fame --branch main

  Only ruby and javascript files
  git fame --extensions .rb .js

  Exclude spec files and the README
  git fame --exclude */**/*_spec.rb README.md

  Only spec files and markdown files
  git fame --include */**/*_spec.rb */**/*.md

  A parent directory of the current directory
  git fame ../other/git/repo

Development

  1. git clone https://github.com/oleander/git-fame-rb.git
  2. docker build -t git-fame -f .devcontainer/Dockerfile .
  3. docker run -it -v $(pwd):/workspace git-fame bundle exec rspec

Have a look at .devcontainer/Dockerfile and .github/workflows/main.yml for more information.

New release

  1. Update version in lib/git_fame/version.rb
  2. bundle exec rake release
  3. Done!