幫新人設定 TortoiseHg,結果要加入擴充套件 "exportfiles" 時(設定請參考:[Mercurial] 讓 TortoiseHg 能夠匯出指定版本之間的差異檔案),卻顯示錯誤訊息:

*** 匯入額外套件 exportfiles 失敗,路徑為 D:\Programs\TortoiseHg\extensions\exportfiles.py: missing attributes: norepo, optionalrepo, inferrepo
*** (use @command decorator to register 'exportfiles')
hg: 不認得'exportfiles'命令
(did you mean one of export, files?)

錯誤訊息都說了 "use @command decorator to register 'exportfiles'",上網查了這句話,參考 "Writing Mercurial Extensions" 裡的 Command table 設定方式,來調整 exportfiles.py。

原本的 cmdtable 宣告在整支程式的最後面,把它移到前面就定義好。

 

 

我是在 exportfiles.py 的第 15 行:

def exportfiles(ui, repo, outputDir, **opts):

加上了 @command 相關的段落後變成這樣:

cmdtable = {}
command = cmdutil.command(cmdtable)
@command('exportfiles',
    [('r', 'rev', [], _('revision or revision range to export')),
    ('m', 'marker', None, _('add revision marker files to exported files')),
    ('N', 'nosub', None, _('don\'t recurse into subrepositories'))
    ], "[options] OUTPUT_DIR")
def exportfiles(ui, repo, outputDir, **opts):

並且把原本 189 行到 195 行的這些東西註解掉(Python 的多行註解是三個單引號 '''):

'''
cmdtable = {
    "exportfiles": (exportfiles, [
        ('r', 'rev', [], _('revision or revision range to export')),
        ('m', 'marker', None, _('add revision marker files to exported files')),
        ('N', 'nosub', None, _('don\'t recurse into subrepositories'))
    ], "[options] OUTPUT_DIR")
}
'''

再讓 TortoiseHg 重新編譯這個 extension 後就可以正常使用了。

文章標籤
創作者介紹
創作者 fannys23 的頭像
fannys23

小攻城師的戰場筆記

fannys23 發表在 痞客邦 留言(0) 人氣()