我有一个有四个分支的汞库。一个是“公共”分支,另三个是“特定”分支,包括一些应用于公共分支的化妆品变化。其中一个表面上的改变是重新命名一些文件。
因此,公共分支具有"file.txt",而第一个特定分支具有" file -01.txt“,它是同一个文件,用于相同的用途,但名称和内容略有不同。它在特定分支上被重命名为file-01.txt,"hg -f file-01.txt“正确地显示了重命名之前的历史记录。
当我在公共分支上更改file.txt时,需要能够将该更改合并到特定分支上的文件-01.txt中。但是Mercurial不明白这些文件是一样的。它告诉我:
远程更改本地删除的file.txt
使用(C)悬挂版本还是留下(D)优雅?
如果我选择"c“,那么我会得到一个新的file.txt,其中包含了公共分支版本中的内容。如果我选择"d“,那么变化就完全没有合并。
我该怎么做才能把这件事做好?
编辑:我可以让它在一个新的测试存储库中正确工作,但不是我的实际回购。下面是我得到的信息(请注意,rev 118位于特定的分支上,就在原始重命名之前,因此我将再次通过重命名过程来说明):
C:...> hg更新-C 118
0文件更新,0文件合并,0文件删除,0文件未解决
C:...> hg合并默认
合并file.txt
合并anotherfile.txt
更新0份文件,合并2份文件,删除0份文件,0份未解决文件
(分支合并,不要忘记提交)
所以不用重命名就行了。但如果我改名,它就失败了:
C:...> hg更新-C 118
2个文件更新,0份文件合并,0份文件被删除,0份文件被解析
C:...> hg重命名file.txt文件-01.txt
C:...> hg提交-m“重命名”
创造新的头
C:...> hg合并默认
远程更改本地删除的file.txt
使用(C)悬挂版本还是留下(D)优雅?
编辑2:下面是我从hg merge --debug default学到的最后一步
搜索副本返回rev 115
本地未匹配的文件:
file-01.txt
找到的所有副本(* =合并,!=发散):
文件-01.txt -> file.txt
检查目录重命名
解析舱单
覆盖无部分错误
祖先9d979018c2df本地f842fdbc252b+远程05fc75e480da
anotherfile.txt:不同版本的-> m
远程更改本地删除的file.txt
使用(C)悬挂版本或离开(D)?
发布于 2010-10-27 02:26:25
问题在于如何处理分支中的重命名。从外观上看,您(或您的GUI)对旧名称file.txt进行了“删除”,然后添加了名为file-01.txt的文件的副本。
当你这样做的时候,mercurial根本不知道它们是有联系的。但是,如果您在分支中使用了以下命令:
hg rename file.txt file-01.txt然后,与您看到的消息不同,来自file.txt的更改将应用于文件-01.txt。然而,没有你的帮助,mercurial不可能知道它们是相互关联的。
https://stackoverflow.com/questions/4029410
复制相似问题