2

我将 TortoiseHg 与使用 hgsubversion 扩展的 SVN 存储库一起使用。

我喜欢hg pull --rebase在拉动时使用,以反映 SVN 在svn update. 因为我使用的是 hgsubversion,所以无论如何我都需要在推送之前进行 rebase,所以我不妨一步完成。

此外,hg push自动在内部进行变基,这是没有办法的。

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

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

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

4

2 回答 2

2

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

[hooks]
pre-pull = hg shelve
post-pull = hg unshelve
pre-push = hg shelve
post-push = hg unshelve
于 2016-01-25T18:18:58.393 回答
0

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

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

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

并且不再需要输入密码

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

于 2016-01-21T13:02:00.760 回答