Mercurial Hook - zmień komunikat zatwierdzenia przed zatwierdzeniem

Edytować Zrobił ten podstawowy hak, aby zapobiec niedopasowaniu identyfikatora błędu nazwy i zatwierdzenia gałęzi.https://gist.github.com/2583189

Zasadniczo chodzi o to, że hak powinien dopisać „BugID: xyz” na końcu komunikatów zatwierdzenia, jeśli nazwa rozgałęzienia jest jak bug_123, lub feature_123. Jednak mam problemy ze znalezieniem sposobu, aby to zrobić, ponieważ większość przykładów pretxncommit nie chce mutować opisu zestawu zmian.

To jest to, co mam do tej pory. Aktualizuje .hg / commit.save odpowiednim komunikatem, ale ta wiadomość nigdy nie jest przenoszona do zatwierdzenia. Jest on jednak wyświetlany w domyślnym oknie komunikatu (tortoisehg) następnego zatwierdzenia. Być może pretxncommit nie jest właściwym hakiem?

Czy mógłbym użyć haka wstępnego, przeczytaj plik commit.save i repo ['tip']. Branch () i zmień to, jeśli tak, to gdzie mam pobrać nazwę oddziału?

<code>#
# 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<case>(review|case|bug[zs]?(\s| )*(id)?:?)s?(\s| )*([#:; ]| )+)((([ ,:;#]|and)*)(?P<bugid>\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')
</code>

Na nieco niezwiązanej notatce, jeśli ktoś z zespołu Fogbugz / Kiln zauważy to ... zaktualizuj oprogramowanie, aby odczytać nazwę oddziału, nie powinienem umieszczać BugID: x przy każdym przeklętym zatwierdzeniu. Przede wszystkim marnuje mój czas. Po drugie, jeśli identyfikator sprawy zostanie wpisany niepoprawnie, nie pojawi się na błędzie bez większego zamieszania. Wielu programistów korzysta z gałęzi w systemie błędów / funkcji. To polityka firmy, w której pracuję. Fogbugz jest do bani.

questionAnswers(2)

yourAnswerToTheQuestion