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 Configuration

您可以隨時使用命令再次更改自定義資訊。在下一章中,您將學習如何使用 git config 命令配置使用者名稱和使用者郵箱。

Gerrit - 設定您的使用者名稱和電子郵件

您可以透過設定 nameemail 變數來跟蹤每個提交。name 變數指定名稱,而 email 變數標識與 Git 提交關聯的電子郵件地址。您可以使用以下命令設定它們:

git config --global user.email "your_email@mail.com"
git config --global user.name "your_name"

執行上述命令後,您將獲得如下所示的使用者名稱和電子郵件地址。

Set User Name and Email

Gerrit - 生成新的 SSH 金鑰

SSH 代表 Secure Shell 或有時稱為 Secure Socket Shell 協議,用於安全地從遠端計算機訪問網路服務。您可以設定 SSH 金鑰以在計算機和 Gerrit 之間提供可靠的連線。

您可以使用以下命令在 Git Bash 中檢查本地計算機上現有的 SSH 金鑰:

$ ls ~/.ssh

點選回車鍵後,您將看到如下所示的現有 SSH 金鑰:

SSH Key Existing

如果您沒有找到任何現有的 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 金鑰,如下所示。

Add SSH Key

然後,點選 複製到剪貼簿 按鈕,將金鑰複製到剪貼簿。

Add SSH Key

Mac

在 Mac OS X 中,您可以使用以下命令將 id_rsa.pub 內容複製到剪貼簿。

$ pbcopy < ~/.ssh/id_rsa.pub

Gerrit - 將 SSH 金鑰新增到您的 Gerrit 賬戶

可以使用以下步驟將 SSH 金鑰新增到 Gerrit 賬戶:

  • 步驟 1 - 首先在 wmflabs.org 服務上建立一個賬戶。

  • Creating Account
Sign-in Gerrit
  • 步驟 3 - 然後在右上角,點選您的使用者名稱並選擇設定選項。

    Gerrit Settings

    在這裡,我們建立了一個名為 John 的賬戶來使用 Gerrit。

  • 步驟 4 - 點選左側選單中的“SSH 公鑰”選項,並將 SSH 公鑰貼上到欄位中。

SSH Public Keys

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

Add SSH Key with Git

在上面的螢幕截圖中,您可以看到 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 命令將目錄克隆到新目錄中;換句話說,獲取現有儲存庫的副本。執行上述命令後,您將獲得類似於以下內容的螢幕截圖。

Gerrit Download Example using Git

上述命令克隆了“examples”儲存庫,並從該儲存庫接收物件、檔案等,並將其儲存在您的本地分支中。

Gerrit - 安裝 Git-Review

您可以透過在本節中討論的不同平臺上安裝 git-review 來使用 Gerrit。

Windows

在 Windows 中,您可以按照以下步驟安裝 git-review。

步驟 1 - 首先安裝 Python 以安裝 git-review。

Python Install

步驟 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

Gerrit Update Master
  • 該命令將從 origin 遠端(要從中獲取的遠端 URL)的 master 分支拉取更改,並將更改合併到本地檢出的分支。

  • origin master 是上次從 origin 拉取的快取副本。

  • Git pull 是 git fetch(從遠端儲存庫獲取新提交)和 git merge(將新提交整合到本地分支)的組合。

  • 預設情況下,Git pull 將本地分支與遠端分支合併。

Gerrit - 建立分支

您可以使用以下命令在本地機器上建立分支。

$ git checkout -b name_of_branch origin/master

以上命令建立了一個新的分支,如下面的螢幕截圖所示。

Gerrit Creating New Branch

這裡,我們使用 branch123 作為新的本地分支。您可以使用以下命令從 'master' 顯示新分支。

$ git branch

以上命令產生以下螢幕截圖所示的結果。

Gerrit Creating New Branch1

Git checkout 在分支之間導航,更新工作目錄中的檔案,並通知 Git 在該分支上記錄提交。

Gerrit - 進行和提交更改

當您修改本地檔案系統中的程式碼時,您可以使用以下命令檢查目錄內的更改。

$ git diff

在專案目錄中,我們將修改名為 Example/Example.hooks.php 檔案中的一些更改並執行以上命令。我們將獲得以下螢幕截圖所示的結果。

Gerrit Commit Changes

您可以使用以下命令檢查對檔案或目錄所做的更改。

$ git status

Gerrit Commit Changes1

以上命令允許檢視哪些更改已暫存、哪些未暫存以及哪些檔案未被 Git 跟蹤。

接下來,您可以將工作目錄中的更改新增到下一個提交中並更新檔案,使用以下命令。

$ git add Example/Example.hooks.php

新增檔案後,再次執行 git status 命令以檢視新增到暫存區的更改,如下面的螢幕截圖所示。

Gerrit Commit Changes2

您可以使用以下命令檢視索引和上次提交之間的差異,以及哪些內容已暫存。

$ git diff --cached

Gerrit Commit Changes3

您可以使用以下命令將更改從本地儲存庫推送到遠端目錄。

$ git commit

執行以上命令時,它將要求您為更改新增提交訊息。當您將提交推送到其他儲存庫時,其他人將看到此訊息。

Gerrit Commit Changes4

新增提交訊息並再次執行 git commit 命令,它將顯示提交訊息,如下面的螢幕截圖所示。

Gerrit Commit Changes5

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 命令,如下面的螢幕截圖所示。

Push Changes to Gerrit

現在使用 git rebase master 命令重新設定提交,如下面的螢幕截圖所示。

Push Changes to Gerrit1

Gerrit - 將更改集推送到 Gerrit

您可以使用 git-review 命令提交補丁以供審查。可以透過執行 git review -R 命令將更改集推送到 Gerrit,如下面的螢幕截圖所示。

Push Changes to Gerrit

-R 選項通知 git-review 在將 git 更改提交到 Gerrit 之前不要完成重新設定。

您可以將程式碼提交到 master 以外的其他分支,使用以下命令。

git review name_of_branch

還可以將程式碼提交到不同的遠端分支,使用以下命令。

git review -r name_of_remote

Gerrit - 檢視更改/後續步驟

可以透過單擊此 連結在 Gerrit 儀表板中檢視更改。

View Changes in Gerrit

單擊 修改的作者名稱 連結,您將獲得以下螢幕截圖。

View Changes in Gerrit

單擊 diffusion 連結以檢視更改的檔案以及其他詳細資訊,如下面的螢幕截圖所示。

View Changes in Gerrit

Gerrit - 透過 Web 介面編輯

登入 Gerrit 帳戶後,您可以透過 Web 介面編輯專案,如下面的步驟所示。

步驟 1 - 單擊此 連結轉到 Gerrit 儀表板。您將獲得以下螢幕截圖。

View Changes in Gerrit

步驟 2 - 接下來,單擊 專案列下指定的 mediawiki/extensions/examples 連結。

步驟 3 - 單擊工具欄中的 常規連結,如下面的螢幕截圖所示。

Editing via Web Interface

步驟 4 - 開啟 常規連結時,它將顯示以下螢幕截圖。

Editing via Web Interface

步驟 5 - 單擊 建立更改按鈕,它將開啟一個彈出視窗,其中包含一些詳細資訊,如下面的螢幕截圖所示。

Editing via Web Interface

步驟 6 - 輸入資訊並單擊 建立按鈕。

建立更改後,它將顯示以下螢幕截圖所示的資訊。

Editing via Web Interface

步驟 7 - 單擊 編輯,然後單擊 新增。現在選擇要編輯的檔案。這裡我們選擇了檔案 Example/i18n/en.json

Editing via Web Interface

開啟檔案時,它將顯示以下螢幕截圖中指定的 json 資料。

Editing via Web Interface

步驟 8 - 單擊儲存,然後單擊 關閉按鈕。

步驟 9 - 最後,單擊 釋出按鈕以釋出已編輯的檔案。

Editing via Web Interface

步驟 10 - 您可以透過單擊以下螢幕截圖所示的 提交訊息連結來更改提交訊息。

Editing via Web Interface

步驟 11 - 按鍵盤上的 e 並新增一些額外的資訊(如果您願意)。單擊 儲存,然後單擊 關閉按鈕。

Editing via Web Interface

Gerrit - 合併前的審查

程式碼審查是 Gerrit 工作流程的重要組成部分。基本概念是必須在合併之前審查程式碼。

用於 MediaWiki 的程式碼工作流可以在合併之前進行審查,並且還可以審查自定義 MediaWiki 外觀和功能的擴充套件。有一種特殊情況,您可以推送 國際化和本地化 提交。

完成開發後,您可以將所有提交推送到遠端分支。有人會將更改獲取到本地,並透過建立合併提交將這些獲取的更改合併到本地 master 中。您可以將這些更改推送到 refs/for/master

Gerrit - 專案所有者

專案所有者意味著該專案屬於提到的個人。專案所有者是一個虛擬組,您不能在其中新增成員或其他組。專案所有者提供訪問許可權,以允許不同組對專案進行許可權。

您可以使用以下步驟檢視專案的訪問許可權。

步驟 1 - 單擊此 連結開啟 Gerrit 儀表板。

Gerrit Project Owner

步驟 2 - 單擊 專案→列表選項。在專案列表中搜索專案並單擊它,如下面的螢幕截圖所示。

Gerrit Project Owner

步驟 3 - 開啟專案後,單擊 訪問選項,如下面的螢幕截圖所示。

Gerrit Project Owner

步驟 4 - 單擊 編輯選項。您可以透過單擊下拉選單更改訪問許可權。單擊 儲存更改按鈕,如下面的螢幕截圖所示。

Gerrit Project Owner

如何評論、審查和合並

任何人都可以在 Gerrit 中審查程式碼並對程式碼發表評論。請考慮以下步驟:

步驟 1 - 登入 Gerrit 以開啟前面章節中指定的 Gerrit 儀表板。

步驟 2 - 現在,單擊任何包含 Gerrit 專案、分支、更新日期等的主題,如下面的螢幕截圖所示。

Gerrit Review Merge Code

步驟 3 - 接下來,它將顯示一個螢幕。單擊 提交訊息選項,如下面的螢幕截圖所示。

Gerrit Review Merge Code

更改集的重要欄位包括審查者、新增審查者、並排關閉等。比較補丁集包括選擇舊版本歷史記錄列表、擴充套件較新補丁集詳細資訊等。審查和合並或拒絕程式碼包括放棄更改按鈕、提交補丁按鈕等,這些在 Gerrit 的當前版本中不存在。

廣告

© . All rights reserved.