2015年2月2日 星期一

[git/gerrit] Mac OS使用git將文件push上gerrit的branch

說明:git是分散式版本控制系統之一,gerrit是以git專案為基的code review系統,記錄在Mac OS下如何將code push上gerrit的branch。


做法:
1. 安裝git(http://git-scm.com/)。

2. 啟用gerrit之帳戶與建立SSH key。可參閱以下網址:
http://git-scm.com/book/zh/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key

3. 測試本地電腦跟gerrit連線ok後,開啟電腦上的終端機,輸入defaults write com.apple.finder AppleShowAllFiles TRUE並按下Enter,再輸入killall Finder然後送出,讓電腦顯示系統的隱藏檔案,方便後續操作.git裡的config檔。

4. 在終端機輸入git clone ssh://ssh_user_name@gerrit_url:29418/project_name.git。

5. 專案複製到本地電腦帳戶下資料夾後 -> 打開此專案,修改某行程式碼儲存後,可將該檔案commit -> 輸入commit message -> commit送出。

6. 回到終端機視窗,輸入cd ~/project_name/,進到該專案下 -> 輸入git status,檢視目前專案異動狀態。

7. 輸入scp -p -P 29418 ssh_user_name@gerrit_url:hooks/commit-msg .git/hooks/,可將每次commit所需的Change_Id自動加進去commit message,否則可能會出現ERROR: missing Change-Id in commit message的訊息。

8. 打開Finder,進到本機帳號下的Project,打開隱藏的.git資料夾 -> 打開裡面的.config檔,加入以下指令,增加gerrit用來review code的branch,
[remote "review"]
pushurl = ssh://ssh_user_name@gerrit_url:29418/project_name
push = refs/heads/master:refs/for/master

9. 最後在終端上輸入git push review,即可將code push上gerrit review
code的branch -> 進gerrit即可看到剛push上去的記錄。



參考資料:
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/PublishYourCodetoaSourceRepository/PublishYourCodetoaSourceRepository.html
http://stackoverflow.com/questions/8845658/gerrit-error-when-change-id-in-commit-messages-are-missing
http://vimeo.com/23609339