Ubuntu:gitweb总是在/ var / cache / git中查找项目(“404 - 找不到项目”)

时间:2012-11-28 16:13:15

标签: git ubuntu-12.04 gitweb

在Ubuntu 12.04(64位)服务器上安装 gitweb 并将$projectroot中的变量/usr/share/gitweb/gitweb.cgi更改为/var/cache/git以外的任何目录后,项目为仍在/var/cache/git搜索。

Ubuntu的 gitweb 包(1.7.9.5)以及克隆Git的存储库并编译最新的稳定分支(1.8.0.1)时会发生这种情况。

这个问题也可以在Apache的gitweb网站上看到“404 - 没有找到任何项目”,因为项目将位于与/var/cache/git不同的目录中。

2 个答案:

答案 0 :(得分:2)

在Ubuntu中,不应编辑文件/usr/share/gitweb/gitweb.cgi$projectroot变量应在/etc/gitweb.conf

中设置

感谢Git’s mailing list的帮助。

答案 1 :(得分:0)

在定义$projectroot=/var/git后(根据我的情况),如果我在第3,915行的$projectroot中插入<title>的值,则会显示字符串/var/cache/git,所以问题是在cgi文件的某个地方,$projectroot的值被重置为系统的默认值。

此行为的罪魁祸首在于git_get_projects_list子例程,其中,在第2,865行中,再次定义了全局变量our $projectroot,将其值重置为系统的默认值。解决问题的方法是,在同一行上声明它并将其设置为与上面相同的值:

...
2,863. # global variables                                       
2,864. our $project_maxdepth = 2007;
2,865. our $projectroot = "/var/git";
2,866. # skip project-list toplevel, if we get it.              
2,867. return if (m!^[/.]$!);
...

我还没有在Ubuntu或Git的邮件列表中看到过这个问题,所以任何见解就好像这是一个bug或一个功能(虽然它看起来很明显是我的错误),或者如果在其他Linux中发生这种情况分发,将不胜感激。