Skip to content

dinoboff/git-range

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

git-range

Build Status Coverage bitHound Overall Score

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'));
  })
).done();

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