Mercurial Hook - изменить сообщение коммита перед фиксацией

ИзменитьСделал этот базовый хук, чтобы предотвратить имя ветки и коммит несоответствие идентификатора ошибки сообщения. https://gist.github.com/2583189

Таким образом, основная идея состоит в том, что хук должен добавлять «BugID:xyz» в конец сообщения коммита, если имя ветки похоже на bug_123 или feature_123.Однако у меня возникли проблемы с тем, как это сделать, так как большинство людей, использующих pretxncommit, не хотят изменять описание набора изменений.

Это то, что у меня есть до сих пор. Он обновляет .hg/commit.save правильным сообщением, но это сообщение никогда не передается в коммит. Однако он отображается в окне сообщения по умолчанию (tortoisehg) следующего коммита. Возможно, pretxncommit — не тот хук?

Могу ли я использовать перехватчик предварительной фиксации, прочитать файл commit.save и repo['tip'].branch() и изменить что, если да, то откуда мне взять имя ветки?

#
# Fogbugz automaticically add BugID:123 to commit messages based on branch names.
# Your branch name must be in the format feature_123_description or bug_123_description
#

import re
import mercurial, sys, os

_branch_regex = re.compile('(feature|bug|case|bugid|fogbugz)_(\d+)')
_commit_regex = re.compile(r'\b(?P(review|case|bug[zs]?(\s| )*(id)?:?)s?(\s| )*([#:; ]| )+)((([ ,:;#]|and)*)(?P\d+))+',re.I)

def pretxncommithook(ui, repo, **kwargs):
    ui.write('hook pretxncommithook running from fogbugz.py\n')
    """
    Checks a single commit message for adherence to commit message rules.

    To use add the following to your project .hg/hgrc for each
    project you want to check, or to your user hgrc to apply to all projects.

    [hooks]
    pretxncommit.fogbugz = python:fogbugz.pretxncommithook
    """
    hg_commit_message = repo['tip'].description()
    commit_has_bugid = _commit_regex.match(hg_commit_message) is not None

    match = _branch_regex.match(repo['tip'].branch())
    if match:
        hg_commit_message = hg_commit_message + ' BugID:'+ match.groups()[1]
            #hg_commit_message needs to be escaped for characters like >
        os.system('echo ' + hg_commit_message + ' > .hg/commit.save')

Немного не по теме: если кто-то из команды Fogbugz/Kiln увидит это... пожалуйста, обновите свое программное обеспечение, чтобы прочитать название ветки, мне не нужно добавлять BugID:x к каждому проклятому коммиту. Во-первых, это трата моего времени. Во-вторых, если идентификатор случая введен неправильно, он не будет отображаться в ошибке без большого количества возни. Многие разработчики используют ветку для системы ошибок/функций. Это политика компании, где я работаю. Фогбагз отстой.

8
задан Keyo 18 May 2012 в 04:44
поделиться