Gitweb无法找到存储库“找不到这样的项目”

Gitweb无法找到存储库“找不到这样的项目”

问题描述:

我在我的CentOs 5.5服务器上运行了git存储库。我想使用gitweb为我的仓库提供一个Web用户界面。Gitweb无法找到存储库“找不到这样的项目”

我使用http://git-scm.com/book/ch4-6.html上的说明安装了gitweb,并且设法让我的apache服务器正确运行cgi。我把我的知识库放在/pub/git中,并在/etc/中创建gitweb.conf文件,其行$projectroot = '/pub/git';。不幸的是,我看不到我的存储库,网页显示“找不到这样的项目”的消息,我没有成功搜索。

我试图将行$projects_list = '/pub/git/projects.list';添加到gitweb.conf,并创建了文件projects.list以及我的存储库的名称(例如repos1.git)。没有什么变化。如果我将/pub/git中不存在的存储库的名称放在网页中,网页将显示更受欢迎和调查的错误消息“404 - 找不到项目”。

请注意,apache用户可以访问所有文件和存储库。

/etc/gitweb.conf内容是:

$projectroot = '/pub/git'; 
$projects_list = '/pub/git/projects.list'; 

谢谢!

+0

你可以发布你的'/ etc/gitweb.conf'的确切内容吗? – Tuxdude 2013-03-19 19:46:10

+0

@Tuxdude,谢谢你的关注。 conf文件只包含两行'$ projectroot ='/ pub/git'; $ projects_list ='/pub/git/projects.list';' – Enzo 2013-03-20 00:34:04

我解决了我自己的问题,我想我会发布解决方案,以防其他人遇到此问题。

事实证明,gitweb可能根本找不到git可执行文件。换句话说,在http://git-scm.com/book/ch4-6.html中显示的生成指令make GITWEB_PROJECTROOT="/path/to/git/git"是不够的。

之所以花这么长时间来解决这个问题,是因为人们会期待出现另一种类型的问题,而不仅仅是一个空的软件仓库列表!这似乎是为了显示最新的提交消息gitweb在项目上运行git rev-list。当它找不到git时,它只是放弃列出项目。我所要做的就是将$GIT = '/path/to/git/git';行添加到我的gitweb.conf

干杯!

我打了同样的问题上bluehost.com,并提供完整路径的git二进制没有帮助,但由于它在gitweb.cgi说意见“这可能仅仅是‘混帐’,如果你的Web服务器有一个合理的PATH“治愈这个问题,所以都是一个需要解决它是:

our $GIT = "git"; 

无论是在gitweb.cgi本身或” gitweb_config.perl

我也在CentOS 6.4上遇到这个问题,只是想把我的解决方案加入到这个线程中。

对我来说,问题在于SELinux已启用。这阻止了httpd进程访问我的存储库目录,即使我chmod 777。

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

如果您已经创建了回购站,然后安装gitweb,那么 回购站的保护可能是错误的。 我的初始UMASK是077,所以我所有的回购只能由git用户访问 。

当我做:

cd /home/git 
chmod -R 750 repositories 

,并添加www数据的 “混帐” 组:

usermod -a -G git www-data 

我得到它的工作。

  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策略

对于CentOS6服务器,我只是配置GitWeb里,它是SELinux引起了它。

setnforce 0 

固定问题

+0

虽然SELinux可能是造成这种情况的原因,但彻底禁用它并不是一个可接受的解决方案。 – 2015-05-19 20:05:56

我以为projectroot在gitweb.conf定义 - 但它也被硬编码到gitweb.cgi。也许,gitweb.conf在我的实现中不是来源的。无论如何,我编辑gitweb.cgi到our $projectroot = /home/git,并为我解决它。