mirror of
https://github.com/IonicaBizau/git-stats.git
synced 2024-12-22 13:22:11 +01:00
📝 Docs via Blah and relicense.
Generated documentation using Blah 2.0.0 and relicensed the project under The KINDLY License.
This commit is contained in:
parent
422d4c8855
commit
271e51dec7
3 changed files with 183 additions and 161 deletions
110
DOCUMENTATION.md
Normal file
110
DOCUMENTATION.md
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
## Documentation
|
||||||
|
You can see below the API reference of this module.
|
||||||
|
|
||||||
|
### `GitStats(dataPath)`
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **String** `dataPath`: Path to the data file.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
||||||
|
### `record(data, callback)`
|
||||||
|
Records a new commit.
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **Object** `data`: The commit data containing:
|
||||||
|
- `date` (String|Date): The date object or a string in a format that can be parsed.
|
||||||
|
- `url` (String): The repository remote url.
|
||||||
|
- `hash` (String): The commit hash.
|
||||||
|
- **Function** `callback`: The callback function.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
||||||
|
### `get(callback)`
|
||||||
|
Gets the git stats.
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **Function** `callback`: The callback function.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
||||||
|
### `save(stats, callback)`
|
||||||
|
Saves the provided stats.
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **Object** `stats`: The stats to be saved.
|
||||||
|
- **Function** `callback`: The callback function.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
||||||
|
### `iterateDays(data, callback)`
|
||||||
|
Iterate through the days, calling the callback function on each day.
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **Object** `data`: An object containing the following fields:
|
||||||
|
- `start` (Moment): A `Moment` date object representing the start date (default: *an year ago*).
|
||||||
|
- `end` (Moment): A `Moment` date object representing the end date (default: *now*).
|
||||||
|
- `format` (String): The format of the date (default: `"MMM D, YYYY"`).
|
||||||
|
- **Function** `callback`: The callback function called with the current day formatted (type: string) and the `Moment` date object.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
||||||
|
### `graph(data, callback)`
|
||||||
|
Creates an object with the stats on the provided period (default: *last year*).
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **Object** `data`: The object passed to the `iterateDays` method.
|
||||||
|
- **Function** `callback`: The callback function.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
||||||
|
### `calendar(data, callback)`
|
||||||
|
Creates the calendar data for the provided period (default: *last year*).
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **Object** `data`: The object passed to the `graph` method.
|
||||||
|
- **Function** `callback`: The callback function.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
||||||
|
### `ansiCalendar(data, callback)`
|
||||||
|
Creates the ANSI contributions calendar.
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **Object** `data`: The object passed to the `calendar` method.
|
||||||
|
- **Function** `callback`: The callback function.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
||||||
|
### `authors(options, callback)`
|
||||||
|
Creates an array with the authors of a git repository.
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **String|Object** `options`: The repo path or an object containing the following fields:
|
||||||
|
- `repo` (String): The repository path.
|
||||||
|
- **Function** `callback`: The callback function.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
||||||
|
### `authorsPie(options, callback)`
|
||||||
|
Creates the authors pie.
|
||||||
|
|
||||||
|
#### Params
|
||||||
|
- **String|Object** `options`: The repo path or an object containing the following fields:
|
||||||
|
- `repo` (String): The repository path.
|
||||||
|
- `radius` (Number): The pie radius.
|
||||||
|
- `no_ansi` (Boolean): If `true`, the pie will not contain ansi characters.
|
||||||
|
- **Function** `callback`: The callback function.
|
||||||
|
|
||||||
|
#### Return
|
||||||
|
- **GitStats** The `GitStats` instance.
|
||||||
|
|
37
LICENSE
37
LICENSE
|
@ -1,21 +1,24 @@
|
||||||
The MIT License (MIT)
|
The KINDLY License
|
||||||
|
Copyright (c) 2015 Ionică Bizău <bizauionica@gmail.com>
|
||||||
|
|
||||||
Copyright (c) 2015 Ionică Bizău
|
You have the permission to use this software, read its source code, modify and
|
||||||
|
redistribute it under the following terms:
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
- if you want to use this software or include parts of its code in a
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
closed-source or commercial project you should kindly ask the
|
||||||
in the Software without restriction, including without limitation the rights
|
author (via a private message or email) and get a positive answer
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
- this license should be included in the modified versions of this software
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
- in case of redistributing modified copies, you are encouraged to clearly
|
||||||
furnished to do so, subject to the following conditions:
|
indicate that the copies are based on this work
|
||||||
|
- if you think that your redistributed copy is awesome, you are encouraged to
|
||||||
|
show the author of this software what you did and how you helped the others
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
You are free to install and use this software on as many machines as you want,
|
||||||
copies or substantial portions of the Software.
|
free of charge, making sure you met the terms above.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
You are encouraged to kindly support the software and its author by:
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
- sharing his/her work
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
- reporting issues/bugs and asking for feature requests
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
- donating money or any other things that can help the author
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
- contribute on the software code by fixing bugs and adding features
|
||||||
SOFTWARE.
|
|
||||||
|
|
197
README.md
197
README.md
|
@ -1,10 +1,27 @@
|
||||||
![](http://i.imgur.com/Q7TQYHx.png)
|
<!---------------------------------------------------------------------------->
|
||||||
# `$ git-stats` [![Release 1.4.1](https://img.shields.io/badge/Release-1.4.1-green.svg)](https://github.com/IonicaBizau/git-stats/releases)
|
<!-- STOP, LOOK & LISTEN! -->
|
||||||
A GitHub-like contributions calendar, but locally, with all your git commits.
|
<!-- ==================== -->
|
||||||
|
<!-- Do NOT edit this file directly since it's generated from a template -->
|
||||||
|
<!-- file, using https://github.com/IonicaBizau/node-blah -->
|
||||||
|
<!-- -->
|
||||||
|
<!-- If you found a typo in documentation, fix it in the source files -->
|
||||||
|
<!-- (`lib/*.js`) and make a pull request. -->
|
||||||
|
<!-- -->
|
||||||
|
<!-- If you have any other ideas, open an issue. -->
|
||||||
|
<!-- -->
|
||||||
|
<!-- Please consider reading the contribution steps (CONTRIBUTING.md). -->
|
||||||
|
<!-- * * * Thanks! * * * -->
|
||||||
|
<!---------------------------------------------------------------------------->
|
||||||
|
|
||||||
|
![git-stats](http://i.imgur.com/Q7TQYHx.png)
|
||||||
|
|
||||||
|
# `$ git-stats` [![Donate now][donate-now]][paypal-donations]
|
||||||
|
|
||||||
|
Local git statistics, including a GitHub-like contributions calendars.
|
||||||
|
|
||||||
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:
|
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:
|
||||||
|
|
||||||
![](http://i.imgur.com/LfLJAaE.png)
|
![git-stats](http://i.imgur.com/LfLJAaE.png)
|
||||||
|
|
||||||
## Contents
|
## Contents
|
||||||
|
|
||||||
|
@ -16,67 +33,21 @@ I'd be curious to see your calendar with all your commits. Ping me on Twitter ([
|
||||||
- [Importing and deleting commits](#importing-and-deleting-commits)
|
- [Importing and deleting commits](#importing-and-deleting-commits)
|
||||||
- [Importing all the commits from GitHub and BitBucket](#importing-all-the-commits-from-github-and-bitbucket)
|
- [Importing all the commits from GitHub and BitBucket](#importing-all-the-commits-from-github-and-bitbucket)
|
||||||
- [See the GitHub Contributions calendar](#see-the-github-contributions-calendar)
|
- [See the GitHub Contributions calendar](#see-the-github-contributions-calendar)
|
||||||
- [Documentation](#documentation-)
|
- [Documentation](#documentation)
|
||||||
- [How to contribute](#how-to-contribute)
|
- [How to contribute](#how-to-contribute)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
```sh
|
|
||||||
$ npm install -g git-stats
|
|
||||||
```
|
|
||||||
|
|
||||||
### Catching the `git commit` command
|
You can install the package globally and use it as command line tool:
|
||||||
Would you like to catch and automatically store the commits when you do `git commit`? If so, try one of the following solutions.
|
|
||||||
|
|
||||||
#### Using `git` hooks
|
|
||||||
The way I recommend to track your git commits is to use git hooks. Run the following command to initialize the `post-commit` git hook.
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Using curl
|
# Install the package globally
|
||||||
|
npm i -g git-stats
|
||||||
|
# Initialize git hooks
|
||||||
curl -s https://raw.githubusercontent.com/IonicaBizau/git-stats/master/scripts/init-git-post-commit | bash
|
curl -s https://raw.githubusercontent.com/IonicaBizau/git-stats/master/scripts/init-git-post-commit | bash
|
||||||
|
|
||||||
# ...or wget
|
|
||||||
wget -qO- https://raw.githubusercontent.com/IonicaBizau/git-stats/master/scripts/init-git-post-commit | bash
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, you have to run `git init` into your existing git repositories from your local machine (that's because the `post-commit` should be updated). This
|
Then, run `git-stats --help` and see what the cli tool can do.
|
||||||
step will not be needed after cloning a repository (the git hooks will be added automatically from `~/.git-templates`).
|
|
||||||
|
|
||||||
#### Overriding the `git` command
|
|
||||||
One of the solutions is becoming a mad scientist, overriding the `git` command with a function. However, this may not work for you if you're using `zsh`.
|
|
||||||
|
|
||||||
Add the following lines in your `~/.bashrc` (or `~/.bash_profile` on OS X) file:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Override the Git command
|
|
||||||
git() {
|
|
||||||
cmd=$1
|
|
||||||
shift
|
|
||||||
extra=""
|
|
||||||
|
|
||||||
quoted_args=""
|
|
||||||
whitespace="[[:space:]]"
|
|
||||||
for i in "$@"
|
|
||||||
do
|
|
||||||
quoted_args="$quoted_args \"$i\""
|
|
||||||
done
|
|
||||||
|
|
||||||
cmdToRun="`which git` "$cmd" $quoted_args"
|
|
||||||
cmdToRun=`echo $cmdToRun | sed -e 's/^ *//' -e 's/ *$//'`
|
|
||||||
bash -c "$cmdToRun"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
# Commit stats
|
|
||||||
if [ "$cmd" == "commit" ]; then
|
|
||||||
commit_hash=`git rev-parse HEAD`
|
|
||||||
repo_url=`git config --get remote.origin.url`
|
|
||||||
commit_date=`git log -1 --format=%cd`
|
|
||||||
commit_data="\"{ \"date\": \"$commit_date\", \"url\": \"$repo_url\", \"hash\": \"$commit_hash\" }\""
|
|
||||||
git-stats --record "$commit_data"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git-stats --help
|
$ git-stats --help
|
||||||
|
@ -110,8 +81,6 @@ Your commit history is kept in the .git-stats, in your $HOME directory (~/)
|
||||||
Documentation can be found at https://github.com/IonicaBizau/git-stats
|
Documentation can be found at https://github.com/IonicaBizau/git-stats
|
||||||
```
|
```
|
||||||
|
|
||||||
If you override the `git` command with a function, then your commits will be automatically recorded.
|
|
||||||
|
|
||||||
If you run `git-stats` to display graph on Windows, please use a terminal that can properly display ANSI colors.
|
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.
|
Cygwin Terminal is known to work, while Windows Command Prompt and Git Bash do not.
|
||||||
|
|
||||||
|
@ -153,7 +122,6 @@ $ npm install
|
||||||
# Start downloading and importing
|
# Start downloading and importing
|
||||||
$ ./start
|
$ ./start
|
||||||
```
|
```
|
||||||
|
|
||||||
### See the GitHub Contributions calendar
|
### See the GitHub Contributions calendar
|
||||||
There is a solution for that, too! :smile: It's called [`ghcal`](https://github.com/IonicaBizau/ghcal).
|
There is a solution for that, too! :smile: It's called [`ghcal`](https://github.com/IonicaBizau/ghcal).
|
||||||
|
|
||||||
|
@ -164,101 +132,42 @@ $ npm install -g ghcal
|
||||||
# Checkout my contributions
|
# Checkout my contributions
|
||||||
$ ghcal ionicabizau
|
$ ghcal ionicabizau
|
||||||
```
|
```
|
||||||
|
|
||||||
For more detailed documentation, check out the repository: https://github.com/IonicaBizau/ghcal.
|
For more detailed documentation, check out the repository: https://github.com/IonicaBizau/ghcal.
|
||||||
|
|
||||||
## Documentation [![Inline docs](http://inch-ci.org/github/IonicaBizau/git-stats.svg?branch=master)](http://inch-ci.org/github/IonicaBizau/git-stats)
|
## Example
|
||||||
|
|
||||||
If you want to use this as a module, that is possible. See the content below.
|
Here is an example how to use this package as library.
|
||||||
|
|
||||||
### `record(data, callback)`
|
```js
|
||||||
Records a new commit.
|
// Dependencies
|
||||||
|
var GitStats = require("git-stats");
|
||||||
|
|
||||||
#### Params
|
// Create the GitStats instance
|
||||||
- **Object** `data`: The commit data containing:
|
var g1 = new GitStats();
|
||||||
- `date` (String|Date): The date object or a string in a format that can be parsed.
|
|
||||||
- `url` (String): The repository remote url.
|
|
||||||
- `hash` (String): The commit hash.
|
|
||||||
|
|
||||||
- **Function** `callback`: The callback function.
|
// Display the ansi calendar
|
||||||
|
g1.ansiCalendar({
|
||||||
|
theme: "DARK"
|
||||||
|
}, function (err, data) {
|
||||||
|
console.log(err || data);
|
||||||
|
});
|
||||||
|
|
||||||
#### Return
|
```
|
||||||
- **GitStats** The `GitStats` object.
|
|
||||||
|
|
||||||
### `get(callback)`
|
## Documentation
|
||||||
Gets the git stats.
|
|
||||||
|
|
||||||
#### Params
|
|
||||||
- **Function** `callback`: The callback function.
|
|
||||||
|
|
||||||
#### Return
|
|
||||||
- **GitStats** The `GitStats` object.
|
|
||||||
|
|
||||||
### `save(stats, callback)`
|
|
||||||
Saves the provided stats.
|
|
||||||
|
|
||||||
#### Params
|
|
||||||
- **Object** `stats`: The stats to be saved.
|
|
||||||
- **Function** `callback`: The callback function.
|
|
||||||
|
|
||||||
#### Return
|
|
||||||
- **GitStats** The `GitStats` object.
|
|
||||||
|
|
||||||
### `iterateDays(data, callback)`
|
|
||||||
Iterate through the days, calling the callback function on each day.
|
|
||||||
|
|
||||||
#### Params
|
|
||||||
- **Object** `data`: An object containing the following fields:
|
|
||||||
- `start` (Moment): A `Moment` date object representing the start date (default: *an year ago*).
|
|
||||||
- `end` (Moment): A `Moment` date object representing the end date (default: *now*).
|
|
||||||
- `format` (String): The format of the date (default: `"MMM D, YYYY"`).
|
|
||||||
|
|
||||||
- **Function** `callback`: The callback function called with the current day formatted (type: string) and the `Moment` date object.
|
|
||||||
|
|
||||||
#### Return
|
|
||||||
- **GitStats** The `GitStats` object.
|
|
||||||
|
|
||||||
### `graph(data, callback)`
|
|
||||||
Creates an object with the stats on the provided period (default: *last year*).
|
|
||||||
|
|
||||||
#### Params
|
|
||||||
- **Object** `data`: The object passed to the `iterateDays` method.
|
|
||||||
- **Function** `callback`: The callback function.
|
|
||||||
|
|
||||||
#### Return
|
|
||||||
- **GitStats** The `GitStats` object.
|
|
||||||
|
|
||||||
### `calendar(data, callback)`
|
|
||||||
Creates the calendar data for the provided period (default: *last year*).
|
|
||||||
|
|
||||||
#### Params
|
|
||||||
- **Object** `data`: The object passed to the `graph` method.
|
|
||||||
- **Function** `callback`: The callback function.
|
|
||||||
|
|
||||||
#### Return
|
|
||||||
- **GitStats** The `GitStats` object.
|
|
||||||
|
|
||||||
### `ansiCalendar(data, callback)`
|
|
||||||
Creates the ANSI contributions calendar.
|
|
||||||
|
|
||||||
#### Params
|
|
||||||
- **Object** `data`: The object passed to the `calendar` method.
|
|
||||||
- **Function** `callback`: The callback function.
|
|
||||||
|
|
||||||
#### Return
|
|
||||||
- **GitStats** The `GitStats` object.
|
|
||||||
|
|
||||||
|
For full API reference, see the [DOCUMENTATION.md][docs] file.
|
||||||
|
|
||||||
## How to contribute
|
## How to contribute
|
||||||
|
Have an idea? Found a bug? See [how to contribute][contributing].
|
||||||
1. File an issue in the repository, using the bug tracker, describing the
|
|
||||||
contribution you'd like to make. This will help us to get you started on the
|
|
||||||
right foot.
|
|
||||||
2. Fork the project in your account and create a new branch:
|
|
||||||
`your-great-feature`.
|
|
||||||
3. Commit your changes in that branch.
|
|
||||||
4. Open a pull request, and reference the initial issue in the pull request
|
|
||||||
message.
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
See the [LICENSE](./LICENSE) file.
|
[KINDLY][license] © [Ionică Bizău][website]–The [LICENSE](/LICENSE) file contains
|
||||||
|
a copy of the license.
|
||||||
|
|
||||||
|
[license]: http://ionicabizau.github.io/kindly-license/?author=Ionic%C4%83%20Biz%C4%83u%20%3Cbizauionica@gmail.com%3E&year=2015
|
||||||
|
[contributing]: /CONTRIBUTING.md
|
||||||
|
[website]: http://ionicabizau.net
|
||||||
|
[docs]: /DOCUMENTATION.md
|
||||||
|
[paypal-donations]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MG98D7NPFZ3MG
|
||||||
|
[donate-now]: http://i.imgur.com/jioicaN.png
|
Loading…
Reference in a new issue