【问题标题】:Merging an already (locally) deleted folder合并已(本地)删除的文件夹
【发布时间】:2011-05-13 23:02:07
【问题描述】:

我正在使用 Mercurial,但遇到了一个不知道如何解决的问题。我目前面临的问题如下:

  • 我们有一个项目(文件夹),最初名为 A,并将其推送到远程存储库。
  • 我将项目 A 重命名为 B 并将其推送到远程存储库。在这样做的同时,我还在本地将项目 A 重命名为 B。
  • 项目 A 已从远程存储库中删除。
  • 我试图提取这些更改,但 Mercurial 似乎感到困惑,因为文件(或文件的路径)在本地不再存在。

如果我正在调用“hg merge”,则会产生以下输出: “中止:未完成的未提交更改,...” 如果我随后调用“hg status”,则会列出项目 A 初始版本中的所有文件 - 现在这些文件不再在本地可用,因为路径已从 A/.../... 更改为 B/.../...

谁能给我一个关于如何解决这个问题的提示或提示?

【问题讨论】:

    标签: merge mercurial abort


    【解决方案1】:

    列出的文件是否被列为“已删除”(我认为是 R)?

    如果是,只需提交此更改(关于已删除的文件),然后合并。 Mercurial 必须了解所有更改,包括移动或删除的文件。

    【讨论】:

    • Grr,太早点击“返回”。好吧,如果我理解正确,标有“R”的文件在商店 ATM 中,因为当我从远程存储库中提取更改时,我收到了带有变更集的文件,对吧?但如果是这样,那么商店的版本不是我的工作目录,这在调用“hg tip”(输出 rev 44)和“hg parents”(输出 rev 43)时得到确认。
    • 所以它们只是被标记为已删除。您需要 ton 提交以使存储库注册“那些文件已被删除”。然后由于没有其他未提交的更改,您将能够合并。请记住,1. 存储库必须保留所有更改,包括删除 2. mercurial 只能合并已注册的更改集,不能合并未提交的更改。
    • @Chris> 如果你没有提交,它就不会被存储。您在移动这些文件后提交了吗?它们似乎被标记为 R,因为 mercurial 不会在这些文件和这些文件的新位置之间建立链接。
    • 我不需要将工作目录更新到 rev 44 而不是提交吗?我认为提交意味着将更改从工作目录写入存储,更新意味着将更改集从存储获取到工作目录?
    • @Klaim:我认为移动文件后我做错了,因为我刚刚再次添加了移动的文件并将它们推送到远程存储库,所以我相信 Mercurial 不知道应该有一个新旧位置之间的联系。
    猜你喜欢
    • 2022-01-18
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    相关资源
    最近更新 更多