Mercurial Commit Hook с основной функцией Python

Я пытаюсь создать сложную фиксацию ртути в python. Я также хочу, чтобы мне разрешили передавать параметры с помощью OptionParser. Вот суть того, что у меня есть до сих пор:

Конфигурация .hg/hgrc:

[hooks]
commit = python:/mydir/pythonFile.py:main
# using python:/mydir/pythonFile.py doesn't work for some reason either

pythonFile.py:

def main(ui, repo, **kwargs):
    from optparse import OptionParser

    parser = OptionParser()
    parser.add_option('--test-dir', action='store', type="string",
                  dest='test_dir', default='otherdir/',
                  help='help info')
    (options, args) = parser.parse_args()

    # do some stuff here
    someFunc(options.test_dir)

if __name__ == '__main__':
    import sys
    main(sys.argv[0], sys.argv[1], sys.argv[2:])

Когда я запускаю hg commit -m 'message', я получаю сообщение об ошибке: «Использование: hg [опции] hg: ошибка: нет такой опции: -m». Когда я пытаюсь выполнить hg commit --test-dir '/somedir', я получаю сообщение об ошибке: "hg commit: option --test-dir не распознан".

Наконец, я попытался указать commit = python:/mydir/pythonFile.py:main --test-dir '/somedir' в конфигурации hgrc и получил эту ошибку: «AttributeError: объект 'module' не имеет атрибута 'main --test-dir '/somedir''»

Спасибо за помощь.


person sinemetu1    schedule 20.03.2012    source источник


Ответы (1)


Я думаю, что ваша проблема может заключаться в попытке импортировать что-то, что не является частью python, упакованного с mercurial. Если вам нужно передать дополнительную информацию в ловушку, чтобы вы могли настроить ее по-разному для разных репозиториев/веток и т. д., вы можете использовать

param_value= ui.config('ini_section', 'param_key', default='', untrusted=False)

где ini_section — это бит в [] в файле mercurial.ini/.hgrc, а param_key — это имя записи, поэтому что-то вроде

[my_hook_params]
test-dir=/somedir

затем используйте

test_dir = ui.config('my_hook_params', 'test-dir', default='otherdir/', untrusted=False)
person Truan    schedule 22.02.2013