0.2.0 • Published 7 years ago

git-range v0.2.0

Weekly downloads
16
License
MIT
Repository
github
Last release
7 years ago

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'));
    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 nodegit@0.18 --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