git-range
v0.2.0
Published
Parse git revision ranges for nodegit
Downloads
22
Readme
git-range
Parse git revision ranges for nodegit.
Supports the following format:
<rev1>..<rev2>
.<rev2> ^<rev1>
.<rev1>...<rev2>
.<rev>^@
.<rev>^!
.<rev>^-<nth parent>
.
Usage
nodegit.Revparse can parse single revision references and nodegit.Revwalk only support two dot notation ranges (via pushRange(range)
or single revisions. Even with single revisons, you need to know what its type (a commit sha, its shortname, a reference).
With git-range, you can instead convert a range to a list of commit id; the revisions to exclude starts with "^":
const git = require('nodegit');
const range = require('git-range');
git.Repository.open('.git').then(
repo => range.parse(repo, ['HEAD^@', '^v1.0.0']).then(revisions => {
// Equivalent output to "git rev-parse HEAD^@ ^v1.0.0^{commit}"
console.log(revisions.join('\n'));
repo.free();
}).catch(e => {
repo.free();
console.error(e);
})
);
API
gitRange.parse(repo: nodegit.Repository, revisions: string|string[]): Promise<Range,Error>
:Parse a git revision range to a list of revision id to include or exclude (starts with "^").
Range: string[]
List of revision id to include or exclude (starts with "^").
Range.prototype.walker(): nodegit.Revwalk
:Create a Revwalk from the revision range.
Range.prototype.commits({limit: number, sorting: number|number[]}): Promise<nodegit.Commit[],Error>
:Resolve to the commits in the range.
Install
Using npm:
npm install [email protected] --save
npm install git-range --save
Known Issues
Do not support triple dot range notation if there's more than one merge-bases between the two revisions.
License
MIT License
Copyright (c) 2017 Damien Lebrun