🎡 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 install node-git-server
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
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
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
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 falseorgit config --global http.sslCAInfo /path/to/cert.pem
For more information please visit the docs
This library is aimed to have a zero dependency footprint. If you are reading this and you see dependencies, help to remove them 🐒.
This is a hard fork from pushover.