2012-11-28 42 views
1

/usr/share/gitweb/gitweb.cgi一個Ubuntu 12.04(64位)服務器上安裝的GitWeb和不斷變化的變量$projectroot到任意目錄後除/var/cache/git之外,仍在/var/cache/git中搜索項目。Ubuntu的:GitWeb裏總是尋找在/ var /緩存/ git的項目( 「404 - 找不到項目」)

這種情況與Ubuntu的的GitWeb包(1.7.9.5),並克隆Git的存儲庫和編譯最新的穩定分支(1.8.0.1)。

這個問題也可以在Apache的gitweb站點上體驗爲「404 - 找不到項目」,因爲項目將位於不同於/var/cache/git的目錄中。

回答

2

在Ubuntu中,文件/usr/share/gitweb/gitweb.cgi不應該被編輯。應該在/etc/gitweb.conf中設置$projectroot變量。

感謝Git’s mailing list的幫助。

0

定義$projectroot=/var/git(這是我的情況),如果我在<title>符合3915插入的$projectroot價值,正在顯示的字符串/var/cache/git,所以問題是,沿着CGI某個文件的$projectroot的值後重置爲系統的默認值。

這種現象的罪魁禍首在於git_get_projects_list子程序,其中,在線路2865,全局變量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發行版中發生這種情況,我們將不勝感激。

+0

作爲Ubuntu的設置,我被[Git書的'4.6 Git在服務器上--GitWeb'](http://git-scm.com/book/en/Git-on-the-Server-GitWeb)誤導了在'/ etc/gitweb.conf'中配置。我已經用「好」解決方案添加了第二個答案。 – Alf