我们面临着在同一个存储库中维护两个代码库的情况。文件夹结构如下所示:
/的WebRoot /
在我们的默认分支中,/ WebRoot /与Stable分支中的/ WebRoot /非常不同。目标是将/ WebRoot /从Stable分支移动到/ WebRoot /默认分支。而当前的默认/ WebRoot /将成为/ WebRootX /。因此,最后,所有代码都将处于默认状态,并且在对两个不同的代码库进行更改时,我们不必在默认和稳定分支之间来回切换。
| | |
| | |
| --------
| | QA
| |
-------|
| Stable
|
默认
我认为我们必须使用hg convert将Stable代码移出到另一个(临时)存储库。然后将默认WebRoot重命名为WebRootX。然后重新导入Stable / WebRoot /文件夹。
我做了几次测试,但是没有得到预期的结果。我已经尝试使用hg convert和branchmap(“Stable default”)来将Stable分支输出到临时存储库,但这不起作用。我在那里看到默认代码。
实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
在尝试以下任何事情之前,先备份你的回购。
现在您可以尝试以下操作:在default
分支中,将WebRoot
重命名为WebRootX
。承诺这一改变。
仍在default
分支中,使用stable
合并工具合并internal:fail
分支(git称之为合并策略):
hg merge --tool internal:fail stable
此时,您的工作副本处于一种状态,如果已提交,Mercurial将接受为成功合并。在提交之前但是,您想要告诉Mercurial将整个WebRoot
目录结构恢复到stable
分支中的状态,同时不回复其中的任何内容WebRootX
目录结构:
hg revert --all -r stable -IWebRoot* -XWebRootX*
此时,您应该拥有WebRootX
分支中的default
目录结构,同时具有WebRoot
目录结构,就像stable
目录结构一样。 1}} branch,和也保留了他们的历史。
我必须警告你,虽然我只是在虚拟回购中大致测试了这一点,但我不确定你会在“真正的”回购中获得什么结果。
来自here的一些想法。