2010-09-17 3 views
1

Я новичок в Mercurial и хочу написать некоторые крючки, чтобы предотвратить сливание между определенными ветвями и тому подобное. Я ищу какой-то учебник, который проходит через весь цикл.Каков наилучший способ начать писать крюк для Mercurial?

Я просмотрел API и эти examples, но я все еще считаю это запутанным. Мне всегда было лучше учиться в учебнике/семинаре, чем читать man-страницу или подобное.

Я могу понять, как работает код примера, но как мне получить Mercurial для распознавания функций?

например. Я написал это, но я не понимаю, как заставить Mercurial запускать код перед фиксацией.

def is_bad_branch_name(ui, repo, **kwargs): 
    """ 
    Checks that a commit is always done on a named branch. 
    This function enforces Projectplace's branching convention. 
    @return: True if the branch name is invalid. 
    @returntype: Boolean 
    """ 
    branch = repo[None].branch() 
    branch_names = r'(TT|AZ)(-#)(\d)+(:)[\s\w]*' 
    acceptable_branch_names = re.compile(branch_names) 
    if not acceptable_branch_names.match(branch): 
     ui.warn('invalid branch name %r (use <TT|AZ>-#<number>: <description>)\n') 
     return True 
    return False 
+0

Вы дошли до того, чтобы попробовать, или вы все еще ищете лучший способ погружения? –

+0

Я написал код, но не смог заставить Mercurial его распознать. Я рассмотрю главу 10 как можно скорее и посмотрю, поможет ли это. – MdaG

ответ

1

Теперь мне удалось написать и использовать крючки. Я нашел документацию в Интернете, но это может быть проблемой с моей стороны. То, что я сделал, это пример кода примера, а также кодирование проб и ошибок, а также задание некоторых вопросов. :)

редактировать Для дальнейшего использования это своего рода линия Mercurial нуждается в вашей hgrc запустить выше код до фиксации. Это раздел для перехватов и путей к коду.

[hooks] 
precommit.bad_branch_name = python:/path/to/hook/hook.py:is_bad_branch_name 

Вам понадобится одна строка для каждой функции, которую вы хотите подключить. «precommit» означает, что крючок будет запущен непосредственно перед выполнением фиксации. Таким образом, фиксация будет прервана, если крючок вернет True. «bad_branch_name» - это просто идентификатор, вы можете ввести что-нибудь там.

+0

Хотя приятно знать, что вы решили свою проблему, было бы лучше, если бы вы опубликовали немного того, что вы здесь сделали. Таким образом, когда у других людей есть одна и та же проблема, и в итоге они могут исправить все, что не работает для них. – Nikwin

+0

@Nikwin: достаточно справедливо. Я отредактирую свой ответ. – MdaG

1

Позвольте мне указать на очевидное для той единственной причине я, будучи отчаянным респ ВГ ***:

«Chapter 10. Handling repository events with hooks» в определенной книге BOS рт.ст. в.

Если вы не можете найти какой-либо конкретный крючок, который вы хотите, задайте более конкретный вопрос.

Счастливые связи!

+0

Ум, похоже, довольно правильный вопрос, заданный MdaG. почему так негативно? – wheaties

+0

Извините, я имею в виду, что мой ответ для rw, а не вопрос. Ред. –

Смежные вопросы