Gitweb无法找到仓库“未找到此类项目”

5
我在我的CentOs 5.5服务器上有一个可用的git仓库。我想使用gitweb为我的仓库创建一个Web用户界面。
我按照http://git-scm.com/book/ch4-6.html中的说明安装了gitweb,并成功让我的Apache服务器运行cgi。我将我的仓库放在/pub/git中,并在/etc/中创建了gitweb.conf文件,其中包含$projectroot = '/pub/git';这一行。不幸的是,我无法看到我的仓库,网页显示“找不到此类项目”的消息,我进行了谷歌搜索,但没有成功。
我尝试在gitweb.conf文件中添加$projects_list = '/pub/git/projects.list';这一行,并创建了projects.list文件,其中包含我的仓库名称(例如repos1.git)。但是没有任何变化。如果我在/pub/git中输入不存在的仓库名称,则网页会显示更受欢迎和调查的错误消息“404 - 找不到项目”。
请注意,Apache用户可以访问所有文件和仓库。
我的/etc/gitweb.conf文件内容如下:
$projectroot = '/pub/git';
$projects_list = '/pub/git/projects.list';

谢谢!


你能发布一下你的/etc/gitweb.conf文件的确切内容吗? - Tuxdude
@Tuxdude,感谢您的关注。配置文件仅包含两行 $projectroot = '/pub/git'; $projects_list = '/pub/git/projects.list'; - Enzo
7个回答

10

我解决了自己的问题,并且我想在这里发布解决方案,以防其他人也遇到同样的问题。

结果发现,gitweb无法找到git可执行文件。换句话说,在http://git-scm.com/book/ch4-6.html中显示的make指令make GITWEB_PROJECTROOT="/path/to/git/git"是不足够的。

导致我花费很长时间才弄清楚原因的原因是,人们预期会出现其他类型的问题,而不仅仅是一个空的存储库列表!看起来为了显示最新的提交消息,gitweb运行git rev-list命令。当它找不到git时,就会放弃列出存储库。我所要做的就是向我的gitweb.conf添加一行$ GIT ='/path/to/git/git';

干杯!


是的,这是有道理的,因为git命令将由cgi(Web)服务运行,通常使用非用户帐户,例如'git','apache'等,具有最小的默认路径。 - Andrew

1

我在 bluehost.com 上遇到了同样的问题,提供 git 二进制文件的完整路径并没有帮助,但正如 gitweb.cgi 的注释中所述 "如果您的 Web 服务器有一个合理的 PATH,则可以只使用 "git"" 解决了这个问题,因此需要修复它的所有内容只是:

our $GIT = "git";

无论是在 gitweb.cgi 中还是在 "gitweb_config.perl" 中。

1
如果您已经创建了仓库,然后安装了gitweb,那么对仓库的保护可能会出现问题。我的初始UMASK为077,因此我的所有仓库只能由git用户访问。
当我执行以下操作时:
cd /home/git
chmod -R 750 repositories

并将www-data添加到“git”组中:
usermod -a -G  git www-data

我搞定了。

1
我认为projectroot在gitweb.conf中定义,但也硬编码到了gitweb.cgi中。也许,在我的实现中没有使用gitweb.conf。无论如何,我编辑了gitweb.cgi文件,将our $projectroot = /home/git修改为我的项目根目录,这样问题就解决了。

0

我在CentOS 6.4上也遇到了这个问题,想要在这里添加我的解决方案。

对我来说,问题是SELinux已启用。即使我对其进行了chmod 777,它仍然阻止httpd进程访问我的存储库目录。

对我来说,只需禁用SELinux即可解决问题。如果禁用不是一个选项,那么您需要查看如何配置SELinux以允许httpd访问您的存储库目录。


0
  1. 检查$projectroot的文件权限
    • Apache或Nginx是否可以读取/遍历所有内容?
  2. 检查/etc/gitweb.conf
    • 我必须在两个地方更改$projectroot$project_list
  3. 检查/var/www/git/gitweb.cgi
    • 我必须在两个地方更改$projectroot$project_list
  4. 您的项目是否已导出?
    • 检查/path/to/project.git/git-daemon-export-ok
  5. 检查SELinux策略

-1

对于我刚刚为gitweb配置的CentOS6服务器,是SELinux引起的问题。

setnforce 0

问题已解决


虽然SELinux可能是造成这个问题的原因,但直接禁用它并不是一个可接受的解决方案。 - Mike Shultz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接