先建立SSH Key
利用ssh-keygen產生ssh key,為了方便,我的passphrase是空白,這樣git操作時就不用問密碼了brook@vista:~$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/brook/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/brook/.ssh/id_ras. Your public key has been saved in /home/brook/.ssh/id_ras.pub. The key fingerprint is: be:5a:86:da:2f:9f:b1:fb:97:f1:bc:bd:30:ba:2a:56 brook@vista The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | | | S | | o E . | | . * B | | o.= = + =. | | . +=O+o+. .oo| +-----------------+ brook@vista:~$ cat /home/brook/.ssh/id_ras.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcyqsKymOWqwb3OhfYWaFltoKZQnlbJqAEkSf1vPCOxKzZLvCQm+tOxnikTdDDY61qqr+GnitSDbiaBOLELRwg2LAa/MYATK52Di1VI6E9MRVknzdWureV5n10GGQ7zwL3kwXE6pnExwD6gm54hP9LzDM2/tsnLAcP+fvWyu53LCtaRmLC/0kCnAi57gl2d0Hpnp0Zaj/hOyy6DFoVYzBERC7zeem47OZ+NOQ77zd7l+HLujVL2DmS03iZ/e+I89dJIPWFoZbV6d9JlcVXnSkX/jC97HeBYYmELLLZ/vLk6PKNQ1axYgS0/xyodi1XwVTFOYfdk69HGKUOWfQ4B4sj brook@vista brook@vista:~$
產生出來的Public Key就貼到Setting/SSH Public Keys中,如下圖
Create New Project
接下來就是建立一個新的Project,基本上只要點選Create New Project並填入名稱大致就完成了接著我將Project的Submit Type設定為FF,因為我不太喜歡有很多merge的log存在
Clone/Push/Pull Project
基本上跟一般git操作沒兩樣,差在gerrit每個commit需要change-id,必須push到refs/for/branch_name等待review,這觀念可以參考下圖brook@vista:~$ git clone ssh://brook@vista:29418/brook Cloning into 'brook'... The authenticity of host '[1.3.2.8]:29418 ([1.3.2.8]:29418)' can't be established. RSA key fingerprint is cc:29:ae:12:64:ff:e0:19:9b:d1:e4:61:b1:63:4c:51. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[1.3.2.8]:29418' (RSA) to the list of known hosts. remote: Counting objects: 2, done remote: Finding sources: 100% (2/2) remote: Total 2 (delta 0), reused 0 (delta 0) Receiving objects: 100% (2/2), done. brook@vista:~$ cd brook/ brook@vista:~/brook$ git remote -v origin ssh://brook@1.3.2.8:29418/brook (fetch) origin ssh://brook@1.3.2.8:29418/brook (push) brook@vista:~/brook$ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master brook@vista:~/brook$ git log --stat commit 79b2500f123690b50df8fa4e5fe9d4bf4459f4d9 Author: Brook Kuo <rene3210@gmail.com.tw> Date: Sat May 16 10:23:50 2015 +0800 Initial empty repository brook@vista:~/brook$ echo brook > myfile.txt brook@vista:~/brook$ git add -f myfile.txt brook@vista:~/brook$ git commit -m "brook 1st commit" [master 7764665] brook 1st commit 1 file changed, 1 insertion(+) create mode 100644 myfile.txt brook@vista:~/brook$ git push origin HEAD:refs/for/master Counting objects: 4, done. Writing objects: 100% (3/3), 251 bytes, done. Total 3 (delta 0), reused 0 (delta 0) remote: Processing changes: refs: 1, done remote: ERROR: missing Change-Id in commit message footer remote: remote: Hint: To automatically insert Change-Id, install the hook: remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 brook@1.3.2.8:hooks/commit-msg ${gitdir}/hooks/ remote: And then amend the commit: remote: git commit --amend remote: To ssh://brook@1.3.2.8:29418/brook ! [remote rejected] HEAD -> refs/for/master (missing Change-Id in commit message footer) error: failed to push some refs to 'ssh://brook@1.3.2.8:29418/brook' brook@vista:~/brook$ gitdir=$(git rev-parse --git-dir); scp -p -P 29418 brook@1.3.2.8:hooks/commit-msg ${gitdir}/hooks/ commit-msg 100% 4360 4.3KB/s 00:00 brook@vista:~/brook$ git commit --amend -m "brook 1st commit" [master 994ca11] brook 1st commit 1 file changed, 1 insertion(+) create mode 100644 myfile.txt brook@vista:~/brook$ git log -1 commit 994ca118b141529f8b9ce4269a896c35b8730508 Author: Brook Kuo <rene3210@gmail.com.tw> Date: Sat May 16 11:09:11 2015 +0800 brook 1st commit Change-Id: I9084cc25762e052527af98a335efb890c5ea3e89 brook@vista:~/brook$ git push origin HEAD:refs/for/master Counting objects: 4, done. Writing objects: 100% (3/3), 291 bytes, done. Total 3 (delta 0), reused 0 (delta 0) remote: Processing changes: new: 1, refs: 1, done remote: remote: New Changes: remote: http://1.3.2.8:6267/1 brook 1st commit remote: To ssh://brook@1.3.2.8:29418/brook * [new branch] HEAD -> refs/for/master
圖來自https://review.openstack.org/Documentation/images/intro-quick-central-gerrit.png
Review and Submit
基本上Gerrit就是個網頁review system,直接網頁點選就可以完成review/submit等動作
Open頁面顯示待review之commit
點選+2,只有+2才能被submit
點選Submit,code才能真正被merge到project中
Merge頁面顯示被merge的commit