Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

wangshijun/nodegit

Open more actions menu
 
 

Repository files navigation

nodegit

Node.js libgit2 bindings

v0.1.0 Build Status

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

Install nodegit by cloning source from GitHub and running node install:

# Install system dependencies
$ brew install cmake libzip
$ npm install -g node-gyp
$ 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('...');
      });
    });
  });
});

githalytics.com alpha

About

Native asynchronous bindings to libgit2 for Node.js.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 60.6%
  • JavaScript 33.2%
  • CSS 3.0%
  • C 2.9%
  • Python 0.3%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.