我正在尝试在我的本地设置一个中央存储库,在 NodeJS 上运行,其他人可以访问、创建自己的 git 存储库、克隆、提交、推送、从他们的 git 存储库中提取。这个想法更像是设置一个在 NodeJS 上运行的本地 Github。我目前正在使用nodegit库。
我可以git init --bare
通过使用创建一个新的存储库 () ,还可以使用Git.Repository.init(repopath, is_bare)
为该存储库 () 设置自定义克隆 urlgit remote set-url
Git.Remote.setUrl(repository, remote, cloneUrl)
但我坚持创建像“http://example.com/repo/example.git”这样的克隆 URL。如何在 NodeJS 中创建一个其他人可以用来 git clone 的 repo URL?它应该指向哪里?我应该为 repo URL 提供什么样的响应?
目前我的代码如下:
var Git = require('nodegit');
var path = require('path');
var fs = require('fs');
exports.repo_create = function(req, res) {
// Create repository folder if doesn't exist which will include all repos.
const dir = path.join(__dirname, '/../../repository');
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
if (typeof req.body.reponame !== 'undefined' && req.body.reponame !== null) {
// Creating req.body.reponame folder under repository folder.
// repository/{req.body.reponame}
const repopath = path.join(dir, req.body.reponame);
if (!fs.existsSync(repopath)) {
fs.mkdirSync(repopath);
}
var is_bare = 1;
// Initialising bare repo.
Git.Repository.init(repopath, is_bare).then(function(repository) {
const remote = 'origin';
var cloneUrl = req.protocol + '://' + req.get('host') + '/repos/' + req.body.reponame + '.git';
// Setting http://www.example.com/repos/example.git as repo url for individual git repo under repositories/example folder.
Git.Remote.setUrl(repository, remote, cloneUrl);
// Sending JSON response from Node API.
res.json({ status: 'SUCCESS', message: req.body.reponame + ' repository created' });
}).catch(function(error) {
// Sending JSON response from Node API.
res.json({ status: 'FAILURE', message: error });
});
} else {
// Sending JSON response from Node API.
res.json({ status: 'FAILURE', message: 'Failed to create repository' });
}
}
任何帮助表示赞赏!