nodegit
Node.js libgit2 bindings
Maintained by Tim Branyen @tbranyen, Michael Robinson @codeofinterest, and Nick Kallen @nk, with help from awesome contributors!
API Documentation
Documentation may be found here: nodegit
documentation.
Building and installing
Dependencies
To install nodegit
you need Node.js
, python
and cmake
(>=2.8).
Easy install (Recommended)
This will install and configure everything you need to use nodegit
.
$ npm run-script gen && npm install && npm test
Mac OS X/Linux/Unix
nodegit
by cloning source from GitHub and running node install
:
Install $ git clone git://github.com/tbranyen/nodegit.git$ cd nodegit$ npm run-script gen && npm install
Windows via Cygwin
nodegit
has been compiled and tested to work with the setup required to build and run Node.js
itself.
Instructions on compiling Node.js
on a Windows platform can be found here:
https://github.com/ry/node/wiki/Building-node.js-on-Cygwin-(Windows)
API Example Usage
Below are two examples. There are several more.
Git Log Emulation
var git = require('../'), path = require('path'); git.Repo.open(path.resolve(__dirname, '/tmp/repo/.git'), function(error, repo) { if (error) throw error; repo.getMaster(function(error, branch) { if (error) throw error; // History returns an event. var history = branch.history(); // History emits 'commit' event for each commit in the branch's history history.on('commit', function(commit) { console.log('commit ' + commit.sha()); console.log('Author:', commit.author().name() + ' <' + commit.author().email() + '>'); console.log('Date:', commit.date()); console.log('\n ' + commit.message()); }); // Don't forget to call `start()`! history.start(); });});
Clone a repo and read a file
git.Repo.clone("https://github.com/nodegit/nodegit.git", path, null, function(error, repo) { if (error) throw error; repo.getCommit('59b20b8d5c6ff8d09518454d4dd8b7b30f095ab5', function(error, commit) { if (error) throw error; commit.getEntry('README.md', function(error, entry) { if (error) throw error; entry.getBlob(function(error, blob) { if (error) throw error; console.log(entry.name(), entry.sha(), blob.size() + 'b'); console.log('========================================================\n\n'); var firstTenLines = blob.toString().split('\n').slice(0, 10).join('\n'); console.log(firstTenLines); console.log('...'); }); }); });});