在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
不同的目录中。
答案 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中发生这种情况分发,将不胜感激。