多个 HTTP Git 存储库设置

pek*_*pek 4 git

为了自动为我所有的 git 存储库提供服务,http.conf 是什么?

例如,如果我有一个如下的目录结构(一个名为 git 的中央目录中的多个项目):

/../htdocs/git/project1
/../htdocs/git/project2
/../htdocs/git/project3

为了避免对每个项目重复相同的内容,我必须写什么:

<Location /git/project1>
   DAV on
   AuthType Basic
   AuthName "Git"
   AuthUserFile /../htdocs/git/project1/passwd.git
   Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

奖金问题:

有没有办法将 repos 放在 apache 的 htdocs 之外的某个地方并将请求重定向到那里?(比如使用 DocumentRoot)

笔记:

所有存储库都是 --bare 因为它们是中央存储库(Trac 使用)

Mar*_*ark 5

使用 mod_macro:

<Macro Project $repos>
<Location /git/$repos>
   DAV on
   AuthType Basic
   AuthName "Git for $repos"
   AuthUserFile /../htdocs/git/$repos/passwd.git
   Require valid-user
</Location>
</Macro>
Run Code Online (Sandbox Code Playgroud)

然后您只需为每个存储库添加一行

Use Project repos1
Use Project repos2
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不是自动的,即它不会选择目录中的所有存储库,但是您可以运行 cron 作业来为您创建配置:

echo "# Git repository definitions" > /path/to/httpd_projectdef.conf
for i in /path/to/git/*; do echo "Use Project `basename $i`" >> /path/to/httpd_projectdef.conf; done
Run Code Online (Sandbox Code Playgroud)

如果您愿意,项目宏也可以执行 trac http 配置。