场景:
我有两个Hg存储库:一个是跟踪SVN存储库,比如SVN跟踪,另一个是本地纯Hg存储库,我从第一个存储库中提取变更集。
我将纯Hg回购中的变更集推送到SVN轨道的回购中,然后我将推送的变更集重新放入SVN轨道[/em>回购,直到历史记录清晰明了,这样我就可以推送到SVN存储库。
在我推送到SVN之后,hgsubversion将变更集从SVN中拉回来,并剥离原始变更集。我收集到,这就是它的跟踪方式(但是……为什么不保留原始并跟踪它呢?(。
问题:
现在,如果你坚持了这么久,问题就来了:我想把SVN变更集拉回到纯Hg存储库中,但所有原始变更集都是另一个头上的重复(但具有不同的节点ID(。我可能可以重新设置我在纯Hg存储库中添加的所有变更集的基础,但这样我就会失去历史记录,而且,真的,这似乎工作量太大了。我也可以只接受带有重复内容的SVN变更集并合并本地,但这使得返回SVN轨道的操作越来越困难。
问题:
- 有没有更好的方法来执行我无法独立预测的工作流
- 如果不是,我该如何替换hgsubversion从纯Hg中的SVN撤回的原始变更集
- 为什么hgsubversion(在大多数情况下是一个很好的启用工具(必须将SVN变更集拉回来只是为了跟踪它们,难道它不能只保留原始变更集并在
.hg/svn/rev_map
中添加一行指示原始变更集id吗 - 如果是这样的话,有什么诀窍
hgsubversion需要撤回更改的原因是(我预计(,因为在您进行推送之前,svn中可能还有其他更改。svn中的每个提交都包含一个"rebase-to-tip",这可能会影响您的变更集。因此,它需要把它拉回来,以获得实际发生的事情和新的变更集ID。
Perfarce(性能扩展(做了类似的事情,但它将原始的更改与新的提示合并在一起,因此图形实际上是有意义的。不过,我所做的所有更改仍然有重复项。