- Gerrit 教程
- Gerrit - 首頁
- Gerrit - 概述
- Git 設定
- 安裝
- 配置 Git
- 設定使用者名稱和郵箱
- 在 Gerrit 中設定 SSH 金鑰
- 生成新的 SSH 金鑰
- 新增您的 SSH 金鑰
- 將 SSH 金鑰新增到您的 Gerrit 賬戶
- 新增 SSH 金鑰以用於 Git
- 使用 Git 下載擴充套件
- 準備使用 Gerrit
- 安裝 Git-Review
- 配置 Git-Review
- 設定 Git-Review
- Gerrit 中程式碼如何審查
- 合併前的審查
- Gerrit - 專案所有者
- 如何評論、審查、合併
- Gerrit 有用資源
- Gerrit - 快速指南
- Gerrit - 有用資源
- Gerrit - 討論
Gerrit - 快速指南
Gerrit - 概述
Gerrit 是一款基於 Web 的程式碼審查工具,它與 Git 整合,並構建在 Git 版本控制系統之上(幫助開發人員協同工作並維護其工作歷史)。當您完成程式碼審查後,它允許將更改合併到 Git 儲存庫中。
Gerrit 由 Google 的 Shawn Pearce 開發,使用 Java、Servlet 和 GWT(Google Web Toolkit)編寫。Gerrit 的穩定版本是 2.12.2,於 2016 年 3 月 11 日釋出,許可證為 Apache License v2。
為什麼要使用 Gerrit?
以下是您應該使用 Gerrit 的一些原因。
您可以使用 Gerrit 輕鬆查詢原始碼中的錯誤。
如果您有常規的 Git 客戶端,則可以使用 Gerrit;無需安裝任何 Gerrit 客戶端。
Gerrit 可以用作開發人員和 Git 儲存庫之間的中介軟體。
Gerrit 的功能
Gerrit 是一個免費的開源 Git 版本控制系統。
Gerrit 的使用者介面基於 Google Web Toolkit。
它是一個輕量級的框架,用於審查每個提交。
Gerrit 充當儲存庫,允許推送程式碼併為您的提交建立審查。
Gerrit 的優勢
Gerrit 為 Git 儲存庫提供訪問控制,並提供用於程式碼審查的 Web 前端。
您可以推送程式碼而無需使用額外的命令列工具。
Gerrit 可以在儲存庫級別和分支級別授予或拒絕許可權。
Gerrit 受 Eclipse 支援。
Gerrit 的缺點
審查、驗證和重新提交程式碼提交會減慢產品上市時間。
Gerrit 只能與 Git 一起使用。
Gerrit 速度緩慢,並且無法更改列出更改的排序順序。
您需要管理員許可權才能在 Gerrit 上新增儲存庫。
Gerrit - 安裝
在使用 Gerrit 之前,您必須安裝 Git 並執行一些基本的配置更改。以下是不同平臺上安裝 Git 客戶端的步驟。
Git 客戶端的安裝
Linux
您可以使用軟體包管理工具在 Linux 上安裝 Git。例如,如果您使用的是 Fedora,則可以使用以下命令:
sudo yum install git
如果您使用的是基於 Debian 的發行版(如 Ubuntu),則使用以下命令:
sudo apt-get install git
Windows
您可以從 Git 網站下載 Git 並將其安裝在 Windows 上。只需訪問 msysgit.github.io 連結並點選下載按鈕。
Mac
可以使用以下命令在 Mac 上安裝 Git:
brew install git
另一種安裝 Git 的方法是從 Git 網站下載。只需訪問 Git install on Mac 連結,它將為 Mac 平臺安裝 Git。
Gerrit - 配置 Git
安裝 Git 後,您需要自定義配置變數以新增您的個人資訊。您可以使用名為 git config 的 Git 工具以及 -l 選項(此選項提供當前配置)來獲取和設定配置變數。
git config -l
執行上述命令後,您將獲得如下所示的配置變數。
您可以隨時使用命令再次更改自定義資訊。在下一章中,您將學習如何使用 git config 命令配置使用者名稱和使用者郵箱。
Gerrit - 設定您的使用者名稱和電子郵件
您可以透過設定 name 和 email 變數來跟蹤每個提交。name 變數指定名稱,而 email 變數標識與 Git 提交關聯的電子郵件地址。您可以使用以下命令設定它們:
git config --global user.email "your_email@mail.com" git config --global user.name "your_name"
執行上述命令後,您將獲得如下所示的使用者名稱和電子郵件地址。
Gerrit - 生成新的 SSH 金鑰
SSH 代表 Secure Shell 或有時稱為 Secure Socket Shell 協議,用於安全地從遠端計算機訪問網路服務。您可以設定 SSH 金鑰以在計算機和 Gerrit 之間提供可靠的連線。
您可以使用以下命令在 Git Bash 中檢查本地計算機上現有的 SSH 金鑰:
$ ls ~/.ssh
點選回車鍵後,您將看到如下所示的現有 SSH 金鑰:
如果您沒有找到任何現有的 SSH 金鑰,則需要建立一個新的 SSH 金鑰。
生成新的 SSH 金鑰
您可以使用以下命令在 Git Bash 中生成一個新的 SSH 金鑰以進行身份驗證:
$ ssh-keygen -t rsa -C "your_email@mail.com"
如果您已經擁有 SSH 金鑰,則不要生成新的金鑰,因為它們將被覆蓋。只有在安裝了 Git 和 Git Bash 後,才能使用 ssh-keygen 命令。
執行上述命令後,它將在 ~/.ssh 目錄中建立 2 個檔案。
~/.ssh/id_rsa - 它是私鑰或標識金鑰。
~/.ssh/id_rsa.pub - 它是公鑰。
Gerrit - 新增您的 SSH 金鑰
您可以將 SSH 金鑰新增到不同平臺上的 ssh-agent,如下所述。
Linux
在 Linux 系統上使用以下命令新增 SSH 金鑰
cat /home/<local-user>/.ssh/id_rsa.pub
Windows
開啟 GIT GUI 並轉到 幫助 → 顯示 SSH 金鑰,如下所示。
然後,點選 複製到剪貼簿 按鈕,將金鑰複製到剪貼簿。
Mac
在 Mac OS X 中,您可以使用以下命令將 id_rsa.pub 內容複製到剪貼簿。
$ pbcopy < ~/.ssh/id_rsa.pub
Gerrit - 將 SSH 金鑰新增到您的 Gerrit 賬戶
可以使用以下步驟將 SSH 金鑰新增到 Gerrit 賬戶:
步驟 1 - 首先在 wmflabs.org 服務上建立一個賬戶。
步驟 2 - 接下來登入 Gerrit 的 Web 介面。
步驟 3 - 然後在右上角,點選您的使用者名稱並選擇設定選項。
在這裡,我們建立了一個名為 John 的賬戶來使用 Gerrit。
步驟 4 - 點選左側選單中的“SSH 公鑰”選項,並將 SSH 公鑰貼上到欄位中。
Gerrit - 新增 SSH 金鑰以用於 Git
您可以使用以下命令將 SSH 金鑰新增到 Git:
步驟 1 - 開啟 Git Bash 並使用以下命令獲取 ssh-agent。
$ eval 'ssh-agent'
步驟 2 - 接下來,使用以下命令將 SSH 金鑰新增到 ssh-agent
$ ssh-add ~/.ssh/id_rsa
步驟 3 - 現在,執行 ssh 使用以下命令,該命令與首次登入時使用的 SSH 指紋匹配。
$ ssh -p 29418 <user_name>@gerrit.wikimedia.org
在上面的螢幕截圖中,您可以看到 xyz123 是一個例項 shell 賬戶名稱,在建立 Gerrit 賬戶時使用,而 Abc123 是您的 Gerrit 賬戶的使用者名稱。
Gerrit - 使用 Git 下載示例
您可以使用 Git 下載示例以及在 gerrit.wikimedia.org 上組織的任何專案的原始碼,使用以下 Git Bash 命令。
$ git clone ssh://<user_name>@gerrit.wikimedia.org:29418/mediawiki/extensions/examples
git clone 命令將目錄克隆到新目錄中;換句話說,獲取現有儲存庫的副本。執行上述命令後,您將獲得類似於以下內容的螢幕截圖。
上述命令克隆了“examples”儲存庫,並從該儲存庫接收物件、檔案等,並將其儲存在您的本地分支中。
Gerrit - 安裝 Git-Review
您可以透過在本節中討論的不同平臺上安裝 git-review 來使用 Gerrit。
Windows
在 Windows 中,您可以按照以下步驟安裝 git-review。
步驟 1 - 首先安裝 Python 以安裝 git-review。
步驟 2 - 將 Python 安裝保留在預設目錄(如 C:\Python27)中,而不是安裝在任何其他目錄中。
步驟 3 - 接下來,使用 C:\Python27\;C:\Python27\Scripts\; 路徑設定 Python 指令碼目錄的環境變數。
git_review_install
步驟 4 - 在 2.7 版本中,Python 將自動安裝 pip。對於舊版本的 Python 2.7,您可以按照 此連結 中的說明安裝 pip。
步驟 5 - 執行開啟 Git Bash 並使用以下命令安裝 git-review。
$ pip install git-review
Linux
在 Linux 中,您可以按照以下步驟安裝 git-review:
步驟 1 - Linux 平臺的使用者在共享主機上沒有 root 訪問許可權。因此,在沒有 root 訪問許可權的情況下,您可以使用以下命令在使用者目錄中本地安裝 git-review:
virtualenv --python=/usr/bin/python2.6 virtualenv virtualenv/bin/pip install git-review==1.21
步驟 2 - 您可以透過兩種方式擴充套件到本地二進位制檔案的路徑:
PATH=$PATH:~/virtualenv/bin/ PATH=~/virtualenv/bin/:$PATH
步驟 3 - 現在,使用以下命令設定與 Gerrit 的工作。
git review -s or ~/virtualenv/bin/git-review -s
步驟 4 - 具有 root 訪問許可權的情況下,可以使用以下命令安裝 git-review。
sudo apt-get install git-review
步驟 5 - 如果安裝 Python 後沒有 apt-get,則使用以下命令。
$ sudo easy_install pip $ sudo pip install git-review==1.21
步驟 6 - 執行以下命令以與 Gerrit 協同工作。
git review -s
Mac OS X
在 Mac 上,您可以按照以下步驟安裝 git-review。
步驟 1 - 從 此連結 安裝 Homebrew。
步驟 2 - 接下來,使用以下命令安裝 git-review。
brew install git-review
Gerrit - 配置 Git-Review
Gerrit 基於 Git 版本控制系統構建,用於從其他主機提取程式碼、將更改推送到程式碼、提交程式碼以供審查等。Git 的預設遠端名稱為 origin,我們使用以下命令告訴 git-review 使用此名稱 'origin'。
$ git config --global gitreview.remote origin
Gerrit - Git-Review 設定
Git-review 可用於將 Git 分支傳送到 Gerrit 以進行審查。您可以在專案目錄中使用以下命令設定 gitreview。
$ git review -s
Git-review 可以用作命令列工具,用於配置 Git 克隆、將分支提交到 Gerrit、獲取現有檔案等。Git-review 預設情況下會在名為 gerrit 的遠端分支中查詢用於與 Gerrit 協作的資訊。
如果 git-review 找到 Gerrit 遠端分支,則它會將分支提交到遠端位置的 HEAD:refs/for/master,如果不存在 Gerrit 遠端訪問許可權,則 git-review 會在儲存庫的根目錄中查詢 .gitreview 檔案以及 Gerrit 遠端資訊。
Git-review 在內部處理以下操作:
它將檢查遠端儲存庫是否可以用於提交分支。
如果沒有 Gerrit 遠端訪問許可權,它將提示輸入使用者名稱並再次嘗試訪問儲存庫。
它將建立一個名為 gerrit 的遠端訪問,指向 Gerrit。
它將安裝 commit-msg 鉤子。
Gerrit - 更新主分支
您可以使用以下命令使 master 分支保持最新。git-pull 命令從另一個本地分支獲取或與另一個儲存庫整合。
git pull origin master
該命令將從 origin 遠端(要從中獲取的遠端 URL)的 master 分支拉取更改,並將更改合併到本地檢出的分支。
origin master 是上次從 origin 拉取的快取副本。
Git pull 是 git fetch(從遠端儲存庫獲取新提交)和 git merge(將新提交整合到本地分支)的組合。
預設情況下,Git pull 將本地分支與遠端分支合併。
Gerrit - 建立分支
您可以使用以下命令在本地機器上建立分支。
$ git checkout -b name_of_branch origin/master
以上命令建立了一個新的分支,如下面的螢幕截圖所示。
這裡,我們使用 branch123 作為新的本地分支。您可以使用以下命令從 'master' 顯示新分支。
$ git branch
以上命令產生以下螢幕截圖所示的結果。
Git checkout 在分支之間導航,更新工作目錄中的檔案,並通知 Git 在該分支上記錄提交。
Gerrit - 進行和提交更改
當您修改本地檔案系統中的程式碼時,您可以使用以下命令檢查目錄內的更改。
$ git diff
在專案目錄中,我們將修改名為 Example/Example.hooks.php 檔案中的一些更改並執行以上命令。我們將獲得以下螢幕截圖所示的結果。
您可以使用以下命令檢查對檔案或目錄所做的更改。
$ git status
以上命令允許檢視哪些更改已暫存、哪些未暫存以及哪些檔案未被 Git 跟蹤。
接下來,您可以將工作目錄中的更改新增到下一個提交中並更新檔案,使用以下命令。
$ git add Example/Example.hooks.php
新增檔案後,再次執行 git status 命令以檢視新增到暫存區的更改,如下面的螢幕截圖所示。
您可以使用以下命令檢視索引和上次提交之間的差異,以及哪些內容已暫存。
$ git diff --cached
您可以使用以下命令將更改從本地儲存庫推送到遠端目錄。
$ git commit
執行以上命令時,它將要求您為更改新增提交訊息。當您將提交推送到其他儲存庫時,其他人將看到此訊息。
新增提交訊息並再次執行 git commit 命令,它將顯示提交訊息,如下面的螢幕截圖所示。
Gerrit - 準備將更改集推送到 Gerrit
在將更改合併到 master 之前,您需要在 Gerrit 中審查這些更改。可以同步在 master 中發生的更改。在您一直在使用的分支中使用以下命令。
$ git pull --rebase origin master
以上命令將從遠端分支獲取更改或提交,並在 master 之上重新設定提交。
完成更改並重新設定提交後,您可以將更改集推送到 Gerrit 以供審查。
當更改不值得擁有單獨的分支時,通常使用 Git pull --rebase。
Git pull 是 git fetch 和 git merge 的組合;而 git pull --rebase 是 git fetch 和 git rebase 的組合。
首先,執行 git pull origin master 命令,如下面的螢幕截圖所示。
現在使用 git rebase master 命令重新設定提交,如下面的螢幕截圖所示。
Gerrit - 將更改集推送到 Gerrit
您可以使用 git-review 命令提交補丁以供審查。可以透過執行 git review -R 命令將更改集推送到 Gerrit,如下面的螢幕截圖所示。
-R 選項通知 git-review 在將 git 更改提交到 Gerrit 之前不要完成重新設定。
您可以將程式碼提交到 master 以外的其他分支,使用以下命令。
git review name_of_branch
還可以將程式碼提交到不同的遠端分支,使用以下命令。
git review -r name_of_remote
Gerrit - 檢視更改/後續步驟
可以透過單擊此 連結在 Gerrit 儀表板中檢視更改。
單擊 修改的作者名稱 連結,您將獲得以下螢幕截圖。
單擊 diffusion 連結以檢視更改的檔案以及其他詳細資訊,如下面的螢幕截圖所示。
Gerrit - 透過 Web 介面編輯
登入 Gerrit 帳戶後,您可以透過 Web 介面編輯專案,如下面的步驟所示。
步驟 1 - 單擊此 連結轉到 Gerrit 儀表板。您將獲得以下螢幕截圖。
步驟 2 - 接下來,單擊 專案列下指定的 mediawiki/extensions/examples 連結。
步驟 3 - 單擊工具欄中的 常規連結,如下面的螢幕截圖所示。
步驟 4 - 開啟 常規連結時,它將顯示以下螢幕截圖。
步驟 5 - 單擊 建立更改按鈕,它將開啟一個彈出視窗,其中包含一些詳細資訊,如下面的螢幕截圖所示。
步驟 6 - 輸入資訊並單擊 建立按鈕。
建立更改後,它將顯示以下螢幕截圖所示的資訊。
步驟 7 - 單擊 編輯,然後單擊 新增。現在選擇要編輯的檔案。這裡我們選擇了檔案 Example/i18n/en.json。
開啟檔案時,它將顯示以下螢幕截圖中指定的 json 資料。
步驟 8 - 單擊儲存,然後單擊 關閉按鈕。
步驟 9 - 最後,單擊 釋出按鈕以釋出已編輯的檔案。
步驟 10 - 您可以透過單擊以下螢幕截圖所示的 提交訊息連結來更改提交訊息。
步驟 11 - 按鍵盤上的 e 並新增一些額外的資訊(如果您願意)。單擊 儲存,然後單擊 關閉按鈕。
Gerrit - 合併前的審查
程式碼審查是 Gerrit 工作流程的重要組成部分。基本概念是必須在合併之前審查程式碼。
用於 MediaWiki 的程式碼工作流可以在合併之前進行審查,並且還可以審查自定義 MediaWiki 外觀和功能的擴充套件。有一種特殊情況,您可以推送 國際化和本地化 提交。
完成開發後,您可以將所有提交推送到遠端分支。有人會將更改獲取到本地,並透過建立合併提交將這些獲取的更改合併到本地 master 中。您可以將這些更改推送到 refs/for/master。
Gerrit - 專案所有者
專案所有者意味著該專案屬於提到的個人。專案所有者是一個虛擬組,您不能在其中新增成員或其他組。專案所有者提供訪問許可權,以允許不同組對專案進行許可權。
您可以使用以下步驟檢視專案的訪問許可權。
步驟 1 - 單擊此 連結開啟 Gerrit 儀表板。
步驟 2 - 單擊 專案→列表選項。在專案列表中搜索專案並單擊它,如下面的螢幕截圖所示。
步驟 3 - 開啟專案後,單擊 訪問選項,如下面的螢幕截圖所示。
步驟 4 - 單擊 編輯選項。您可以透過單擊下拉選單更改訪問許可權。單擊 儲存更改按鈕,如下面的螢幕截圖所示。
如何評論、審查和合並
任何人都可以在 Gerrit 中審查程式碼並對程式碼發表評論。請考慮以下步驟:
步驟 1 - 登入 Gerrit 以開啟前面章節中指定的 Gerrit 儀表板。
步驟 2 - 現在,單擊任何包含 Gerrit 專案、分支、更新日期等的主題,如下面的螢幕截圖所示。
步驟 3 - 接下來,它將顯示一個螢幕。單擊 提交訊息選項,如下面的螢幕截圖所示。
更改集的重要欄位包括審查者、新增審查者、並排關閉等。比較補丁集包括選擇舊版本歷史記錄列表、擴充套件較新補丁集詳細資訊等。審查和合並或拒絕程式碼包括放棄更改按鈕、提交補丁按鈕等,這些在 Gerrit 的當前版本中不存在。