Skip to content

Repository files navigation

NodeGit

Node bindings to the libgit2 project.

Linux & macOSWindowsCoverageDependencies
Build Status TravisBuild Status AppVeyorCoverallsDependencies

Stable (libgit2@v0.27.3): 0.27.3

Have a problem? Come chat with us!

Visit slack.libgit2.org to sign up, then join us in #nodegit.

Maintained by

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

Alumni Maintainers

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

API Documentation.

http://www.nodegit.org/

Getting started.

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-testpackages:
- 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 receive errors about lifecycleScripts preinstall/install you probably miss libssl-dev In Ubuntu:

sudo apt-get install libssl-dev

Additionally, you need curl-config on your system. You need one of these packages:

  • libcurl4-gnutls-dev
  • libcurl4-nss-dev
  • libcurl4-openssl-dev

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

API examples.

Cloning a repository and reading a file:

varGit=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.returnrepo.getCommit("59b20b8d5c6ff8d09518454d4dd8b7b30f095ab5");})// Look up a specific file within that commit..then(function(commit){returncommit.getEntry("README.md");})// Get the blob contents from the file..then(function(entry){// Patch the blob to contain a reference to the entry.returnentry.getBlob().then(function(blob){blob.entry=entry;returnblob;});})// 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);});

Emulating git log:

varGit=require("nodegit");// Open the repository directory.Git.Repository.open("tmp")// Open the master branch..then(function(repo){returnrepo.getMasterCommit();})// Display information about commits on master..then(function(firstCommitOnMaster){// Create a new history event emitter.varhistory=firstCommitOnMaster.history();// Create a counter to only show up to 9 entries.varcount=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.varauthor=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.

Unit tests.

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

npm test

About

Native Node bindings to Git.

Resources

Contributing

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages