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.