2

我在 Debian 系统上设置了一个 git 服务器并安装了 gitlist 来查看存储库。所有这些都很好,我可以看到我的存储库并通过 HTTP 克隆和推送它们。

我的问题是推送存储库的 URL 与 gitlist URL 不同。现在我可以通过http://<IP>/gitlist/这样的存储库访问 gitlisthttp://<IP>/gitlist/example.git

当我想克隆/拉/推它们时,我必须使用http://<IP>/git/example.git(在 apache 中配置)

SetEnv GIT_PROJECT_ROOT /home/git/repositories
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git /usr/lib/git-core/git-http-backend

但我已经看到运行 gitlist 的系统,您可以在其中简单地从浏览器复制 URL 并将其用于 git。

所以我的问题是,我如何设置 apache 和 gitlist,我可以使用浏览器中的 URL 来克隆存储库等等。( git clone http://<IP>/gitlist/example.git)

4

1 回答 1

3

您必须更改您的 apache 配置。

重写 ScriptAlias 不触及 gitlist,但 git 命令可以访问自己需要的数据(如info/refs

这是我的 git.conf(在 /etc/apache/conf.d/ 内的 debian 下):

SetEnv GIT_PROJECT_ROOT /home/git/repositories
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch /gitlist/(.*/(HEAD|info/refs|objects/(info/[^/]+|[0-9a-f]{2}/[0-9a-f]{38}|pack/pack-[0-9a-f]{40}\.(pack|idx))|git-(upload|receive)-pack)) /usr/lib/git-core/git-http-backend/$1

(注意:您没有使用 ScriptAlias 而是使用 ScriptAliasMatch 来使用正则表达式)

于 2013-12-26T01:18:28.307 回答