【问题标题】:Hg Mercurial - Upgrading code not in repositoryHg Mercurial - 升级代码不在存储库中
【发布时间】:2015-06-18 12:05:08
【问题描述】:

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

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

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

这是我迄今为止尝试过的: 我创建了一个名为“Nop3.6”的新分支并替换了 foo.cs。然后我尝试将“Nop3.6”分支与我的“默认”分支合并,希望能够手动合并并保留我的自定义代码和 foo.cs (v3.6) 中添加的新更改。 如您所料,这不起作用。我的 foo.cs 文件 (v3.5) 完全被新的 foo.cs 替换,我的所有更改都丢失了。

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

【问题讨论】:

    标签: version-control merge mercurial tortoisehg


    【解决方案1】:

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

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

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

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

    【讨论】:

    • @plantmaker - 谢谢!关键是更新到未修改的 3.5 版本。这比预期的要困难一些,因为事实证明我的 repo 已损坏,我无法更新到未修改的 v3.5。我最终下载了 3.5 的新副本,然后按照您的说明进行操作。我失去了所有的历史,但至少我能够升级和合并。那好吧。非常感谢!,我正要带着这个去邮寄。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 2010-10-23
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    相关资源
    最近更新 更多