在将一堆文件移动到各个文件夹后合并两个分支时,我得到了一个奇怪的结果。例如,最初我在main
分支的根目录中:
(main)
|-run.py
我创建了一个新分支(moves),在其中我移动了很多文件(with hg mv
):
(moves)
|-bin/
|-run.py
合并两个分支 ( ) 时,我得到了意想不到的结果(至少对我而言hg up main && hg merge moves
)。基本上相同的文件出现在main
两个位置的分支中:
(main)
|-run.py
|-bin/
|-run.py
如果我在简化测试中这样做,我会得到我期望的结果:
hg init test
cd test
touch file_a
hg add file_a
hg ci -m 'added file_a'
hg branch movement
mkdir files
hg mv file_a files
hg ci -m 'moved file_a'
hg up default
此时ls
显示单个文件file_a
。
(default)
|-file_a
合并后hg merge movement
,正如我所料,file_a
它在文件夹中files
,而不是在根目录中。
(default)
|-files/
|-file_a
我迷失了试图弄清楚为什么我的真实存储库没有得到相同的结果。
更新
挖掘 mercurial 日志并查看发生了什么变化:
>hg status --change 457 -C
A bin/run.py
run.py
R run.py
因此,在我看来,文件已被移动并且已注册。合并后,当两个文件都存在时,我只能在主目录中获取日志( hg log -f
) 。run.py
因为bin/run.py
它打印:abort: cannot follow file not in parent revision: "bin/run.py"
. 但是,在我提交合并之后hg log -f
,这两个文件都适用。