Node.js libgit2 bindings
Maintained by Tim Branyen @tbranyen, Michael Robinson @codeofinterest, and Nick Kallen @nk, with help from awesome contributors!
Documentation may be found here: nodegit documentation.
Nodegit aims to eventually provide native asynchronous bindings for as much of libgit2 as possible.
To install nodegit you need Node.js, python and cmake.
This will install and configure everything you need to use nodegit.
$ npm run-script gen && npm install && npm test$ git clone git://github.com/tbranyen/nodegit.git
$ cd nodegit
$ npm run-script gen && npm installnodegit 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)
Below are two examples. There are several more.
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();
});
});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('...');
});
});
});
});