无需人工搁置步骤即可通过hgsubversion进行推拉

时间:2016-01-20 17:47:03

标签: mercurial tortoisehg hgsubversion

我正在使用TortoiseHg和一个使用hgsubversion扩展的SVN存储库。

当我拉动时,我喜欢使用hg pull --rebase来反映SVN对svn update所做的事情。因为我正在使用hgsubversion,所以在我推动之前我还需要重新调整,所以我不妨一步到位。

此外,hg push 会在内部自动执行rebase,无法解决此问题。

我的困难在于hg rebase如果我有任何未提交的更改,将拒绝工作。因此,要从SVN推送或拉出,我首先需要hg shelve,然后记得在hg unshelve后执行。这真的很烦人,我总是忘记。

理想情况下,我想告诉TortoiseHg自动为我做这件事,但我会选择命令行别名。我尝试在我的配置as suggested here中添加svnpull = !hg shelve && hg pull --rebase && hg unshelve这样的别名但我收到错误“user:abort:response expected”而不是被要求输入密码。每次与中央存储库交互时,我该怎么做才能避免手动搁置/取消搁置步骤?

无法实际在本地提交我的更改,只是避免推送本地更改,因为hgsubversion doesn't respect the secret phasehgsubversion doesn't support designating a revision to push。所以不幸的是this similar question的答案都不适合我。无论如何,我需要手动步骤来安排我的“仅本地”变更集始终在最佳状态。

2 个答案:

答案 0 :(得分:2)

解决方案是使用存储库挂钩。我把它添加到我的.hg / hgrc配置文件中:

[hooks]
pre-pull = hg shelve
post-pull = hg unshelve
pre-push = hg shelve
post-push = hg unshelve

答案 1 :(得分:0)

请勿手动输入密码,使用密钥环自动(在Windows上可疑)或使用project's .hgrc中的[auth]部分

来自本地hg-repo的远程SVN后端示例

[auth]
assembla.prefix = https://subversion.assembla.com
assembla.username = USER
assembla.password = PASSWORD

并且不再需要输入密码

另一个想法:你没有立即推动你的WIP,是吗?你只需要在“其他”工作之上,真的吗?您可以在这种情况下提交,变基,并继续使用相同的tip,并使用commit --amend修改