2012-03-20 4 views
0

파이썬에서 복잡한 수은 커밋 훅을 만들려고합니다. OptionParser를 사용하여 매개 변수를 전달할 수도 있습니다.Python 메인 함수를 사용하는 Mercurial Commit Hook

.hg/hgrc 설정 :

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

pythonFile.py : 나는 hg commit -m 'message'을 실행하면

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 [옵션] hg : 오류 : 해당 옵션 없음 : -m ". hg commit --test-dir '/somedir'을 시도하면 "hg commit : option --test-dir not recognized"오류가 발생합니다.

는 마지막으로 나는 hgrc의 설정에 commit = python:/mydir/pythonFile.py:main --test-dir '/somedir'를 지정 시도하고 나는이 오류가 발생했습니다 :

을 주셔서 감사합니다 "AttributeError '모듈'개체가 어떤 속성의 주요 --test-DIR '/ somedir'을 '이 없다"당신의 도움.

답변

1

나는 당신의 문제가 수은으로 포장 된 파이썬의 일부가 아닌 것을 가져 오기 위해 노력하고 있다고 생각한다. 서로 다른의 repos/지점 등을 다르게 구성 할 수 있도록 후크에 추가 정보를 전달하는 것입니다 당신이 필요합니다, 당신은 ini_section이 mercurial.ini에서의 비트 []입니다

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

를 사용할 수있는 경우/.hgrc 파일 param_key 그렇게

[my_hook_params] 
test-dir=/somedir 

같은 다음 사용하는 항목 의 이름입니다

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