2012-12-20 77 views
1

我的公司對Git使用Gerrit Code Review。我一直在考慮一個自定義的咒語,用我想要把代碼的每一次變化:默認推送的自定義操作

git push origin HEAD:refs/for/my-branch-name 

比「我的分支,名爲」其他,就是這樣一字不差。 refs/for/語法對我來說似乎很瘋狂,而且這不是我之前在Git中看到的。

如何配置我的回購,以便git push單獨與上述相同?

+1

另請參閱相關問題[「爲什麼git push gerrit HEAD:refs/for/master而不是git push origin master」](http://stackoverflow.com/q/10461214/405017)。 – Phrogz

+0

重複[git alias for HEAD:refs/for/master](http://stackoverflow.com/questions/7423893/git-alias-for-headrefs-for-master) – Phrogz

回答

2

您可以通過鍵入

git config remote.origin.push HEAD:refs/for/my-branch-name 

我創建了一個git post-checkout hook是確保所有分支(主動)被配置爲使用更新推裁判規格爲您的遠程格里特。我認爲它可行,但你的工作流程可能與我的不同,所以在使用它之前閱讀腳本並理解它(不難)。

0

refs/for/....是Gerrit用來觸發並跟蹤特定分支的代碼評論的「神奇」參考。這是記錄在http://gerrit-documentation.googlecode.com/svn/Documentation/2.5.1/user-upload.html

你需要推到這個參考,使Gerrit可以拿起你的變化,並開始代碼審查過程。

如果你只是做了git push origin master那麼它會繞過Gerrit,因爲你的提交已經在master分支。 Gerrit的重點在於確保您的代碼在進入master(或其他)之前得到審查。

+0

是的,但是這並不回答關於如何配置回購的問題,以便'git push'爲我做出魔法咒語。 – Phrogz

+0

你可以創建一個git別名來做到這一點。 – regulatethis

+0

鑑於這是完整的問題,也許你應該修改你的「答案」來說明如何做到這一點。否則,這是一個有用的評論,但不是答案。 – Phrogz

2

該語法並不瘋狂,它只是完整的git push語法。當你這樣做本身git push,它確實有效了出來:

git push origin current-branch:refs/heads/current-branch 

你可能會使用代碼審查格里特,所以不是隻需直接推到一個特定的分支,你想讓格里特瞭解改變 - gerrit使用refs/for區域用於此目的。

更新版本的gerrit使用refs/publishrefs/drafts,所以你可能也會看到這些。

如果你想要更方便的東西,你可以很容易地製作別名並將它們添加到你的git配置中。看看這個問題:git alias for HEAD:refs/for/master

+0

_「你可以輕鬆地創建別名並將它們添加到你的git配置中」_你假設太多了,先生。 :p – Phrogz

+0

謝謝你找到[重複問題](http://stackoverflow.com/questions/7423893/git-alias-for-headrefs-for-master),有我需要的答案。我會爲你+1,並投票結束我自己的問題。 :) – Phrogz

相關問題