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

What does thg drag_move do? How is it different from hg add and hg remove?

作为 TortoiseHG 的用户,我一直想知道 thg drag_move 命令如何模仿(或实现)"HG Move versioned item(s) here..." 上下文菜单条目背后的功能。

通过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 选项来实现相同的 "natively"?

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

Thg 在执行 drag_move 时在后台使用 hg move(有关详细信息,请参阅 run.py and 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.