Skip to content

Repository files navigation

node-git-server

🎡 A configurable git server written in Node.js

there be 🐲 here! The API's and functionality are still be cemented, anything before a 1.0.0 release will be subject to change.

Npm VersionBuild StatusCoverage StatusDependency StatusdevDependency Statusnpmnpm

Install

npm install node-git-server

Usage

Simple

constpath=require('path');constServer=require('node-git-server');constrepos=newServer(path.resolve(__dirname,'tmp'),{autoCreate: true});constport=process.env.PORT||7005;repos.on('push',(push)=>{console.log(`push ${push.repo}/${push.commit} (${push.branch})`);push.accept();});repos.on('fetch',(fetch)=>{console.log(`fetch ${fetch.commit}`);fetch.accept();});repos.listen(port,()=>{console.log(`node-git-server running at http://localhost:${port}`)});

then start up the node-git-server server...

$ node example/index.js

meanwhile...

$ git push http://localhost:7005/beep master
Counting objects: 356, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (133/133), done.
Writing objects: 100% (356/356), 46.20 KiB, done.
Total 356 (delta 210), reused 355 (delta 210)
To http://localhost:7005/beep
* [new branch] master -> master

Sending logs

constpath=require('path');constServer=require('node-git-server');constrepos=newServer(path.resolve(__dirname,'tmp'),{autoCreate: true});constport=process.env.PORT||7005;repos.on('push',(push)=>{console.log(`push ${push.repo}/${push.commit} (${push.branch})`);repos.list((err,results)=>{push.log(' ');push.log('Hey!');push.log('Checkout these other repos:');for(constrepoofresults){push.log(`- ${repo}`);}push.log(' ');});push.accept();});repos.listen(port,()=>{console.log(`node-git-server running at http://localhost:${port}`)});

then start up the node-git-server server...

$ node example/index.js

meanwhile...

$ git push http://localhost:7005/beep master
Counting objects: 356, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (133/133), done.
Writing objects: 100% (356/356), 46.20 KiB, done.
Total 356 (delta 210), reused 355 (delta 210)
remote: remote: Hey!
remote: Checkout these other repos:
remote: - test.git
remote: To http://localhost:7005/test
77bb26e..22918d5 master -> master

Authentication

constpath=require('path');constServer=require('node-git-server');constrepos=newServer(path.resolve(__dirname,'tmp'),{autoCreate: true,authenticate: (type,repo,user,next)=>{if(type=='push'){user((username,password)=>{console.log(username,password);next();});}else{next();}}});constport=process.env.PORT||7005;repos.on('push',(push)=>{console.log(`push ${push.repo}/${push.commit} (${push.branch})`);push.accept();});repos.on('fetch',(fetch)=>{console.log(`fetch ${fetch.commit}`);fetch.accept();});repos.listen(port,()=>{console.log(`node-git-server running at http://localhost:${port}`)});

then start up the node-git-server server...

$ node example/index.js

meanwhile...

$ git push http://localhost:7005/beep master
Counting objects: 356, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (133/133), done.
Writing objects: 100% (356/356), 46.20 KiB, done.
Total 356 (delta 210), reused 355 (delta 210)
To http://localhost:7005/beep
* [new branch] master -> master

Example

Running the following command will start up a simple http server:

node example/index.js

If you want to try using https run the following

node example/index.js --https

When running https with self-signed certs there are two ways to override the git-clients behavior using git config http.sslVerify false or git config --global http.sslCAInfo /path/to/cert.pem

For more information please visit the docs

Philosophy

This library is aimed to have a zero dependency footprint. If you are reading this and you see dependencies, help to remove them 🐒.

Thanks

This is a hard fork from pushover.

About

🎡 A configurable git server written in Node.js

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages