0.2.8 • Published 7 years ago

git-rest-api v0.2.8

Weekly downloads
53
License
-
Repository
github
Last release
7 years ago

GIT REST API

Build Status

The aim of the project is to provide a restful Git API that mimics as most as possible the old good git.

For example, in order to commit a change in shell you should do:

$ mkdir new-project
$ cd new-project
$ git init
$ git add file.c
$ git commit -m 'A commit message'
$ git add file.c
$ git commit -m 'A second commit message'
$ git show HEAD~:file.c

In case of git-rest-api you should do:

POST /init
  { "repo": "new-project" }
POST /repo/new-project/tree/file.c
POST /repo/new-project/commit
  { "message": "A commit message" }
POST /repo/new-project/tree/file.c
POST /repo/new-project/commit
  { "message": "A second commit message" }
GET  /repo/new-project/show/file.c?rev=HEAD~

Install

In your project install git-rest-api and express:

$ npm install git-rest-api
$ npm install express

Environment variables

The following environment variables are supported:

  • PORT: port to serve at, default is 8080
  • PREFIX: string prefix to serve repositories at, i.e. http://localhost:[port]/[prefix]/repo/:repo/tree/:path
  • TMPDIR: name of temporary directory to use to cache repositories
  • LOGLEVEL: log level for winston logger. Default is error

Example servers

Example 1: A simple example of a server running git-rest-api:

var app = require('express')(),
    git = require('git-rest-api');

git.init(app, { installMiddleware: true }).then(function () {
  app.listen(8080);
  console.log('Listening on', 8080);
});

Example 2: All actions on repositories are specific to the client session. To share repositories between sessions/cookies, pass an existing path to workDir in the init config, e.g.

mkdirp = require('mkdirp');
var WRKDIR = './wrk-test-git';
mkdirp.sync(WRKDIR, 0755);
git.init(app, { workDir: WRKDIR }).then(function () {
  ...
});

Example 3: For a dockerized version, check docker-node-git-rest-api

Example clients

Testing

  1. For direct testing on your local machine: npm install followed by npm test
  2. For using the provided vagrant virtual environment: cd vagrant followed by make
  3. To increase verbosity: export LOGLEVEL=info

API

0.2.8

7 years ago

0.2.7

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago