什么是http.conf为了自动服务我所有的git仓库?
例如,如果我有一个如下所示的目录结构(在一个名为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>
奖金问题:
有没有办法让回收站在Apache的htdocs之外的地方,并在那里redirect请求? (如使用DocumentRoot)
笔记:
所有回购都是 – 因为它们是中央回购(Trac使用的)
使用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>
然后,您只需为每个存储库添加一行
Use Project repos1 Use Project repos2
这不是自动不幸的,也就是说,它不会拾取目录中的所有存储库,但是您可以运行cron作业为您创buildconfiguration:
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
如果您愿意,项目macros也可以执行trac http config。
如果可能的话,我会build议使用SSH来共享你的存储库 – 它将提供更好的安全性,并且通常更好地工作,因为HTTP是Git条款中的“哑”协议。 这也意味着你可以使用标准的文件系统权限来控制访问,并且你可以运行钩子脚本等等。HTTP是Git的最低公共标准协议,我想你最好使用别的东西。
如果因为某种原因使用了HTTP,那么pgs的答案就是要走的路。
如果你所有的版本库都可以使用相同的AuthUserFile,那么可以,但我不认为这就是你要求的。 你可能需要在外部生成多个Location部分,用一些perl代码说,然后让apache重新读取configuration文件。
你有没有考虑过使用gitosis或git-daemon?
对于你的奖金问题,像这样的:
alias /git /path/to/repository/root <Directory "/path/to/repository/root"> ... </Directory>