Hg Mercurial - 升级不在存储库中的代码

Hg Mercurial - Upgrading code not in repository

我有一个自定义的 NopCommerce 3.5 本地存储库。 NopCommerce (3.6) 的新版本已经发布,我想尝试更新它。我下载了他们的源代码,我想以某种方式用新文件(在存储库之外)替换我本地存储库中的所有文件,然后让 mercurial 检测更改并将它们与我的更改合并。显然合并将是手动的,但我对此没有问题。

如果我没有正确解释这一点,让我举个例子:

我的文件 foo.cs (v3.5) 在我的本地存储库中包含自定义代码。我下载了新的 foo.cs (v3.6),它不在任何存储库中。 我如何合并它们以便我可以保留我的更改以及 NopCommerce 团队添加的新更改?

这是我目前尝试过的: 我创建了一个名为 "Nop3.6" 的新分支并替换了 foo.cs。然后我尝试将 "Nop3.6" 分支与我的 "default" 分支合并,希望能够手动合并并保留我的自定义代码和 foo.cs (v3.6) 中添加的新更改. 正如您所料,这没有用。我的 foo.cs 文件 (v3.5) 已完全替换为新的 foo.cs,我的所有更改都丢失了。

任何正确方向的帮助将不胜感激。

反之亦然(你对 v3.6 的更改可能会更好。还要确保你选择了一个合理的合并工具(内部工作,但可能有更方便的工具,我自己使用 kdiff3 ):

我假设您有一个 v3.5 的存储库,并且在此之上您有一个或多个变更集,这些变更集是您自己对该源的修改。如果您还没有在 v3.5 之上将您的更改作为变更集提交,那么现在就做吧。

然后,为了与 v3.6 进行良好的合并,请执行以下操作: 再次更新到未修改的 v3.5。在上面复制 v3.6 并将完整的更改提交为 v3.6。您最终得到一个包含两个匿名分支的存储库,其中 v3.5 是它们的共同祖先。

现在您可以合并这两个分支了。由于您可能希望将更改保留在 v3.6 之上,因此请更新到 v3.6 并将您的本地更改合并到该分支中。