git-stats/README.md

436 lines
11 KiB
Markdown
Raw Normal View History

2017-09-08 12:56:03 +02:00
<!-- Please do not edit this file. Edit the `blah` field in the `package.json` instead. If in doubt, open an issue. -->
2017-12-23 20:01:03 +01:00
2020-08-09 13:58:56 +02:00
2015-11-08 16:53:04 +01:00
[![git-stats](http://i.imgur.com/Q7TQYHx.png)](#)
2020-08-09 13:58:56 +02:00
2016-05-02 16:20:50 +02:00
# `$ git-stats`
2019-01-03 17:41:34 +01:00
[![Support me on Patreon][badge_patreon]][patreon] [![Buy me a book][badge_amazon]][amazon] [![PayPal][badge_paypal_donate]][paypal-donations] [![Ask me anything](https://img.shields.io/badge/ask%20me-anything-1abc9c.svg)](https://github.com/IonicaBizau/ama) [![Version](https://img.shields.io/npm/v/git-stats.svg)](https://www.npmjs.com/package/git-stats) [![Downloads](https://img.shields.io/npm/dt/git-stats.svg)](https://www.npmjs.com/package/git-stats) [![Get help on Codementor](https://cdn.codementor.io/badges/get_help_github.svg)](https://www.codementor.io/johnnyb?utm_source=github&utm_medium=button&utm_term=johnnyb&utm_campaign=github)
<a href="https://www.buymeacoffee.com/H96WwChMy" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png" alt="Buy Me A Coffee"></a>
2015-11-12 11:11:27 +01:00
2020-08-09 13:58:56 +02:00
2016-01-14 11:25:43 +01:00
> Local git statistics including GitHub-like contributions calendars.
2015-01-26 09:08:11 +01:00
2016-04-26 06:55:05 +02:00
2020-08-09 13:58:56 +02:00
2015-02-16 13:37:44 +01:00
I'd be curious to see your calendar with all your commits. Ping me on Twitter ([**@IonicaBizau**](https://twitter.com/IonicaBizau)). :smile: Until then, here's my calendar:
2015-02-09 14:39:24 +01:00
2022-06-06 22:42:17 +02:00
![](http://i.imgur.com/PpM0i3v.png)
2015-01-26 09:08:11 +01:00
2015-02-15 19:51:33 +01:00
## Contents
2017-10-18 09:35:28 +02:00
- [Installation](#cloud-installation)
2015-02-15 19:52:44 +01:00
- [Usage](#usage)
2016-04-26 06:55:05 +02:00
2015-11-08 16:53:04 +01:00
- [Importing and deleting commits](#importing-and-deleting-commits)
- [Importing all the commits from GitHub and BitBucket](#importing-all-the-commits-from-github-and-bitbucket)
- [What about the GitHub Contributions calendar?](#what-about-the-github-contributions-calendar)
2017-03-23 16:16:15 +01:00
2017-10-18 09:35:28 +02:00
- [Documentation](#memo-documentation)
- [How to contribute](#yum-how-to-contribute)
2015-02-15 19:51:33 +01:00
2017-03-23 16:16:15 +01:00
2020-08-09 13:58:56 +02:00
2016-04-26 06:55:05 +02:00
## :cloud: Installation
2015-01-26 09:08:11 +01:00
You can install the package globally and use it as command line tool:
2015-02-11 19:07:10 +01:00
2016-05-02 06:23:16 +02:00
2016-05-02 16:06:49 +02:00
```sh
# Install the package globally
2015-12-08 09:02:23 +01:00
npm i -g git-stats
2017-12-24 21:15:21 +01:00
# Initialize git hooks
2015-09-14 23:54:00 +02:00
# This is for tracking the new commits
2015-02-11 19:08:49 +01:00
curl -s https://raw.githubusercontent.com/IonicaBizau/git-stats/master/scripts/init-git-post-commit | bash
2015-02-11 19:07:10 +01:00
```
2017-10-18 09:35:28 +02:00
2015-11-08 16:53:04 +01:00
Then, run `git-stats --help` and see what the CLI tool can do.
2015-02-09 13:36:44 +01:00
2016-04-26 06:55:05 +02:00
```
2015-11-08 16:53:04 +01:00
$ git-stats --help
2015-09-21 20:07:58 +02:00
Usage: git-stats [options]
2016-10-23 11:05:22 +02:00
Local git statistics including GitHub-like contributions calendars.
2015-09-21 20:07:58 +02:00
Options:
2016-10-23 11:05:22 +02:00
-r, --raw Outputs a dump of the raw JSON data.
-g, --global-activity Shows global activity calendar in the current
repository.
-d, --data <path> Sets a custom data store file.
2020-08-09 13:58:56 +02:00
-l, --light Enables the light theme.
-n, --disable-ansi Forces the tool not to use ANSI styles.
2021-03-21 21:03:48 +01:00
-A, --author Filter author related contributions in the current
repository.
2016-04-26 06:55:05 +02:00
-a, --authors Shows a pie chart with the author related
contributions in the current repository.
2020-08-09 13:58:56 +02:00
-u, --until <date> Optional end date.
-s, --since <date> Optional start date.
--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.
2016-04-26 06:55:05 +02:00
-h, --help Displays this help.
-v, --version Displays version information.
2015-09-21 20:07:58 +02:00
Examples:
2016-10-23 11:05:22 +02:00
$ 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
2015-09-21 20:07:58 +02:00
2016-10-23 11:05:22 +02:00
Your commit history is kept in ~/.git-stats by default. You can create
2018-10-15 22:24:33 +02:00
~/.git-stats-config.js to specify different defaults.
2015-09-21 20:07:58 +02:00
2016-10-23 11:05:22 +02:00
Documentation can be found at https://github.com/IonicaBizau/git-stats.
2015-02-09 14:11:53 +01:00
```
2020-08-09 13:58:56 +02:00
2015-09-21 20:49:43 +02:00
## Usage
2017-10-18 09:35:28 +02:00
2015-02-09 14:11:53 +01:00
### Importing and deleting commits
2015-11-08 16:53:04 +01:00
2017-10-18 09:35:28 +02:00
2015-11-08 16:53:04 +01:00
I know it's not nice to start your git commit calendar from scratch. That's why I created [`git-stats-importer`](https://github.com/IonicaBizau/git-stats-importer)a tool which imports or deletes the commits from selected repositories.
2015-02-09 14:11:53 +01:00
Check it out here: https://github.com/IonicaBizau/git-stats-importer
The usage is simple:
```sh
# 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
```
2017-10-18 09:35:28 +02:00
2015-02-09 14:11:53 +01:00
### Importing all the commits from GitHub and BitBucket
2015-11-08 16:53:04 +01:00
2017-10-18 09:35:28 +02:00
2015-09-14 23:54:00 +02:00
Yes, that's also possible. I [built a tool which downloads and then imports all the commits you have pushed to GitHub and BitBucket](https://github.com/IonicaBizau/repository-downloader)!
2015-02-09 14:11:53 +01:00
```sh
# Download the repository downloader
$ git clone https://github.com/IonicaBizau/repository-downloader.git
2015-02-09 14:11:53 +01:00
# Go to repository downloader
$ cd repository-downloader
# Install the dependencies
$ npm install
# Start downloading and importing
$ ./start
```
2017-10-18 09:35:28 +02:00
2015-09-14 23:54:00 +02:00
### What about the GitHub Contributions calendar?
2015-11-08 16:53:04 +01:00
2017-10-18 09:35:28 +02:00
2015-09-14 23:54:00 +02:00
If you want to visualize the calendars that appear on GitHub profiles, you can do that using [`ghcal`](https://github.com/IonicaBizau/ghcal).
2015-02-09 14:39:24 +01:00
```sh
# Install ghcal
$ npm install -g ghcal
2015-09-14 23:54:00 +02:00
# Check out @alysonla's contributions
$ ghcal -u alysonla
2015-02-09 14:39:24 +01:00
```
2015-09-14 23:54:00 +02:00
2017-10-18 09:35:28 +02:00
2015-02-15 19:20:49 +01:00
For more detailed documentation, check out the repository: https://github.com/IonicaBizau/ghcal.
2015-02-09 14:39:24 +01:00
2015-10-10 18:58:46 +02:00
If want to get even more GitHub stats in your terminal, you may want to try [`github-stats`](https://github.com/IonicaBizau/github-stats)--this is like `git-stats` but with data taken from GitHub.
2015-09-14 23:54:00 +02:00
## Using the configuration file
2015-11-08 16:53:04 +01:00
2017-10-18 09:35:28 +02:00
2015-11-08 16:53:04 +01:00
You can tweak the git-stats behavior using a configuration file in your home directory: `~/.git-stats-config.js`.
2015-09-14 23:54:00 +02:00
This file should export an object, like below (defaults are listed):
2015-09-14 23:54:00 +02:00
```js
module.exports = {
2015-09-14 23:54:00 +02:00
// "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"
// [DEPRECATED] First day of the week https://github.com/IonicaBizau/git-stats/issues/121
2015-09-14 23:54:00 +02:00
, 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
2015-11-01 11:40:47 +01:00
};
2015-09-14 23:54:00 +02:00
```
2017-10-18 09:35:28 +02:00
Since it's a js file, you can `require` any other modules there.
## Saving the data as HTML and images
2017-10-18 09:35:28 +02:00
`git-stats --raw` outputs raw JSON format which can be consumed by other tools to generate results such as HTML files or images.
[`git-stats-html`](https://github.com/IonicaBizau/git-stats-html) interprets the JSON data and generates an HTML file. Example:
```sh
2017-10-18 09:35:28 +02:00
# Install git-stats-html
2017-10-18 09:35:28 +02:00
npm install -g git-stats-html
2017-10-18 09:35:28 +02:00
# Export the data from the last year (generate out.html)
2017-10-18 09:35:28 +02:00
git-stats --raw | git-stats-html -o out.html
2017-10-18 09:35:28 +02:00
# Export data since 2015 (save the results in out.html)
2017-10-18 09:35:28 +02:00
2020-08-09 13:58:56 +02:00
git-stats --since '1 January 2015' --raw | ./bin/git-stats-html -o out.html --big
2017-10-18 09:35:28 +02:00
```
2017-10-18 09:35:28 +02:00
After we have the HTML file, we can generate an image file using [`pageres`](https://github.com/sindresorhus/pageres) by [**@sindresorhus**](https://github.com/sindresorhus/):
```sh
2017-10-18 09:35:28 +02:00
# Install pageres
2017-10-18 09:35:28 +02:00
npm install -g pageres-cli
2017-10-18 09:35:28 +02:00
# Generate the image from HTML
2017-10-18 09:35:28 +02:00
pageres out.html 775x250
2017-10-18 09:35:28 +02:00
```
2017-10-18 09:35:28 +02:00
2015-09-14 23:54:00 +02:00
## Cross-platform compatibility
2017-10-18 09:35:28 +02:00
2015-09-14 23:54:00 +02:00
`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.
2015-11-08 16:53:04 +01:00
2015-09-14 23:54:00 +02:00
Cygwin Terminal is known to work, while Windows Command Prompt and Git Bash do not. Improvements are more than welcome! :dizzy:
2016-04-26 06:55:05 +02:00
2015-01-26 09:08:11 +01:00
2015-11-08 16:53:04 +01:00
2017-12-24 21:15:21 +01:00
2020-08-09 13:58:56 +02:00
## :clipboard: Example
Here is an example how to use this package as library. To install it locally, as library, you can use `npm install git-stats` (or `yarn add git-stats`):
2015-01-26 09:08:11 +01:00
2016-04-26 06:55:05 +02:00
```js
// Dependencies
var GitStats = require("git-stats");
2015-02-09 14:14:10 +01:00
// Create the GitStats instance
var g1 = new GitStats();
2015-01-26 09:08:11 +01:00
// Display the ansi calendar
g1.ansiCalendar({
theme: "DARK"
}, function (err, data) {
console.log(err || data);
});
```
2015-02-09 14:14:10 +01:00
2017-09-08 12:56:03 +02:00
2020-08-09 13:58:56 +02:00
2017-03-23 16:16:15 +01:00
## :question: Get Help
There are few ways to get help:
2020-08-09 13:58:56 +02:00
2017-03-23 16:16:15 +01:00
1. Please [post questions on Stack Overflow](https://stackoverflow.com/questions/ask). You can open issues with questions, as long you add a link to your Stack Overflow question.
2. For bug reports and feature requests, open issues. :bug:
2017-09-08 12:56:03 +02:00
3. For direct and quick help, you can [use Codementor](https://www.codementor.io/johnnyb). :rocket:
2017-03-23 16:16:15 +01:00
2017-12-23 20:01:03 +01:00
2020-08-09 13:58:56 +02:00
2016-04-26 06:55:05 +02:00
## :memo: Documentation
2015-02-09 14:14:10 +01:00
For full API reference, see the [DOCUMENTATION.md][docs] file.
2015-02-09 14:14:10 +01:00
2020-08-09 13:58:56 +02:00
2016-04-26 06:55:05 +02:00
## :newspaper: Press Highlights
2015-11-08 16:53:04 +01:00
- [*A GitHub-like contributions calendar, but locally, with all your git commits*, The Changelog](https://changelog.com/github-like-contributions-calendar-locally-git-commits/)
2017-03-23 16:16:15 +01:00
2020-08-09 13:58:56 +02:00
2016-04-26 06:55:05 +02:00
## :yum: How to contribute
Have an idea? Found a bug? See [how to contribute][contributing].
2015-01-26 09:08:11 +01:00
2016-10-11 15:32:20 +02:00
2017-03-20 18:18:24 +01:00
## :sparkling_heart: Support my projects
2018-10-15 22:24:33 +02:00
I open-source almost everything I can, and I try to reply to everyone needing help using these projects. Obviously,
2017-03-20 18:18:24 +01:00
this takes time. You can integrate and use these projects in your applications *for free*! You can even change the source code and redistribute (even resell it).
2016-10-10 20:37:05 +02:00
2017-03-20 18:18:24 +01:00
However, if you get some profit from this or just want to encourage me to continue creating stuff, there are few ways you can do it:
2016-10-10 20:37:05 +02:00
2019-01-03 17:41:34 +01:00
2017-03-20 18:18:24 +01:00
- Starring and sharing the projects you like :rocket:
2017-12-23 20:01:03 +01:00
- [![Buy me a book][badge_amazon]][amazon]—I love books! I will remember you after years if you buy me one. :grin: :book:
2017-03-20 18:18:24 +01:00
- [![PayPal][badge_paypal]][paypal-donations]—You can make one-time donations via PayPal. I'll probably buy a ~~coffee~~ tea. :tea:
- [![Support me on Patreon][badge_patreon]][patreon]—Set up a recurring monthly donation and you will get interesting news about what I'm doing (things that I don't share with everyone).
- **Bitcoin**—You can send me bitcoins at this address (or scanning the code below): `1P9BRsmazNQcuyTxEqveUsnf5CERdq35V6`
![](https://i.imgur.com/z6OQI95.png)
2016-10-10 20:37:05 +02:00
2019-01-03 17:41:34 +01:00
2016-10-10 20:37:05 +02:00
Thanks! :heart:
2017-03-20 18:18:24 +01:00
2020-08-09 13:58:56 +02:00
2016-04-26 06:55:05 +02:00
## :dizzy: Where is this library used?
2015-11-08 16:53:04 +01:00
If you are using this library in one of your projects, add it in this list. :sparkles:
2020-08-09 13:58:56 +02:00
- `git-stats-importer`
2022-06-06 22:42:17 +02:00
- `git-stats-fcc-importer`
2020-08-09 13:58:56 +02:00
2015-11-08 16:53:04 +01:00
2016-04-26 06:55:05 +02:00
## :scroll: License
2015-11-08 16:53:04 +01:00
2015-12-03 14:02:50 +01:00
[MIT][license] © [Ionică Bizău][website]
2019-01-03 17:41:34 +01:00
2020-08-09 13:58:56 +02:00
[license]: /LICENSE
[website]: https://ionicabizau.net
[contributing]: /CONTRIBUTING.md
[docs]: /DOCUMENTATION.md
2019-01-03 17:41:34 +01:00
[badge_patreon]: https://ionicabizau.github.io/badges/patreon.svg
[badge_amazon]: https://ionicabizau.github.io/badges/amazon.svg
[badge_paypal]: https://ionicabizau.github.io/badges/paypal.svg
[badge_paypal_donate]: https://ionicabizau.github.io/badges/paypal_donate.svg
2016-10-10 20:37:05 +02:00
[patreon]: https://www.patreon.com/ionicabizau
2017-03-20 18:18:24 +01:00
[amazon]: http://amzn.eu/hRo9sIZ
[paypal-donations]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RVXDDLKKLQRJW