如何在 Hg 中扩展另一个扩展的命令?

How to extend another extension's command in Hg?

我想为 hg convert 命令添加额外的选项,它由内部扩展 hgext.convert.

提供

我尝试在 __init__.py 中执行以下操作:

def extsetup(ui):
    entry = extensions.wrapcommand(commands.table, 'convert', convert_cmd)
    entry[1].append(('', 'test', None, _("test option")))

def convert_cmd(...): ...

但是在启用我的扩展和 运行 适当的 hg convert --test 之后,我收到以下错误:

hg: unknown command 'convert'
(did you mean one of clone, recover, revert?)

如果我打印commands.table的键,我可以看到里面没有自定义命令。

如何获取和扩展自定义命令?

根据"Writing Mercurial Extensions"

After extsetup, the cmdtable is copied into the global command table in Mercurial.

所以我需要修改扩展程序 cmdtable 本身内部的命令。这有点 hacky,但现在可以使用:

from hgext import convert

def extsetup(ui):
    entry = extensions.wrapcommand(convert.cmdtable, 'convert', convert_cmd)
    entry[1].append(('', 'test', None, _("test option")))