🍀 Local git statistics including GitHub-like contributions calendars.
Find a file
Ionică Bizău 0407c10643 ⬆️ 2.9.1
2015-12-08 10:26:53 +02:00
bin Updated the error code 2015-11-01 12:40:11 +02:00
example Added example 2015-07-13 09:34:14 +03:00
lib return config data 2015-11-19 22:22:28 +08:00
scripts Added the migration script to 2.x.x 2015-07-13 08:36:48 +03:00
.gitignore Added gitignore. 2015-01-25 21:50:10 +02:00
CONTRIBUTING.md Minor fixes 2015-11-01 12:39:28 +02:00
DOCUMENTATION.md 📝 2015-11-01 17:17:51 +02:00
LICENSE Rebuild docs 2015-12-03 15:02:50 +02:00
MIGRATION.md Minor fixes 2015-09-15 01:03:50 +03:00
package.json ⬆️ 2.9.1 2015-12-08 10:26:53 +02:00
README.md fix install instructions 2015-12-08 10:02:23 +02:00

git-stats

$ git-stats Support this project

Local git statistics including GitHub-like contributions calendars.

I'd be curious to see your calendar with all your commits. Ping me on Twitter (@IonicaBizau). 😄 Until then, here's my calendar:

Contents

Installation

You can install the package globally and use it as command line tool:

# Install the package globally
npm i -g git-stats
# Initialize git hooks
# This is for tracking the new commits
curl -s https://raw.githubusercontent.com/IonicaBizau/git-stats/master/scripts/init-git-post-commit | bash

Then, run git-stats --help and see what the CLI tool can do.

$ git-stats --help
Usage: git-stats [options]

Options:
  -s, --since <date>     Optional start date.                             
  -u, --until <date>     Optional end date.                               
  -n, --no-ansi          Forces the tool not to use ANSI styles.          
  -l, --light            Enables the light theme.                         
  -a, --authors          Shows a pie chart with the author related        
                         contributions in the current repository.         
  -g, --global-activity  Shows global activity calendar in the current    
                         repository.                                      
  -d, --data <path>      Sets a custom data store file.                   
  -f, --first-day <day>  Sets the first day of the week.                  
  --record <data>        Records a new commit. Don't use this unless you  
                         are a mad scientist. If you are a developer, just
                         use this option as part of the module.           
  -r, --raw              Outputs a dump of the raw JSON data.             
  -h, --help             Displays this help.                              
  -v, --version          Displays version information.                    

Examples:
  git-stats # Default behavior (stats in the last year)
  git-stats -l # Light mode
  git-stats -s '1 January 2012' # All the commits from 1 January 2012 to now
  git-stats -s '1 January 2012' -u '31 December 2012' # All the commits from 2012

Your commit history is kept in ~/.git-stats by default. You can create ~/.git-stats-config.json to specify different defaults.

Documentation can be found at https://github.com/IonicaBizau/git-stats

Usage

Importing and deleting commits

I know it's not nice to start your git commit calendar from scratch. That's why I created git-stats-importera tool which imports or deletes the commits from selected repositories.

Check it out here: https://github.com/IonicaBizau/git-stats-importer

The usage is simple:

# Install the importer tool
$ npm install -g git-stats-importer

# Go to the repository you want to import
$ cd path/to/my-repository

# Import the commits
$ git-stats-importer

# ...or delete them if that's a dummy repository
$ git-stats-importer --delete

Importing all the commits from GitHub and BitBucket

Yes, that's also possible. I built a tool which downloads and then imports all the commits you have pushed to GitHub and BitBucket!

# Download the repository downloader
$ git clone https://github.com/IonicaBizau/repository-downloader.git

# Go to repository downloader
$ cd repository-downloader

# Install the dependencies
$ npm install

# Start downloading and importing
$ ./start

What about the GitHub Contributions calendar?

If you want to visualize the calendars that appear on GitHub profiles, you can do that using ghcal.

# Install ghcal
$ npm install -g ghcal

# Check out @alysonla's contributions
$ ghcal -u alysonla

For more detailed documentation, check out the repository: https://github.com/IonicaBizau/ghcal.

If want to get even more GitHub stats in your terminal, you may want to try github-stats--this is like git-stats but with data taken from GitHub.

Using the configuration file

You can tweak the git-stats behavior using a configuration file in your home directory: ~/.git-stats-config.js.

This file should export an object, like below (defaults are listed):

module.exports = {
    // "DARK", "LIGHT" or an object interpreted by IonicaBizau/node-git-stats-colors
    "theme": "DARK"

    // The file where the commit hashes will be stored
  , "path": "~/.git-stats"

    // First day of the week
  , first_day: "Sun"

    // This defaults to *one year ago*
    // It can be any parsable date
  , since: undefined

    // This defaults to *now*
    // It can be any parsable date
  , until: undefined

    // Don't show authors by default
    // If true, this will enable the authors pie
  , authors: false

    // No global activity by default
    // If true, this will enable the global activity calendar in the current project
  , global_activity: false
};

Since it's a js file, you can require any other modules there.

Cross-platform compatibility

git-stats is working fine in terminal emulators supporting ANSI styles. It should work fine on Linux and OS X.

If you run git-stats to display graph on Windows, please use a terminal that can properly display ANSI colors.

Cygwin Terminal is known to work, while Windows Command Prompt and Git Bash do not. Improvements are more than welcome! 💫

Example

Here is an example how to use this package as library. To install it locally, as library, you can do that using npm:

$ npm i --save git-stats
// Dependencies
var GitStats = require("git-stats");

// Create the GitStats instance
var g1 = new GitStats();

// Display the ansi calendar
g1.ansiCalendar({
    theme: "DARK"
}, function (err, data) {
    console.log(err || data);
});

Documentation

For full API reference, see the DOCUMENTATION.md file.

Press Highlights

How to contribute

Have an idea? Found a bug? See how to contribute.

Where is this library used?

If you are using this library in one of your projects, add it in this list.

License

MIT © Ionică Bizău