Mercurial:如何将更改 merge 到在另一个分支中重命名的文件?

标签 mercurial merge rename

我有一个 Mercurial 存储库,其中有四个分支。一个是“公共(public)”分支,其他三个是“特定”分支,其中包含一些应用于公共(public)分支的外观更改。其中一项外观更改包括重命名一些文件。
所以公共(public)分支有“file.txt”,第一个特定分支有“file-01.txt”,这是同一个文件,用于相同的目的,但名称不同,内容略有不同。它在特定分支上重命名为 file-01.txt,并且“hg log -f file-01.txt”正确显示了重命名之前的历史记录。
当我在公共(public)分支上对 file.txt 进行更改时,我需要能够将该更改 merge 到特定分支上的 file-01.txt 中。但 Mercurial 不明白这些文件是相同的。它告诉我:

remote changed file.txt which local deleted

use (c)hanged version or leave (d)eleted?


如果我选择“c”,那么我会得到一个新的 file.txt,其中包含公共(public)分支版本中的内容。如果我选择“d”,则根本不会 merge 更改。
我该怎么做才能做到这一点?

编辑:我可以使它在新的测试存储库中正常工作,但不是我的实际存储库。这是我得到的(请注意,rev 118 位于特定分支上,就在原始重命名之前,所以我将再次通过重命名过程来说明):

C:\...> hg update -C 118

0 files updated, 0 files merged, 0 files removed, 0 files unresolved

C:\...> hg merge default

merging file.txt
merging anotherfile.txt
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)


所以它可以在没有重命名的情况下工作。但如果我重命名,它会失败:

C:\...> hg update -C 118

2 files updated, 0 files merged, 0 files removed, 0 files resolved

C:\...> hg rename file.txt file-01.txt
C:\...> hg commit -m "renamed"

created new head

C:\...> hg merge default

remote changed file.txt which local deleted
use (c)hanged version or leave (d)eleted?



编辑 2:这是我在 hg merge --debug default 的最后一步得到的结果:

searching for copies back to rev 115
unmatched files in local:
file-01.txt
all copies found (* = to merge, ! = divergent):
file-01.txt -> file.txt

checking for directory renames
resolving manifests
overwrite None partial False
ancestor 9d979018c2df local f842fdbc252b+ remote 05fc75e480da
anotherfile.txt: versions differ -> m
remote changed file.txt which local deleted
use (c)hanged version or leave (d)eleted?

最佳答案

我最终将问题追踪到历史上的一个特定修订:只要不涉及该修订,我就可以跨重命名 merge 。仍然不确定该修订出了什么问题,但我重新进行了更改并且它现在正在工作。

关于Mercurial:如何将更改 merge 到在另一个分支中重命名的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4029410/

相关文章:

javascript - 在 Javascript 中使用 Math.min.apply() 获取数组的最小值会返回 NaN?

Python heapq 与预排序列表的排序速度

php - 将一组文件重命名为 001, 002, … php

python - 如何将多个图像重命名为两个不同的名称?

Mercurial:如何修改最后一次提交?

mercurial - Maven + Mercurial : Error while executing command tag

macos - 我如何将 Mercurial 集成到 Coda 中?

mercurial - Mercurial 中的常用文件

r - 确定重叠范围 - R

C++ 导入和重命名/重新保存图像