HG命令行输入会在THG中自动接收不需要的默认输入

时间:2019-01-25 16:54:29

标签: mercurial tortoisehg mercurial-hook

我已经编写了一个Hg挂钩(在Python中),以根据小组规则检查提交的文件的有效性。这些规则之一禁止文件大于XX kB,除非与孔眼同意。万一提交了大文件,我希望钩子要求用户允许该文件。

我是这样实现的:

import re, os, sys, mercurial

MAX_SIZE_KB = 500

def check_committed_files(ui, repo, **kwargs):
    changelog = repo.changelog._cache
    lines = changelog[2].splitlines()
    ui.status("Checking files...\n")
    for line in lines[3:-2]:
        fn = line
        ui.status("  " + fn)

        # check file size
            file_size_kb = float(os.stat(line).st_size) / 1024
        if file_size_kb > MAX_SIZE_KB:
            if ui.prompt("    Allow file [%s] of %g kB?" % (fn, file_size_kb)).lower() not in ['y', 'yes']:
                ui.warn("    Not allowed by user\n")
                return 1
        ui.flush()
    return 0

如果我使用Hg CLI,一切都很好。但是当我使用TortoiseHg时,提示会自动为yes,因此我可以在控制台中找到它:

  

允许文件[test.txt]为2573.49 kB? y

然后挂钩继续。我希望TortoiseHg显示“是/否”对话框。可能吗?我想让解决方案尽可能便携,例如无需用户安装任何外部Python模块。

由于这是我第一次尝试使用Hg挂钩,因此也非常感谢我对实现的其他任何评论。

0 个答案:

没有答案