Contributors list
Build awesome list of the contributors of your project! You can even filter your contributors to list only those individuals who committed after a specific date or who committed to a specific branch or SHA.
Usage
In order to get the contributors list for your open-source project use:
githubcontrib --owner USERNAME --repo REPO_NAME --cols 6 --filter user1,user2,user3 | pbcopy
Advanced API
Parameter name | Description | Default value | Sample value |
---|---|---|---|
repo |
Repository name. ] | (required) | --repo angular-material |
owner |
Repository owner that the repo belongs to. | (required) | --owner angular |
fromDate |
YYYY-MM-DD used to determine only the contributors after the specified commit fromDate. | '' |
--fromDate 2016-04-01 |
sha |
SHA or branch name to start listing commits from. Default == the repository’s default branch (usually master). | '' |
--sha e58f3629e |
sortOrder |
Specifies the sort order. | 'asc' |
--sortOrder desc |
sortBy |
Specifies the sort property. It will be passed as third argument to the sortStrategy . |
'contributions' |
--sortBy login |
sortStrategy |
Custom sort strategy. Built-in strategies support string and number comparison. | '../lib/sort_strategies/sort_asc.js' |
--sortStrategy custom_sort.js |
layoutStrategy |
Specifies how the output will be formatted. | '../lib/layout_strategies/table.js' |
--layoutStrategy custom_layout.js |
filter |
Specifies users to be filtered. | [] |
--filter userlogin1,userlogin2 |
filterStrategy |
Specifies the filter strategy. | '../lib/filter_strategies/login.js' |
--filterStrategy custom_filter.js |
authToken |
Specifies the scope-limited Github oAuth application token: required increase your request rate limit to 5000 / hour. | '' |
--authToken 0da9a3f98dff9a61a0222fd5db201221c5b129f8 |
This way your contributors will be formatted in a table with their photos.
The table strategy accepts the following parameters:
-
image-size
- Number - size of the user's avatars -
format
- Enum -MARKDOWN
orHTML
. Default ==HTML
-
showlogin
- Boolean, indicates whether the login of the contributor should be shown in the table. Default ==false
-
columns-count
- Number - number of columns for the table
Different ways of formatting
You can easily add more formatting strategies by exporting the formatting logic.
Here's a sample implementation of a list layout strategy:
var formatter = function (options) {
options = options || {};
var field = options.field || 'login',
numbered = options.style === 'numbers';
return function (data) {
var result = '\n';
data.forEach(function (user, idx) {
if (numbered) {
result += idx + 1;
} else {
result += '-';
}
result += ' ' + user[field] + '\n';
});
return result;
};
};
module.exports = formatter;
Testing with Curl
You can easily use the command line to query for a single page of information from the Github API.
- Get List of commits for the repository since 4/1/2016:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: token <accessToken>" -X GET -d '{"since":"2016-04-01T00:00:00"}' https://api.github.com/repos/<owner>/<repository>/commits > commits.json
- Get list of contributors for the repository:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: token <accessToken>" -X GET https://api.github.com/repos/<owner>/<repository>/contributors > contributors.json
If, however, you want all the data and the full power... use githubcontrib
to get a list of contributors, supports 1..n pages of data, and will format the JSON as Markdown or HTML tables
node githubcontrib --owner angular --repository material --sha master --since 2016-04-01 --cols 6 --sortOrder desc --format md --showlogin true > ../contributions.md
Bash Function
The following bash function is quite convenient:
function ghcontrib() {
repo=$(basename $(pwd))
githubcontrib --owner USER_NAME --repo $repo --cols 6 --showlogin true --filter gitter-badger --sortOrder desc | pbcopy
}
You can invoke it with:
ghcontrib
It assumes that you're in the project's directory, the directory is named after your project on GitHub and your username is USER_NAME
.
The function will run githubcontrib
and put the returned markdown in your clipboard.
GitHub Limit
The Github API has a 60-requests-per-hour rate-limit for non-authenticated use. If you need some more then a scope-limited Github OAuth token can be used to boost the limit to 5000.
License
MIT