将 Mercurial 分支转换为相同但不同的分支

  • 本文关键字:分支 Mercurial 转换 mercurial
  • 更新时间 :
  • 英文 :


我们面临着在同一个存储库中维护两个代码库的情况。 文件夹结构如下所示:

/

网络根/

在我们的默认分支中,/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目录结构,保留它们的历史记录。

必须警告你,尽管我只是在一个虚拟的存储库中粗略地测试了这一点,我不确定你会在"真实"存储库中获得什么结果。

从这里开始的一些想法。

最新更新