gitkit-js

Pure javascript implementation of Git (Node.js and Browser)

  • Owner: SamyPesse/gitkit-js
  • Platform:
  • License:: Apache License 2.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

GitKit.js

NPM version
Linux Build Status
Windows Build status

Pure JavaScript implementation of Git backed by immutable models and promises.

The goal is to provide both a low and high level API for manipulating Git repositories: read files, commit changes, edit working index, clone, push, fetch, etc.

This library can work both in the browser and Node.js.

Installation

$ npm install gitkit

Usage

API Basics

State of the Git repository is represented as a single immutable Repository object. Read and write access to the repository is done using a FS driver, the implementation of the fs depends on the plaftrom (NativeFS for Node.js/Native, LocalStorageFS or MemoryFS for the browser).

var GitKit = require('gitkit');
var NativeFS = require('gitkit/lib/fs/native');

// Prepare the filesystem
var fs = NativeFS(process.cwd());

// Create a repository instance
var repo = GitKit.Repository.createWithFS(fs, isBare);
Clone a remote repository
// Create a transport instance for the GitHub repository
var transport = new GitKit.HTTPTransport('https://github.com/GitbookIO/gitbook.git');

GitKit.TransferUtils.clone(repo, transport)
.then(function(newRepo) {
    // Clone succeed!
}, function(err) {
    // Clone failed
})
List branches

GitKit.BranchUtils.list returns a promise listing branches as a list of strings.

GitKit.BranchUtils.list(repo)
    .then(function(branches) { ... })
Get current branch

GitKit.BranchUtils.getCurrent returns a promise resolved with the name of the current active branch.

GitKit.BranchUtils.getCurrent(repo)
    .then(function(branch) { ... })
List files in repository

GitKit.WorkingIndex provides a set of methods to work with the working index.

GitKit.WorkingIndex.readFromRepo(repo)
    .then(function(workingIndex) {
        var entries = workingIndex.getEntries();
    });
List changes not staged for commit

GitKit.ChangesUtils provides a set of methods to work with pending changes.

GitKit.ChangesUtils.list(repo)
    .then(function(changes) { ... });
Commit changes
var author = GitKit.Person.create('Bob', 'bob@gmail.com');
var message = 'My First commit';

GitKit.CommitUtils.createForChanges(repo, author, message, changes)
    .then(function(newRepo) { ... });
More example and documentation coming soon!

I'll publish a better documentation for this library soon.

Thanks

To the people pointing me in the right directions like:

License

GitKit.js is Apache-licensed.

Main metrics

Overview
Name With OwnerSamyPesse/gitkit-js
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:Apache License 2.0
所有者活动
Created At2015-12-16 14:57:40
Pushed At2018-01-26 10:35:37
Last Commit At2016-06-26 16:10:39
Release Count1
Last Release Name0.1.0 (Posted on )
First Release Name0.1.0 (Posted on )
用户参与
Stargazers Count605
Watchers Count23
Fork Count35
Commits Count75
Has Issues Enabled
Issues Count14
Issue Open Count11
Pull Requests Count1
Pull Requests Open Count2
Pull Requests Close Count1
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private