什么是drag_move做什么?它与hg add和hg remove有什么不同?

时间:2017-10-25 02:50:58

标签: mercurial tortoisehg

作为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选项来实现相同的"原生"?

1 个答案:

答案 0 :(得分:2)

TLDR:您可以使用hg move OLD NEW来实现与thg drag_move相同的功能。

当它正在执行drag_move时,Thg正在使用hg move(有关详细信息,请参阅run.pyquickop.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.