Node bindings to the libgit2 project.
| Linux & macOS | Windows | Coverage | Dependencies |
|---|---|---|---|
Stable ([email protected]): 0.27.3
Visit slack.libgit2.org to sign up, then join us in #nodegit.
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
NodeGit will work on most systems out-of-the-box without any native dependencies.
npm install nodegitIf 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-devIn Travis:
addons: apt: sources: - ubuntu-toolchain-r-testpackages: - libstdc++-4.9-devIn 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-devIf 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.
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);});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.
You will need to build locally before running the tests. See above.
npm test