gerrit是一套代碼審核環(huán)境,安裝前提需要安裝java環(huán)境,MySQL環(huán)境,nginx環(huán)境。這里我為了簡(jiǎn)單直接用lnmp一鍵安裝,剩下就是java了。
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供石臺(tái)企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站制作、成都做網(wǎng)站、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為石臺(tái)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
lnmp不會(huì)安裝的可以參考一下用shell腳步一鍵搭建lnmp環(huán)境實(shí)戰(zhàn)
安裝前需要準(zhǔn)備的文件如下:(http://pan.baidu.com/s/1jIwJSz0,提取密碼:fue3)
mysql-connector-java-5.1.21.jar
bcpkix-jdk15on-1.52.jar
gerrit-2.11.3.war
#############################gerrit其他版本下載地址####################
如果選擇其他版本,可以參考一下鏈接:http://www.cnblogs.com/kevingrace/p/5624122.html#commentform
準(zhǔn)備工作完成,下面開(kāi)始安裝。
首先安裝的是java
先刪除系統(tǒng)自帶的java
[root@wulaoer ~]# yum remove java [root@wulaoer ~]# ls anaconda-ks.cfg install.log.syslog lnmp1.3-full lnmp-install.log install.log jdk-8u101-linux-x64.tar.gz lnmp1.3-full.tar.gz [root@wulaoer ~]# mkdir /usr/local/jvm [root@wulaoer ~]# tar -zxf jdk-8u101-linux-x64.tar.gz -C /usr/local/jvm/
我已經(jīng)下載好了,直接傳上來(lái)了,設(shè)置java環(huán)境變量,
[root@wulaoer ~]# vi /etc/profile ...............省略部分..................... export JAVA_HOME=/usr/local/jvm/jdk1.8.0_101 export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH [root@wulaoer ~]# source /etc/profile #生效java環(huán)境
檢查java和javac環(huán)境
[root@wulaoer ~]# java 用法: java [-options] class [args...] (執(zhí)行類(lèi)) 或 java [-options] -jar jarfile [args...] (執(zhí)行 jar 文件) 其中選項(xiàng)包括: -d32 使用 32 位數(shù)據(jù)模型 (如果可用) -d64 使用 64 位數(shù)據(jù)模型 (如果可用) -server 選擇 "server" VM ..................省略部分................................
javac環(huán)境
[root@wulaoer ~]# javac 用法: javac
java環(huán)境,到此安裝完成。
第二,創(chuàng)建gerrit數(shù)據(jù)庫(kù),并自定義編碼為utf-8
[root@wulaoer ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.5.48-log Source distribution Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database gerritdb CHARACTER SET utf8 COLLATE utf8_general_ci; Query OK, 1 row affected (0.07 sec) mysql> grant all on gerritdb.* to 'gerrituser'@'localhost' identified by 'gerritpass'; Query OK, 0 rows affected (0.06 sec)
第三、創(chuàng)建gerrit賬戶(hù),并把安裝文件放到gerrit家目錄下。
創(chuàng)建gerrit用戶(hù)
[root@wulaoer ~]# useradd gerrit [root@wulaoer ~]# su - gerrit [gerrit@wulaoer ~]$
把文件拷貝到gerrit家目錄下
[root@wulaoer ~]# ll 總用量 713868 -rw-------. 1 root root 1431 6月 1 19:17 anaconda-ks.cfg -rwxr-xr-x. 1 root root 622849 7月 14 11:22 bcpkix-jdk15on-1.52.jar -rwxr-xr-x. 1 root root 45136951 7月 8 19:34 gerrit-2.11.3.war -rw-r--r--. 1 root root 27338 6月 1 19:16 install.log -rw-r--r--. 1 root root 7572 6月 1 19:15 install.log.syslog -rw-r--r--. 1 root root 181352138 7月 20 11:50 jdk-8u101-linux-x64.tar.gz -rwxr-xr-x. 1 root root 827942 7月 14 11:22 mysql-connector-java-5.1.21.jar
把文件拷貝到gerrit目錄下并給予權(quán)限
[root@wulaoer ~]# cp gerrit-2.11.3.war /home/gerrit/ [root@wulaoer ~]# mkdir -p /home/gerrit/gerrit_site/lib [root@wulaoer ~]# cp mysql-connector-java-5.1.21.jar /home/gerrit/gerrit_site/lib/ [root@wulaoer ~]# cp bcpkix-jdk15on-1.52.jar /home/gerrit/gerrit_site/lib/ [root@wulaoer ~]# chown -R gerrit.gerrit /home/gerrit/
第四、在gerrit賬戶(hù)下進(jìn)行安裝
注意,這里選用了mysql數(shù)據(jù)庫(kù),Verified,http認(rèn)證代理,其他的都是默認(rèn)
[root@wulaoer ~]# su - gerrit [gerrit@wulaoer ~]$ java -jar gerrit-2.11.3.war init -d ~/gerrit_site Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore *** Gerrit Code Review 2.11.3 *** *** Git Repositories *** Location of Git repositories [git]: *** SQL Database *** Database server type [h3]: mysql #選擇mysql Server hostname [localhost]: Server port [(mysql default)]: Database name [reviewdb]: gerritdb #數(shù)據(jù)庫(kù)名 Database username [gerrit]: gerrituser #數(shù)據(jù)庫(kù)用戶(hù)名 gerrituser's password : confirm password : #數(shù)據(jù)庫(kù)密碼 *** Index *** Type [LUCENE/?]: The index must be rebuilt before starting Gerrit: java -jar gerrit.war reindex -d site_path *** User Authentication *** Authentication method [OPENID/?]: http Get username from custom HTTP header [y/N]? SSO logout URL : *** Review Labels *** Install Verified label [y/N]? y *** Email Delivery *** SMTP server hostname [localhost]: SMTP server port [(default)]: SMTP encryption [NONE/?]: SMTP username : *** Container Process *** Run as [gerrit]: Java runtime [/usr/local/jvm/jdk1.8.0_101/jre]: Copy gerrit-2.11.3.war to /home/gerrit/gerrit_site/bin/gerrit.war [Y/n]? Copying gerrit-2.11.3.war to /home/gerrit/gerrit_site/bin/gerrit.war *** SSH Daemon *** Listen on address [*]: Listen on port [29418]: Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v151 If available, Gerrit can take advantage of features in the library, but will also function without it. Download and install it now [Y/n]? Renaming bcpkix-jdk15on-1.52.jar to .bcpkix-jdk15on-1.52.jar.backupDownloading http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar ... !! FAIL !! error: http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar: 302 Found Please download: http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar and save as: /home/gerrit/gerrit_site/lib/bcpkix-jdk15on-151.jar Press enter to continue Continue without this library [Y/n]? Generating SSH host key ... rsa(simple)... done *** HTTP Daemon *** Behind reverse proxy [y/N]? Use SSL (https://) [y/N]? Listen on address [*]: Listen on port [8080]: Canonical URL [http://localhost:8080/]: *** Plugins *** Installing plugins. Install plugin download-commands version v2.11.3 [y/N]? Install plugin reviewnotes version v2.11.3 [y/N]? Install plugin singleusergroup version v2.11.3 [y/N]? Install plugin replication version v2.11.3 [y/N]? Install plugin commit-message-length-validator version v2.11.3 [y/N]? Initializing plugins. No plugins found with init steps. Initialized /home/gerrit/gerrit_site
到了這里,gerrit安裝完成,下面開(kāi)始啟動(dòng)。
[gerrit@wulaoer ~]$ /home/gerrit/gerrit_site/bin/gerrit.sh start Starting Gerrit Code Review: FAILED
出現(xiàn)這種錯(cuò)誤解決方法如下:
[gerrit@wulaoer ~]$ java -jar gerrit-2.11.3.war reindex -d /home/gerrit/gerrit_site [2016-09-06 10:22:27,387] INFO com.google.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 61m [2016-09-06 10:22:28,067] INFO com.google.gerrit.server.cache.h3.H2CacheFactory : Enabling disk cache /home/gerrit/gerrit_site/cache Reindexing changes: done Reindexed 0 changes in 0.0s (0.0/s) Warning: InterruptedException java.lang.InterruptedException at java.lang.Object.wait(Native Method) at java.lang.Thread.join(Thread.java:1253) at org.h3.util.MathUtils.getSecureRandom(MathUtils.java:104) at org.h3.util.MathUtils.secureRandomBytes(MathUtils.java:301) at org.h3.store.FileLock.setUniqueId(FileLock.java:309) at org.h3.store.FileLock.lockFile(FileLock.java:339) at org.h3.store.FileLock.lock(FileLock.java:133) at org.h3.engine.Database.open(Database.java:575) at org.h3.engine.Database.openDatabase(Database.java:236) at org.h3.engine.Database.(Database.java:231) at org.h3.engine.Engine.openSession(Engine.java:56) at org.h3.engine.Engine.openSession(Engine.java:160) at org.h3.engine.Engine.createSessionAndValidate(Engine.java:139) at org.h3.engine.Engine.createSession(Engine.java:122) at org.h3.engine.Engine.createSession(Engine.java:28) at org.h3.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:323) at org.h3.jdbc.JdbcConnection. (JdbcConnection.java:105) at org.h3.jdbc.JdbcConnection. (JdbcConnection.java:90) at org.h3.Driver.connect(Driver.java:73) at com.google.gerrit.server.cache.h3.H2CacheImpl$SqlHandle. (H2CacheImpl.java:636) at com.google.gerrit.server.cache.h3.H2CacheImpl$SqlStore.acquire(H2CacheImpl.java:604) at com.google.gerrit.server.cache.h3.H2CacheImpl$SqlStore.buildBloomFilter(H2CacheImpl.java:365) at com.google.gerrit.server.cache.h3.H2CacheImpl$SqlStore.open(H2CacheImpl.java:337) at com.google.gerrit.server.cache.h3.H2CacheImpl.start(H2CacheImpl.java:167) at com.google.gerrit.server.cache.h3.H2CacheFactory$1.run(H2CacheFactory.java:113) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) [2016-09-06 10:22:29,825] INFO com.google.gerrit.server.cache.h3.H2CacheFactory : Finishing 4 disk cache updates
啟動(dòng)一次看看
[gerrit@wulaoer ~]$ /home/gerrit/gerrit_site/bin/gerrit.sh start Starting Gerrit Code Review: OK
如果出現(xiàn)
[gerrit@wulaoer ~]$ /home/gerrit/gerrit_site/bin/gerrit.sh start ** ERROR: GERRIT_SITE not set
解決方法:
在/home/gerrit/gerrit_site/bin/gerrit.sh啟動(dòng)文件里添加下面一行,即指定gerrit2的路徑
GERRIT_SITE=/home/gerrit/gerrit_site
第五、配置gerrit
修改/home/gerrit/gerrit_site/etc/gerrit.config配置文件
[gerrit@wulaoer ~]$ vi gerrit_site/etc/gerrit.config [gerrit] basePath = git canonicalWebUrl = http://192.168.0.145:8081/ #nginx代理IP和端口 ........................................................... [httpd] listenUrl = http://*:8080/
nginx定義新的端口代理配置,把/usr/local/nginx/conf/nginx.conf復(fù)制一份到/usr/local/nginx/conf/vhost/下,更名為gerrit.conf,gerrit的配置文件修改如下。
[gerrit@wulaoer vhost]$ pwd /usr/local/nginx/conf/vhost [gerrit@wulaoer vhost]$ cat gerrit.conf server { listen 8081; #端口 server_name 192.168.0.145; #訪問(wèn)IP index index.html index.htm index.php; location / { auth_basic "Gerrit Code Review"; auth_basic_user_file /home/gerrit/gerrit_site/etc/passwords; proxy_pass http://192.168.0.145:8080/;#默認(rèn)的ip+端口 proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } }
AuthUserFile路徑為/home/gerrit/gerrit_site/etc/passwords
在nginx進(jìn)程用戶(hù)默認(rèn)的是www,無(wú)權(quán)訪問(wèn)路徑需要給/home/gerrit賦予權(quán)限
[root@wulaoer ~]# setfacl -m g:www:rx /home/gerrit
溫馨提示:這里如果不賦予權(quán)限訪問(wèn)提示500錯(cuò)誤
[或者 setfacl -R -m u:www:rx /home/gerrit 上面是針對(duì)所屬組進(jìn)行授權(quán),這里可以針對(duì)用戶(hù)授權(quán)]
第六、創(chuàng)建用戶(hù)
在創(chuàng)建用戶(hù)的時(shí)候需要用到htpasswd,所以這里需要安裝一下:
[root@wulaoer ~]# yum -y install httpd
創(chuàng)建認(rèn)證權(quán)限(就是登陸的時(shí)候用到的賬號(hào)和密碼)
注意:第一次加-c參數(shù)是為了創(chuàng)建系統(tǒng)管理員,不加-c是普通話用戶(hù)。
[root@wulaoer ~]# htpasswd -c /home/gerrit/gerrit_site/etc/passwords gerrit New password: Re-type new password: Adding password for user gerrit [root@wulaoer ~]# htpasswd /home/gerrit/gerrit_site/etc/passwords wulaoer New password: Re-type new password: Adding password for user wulaoer [root@wulaoer ~]# htpasswd /home/gerrit/gerrit_site/etc/passwords jenkins New password: Re-type new password: Adding password for user jenkins
這里創(chuàng)建了一個(gè)管理員gerrit,兩個(gè)普通用戶(hù)jenkins,wulaoer。兩個(gè)普通用戶(hù)會(huì)在另一個(gè)文章里做說(shuō)明,大家現(xiàn)在不必過(guò)于在意。
重啟一下nginx服務(wù)和關(guān)閉防火墻。
[root@wulaoer ~]# /usr/local/nginx/sbin/nginx -s reload [root@wulaoer ~]# service iptables stop iptables:將鏈設(shè)置為政策 ACCEPT:filter [確定] iptables:清除防火墻規(guī)則: [確定] iptables:正在卸載模塊: [確定]
下面訪問(wèn)http://192.168.0.145:8081,輸入創(chuàng)建的用戶(hù)信息即可登錄gerrit
以上是關(guān)于gerrit的搭建和簡(jiǎn)單的配置。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
下面是郵箱的設(shè)置,原本在安裝的時(shí)候郵箱環(huán)節(jié)是默認(rèn)安裝的,安裝后登錄gerrit,默認(rèn)郵箱是空的,所以設(shè)置手動(dòng)設(shè)置,注冊(cè)郵箱并激活,設(shè)置如下:
[root@wulaoer ~]# su - gerrit [gerrit@wulaoer ~]$ cd gerrit_site/etc/ [gerrit@wulaoer etc]$ vi gerrit.config ##################################################################### [sendemail] smtpServer = smtp.exmail.qq.com #發(fā)件箱信息設(shè)置 smtpUser = *******@qq.com from = *******@qq.com smtpPass = ********** ##################################################################### [gerrit@wulaoer etc]$ vi secure.config #################################################################### [sendemail] smtpPass = **********
注意:sendemail的密碼會(huì)保存到secure.config文件里,一定要保證gerritconfig文件里的密碼和secure.conf的密碼一致
重啟gerrit服務(wù)即可
[gerrit@wulaoer etc]$ /home/gerrit/gerrit_site/bin/gerrit.sh restart Stopping Gerrit Code Review: OK Starting Gerrit Code Review: OK
重啟成功后登錄gerrit頁(yè)面進(jìn)行注冊(cè)郵箱,默認(rèn)清晰不注冊(cè)郵箱,在設(shè)置欄里沒(méi)有郵箱可以選擇
發(fā)送成功,登錄自己的qq郵箱會(huì)收到gerrit上設(shè)置的發(fā)件人發(fā)過(guò)來(lái)的郵件,查看自己的郵件就是上面輸入的69結(jié)尾的QQ郵箱。點(diǎn)擊紅色連接可以直接激活,有的瀏覽器不能調(diào)整建議更換成火狐瀏覽器。
點(diǎn)擊連接激活郵箱,在設(shè)置欄就有激活的郵箱了。
點(diǎn)擊右上角的用戶(hù)有一個(gè)settings
注:用htpasswd創(chuàng)建第一個(gè)用戶(hù)時(shí)系統(tǒng)管理員,ID為1,只有系統(tǒng)管理員才有Create權(quán)限(創(chuàng)建group和project),其他的只有查看權(quán)限。使用htpaswd創(chuàng)建用戶(hù)時(shí),并沒(méi)有往gerrit中添加賬號(hào),只有當(dāng)該用戶(hù)通過(guò)web登錄gerrit服務(wù)器時(shí),該賬號(hào)才會(huì)被添加進(jìn)gerrit數(shù)據(jù)庫(kù)中。
退出admin賬號(hào)重新登陸(HTTP認(rèn)證模式不支持Sign Out,需要先Sign Out退出賬號(hào),關(guān)閉瀏覽器后再登陸才能出現(xiàn)http驗(yàn)證密碼的對(duì)話框
****************************git中文編碼問(wèn)題**********************************************
為妥善解決中文編碼的問(wèn)題,對(duì)所有g(shù)it repository做如下約定:
a、所有文本文件都必須存儲(chǔ)成utf8編碼
b、對(duì)git做如下設(shè)置:
git config --global core.quotepath false git config --global i18n.logoutputencoding utf8 git config --global i18n.commitencoding utf8
安裝gerrit的時(shí)候?qū)τ跀?shù)據(jù)庫(kù)(選擇myqsl方式的話)的編碼設(shè)定為utf8
**********************gerrit對(duì)接gitweb**********************************************
上面搭建好的gerrit,登陸進(jìn)去在Projects項(xiàng)目里的右邊沒(méi)有g(shù)itweb的超鏈接
1.需要先搭建gitweb,然后進(jìn)行相關(guān)配置
[root@wulaoer ~]# yum install -y gitweb 【或者直接yum install -y git*】
gitweb安裝后的目錄路徑是/var/www/git
2. 通過(guò)git config配置一下
[root@wulaoer ~]# git config --file /home/gerrit/gerrit_site/etc/gerrit.config gitweb.cgi /var/www/git/gitweb.cgi [root@wulaoer ~]# git config --file /home/gerrit/gerrit_site/etc/gerrit.config --unset gitweb.url
3.重啟gerrit,然后登陸gerrit后,gitweb超鏈接效果就有了
********************** ********************** ********************
gitweb還是蠻實(shí)用的。
可以通過(guò)打開(kāi)gerrit上某個(gè)工程的gitweb,查看到這個(gè)工程代碼近期的所有動(dòng)向!
【默認(rèn)情況下:只有g(shù)errit的管理員權(quán)限才能查看gitweb】
【普通用戶(hù)要想訪問(wèn)gitweb,需要后續(xù)添加訪問(wèn)權(quán)限,后期會(huì)繼續(xù)詳解】
**************************ssh公鑰設(shè)置********************************************
在gerrit本機(jī)上使用下面的命令生成管理員賬號(hào)(這里將gerrit作為管理員)的公私鑰
[root@wulaoer ~]# su - gerrit [gerrit@wulaoer ~]$ ssh-keygen -t rsa -C 99317069@qq.com Generating public/private rsa key pair. Enter file in which to save the key (/home/gerrit/.ssh/id_rsa): Created directory '/home/gerrit/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/gerrit/.ssh/id_rsa. Your public key has been saved in /home/gerrit/.ssh/id_rsa.pub. The key fingerprint is: bc:58:5a:8d:73:0b:ac:01:39:ac:96:02:85:45:92:ba 99317069@qq.com The key's randomart p_w_picpath is: +--[ RSA 2048]----+ |.=+ | |oo . . | |o = | |o o o o o | |..+ . S o | |Eo B = . | | + . . | | | | | +-----------------+ [gerrit@wulaoer ~]$ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2e/iJxw7FG0rhSZkSy2M31JBW/lnNewRgu6cyC2jMheqYVHZhf9XlAR9gfR8V8h2nqBo8GWraNchdOAdTNTZ1nqfrE4iDRd2FKhL2zx47oErj3H/Hv6747r0pagP+kCt7c2hglHXhhs4SLWg3BSK+tXOM1Db7kgp+QhwrbmjkbLXJ+G/LwlLJMY1q6mI5fmEUmCC+QfZgZ9e9vKO6fjFDjD5nHsRd70Jnf1fUQC99FvqiYhw8e/YJNnY+dMoczTDDwzx6zsB0qx6Cpw5GskCUPVztqDeH7TgRZgY6Ttkakglied2sv11sRzVV0sn3msCgmu1qsIdTeCDx5gdJQEI0w== 99317069@qq.com
將gerrit賬號(hào)的公鑰內(nèi)容拷貝到gerrit界面的SSH Public Keys里。
Settings
接下來(lái)設(shè)置別名,方便使用ssh連接gerrit
可以直接在gerrit用戶(hù)家目錄(/home/gerrit)下的.bashrc文件里設(shè)置。如下別名是登錄gerrit的admin賬號(hào)下的操作:
[gerrit@wulaoer ~]$ vi .bashrc # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions
然后讓文件生效
[gerrit@wulaoer ~]$ source .bashrc [gerrit@wulaoer ~]$ ssh-gerrit The authenticity of host '[192.168.0.145]:29418 ([192.168.0.145]:29418)' can't be established. RSA key fingerprint is 4f:6a:ec:3c:7e:52:2e:56:0a:e0:b1:fb:38:86:da:42. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[192.168.0.145]:29418' (RSA) to the list of known hosts. **** Welcome to Gerrit Code Review **** Hi gerrit管理員, you have successfully connected over SSH. Unfortunately, interactive shells are disabled. To clone a hosted Git repository, use: git clone ssh://gerrit@192.168.0.145:29418/REPOSITORY_NAME.git Connection to 192.168.0.145 closed.
********************************Gerrit權(quán)限說(shuō)明*******************************
上面介紹了gerrit環(huán)境的部署,下面介紹下gerrit權(quán)限:
Abandon
此權(quán)限允許用戶(hù)丟棄一個(gè)提交的change。如果用戶(hù)有push權(quán)限,給用戶(hù)分配此權(quán)限的同時(shí)用戶(hù)也被分配了restore a change的權(quán)限。
Create Reference
此權(quán)限管理用戶(hù)是有可以創(chuàng)建references,branches,tags。此權(quán)限一般與普通的push權(quán)限一起被分配。
Forge Author
偽造發(fā)起人權(quán)限,此權(quán)限允許用戶(hù)繞過(guò)提交時(shí)的身份驗(yàn)證(Gerrit默認(rèn)會(huì)匹配提交信息中author或者committer行中的email地址,如果 Email地址不匹配,則不允許提交)。
Forge Committer
偽造提交者權(quán)限,此權(quán)限允許用戶(hù)繞過(guò)提交時(shí)的身份驗(yàn)證(Gerrit默認(rèn)會(huì)匹配提交信息中author或者committer行中的email地址,如果 Email地址不匹配,則不允許提交 )。
Forge Server
偽造Gerrit服務(wù)器權(quán)限,此權(quán)限允許在committer行中使用server owner和email
Owner
此權(quán)限允許用戶(hù)修改香項(xiàng)目的配置,具體如下:
修改項(xiàng)目描述
通過(guò)ssh的"create-branch"命令創(chuàng)建分支
在web UI界面創(chuàng)建/刪除branch
允許/撤銷(xiāo)任何訪問(wèn)權(quán)限,包括Owner權(quán)限。
Push
此分類(lèi)控制用戶(hù)被允許怎樣推送新commit到Gerrit。
Direct Push
所有已存在的branch可以快進(jìn)到新的commit。創(chuàng)建新分支受“Create Reference”控制,不允許刪除已存在的分支,這是最安全的模式(因?yàn)閏ommit不可以被丟棄)。
Force option
允許已存在的branch被刪除。開(kāi)啟此選項(xiàng)可以從項(xiàng)目歷史中刪除提交記錄。
此權(quán)限主要用來(lái)給那些只想用Gerrit的訪問(wèn)控制,不需要Gerrit的代碼審查功能的工程使用。
Upload To Code Review
此push權(quán)限分配在refs/for/refs/heads/BRANCH命名空間上,允許用戶(hù)提交一個(gè)未合并(non-merge)的commit到refs/for/BRANCH命名空間,創(chuàng)建一個(gè)新的代碼審查change。
用戶(hù)必須能夠clone和fetch一個(gè)工程才可以提交change,所以用戶(hù)還必須擁有Read權(quán)限。
Push Merge Commits
此權(quán)限允許用戶(hù)提交merge commits,它是Push權(quán)限的附屬物,如果想只允許通過(guò)Gerrit做merge操作,那么應(yīng)該只分配Push僅限而不分配此權(quán)限。
Push Annotated Tag
此類(lèi)權(quán)限允許用戶(hù)向工程倉(cāng)庫(kù)提交一個(gè)annotated tag。通常使用以下兩種方式提交:
git push ssh://USER@HOST:PORT/PROJECT tag v1.0
或者:
git push https://HOST/PROJECT tag v1.0
Tags必須被注釋?zhuān)ㄊ褂胓it tag -a),必須在refs/tags/下存在,而且必須是新的。
一般在工程達(dá)到了穩(wěn)定且可發(fā)布的時(shí)候會(huì)打一個(gè)Tag。
此權(quán)限允許創(chuàng)建一個(gè)未簽名的Tag。打Tag者的email地址必須與當(dāng)前用戶(hù)的一致。
如果要提交不是自己打的Tag,則必須同時(shí)分配Forge Committer Identity權(quán)限。
如果要提交輕標(biāo)簽(lightweight tags)分配Create Reference權(quán)限給引用/refs/tags/*
如果要?jiǎng)h除或覆蓋一個(gè)已存在的tag,分配Push權(quán)限并開(kāi)啟Force option。
Push Signed Tag
此類(lèi)權(quán)限允許用戶(hù)向工程倉(cāng)庫(kù)提交一個(gè)PGP簽名的 tag。通常使用以下兩種方式提交:
git push ssh://USER@HOST:PORT/PROJECT tag v1.0
或者:
git push https://HOST/PROJECT tag v1.0
Tags必須被注釋?zhuān)ㄊ褂胓it tag -a),必須在refs/tags/下存在,而且必須是新的。
Read
此類(lèi)權(quán)限控制工程的changes, comments,和code diffs可見(jiàn)性,和是否可通過(guò)SSH或HTTP訪問(wèn)Git。
如果在單獨(dú)工程的ACL中設(shè)置的此權(quán)限,那么全局ACL中的設(shè)置將不起作用。
Rebase
此類(lèi)僅限允許用戶(hù)通過(guò)web頁(yè)面的“Rebase Change”按鈕衍合(Rebase)修改
Remove Reviewer
此類(lèi)權(quán)限允許用戶(hù)在一個(gè)change的reviewers list中移除其他用戶(hù)。
change所屬者可以移除0分或負(fù)分的reviewers(即使沒(méi)有此權(quán)限)。
項(xiàng)目所有者和網(wǎng)站管理員可以移除所有reviewers(即使沒(méi)有此權(quán)限)。
沒(méi)有此權(quán)限的用戶(hù)只可以移除自己。
Review Labels
// TODO
Submit
此類(lèi)權(quán)限允許用戶(hù)提交changes。
提交一個(gè)change會(huì)使該change盡可能快的合并到目的分支,使其作為項(xiàng)目歷史永久的一部分。
為了提交change,所有的labels都必須允許提交,并且不能block它。
如果要快速提交一個(gè)push上的change,用戶(hù)需要在refs/for/(e.g. on refs/for/refs/heads/master)有此權(quán)限。
Submit(On Behalf Of)
此類(lèi)權(quán)限允許有Submit權(quán)限的用戶(hù)代表其他用戶(hù)提交change。
在project.config文件中,此權(quán)限被命名為submitAs。
View Drafts
此類(lèi)權(quán)限允許用戶(hù)查看其他用戶(hù)提交的drafts changes
change所用者和任何明確添加的reviewers也可以查看(即使沒(méi)用此權(quán)限)
Publish Drafts
此類(lèi)權(quán)限允許用戶(hù)發(fā)布其他用戶(hù)提交的drafts changes
change所用者和任何明確添加的reviewers也可以查看(即使沒(méi)用此權(quán)限)
Delete Drafts
此類(lèi)權(quán)限允許用戶(hù)刪除其他用戶(hù)提交的drafts changes
change所用者和任何明確添加的reviewers也可以查看(即使沒(méi)用此權(quán)限)
Edit Topic Name
允許用戶(hù)編輯提交到review的change的話題名。
change所用者,分支所用者,項(xiàng)目所用者和網(wǎng)站管理員都可以編輯此話題名(即使沒(méi)有此權(quán)限)。
“Force Edit”標(biāo)識(shí)控制是否可以編輯已關(guān)閉的change標(biāo)題,如果此標(biāo)識(shí)設(shè)置只能編輯open changes,則不可以編輯已關(guān)閉的change 標(biāo)題。
Edit Hashtags
允許用戶(hù)在提交到reviews的changes上添加或移除hashtags。
change所用者和任何明確添加的reviewers也可以查看(即使沒(méi)用此權(quán)限)