0.21.2-cardstack.1 • Public • Published

    This is a fork of nodegit that's published with a prebuilt statically linked Linux build (the upstream prebuilt linux binary uses a glibc that's too new to work in many common environments like TravisCI).

    You can build it inside docker like

    docker run --rm -it --mount type=bind,source="$(pwd)",target=/app node:8.8 /bin/bash
    cd /app
    yarn install


    Node bindings to the libgit2 project.

    Linux OS X Windows Coverage Dependencies
    Coverage Status

    Stable (libgit2@v0.26.0): 0.26.0

    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.


    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:

          - ubuntu-toolchain-r-test
          - libstdc++-4.9-dev

    In CircleCI:

          - 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

    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:

    var Git = 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.
        return repo.getCommit("59b20b8d5c6ff8d09518454d4dd8b7b30f095ab5");
      // Look up a specific file within that commit.
      .then(function(commit) {
        return commit.getEntry("README.md");
      // Get the blob contents from the file.
      .then(function(entry) {
        // Patch the blob to contain a reference to the entry.
        return entry.getBlob().then(function(blob) {
          blob.entry = entry;
          return blob;
      // 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.
      .catch(function(err) { console.log(err); });

    Emulating git log:

    var Git = require("nodegit");
    // Open the repository directory.
      // Open the master branch.
      .then(function(repo) {
        return repo.getMasterCommit();
      // Display information about commits on master.
      .then(function(firstCommitOnMaster) {
        // Create a new history event emitter.
        var history = firstCommitOnMaster.history();
        // Create a counter to only show up to 9 entries.
        var count = 0;
        // Listen for commit events from the history.
        history.on("commit", function(commit) {
          // Disregard commits past 9.
          if (++count >= 9) {
          // Show the commit sha.
          console.log("commit " + commit.sha());
          // Store the author object.
          var author = 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.

    For more examples, check the examples/ folder.

    Unit tests.

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

    npm test


    npm i @cardstack/nodegit



    DownloadsWeekly Downloads






    Unpacked Size

    56 MB

    Total Files


    Last publish


    • pcjun97
    • jurgen
    • burcunoyan
    • ef4
    • alexspeller
    • habdelra
    • lukemelia
    • aierie