1 - 主配置文件
主配置文件位於$GERRIT_SITE/etc/gerrit.config
目錄
[gerrit@mt101 ~]$ cat gerrit_testsite/etc/gerrit.config
[gerrit]
basePath = git
canonicalWebUrl = http://192.168.16.101:8083/
serverId = 0b911b9e-195a-46b0-a5cd-b407b776b344
[container]
javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
user = root
javaHome = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre
[index]
type = lucene
[auth]
type = HTTP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://192.168.16.101:8083/
[cache]
directory = cache
[gerrit@mt101 ~]$
2 - Gerrit的用戶和群組
Gerrit是基於群組來進行權限控制的,不同的群組具有不同的權限。
每個用戶屬於一個或者多個群組。
Gerrit系統自帶群組
- Anonymous Users:所有用戶自動屬於該群組,默認只有Read權限
- Change Owner:某個提交的擁有者,具備所屬變更的權限
- Project Owners:項目擁有者,具備所屬項目的權限
- Registered Users:所有成功登錄的用戶自動屬於該群組,具備投票權限(CodeReview +1-1)
Gerrit預先定義的群組
- Administrators:該群組的成員可以管理所有項目和Gerrit的系統配置
- Non-Interactive Users:該群組的成員可以通過Gerrit界面進行操作,一般用於和第三方系統集成
3 - 進程和服務控制
[gerrit@mt101 ~]$ ll gerrit_testsite/bin/gerrit.sh
-rwxr-xr-x 1 root root 16109 Dec 10 14:43 gerrit_testsite/bin/gerrit.sh
[gerrit@mt101 ~]$
[gerrit@mt101 ~]$ $GERRIT_SITE/bin/gerrit.sh
Usage: gerrit.sh {start|stop|restart|check|status|run|supervise|threads} [-d site]
[gerrit@mt101 ~]$
4 - 查看日志
日志所在目錄:$GERRIT_SITE/logs/
[gerrit@mt101 logs]$ pwd
/home/gerrit/gerrit_testsite/logs
[gerrit@mt101 logs]$ ll
total 28
-rw-r--r-- 1 root root 3052 Dec 10 15:12 error_log
-rw-r--r-- 1 root root 0 Dec 10 14:44 gc_log
-rw-r--r-- 1 root root 5 Dec 10 14:43 gerrit.pid
-rw-r--r-- 1 root root 16 Dec 10 14:44 gerrit.run
-rw-r--r-- 1 root root 13067 Dec 10 15:12 httpd_log
-rw-r--r-- 1 root root 0 Dec 10 14:44 sshd_log
[gerrit@mt101 logs]$
5 - war包的命令
war包在命令行下用很多可用命令。
[gerrit@mt101 ~]$ ll
total 67556
-rw-r--r-- 1 gerrit gerrit 69172528 Dec 10 13:04 gerrit-3.1.0.war
-rwxr-xr-x 1 root root 91 Dec 10 14:52 gerrit.password
drwxr-xr-x 14 root root 150 Dec 10 14:44 gerrit_testsite
[gerrit@mt101 ~]$
[gerrit@mt101 ~]$
[gerrit@mt101 ~]$ sudo java -jar gerrit-3.1.0.war
Gerrit Code Review
usage: java -jar gerrit-3.1.0.war command [ARG ...]
The most commonly used commands are:
init Initialize a Gerrit installation
reindex Rebuild the secondary index
daemon Run the Gerrit network daemons
version Display the build version number
passwd Set or change password in secure.config
ls List files available for cat
cat FILE Display a file from the archive
[gerrit@mt101 ~]$
[gerrit@mt101 ~]$ sudo java -jar gerrit-3.1.0.war init -h
init [--batch (-b)] [--delete-caches] [--dev] [--help (-h)] [--install-all-plugins] [--install-plugin VAL] [--list-plugins] [--no-auto-start] [--no-reindex] [--secure-store-lib VAL] [--show-stack-trace] [--site-path (-d) VAL] [--skip-all-downloads] [--skip-download VAL] [--skip-plugins]
--batch (-b) : Batch mode; skip interactive prompting (default:
false)
--delete-caches : Delete all persistent caches without asking (default:
false)
--dev : Setup site with default options suitable for
developers (default: false)
--help (-h) : display this help text (default: true)
--install-all-plugins : Install all plugins from war without asking (default:
false)
--install-plugin VAL : Install given plugin without asking
--list-plugins : List available plugins (default: false)
--no-auto-start : Don't automatically start daemon after init (default:
false)
--no-reindex : Don't automatically reindex any entities (default:
false)
--secure-store-lib VAL : Path to jar providing SecureStore implementation class
--show-stack-trace : display stack trace on failure (default: false)
--site-path (-d) VAL : Local directory containing site data
--skip-all-downloads : Don't download libraries (default: false)
--skip-download VAL : Don't download given library
--skip-plugins : Don't install plugins (default: false)
[gerrit@mt101 ~]$
6 - Gerrit解決沖突的提交
如果不同的開發人員同時修改同一個文件並提交,那么這些提交都不會進入代碼庫。
Gerrit會在頁面顯示“Conflicts With”或“Cannot Merge”信息來提示有沖突。
處理方式1:
- 簡單粗暴地直接取消有沖突的提交,在需要修改時重新提交一個。
處理方式2:
- 在本地執行git fetch命令更新最新的遠端代碼
- 執行git rebase命令獲取具體的沖突信息
- 執行git mergetool命令手動解決沖突
- 執行git add指令重新添加修改的文件
- 執行git rebase -continue命令完成rebase過程
- 重新提交
獲取命令的用法幫助信息
git fetch -h
git rebase -h
git rmergetool -h
git add -h
7 - 為Gerrit項目創建和刪除分支
Gerrit和GitLab集成后,在Gerrit上創建分支,GitLab也會自動同步該分支。
但只能是單項同步(Gerrit--》GitLab),也就是說直接在GitLab上創建的分支不會自動同步到Gerrit上。
建議在Gerrit和GitLab集成后,所有的操作都在Gerrit上完成。
7.1 查看已有分支
7.2 創建新分支
7.3 刪除分支
點擊要刪除分支一行的DETELE按鈕,根據提示操作即可。
8 - 為Gerrit項目添加默認代碼審核人
一般情況下,每次提交時都需要手工添加Code Reviewer。
通過reviewers插件,可以為指定項目或分支設置默認的Code Reviewer,在有代碼提交時,Code Reviewer會接收到代碼審核通知郵件。
8.1 找到reviewers插件
在GerritForge(https://gerrit-ci.gerritforge.com/),找到對應gerrit 版本的reviewers插件
reviewers插件:
https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/
8.2 放置插件並重啟Gerrit服務
將下載的插件(jar包)放置在$GERRIT_SITE/plugins
目錄下,然后重啟Gerrit服務($GERRIT_SITE/bin/gerrit.sh restart
),會自動加載此目錄下的插件。
[gerrit@mt101 ~]$ cd gerrit_testsite/plugins/
[gerrit@mt101 plugins]$ pwd
/home/gerrit/gerrit_testsite/plugins
[gerrit@mt101 plugins]$ wget https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/lastSuccessfulBuild/artifact/bazel-bin/plugins/reviewers/reviewers.jar
--2019-12-11 11:55:16-- https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/lastSuccessfulBuild/artifact/bazel-bin/plugins/reviewers/reviewers.jar
Resolving gerrit-ci.gerritforge.com (gerrit-ci.gerritforge.com)... 8.26.94.23
Connecting to gerrit-ci.gerritforge.com (gerrit-ci.gerritforge.com)|8.26.94.23|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 41911 (41K) [application/java-archive]
Saving to: ‘reviewers.jar’
100%[==========================================>] 41,911 118KB/s in 0.3s
2019-12-11 11:55:23 (118 KB/s) - ‘reviewers.jar’ saved [41911/41911]
[gerrit@mt101 plugins]$
[gerrit@mt101 plugins]$ chmod 755 reviewers.jar
[gerrit@mt101 plugins]$ ll
total 44
-rwxr-xr-x 1 gerrit gerrit 41911 Nov 16 02:03 reviewers.jar
[gerrit@mt101 plugins]$
[gerrit@mt101 plugins]$ cd
[gerrit@mt101 ~]$ sudo sh gerrit_testsite/bin/gerrit.sh restart
Stopping Gerrit Code Review: OK
Starting Gerrit Code Review: OK
[gerrit@mt101 ~]$
8.3 查看插件是否安裝成功
8.4 配置Reviewers
Filter部分:"*"表示所有分支改動
Reviewer部分:自動提示支持的用戶名、郵箱名、群組名
9 - 手動同步GitLab代碼到Gerrit
Gerrit和GitLab集成后,在Gerrit上創建分支,GitLab也會自動同步該分支。
但只能是單項同步(Gerrit--》GitLab),也就是說直接在GitLab上創建的分支不會自動同步到Gerrit上。
建議在Gerrit和GitLab集成后,所有的操作都在Gerrit上完成。
如果不小心在GitLab端進行了代碼的更新操作,就需要手工執行同步代碼的命令。
cd /home/gerrit/gerrit_testsite/git/${project}
git fetch origin +refs/heads/*:refs/heads/* +refs/heads/*:refs/heads/* --prune
10 - 刪除Gerrit上的項目
為防止誤操作,在Gerrit界面無法直接刪除項目。
可以在后台將項目目錄刪除,然后刷新緩存,才可以完全移除。
[gerrit@mt101 git]$ pwd
/home/gerrit/gerrit_testsite/git
[gerrit@mt101 git]$ ll
total 0
drwxr-xr-x 7 gerrit gerrit 119 Dec 10 14:43 All-Projects.git
drwxr-xr-x 7 gerrit gerrit 119 Dec 11 12:26 All-Users.git
drwxr-xr-x 7 gerrit gerrit 138 Dec 11 12:45 testrepo.git
[gerrit@mt101 git]$
[gerrit@mt101 git]$ rm -rf testrepo.git/
[gerrit@mt101 git]$
[gerrit@mt101 git]$ ssh -p 29418 admin@192.168.16.101 gerrit flush-caches --all
[gerrit@mt101 git]$
刷新頁面