Mercurial Hook - Ändert eine Commit-Nachricht vor dem Commit

Bearbeiten Erstellte diesen einfachen Haken, um Fehlanpassungen bei der Bug-ID von Zweignamen und Commit-Nachrichten zu verhindern.https://gist.github.com/2583189

Die Idee ist also, dass der Hook "BugID: xyz" an das Ende der Commit-Nachrichten anfügt, wenn der Name des Zweigs bug_123 oder feature_123 lautet. Ich habe jedoch Probleme, herauszufinden, wie das geht, da die meisten Beispiele für pretxncommit-Benutzer die Beschreibung des Änderungssatzes nicht ändern möchten.

Das habe ich bisher. Es aktualisiert .hg / commit.save mit der richtigen Nachricht, aber diese Nachricht wird niemals an das Festschreiben übertragen. Es wird jedoch im Standardnachrichtenfeld (tortoisehg) des nächsten Commits angezeigt. Vielleicht ist pretxncommit nicht der richtige Haken?

Könnte ich einen Precommit-Hook verwenden, die Datei commit.save and repo ['tip']. Branch () lesen und ändern, wenn ja, woher würde ich den Namen des Zweigs abrufen?

<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>

Wenn jemand vom Fogbugz / Kiln-Team dies sieht, aktualisieren Sie bitte Ihre Software, um den Filialnamen zu lesen. Ich sollte nicht bei jedem verdammten Commit eine BugID: x angeben müssen. Zuallererst verschwendet es meine Zeit. Zweitens, wenn die Fall-ID falsch eingegeben wurde, wird sie im Fehler nicht angezeigt, ohne viel herumzuspielen. Viele Entwickler verwenden ein Branch-per-Bug- / Feature-System. Es ist die Firmenpolitik, in der ich arbeite. Fogbugz ist scheiße.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage