2013-03-19 187 views
4

我在我的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

回答

10

我解決了我自己的問題,我想我會發布解決方案,以防其他人遇到此問題。

事實證明,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

乾杯!

1

我打了同樣的問題上bluehost.com,並提供完整路徑的git二進制沒有幫助,但由於它在gitweb.cgi說意見「這可能僅僅是‘混帳’,如果你的Web服務器有一個合理的PATH「治癒這個問題,所以都是一個需要解決它是:

our $GIT = "git"; 

無論是在gitweb.cgi本身或」 gitweb_config.perl

0

我也在CentOS 6.4上遇到這個問題,只是想把我的解決方案加入到這個線程中。

對我來說,問題在於SELinux已啓用。這阻止了httpd進程訪問我的存儲庫目錄,即使我chmod 777。

對我來說,只是禁用SELinux解決了這個問題。如果禁用不是一個選項,那麼您需要查看如何配置SELinux以允許httpd訪問您的存儲庫目錄。

1

如果您已經創建了回購站,然後安裝gitweb,那麼 回購站的保護可能是錯誤的。 我的初始UMASK是077,所以我所有的回購只能由git用戶訪問 。

當我做:

cd /home/git 
chmod -R 750 repositories 

,並添加www數據的 「混帳」 組:

usermod -a -G git www-data 

我得到它的工作。

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

對於CentOS6服務器,我只是配置GitWeb裏,它是SELinux引起了它。

setnforce 0 

固定問題

+0

雖然SELinux可能是造成這種情況的原因,但徹底禁用它並不是一個可接受的解決方案。 – 2015-05-19 20:05:56

0

我以爲projectroot在gitweb.conf定義 - 但它也被硬編碼到gitweb.cgi。也許,gitweb.conf在我的實現中不是來源的。無論如何,我編輯gitweb.cgi到our $projectroot = /home/git,併爲我解決它。