背景:
起初有一个文件base.c,该文件位于只有一个分支的存储库中Base.
Base分支制作Extended- 分支.然后,这个新的分支进行了几处更改base.c.
如果在文件base.c中修复了错误Base,它们将合并到Extended.
事实证明,base.c在Extended分支中添加太多东西不是一个好主意,因此文件被复制到ext.c.然后,大多数Extended添加内容将从中删除base.c,并Base从中删除功能ext.c.所以在这一点base.c中Extended是非常相似Base.
问题:
当文件被拆分时,Mercurial被告知ext.c是一份副本base.c,因为他们共享了一个共同的历史.不幸的是,这不是一个好主意.
现在,如果错误是固定的Base分支和合并Extended,水银认为,这些变化应同时适用于base.c和ext.c,即使后者是不再有任何相似之处,前者.这使得合并非常烦人.
有没有办法告诉Mercurial ext.c应该不再被视为相同base.c?一种解决方案是ext.c用新文件替换,但历史不会跟随.
您可以使用 , 断开连接hg forget ext.c,然后hg add ext.c作为一个新文件。但如果您使用 的尖端修订版执行此操作ext.c,您将丢失到目前为止的所有历史记录。
您可以做的是添加 的早期版本ext.c,甚至可能是重命名之前的版本,并重播(移植)此后的历史记录。您可以将历史记录ext.c作为分支添加到过去的修订版中,并将其合并到提示中:
---o---o---o---(tip)--(merge)
\ /
e---e---e ... e
Run Code Online (Sandbox Code Playgroud)
或者也许这并不重要,您可以将历史记录添加ext.c到当前tip:
---o---o---o---(tip)--e--e--e--e
Run Code Online (Sandbox Code Playgroud)
这些方法都不涉及任何历史重写(“被遗忘”的版本ext.c只是作为死胡同),因此传播更改应该没有问题。
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |