【发布时间】:2013-06-05 05:57:56
【问题描述】:
背景:
起初有一个文件base.c,该文件在只有一个分支Base 的存储库中。
Base 被分支为Extended-branch。然后这个新分支对base.c进行了几处更改。
如果在Base 中的文件base.c 中修复了错误,它们将被合并到Extended。
事实证明,在Extended 分支中向base.c 添加太多东西并不是一个好主意,因此将文件复制到ext.c。然后大部分 Extended 添加从 base.c 中删除,Base 功能从 ext.c 中删除。所以此时Extended中的base.c与Base中的非常相似。
问题:
当文件被拆分时,Mercurial 被告知 ext.c 是 base.c 的副本,因为它们共享一个共同的历史记录。不幸的是,这不是一个好主意。
现在如果在Base 分支上修复了错误并合并到Extended,Mercurial 认为这些更改应该应用于base.c 和ext.c,即使后者不再与前者有任何相似之处.这使得合并非常烦人。
有没有办法告诉 Mercurial ext.c 不应再被视为与 base.c 相同?一种解决方案是将ext.c 替换为新文件,但随后历史记录将不复存在。
【问题讨论】:
-
有趣的问题。我假设您使用
hg copy制作了副本? -
是的
hg copy被使用。 -
如果你
hg forget ext.c然后hg add将它作为一个新文件,你可能会断开连接......但是你会丢失到目前为止的所有历史记录。但是,您可以添加 早期 版本的ext.c(甚至可能在重命名之前),然后重播(移植)它从那时起的历史。 -
@alexis 这就是我最终所做的。您可能应该将其添加为答案,因为这个问题似乎偶尔会有一些活动。
标签: mercurial