天天看點

7、Gerrit內建GitWeb

gerrit和Gitweb的本地內建介紹

Gerrit能夠管理和生成超連結到GitWeb上,并允許使用者從Gerrit頁面跳轉到GitWeb頁面上檢視相同資訊。

以下是Gerrit官網對Gerrit-GitWeb內建的介紹:

https://gerrit-documentation.storage.googleapis.com/Documentation/2.7/config-gitweb.html

Gerrit和GitWeb如何內建使用?

1、首先Gerrit伺服器上要安裝GitWeb,如果沒有安裝,則執行以下指令來安裝

yum -y install gitweb

2、配置Gerrit來內建GitWeb

配置指令:

git config --file $site_path/etc/gerrit.config gitweb.cgi $gitweb_path/gitweb.cgi      
git config --file $site_path/etc/gerrit.config --unset gitweb.url      
我的測試環境中,gerrit的安裝路徑為 /home/gerrit2/gerrit      

yum安裝的GitWeb,生成的gitweb.cgi檔案路徑為/var/www/git/gitweb.cgi

7、Gerrit內建GitWeb

安裝完成後重新開機Gerrit伺服器

重新開機後,可以看到GitWeb的超連結

7、Gerrit內建GitWeb

打開超連結,項目的所有送出記錄都能看到,每一次送出修改了哪些内容也能看到。

7、Gerrit內建GitWeb
7、Gerrit內建GitWeb

GitWeb權限問題

GitWeb內建Gerrit後,預設隻有管理者使用者才能檢視GitWeb超連結,普通用打開連結後頁面顯示Not Found。

如果想給普通的使用者檢視GitWeb超連結的權限,則必須對項目設定refs/meta/config 的Read權限。而這個權限在All-Projects的ACL裡隻對Administrators使用者和Project Owners開放。

7、Gerrit內建GitWeb

于是需要在單獨項目的ACL裡為項目的使用者組增加對refs/meta/config的read權限,如下圖

7、Gerrit內建GitWeb

這裡我是對所有的注冊使用者開放了該權限,用普通使用者user2登入Gerrit Web UI,确實能打開CI-DEMO項目裡面的GitWeb超連結了

7、Gerrit內建GitWeb

但是,問題來了。原來gerrit是用git做自身的ACL管理的,是以所有對refs/meta/config有read權限的使用者都可以在Project的Access頁面裡修改權限,修改後雖然不能直接submit,但是可以作為patch送出review。而且通過gitweb就能夠看到project.config和groups檔案的全部内容,知道目前項目是如何設定權限的。這樣是否合适就仁者見仁智者見智了

7、Gerrit內建GitWeb

另外,對于使用者送出的關于權限修改的patch如果想commit的話需要對refs/meta/config做和refs/heads/*一樣的權限設定,也就說需要Label Code-Review,Label Verified,Submit三個權限才有可能commit patch。

7、Gerrit內建GitWeb
7、Gerrit內建GitWeb

繼續閱讀