2012-12-20 79 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

相关问题