我无法弄清楚如何将SourceTree推向Gerrit。
我看到了这个链接,但我仍然不明白它是如何完成的: https://answers.atlassian.com/questions/29361/configuring-sourcetree-push-for-gerrit
显然根据1.3.3的发行说明,有一种方法可以做到,但我无法弄明白:http://www.sourcetreeapp.com/update/ReleaseNotes.html#version-1.3.3
是否有关于如何操作的分步指导?
现在我在终端上运行此命令以推送
git push origin HEAD:refs/for/master
答案 0 :(得分:30)
我相信atlassian提供的答案是当您看到Push对话框时更改远程分支的名称。
这似乎已经将我的提交正确地推送到了Gerrit。我现在遇到的问题是'refs / for / master'值不会持续存在。现在想出来。一旦我弄明白,我会更新这篇文章。希望这有助于甚至比赛还晚。
更新:事实证明,您需要在.git / config中的远程源下添加推送条目。你应该通过git config命令执行此操作(因为我手动编辑了文件,我确定这是不好的做法)。我写的推线是:
push = refs/heads/*:refs/for/*
为了清楚起见,这是我在.git / config中的远程源条目:
[remote "origin"]
url = ssh://gerrit-test.example.com:29418/mystuff.git
fetch = +refs/heads/*:refs/remotes/origin/*
push = refs/heads/*:refs/for/*
在SourceTree中,你现在可以推送它,它将推动gerrit而不是最终的回购。 (你现在也可以在没有指定任何其他内容的情况下执行git push,它会推动gerrit)。请注意,在推送之后,SourceTree仍然会在“推送”按钮上显示一个数字,表示您仍有要推送的内容。这是因为它仍然从主仓库获取,并且您已经推入gerrit的更改尚未合并到主仓库中。将更改合并到主仓库后,“推送”按钮上的数字将消失。
答案 1 :(得分:1)
如果您使用Git Flow(http://nvie.com/posts/a-successful-git-branching-model/)或类似设置进行设置,则通常需要将本地分支推送到其他远程分支。在这种情况下,通用推送规则(由mozart27提到)将无法工作,因为它总是将您的本地分支推送到相应的远程分支。
实施例: 我有一个本地分支“feature123”,可供审查(即Gerrit)。我们的整合分支是“起源/开发”。如果我使用通用推送规则,那么“feature123”将被推送到“origin / feature123”进行审核,但我真正想要的是将其推送到“origin / develop”进行审核。
解决方案: 在SourceTree中,您可以创建自定义操作:
Menu caption: Push for review
Script to run: cmd
Parameters: /c git push origin $SHA:refs/for/develop
请记住将Git添加到您的路径以启用cmd以使用它。
然后,您不是点击“推送”,而是右键单击您的提交,然后选择“自定义操作 - >推送以供审核”。
当然,这两个解决方案可以共存,具有通用推送规则,确保您在推送到远程分支时始终发送审核,以及您希望在集成分支上发送功能分支以供审核的自定义操作。 / p>