作为TortoiseHG的用户,我一直想知道thg drag_move
命令是如何工作的,它模仿(或实现)" HG Move版本化项目背后的功能。 "上下文菜单条目。
通过thg -v help drag_move
获得的帮助条目提供:
thg drag_move SOURCE... DEST
move the selected files to the desired directory
据我了解,它必须执行以下序列(或类似):
hg forget SOURCE
mv SOURCE DEST
hg add DEST
但如果我手动(在TortoiseHG之外)这样做,它(自然地)不会将DEST与SOURCE联系起来,而是将它们视为个别的,无关的变化。
如果我使用GUI或thg drag_move
命令,它会保持这些条目的历史记录相同,至少在TortoiseHG中,当我查看DEST时,我仍然可以看到SOURCE的历史记录。搬家后的历史。
这是对Mercurial的TortoiseHG扩展还是有hg
选项来实现相同的"原生"?
答案 0 :(得分:2)
TLDR:您可以使用hg move OLD NEW
来实现与thg drag_move
相同的功能。
当它正在执行drag_move时,Thg正在使用hg move
(有关详细信息,请参阅run.py和quickop.py来源。)
Hg move是在Mercurial中重命名或移动文件的正确方法,因为它跟踪操作,正如在他的帮助消息(hg help mv)中所述:
rename files; equivalent of copy + remove
Mark dest as copies of sources; mark sources for deletion. If dest is a
directory, copies are put in that directory. If dest is a file, there can
only be one source.