Editar Realizó este enganche básico para evitar el nombre de la rama & cometer mensaje ID de error ID. https://gist.github.com/2583189Mercurial Hook: cambie un mensaje de confirmación precompromiso
Así que básicamente la idea es que el gancho debe agregar "BugID: xyz" al final de los mensajes de confirmación si el nombre de la rama es como bug_123 o feature_123. Sin embargo, tengo problemas para descubrir cómo hacerlo, ya que la mayoría de los ejemplos de personas con compromiso previo no desean modificar la descripción del conjunto de cambios.
Esto es lo que tengo hasta ahora. Actualiza .hg/commit.save con el mensaje correcto, pero este mensaje nunca se transfiere a la confirmación. Sin embargo, se muestra en el cuadro de mensaje predeterminado (tortoisehg) del siguiente compromiso. Quizás pretxncommit no es el gancho correcto?
¿Podría utilizar un enganche precommitido, leer el archivo commit.save y repo ['tip']. Branch() y cambiar que, de ser así, ¿de dónde sacaría el nombre de la rama?
#
# 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')
En otro orden de no relacionado, si alguien del equipo FogBugz/horno ve esto ... por favor, actualice su software para leer el nombre de la sucursal, que no debería necesitar para poner un BUGID: x en cada maldito comprometerse . Antes que nada, desperdicia mi tiempo. En segundo lugar, si la Id. De un caso se escribe incorrectamente, no aparecerá en el error sin muchos problemas. Muchos desarrolladores usan una rama por sistema de error/función. Es la política de la compañía donde trabajo. Fogbugz apesta.
Por curiosidad: ¿por qué necesita eso? Siempre puede recuperar el nombre de la rama al que pertenece la confirmación. PD: oh, es el requisito de horno: -S Tan extraño – zerkms
No es para uso humano. Fogbugz, nuestro asociado de seguimiento de errores se compromete con los errores leyendo el Id. De error: x o caso y en la descripción del compromiso. Sí, es ridículo que incluso lo necesite. – Keyo
La integración mercurial de FogBugz usa un gancho changegroup para insertar la información relevante en FogBugz. Posiblemente podría modificar eso para obtener el id. De caso de FogBugz del nombre de la sucursal en lugar del mensaje de confirmación. Por supuesto, debería mantener actualizado su grupo de cambios si actualiza su versión de FogBugz. –