我在將一堆文件移動到各個文件夾中後合併兩個分支時出現了一個奇怪的結果。例如,最初我在main
分支的根:爲什麼hg合併保留移動文件的兩個副本?
(main)
|-run.py
我做了一個新的分支(移動)在我身邊感動了很多文件(連同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
我迷路了,試圖找出爲什麼我沒有得到與我的真實存儲庫相同的結果。
UPDATE
掘善變的日誌,看什麼改變:
>hg status --change 457 -C
A bin/run.py
run.py
R run.py
所以在我看來,該文件被移動和移動註冊。合併後,當兩個文件都存在時,我只能在主目錄中獲得run.py
的日誌(hg log -f
)。對於bin/run.py
它打印:abort: cannot follow file not in parent revision: "bin/run.py"
。但是,在我提交合並後,hg log -f
適用於這兩個文件。
在上面添加了一些日誌信息。 – numentar
這真的很奇怪。當比較兩個文件的hg log命令的輸出時,你能看到一些奇怪的東西嗎? –
唯一的區別是,當我重命名文件時,原始run.py的日誌會返回到修訂版。對於bin/run.py,它還顯示移動後所做的更改。看起來不知怎麼文件已被複制,儘管Mercurial已經註冊了它的文件是分開的東西。我做了一個乾淨的版本庫,並開始了一個新的回購。不能在這方面浪費太多時間。感謝您的輸入! – numentar