Git HTTP Backend CGI binding for Node.js
npm install @fuubi/node-git-http-backendThis module makes the git-http-backend functionalities available for Node.js HTTP Servers,
by piping the HTTP Request through the Common Gateway Interface (CGI). It does not set all variables
defined by RFC 3875. Instead, it only defines
the minimum set of variables required by the git-http-backend.
sudo apt-get install git-core (for Ubuntu)git-http-backend/usr/lib/git-core/git-http-backendfatal: No REQUEST_METHOD from server
Status: 500 Internal Server Error
Expires: Fri, 01 Jan 1980 00:00:00 GMT
Pragma: no-cache
Cache-Control: no-cache, max-age=0, must-revalidate
- Hopefully, this is the last error message you see 😉.
3. Create a bare git repository
- Run $git init --bare /home/alice/cool-stuff.git
- Run $git update-server-info
- Updates the auxiliary info file to help dumb servers (more info).
- Run $git config http.receivepack true
- This serves git send-pack clients, allowing push (more info).4. Serve
/home/alice/cool-stuff.git with your Node.js HTTP Server
- This example uses the default config and handler to create the server.
- `typescript
import * as http from 'http'
import {
defaultConfig ,
requestHandler
} from 'node-git-http-backend' const config = defaultConfig (
'/usr/lib/git-core/git-http-backend' ,
'/home/alice/cool-stuff.git'
)
http.createServer ( requestHandler ( config ) )
.listen ( 3333 ,
() => console.log (
Git backend listening to port 3333.\n +
'If you ran, "npm run-script init-dev-env".\n' +
'You should be able to clone the test repository with:\n' +
'git clone http://localhost:3333/test.git' ) )
`
- Usually, it is not desired to let everybody push to a repository 😈. Therefore you have to implement
some middleware logic that makes sure only authenticated users are allowed to pull
or push, depending on how you want the repository to be accessible. Please have a look
at the git-http-backend documentation.Dev
Just run the following commands.
`bash
npm run-script init-dev-env
npm run-script dev
``