我正在使用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 phase和hgsubversion doesn't support designating a revision to push。所以不幸的是this similar question的答案都不适合我。无论如何,我需要手动步骤来安排我的“仅本地”变更集始终在最佳状态。
答案 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
修改