git-http-server2

0.1.1 • Public • Published

Git HTTP server

Serve a directory tree of Git repositories over HTTP.

This tool is a thin wrapper around git-http-backend.

Use it in your package

Install it with

npm install --save git-http-server2

Then, in your program, for example:

var gitServer = require('git-http-server2');
 
var server = gitServer.run({
  ip: '129.77.66.122',
  port: 5167,
  dir: '/Users/bob/repos',
});
 
... do a bunch of stuff ...
 
server.close();

Command line

To set it up to use from the command line:

npm install -g git-http-server2

For usage information:

git-http-server2 --help

Options can be controlled via the command-line (highest precedence) or environment variables. These are also describe in the usage message:

usage: git-http-server2 [-r] [-p port] [-H host] [dir]

options

  -h, --help           print this message and exit
  -i, --ip             [env GIT_HTTP_IP] IP address of the allowed client
  -H, --host <host>    [env GIT_HTTP_HOST] host on which to listen
  -p, --port <port>    [env GIT_HTTP_PORT] port on which to listen
  -r, --readonly       [env GIT_HTTP_READONLY] operate in read-only mode
  -a, --allowcreation [env GIT_HTTP_ALLOWCREATION] allows pushing unknown repositories
  -u, --updates        check for available updates and exit
  -v, --version        print the version number and exit

Examples

Start the server with one repository:

$ mkdir served && cd served
$ git init --bare foo.git
Initialized empty Git repository in /Users/.../repos/foo.git/
$ git-http-server2
listening on http://0.0.0.0:8174 in /Users/.../repos

Now, from another terminal, clone the empty repository:

$ mkdir clones && cd clones
$ git clone http://127.0.0.1:8174/foo.git
Cloning into 'foo'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

Add do some git stuff in the clone:

$ cd foo
$ touch bar
$ git add bar
$ git commit -m 'initial commit' bar
[master (root-commit) 9a37778] initial commit ...
$ git push origin master
Counting objects: 3, done
...
* [new branch]      master -> master

Meanwhile, back in the server terminal, the logs look like:

127.0.0.1 - - [28/Mar/2015:22:45:51 -0400] "GET /foo.git/..."
127.0.0.1 - - [28/Mar/2015:22:46:44 -0400] "GET /foo.git/..."
127.0.0.1 - - [28/Mar/2015:22:46:44 -0400] "POST /foo.git/..."

Development

Clone the repo, then:

npm install
npm test

About this fork

The main changes in this fork are:

  • The addition of a switch to restrict the clients by IP address
  • Added a programmatic interface - see test/test.js for an example.
  • Addition of tests

License

MIT License

Readme

Keywords

Package Sidebar

Install

npm i git-http-server2

Weekly Downloads

0

Version

0.1.1

License

MIT

Last publish

Collaborators

  • klortho