Ввод командной строки HG автоматически принимает нежелательный ввод по умолчанию в THG - PullRequest
0 голосов
/ 25 января 2019

Я написал хук Hg (в Python) для проверки правильности принятых файлов в соответствии с правилами нашей команды. Одно из этих правил запрещает файлы размером более XX кБ, если не согласовано с пакетом. В случае фиксации большого файла я бы хотел, чтобы хук попросил пользователя разрешить файл.

Я реализовал это так:

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, подсказка автоматически да-да, поэтому я получаю это в консоли:

Разрешить файл [test.txt] размером 2573,49 кБ? у

и крюк продолжается. Я бы хотел, чтобы TortoiseHg показывал диалог с кнопками Да / Нет. Является ли это возможным? Мне бы хотелось, чтобы решение было максимально портативным, например, нет внешних модулей Python, которые должны установить пользователи.

Поскольку это моя первая попытка с перехватом Hg, любые другие комментарии к моей реализации также приветствуются.

...