2011-08-27 56 views
12

我正在嘗試使gitweb與gitolite一起工作......但迄今尚未成功。
我正在RedHat Linux機器上工作。存在名爲git的用戶。 /home/git
存儲庫位置:我該如何配置gitweb和gitolite才能一起工作?

gitolite是安裝在/home/git/repositories

請注意,叫做gitweb工作正常與普通的香草飯桶。現在我正在努力使它與gitolite一起工作。

這裏是什麼我的文件是這樣的:

  • /etc/gitweb.conf

    $projectroot = "/home/git/repositories"; 
    @git_base_url_list = qw(ssh://[MyHostName]/home/git/projects.list); 
    $projects_list = "/home/git/projects.list" 
    
  • /home/git/projects.list

    myrepo1.git 
    myrepo2.git 
    
  • /home/git/.gitolite.rc

    $PROJECTS_LIST = $ENV{HOME} . "/projects.list"; 
    $GL_GITCONFIG_KEYS = "gitweb.url receive.denyNonFastforwards receive.denyDeletes"; 
    

我錯過了什麼配置? 我沒有對Apache做任何修改。

的Web網址:http://MyHostName/git
這給出了一個404錯誤說 - 沒有存儲庫中找到

回答

0

您需要在/etc/gitweb_config.perl的末尾添加Gitolite contrib/gitweb.conf
換句話說,您需要從您的gitweb.conf perl文件中調用Gitolite函數,否則集成GitWeb-Gitolite將無法工作。

# check for (at least) "R" permission 
    my ($perm, $creator) = &repo_rights($repo); 
    return ($perm =~ /R/); 

(這裏repo_rights是從gitolite.pm的方法)

檢查部 「helping with gitweb」。

你需要在隨後結束的gitweb_config.perl添加的最後一行是:

use lib ("."); 
require "gitweb.conf.pl"; 

這樣的話,你會避免任何「500 - Internal Server Error syntax error at /etc/gitweb.conf」的錯誤消息。

如果你沒有在聲明gitweb.conf.pl一個gitweb_config.perl,而是直接「gitweb.conf.pl」,然後添加「use lib (".");」作爲該文件的第一行。

+0

在/etc/gitweb.conf正是線做我需要添加的結束?我試着添加這一行:$/home/git/gitolite/contrib/gitweb.conf,但是會給出錯誤。我想我誤解了。 – Jee

+0

我正在做一些非常明顯的錯誤。 我的gitweb.conf,projects.list,.gitolite.rc設置是否正確? 錯誤消息明確表示:找不到項目。 – Jee

+0

@Jee:在'/ etc/gitweb.conf'結尾處,您需要複製https://github.com/sitaramc/gitolite/blob/pu/contrib/gitweb/gitweb.conf中的所有行(並且如果你在Gitolite安裝中使用了不同的路徑,則更改第21行,第23行的值) – VonC

13

我最近設置了gitolite和gitweb,發現/etc/gitweb.conf需要很配置。你看起來對我來說很合適。 /home/git/repositories有什麼權限?你可能會發現它們太嚴格了。嘗試了這一點:

$ chmod -R 775 /home/git/repositories 

這就是解決這個問題對我來說,(雖然我想象有設置的權限更安全的方式)。如果這樣的話,我建議只是看一下讓Apache(或者其他用戶帳戶在gitweb被執行的情況下)對存儲庫目錄的更精細的權限。

我也有這個在我的.gitolite.rc

GIT_CONFIG_KEYS => 'gitweb\.(owner|description|category)', 

使得<gitolite-admin>/conf/gitolite.conf以下工作:

config gitweb.owner   = owner name 
config gitweb.description = some description 
config gitweb.category  = some category 
+4

爲了更安全一點,你可以添加apache/www-data用戶到gitolite組'usermod -a -G gitolite apache',然後在設置gitolite變量的同時執行'chmod -R 750/home/git/repositories' '$ REPO_UMASK = 0027;' –

+1

$ REPO_UMASK設置對我來說特別有用。 chmod-repositories目錄有效,直到下次更新repo時,然後權限將其中一個文件重置爲700。請注意,如果您想運行gitweb,文檔中說gitolite中的UMASK設置非常重要:http://gitolite.com/gitolite/g2/rc.html –

0

1 /安裝gitolite和設置。然後,它足以確保/home/git/.gitolite.rc包含看起來像註釋掉部分:

%RC = (
    ... 
    UMASK       => 0027, 
    ... 
    ENABLE => [ 
     ... 
     'gitweb', 
     ... 
    ] 
); 

2 /設置正確的$projectroot$projects_list指令/etc/gitweb.conf(匹配projects.list文件和目錄repositories的位置)。像:

$projectroot = "/home/git/repositories"; 
... 
$projects_list = "/home/git/projects.list"; 

3 /確保當前存儲庫文件也可以由Web服務器用戶讀取。這些例子是從基於Debian的系統,所以因人而異:

sudo adduser www-data git     # append `www-data` user to a `git` group 
sudo chmod g+r /home/git/projects.list  # make sure group members can read the `project.list` 
sudo chmod -R g+rx /home/git/repositories # recursively set less restrictive access mode for group members 
sudo /etc/init.d/apache2 restart   # restart web server to apply these changes 

4 /最後在客戶機上配置/conf/gitolite.conf文件gitolite-admin倉庫內的gitweb用戶訪問和通過承諾和推動他們(的標準方法)運用它們。我們希望看到,並通過gitweb管理信息庫必須具有訪問權限設置是這樣的:

repo testing                  
    RW+  = @all                
    R  = gitweb # add this line to make the repo browsable using `gitweb` 

注:...只是建議有文件內的其他配置指令。不要把它們放在那裏!

沒有其他chages是必要的,使gitlab可視化gitolite庫。

應用(至少)爲gitolite 3.6.6和2.1.4 gitweb

相關問題