Parse git revision ranges for nodegit.
Supports the following format:
<rev1>..<rev2>
.<rev2> ^<rev1>
.<rev1>...<rev2>
.<rev>^@
.<rev>^!
.<rev>^-<nth parent>
.
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'));
})
).done();
-
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.
Using npm:
npm install [email protected] --save
npm install git-range --save
Do not support triple dot range notation if there's more than one merge-bases between the two revisions.
MIT License
Copyright (c) 2017 Damien Lebrun