我们面临着在同一个存储库中维护两个代码库的情况。 文件夹结构如下所示:
/网络根/
在我们的默认分支中,/WebRoot/与稳定分支中的/WebRoot/非常不同。 目标是将/WebRoot/从 Stable 分支移动到默认分支中的/WebRoot/。 当前默认的/WebRoot/将变为/WebRootX/。 因此,最终,所有代码都将是默认的,并且在两个不同的代码库中进行更改时,我们不必在默认分支和稳定分支之间来回切换。
| | |
| | |
| --------
| | QA
| |
-------|
| Stable
|
违约
我认为我们必须使用 hg 转换将稳定代码移动到不同的(临时(存储库。 然后将默认的 WebRoot 重命名为 WebRootX。 然后将 Stable/WebRoot/文件夹重新导入。
我已经做了几次测试,但没有得到预期的结果。 我尝试将 hg 转换与分支映射("稳定默认值"(一起使用,将稳定分支放到临时存储库,但这不起作用。 我在那里看到默认的代码。
实现这一目标的最佳方法是什么?
在尝试以下任何操作之前,请先备份您的存储库。
现在您可以尝试此操作:在default
分支中,将WebRoot
重命名为 WebRootX
。提交此更改。
仍然在default
分支中,使用 internal:fail
合并工具(git 称之为合并策略(合并stable
分支:
hg merge --tool internal:fail stable
此时,您的工作副本处于一种状态,如果提交,Mercurial 将接受为成功的合并。但在提交之前,您需要告诉 Mercurial 将整个 WebRoot
目录结构恢复到其在 stable
分支中的状态,同时不要恢复WebRootX
目录结构中的任何内容:
hg revert --all -r stable -IWebRoot* -XWebRootX*
此时,您应该拥有default
分支中的WebRootX
目录结构,同时具有stable
分支中的WebRoot
目录结构,并保留它们的历史记录。
必须警告你,尽管我只是在一个虚拟的存储库中粗略地测试了这一点,我不确定你会在"真实"存储库中获得什么结果。
从这里开始的一些想法。