README
expressjs-git
Serve and receive git repositories with express.
Installation
npm i expressjs-git
Work in progress
- Callbacks
- Authentification
Simple usage
var express = require('express');
var expressGit = require('express-git');
var app = express();
var reposMiddle = expressGit({
folder: path.join(__dirname, 'repos')
});
app.use('/repos/:repository', reposMiddle);
app.listen(8080, function()
{
console.log('App and running on port 8080.');
});
The middleware created here looks for repositories in the folder, provided via the folder
option. It's done by path.join
ing the folder
with the parameter repository
within the url (meaning, you must provide it). This is not working recursive. However, you can replace the "resolve repository path"-logic with your own. See the next section.
Advanced usage
npm i glob
var path = require('path');
var express = require('express');
var expressGit = require('express-git');
var glob = require('glob');
var app = express();
var reposMiddle = expressGit({
folder: path.join(__dirname, 'repos'),
resolve: function(request, done)
{
if(request.params.repo == null)
{
done(new Error('"Repo" not defined.'), null);
return;
}
glob(path.join(this.folder, '**', request.params.repo), function(error, files)
{
if(error != null || files.length === 0)
{
done(error == null ? new Error(request.params.repo + ' not found.') : error);
return;
}
done(null, files[0]);
});
}
});
app.use('/repos/:repo', reposMiddle);
app.listen(8080, function()
{
console.log('App and running on port 8080.');
});
The middleware created here uses glob
to search recursively within folder
(yes, this
is the complete options-object). The repository is identified by the repo
url parameter.