Las palabras clave solo se pueden expandir en una sola línea, por lo que no se puede obtener un comportamiento similar al de CVS en el log messages keep accumulating. Esto está documentado en hg help keyword
después de habilitar la extensión.
La cometer mensajes son accesibles con el {desc}
template keyword en Mercurial, para que pueda agregar
[keywordmaps]
Log = {desc}
[keyword]
**.c =
que tienen $Log$
línea ampliada esto en todos los .c
archivos.
Tenga en cuenta que la extensión de palabra clave ofrece una vista del mundo similar a CVS en la forma en que opera por archivo. Mercurial normalmente funciona en todo el repositorio. Si lo hace
$ hg commit -m "Fixed bug 123" foo.c # create changeset 10:84e0d0dc9ce5
$ hg commit -m "Fixed bug 234" bar.c # create changeset 11:2e85d7f2f93e
entonces es correcto que foo.c
fue cambiado en la revisión 10 pasado, pero es un error decir que la revisión 11 contienen solamente bar.c
. El archivo foo.c
también forma parte de la revisión 11; es totalmente plausible que el cambio a bar.c
dependa del cambio anterior a foo.c
, por lo que la instantánea en la revisión 11 captura el estado de foo.c
y bar.c
.
Los keyword extension obras en función de cada archivo cuando se expande palabras clave: se escribirá en $Log: Fixed bug 123 $
foo.c
y $Log: Fixed bug 234 $
en bar.c
cada vez que actualice a 2e85d7f2f93e conjunto de cambios.
Si quiere ver por qué y cuándo se tocó por última vez cada archivo, esto hará lo que quiera. Si desea conocer el estado global de su repositorio, por ejemplo, para usarlo como una cadena de versión. - entonces esto está mal. El problema es que su archivo version.h
no cambiará durante largos períodos cuando se desarrolle, por lo que las palabras clave en ese archivo tampoco se modificarán.
En ese caso, realmente debería ejecutar hg id
como parte de su Makefile
. Puede que sea más elegante con algo como:
$ hg parents --template '{latesttag}+{latesttagdistance}-{node|short}\n'
la que dará salida a una cadena como 2.1+117-eed1e5bba9a8
. Esto significa que su versión actual (eed1e5bba9a8), es 117 commits después de la última etiqueta (2.1).Eso hace que sea fácil para los usuarios comparar las compilaciones hechas desde el mismo repositorio central y aún así puede reproducir de manera única una compilación si lo necesita.
Solo para señalarlo: la página wiki Mercurial Keyword Expansion desaconseja su uso y, de hecho, no es parte de mercurial, sino una extensión no admitida. Con un DVCS donde todo el pago se realiza siempre en la misma revisión (a diferencia de svn cuando puede hacer un pago parcial) no hay necesidad y hay muchas razones para no usarlo (haga que 'hg diff' sea difícil/impreciso). –
@ Ry4an: haga su comentario una respuesta, lo renunciaré :) – neuro
Naw, "Realmente no quiere" no es una respuesta. Es cierto, pero no es lo que está preguntando. –