ИзменитьСделал этот базовый хук, чтобы предотвратить имя ветки и коммит несоответствие идентификатора ошибки сообщения. 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 к каждому проклятому коммиту. Во-первых, это трата моего времени. Во-вторых, если идентификатор случая введен неправильно, он не будет отображаться в ошибке без большого количества возни. Многие разработчики используют ветку для системы ошибок/функций. Это политика компании, где я работаю. Фогбагз отстой.