用hgsubversion推拉,无需手动搁板步骤



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

我喜欢在拉动时使用hg pull --rebase来反映SVN在svn update上所做的。因为我使用的是 hgsubversion,所以我在推送之前无论如何都需要变基,所以我不妨一步到位。

此外,hg push会自动在内部进行变基,但无法解决这个问题。

我的困难在于,如果我有任何未承诺的更改,hg rebase会拒绝工作。因此,要从SVN推送或拉取,我总是需要先hg shelve,然后再记住hg unshelve。这可能会变得非常烦人,我总是忘记。

理想情况下,我想告诉 TortoiseHg 自动为我执行此操作,但我会满足于命令行别名。我尝试按照此处的建议在我的配置中放置一个像 svnpull = !hg shelve && hg pull --rebase && hg unshelve 这样的别名,但我收到错误"用户:中止:预期响应",而不是被要求输入我的密码。如何避免每次与中央存储库交互时手动搁置/取消搁置步骤?

我实际上不能在本地提交我的更改,只是避免推送本地更改,因为 hgsubversion 不尊重秘密阶段,并且 hgsubversion 不支持指定要推送的修订版。所以不幸的是,这个类似问题的答案都不适合我。无论如何,我需要手动步骤来安排我的"仅限本地"变更集始终在提示上。

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

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

不要手动输入密码,使用密钥环(在Windows上可疑)或使用项目.hgrc中的[auth]部分自动输入密码

来自远程SVN后端的本地hg存储库的示例

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

并且不再需要输入密码

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

相关内容

  • 没有找到相关文章

最新更新