node package manager

nodegit

Node.js libgit2 asynchronous native bindings

Node bindings to the libgit2 project.

Linux OS X Windows Coverage Dependencies

Stable (libgit2#master): 0.16.0 Stable (libgit2@0.24): 0.14.1

Tim Branyen @tbranyen, John Haley @johnhaley81, and Max Korp @maxkorp with help from tons of awesome contributors!

Steve Smith @orderedlist, Michael Robinson @codeofinterest, and Nick Kallen @nk

http://www.nodegit.org/

NodeGit will work on most systems out-of-the-box without any native dependencies.

npm install nodegit

If you receive errors about libstdc++, which are commonly experienced when building on Travis-CI, you can fix this by upgrading to the latest libstdc++-4.9.

In Ubuntu:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install libstdc++-4.9-dev

In Travis:

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - libstdc++-4.9-dev

In CircleCI:

  dependencies:
    pre:
      - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
      - sudo apt-get update
      - sudo apt-get install -y libstdc++-4.9-dev

If you are still encountering problems while installing, you should try the Building from source instructions.

var Git = require("nodegit");
 
// Clone a given repository into the `./tmp` folder. 
Git.Clone("https://github.com/nodegit/nodegit", "./tmp")
  // Look up this known commit. 
  .then(function(repo) {
    // Use a known commit sha from this repository. 
    return repo.getCommit("59b20b8d5c6ff8d09518454d4dd8b7b30f095ab5");
  })
  // Look up a specific file within that commit. 
  .then(function(commit) {
    return commit.getEntry("README.md");
  })
  // Get the blob contents from the file. 
  .then(function(entry) {
    // Patch the blob to contain a reference to the entry. 
    return entry.getBlob().then(function(blob) {
      blob.entry = entry;
      return blob;
    });
  })
  // Display information about the blob. 
  .then(function(blob) {
    // Show the path, sha, and filesize in bytes. 
    console.log(blob.entry.path() + blob.entry.sha() + blob.rawsize() + "b");
 
    // Show a spacer. 
    console.log(Array(72).join("=") + "\n\n");
 
    // Show the entire file. 
    console.log(String(blob));
  })
  .catch(function(err) { console.log(err); });
 
var Git = require("nodegit");
 
// Open the repository directory. 
Git.Repository.open("tmp")
  // Open the master branch. 
  .then(function(repo) {
    return repo.getMasterCommit();
  })
  // Display information about commits on master. 
  .then(function(firstCommitOnMaster) {
    // Create a new history event emitter. 
    var history = firstCommitOnMaster.history();
 
    // Create a counter to only show up to 9 entries. 
    var count = 0;
 
    // Listen for commit events from the history. 
    history.on("commit", function(commit) {
      // Disregard commits past 9. 
      if (++count >= 9) {
        return;
      }
 
      // Show the commit sha. 
      console.log("commit " + commit.sha());
 
      // Store the author object. 
      var author = commit.author();
 
      // Display author information. 
      console.log("Author:\t" + author.name() + " <" + author.email() + ">");
 
      // Show the commit date. 
      console.log("Date:\t" + commit.date());
 
      // Give some space and show the message. 
      console.log("\n    " + commit.message());
    });
 
    // Start emitting events. 
    history.start();
  });

For more examples, check the examples/ folder.

You will need to build locally before running the tests. See above.

npm test