2012-04-17 13 views
6

¿Se puede saber cuándo se extrajo una determinada confirmación desde un repositorio distante y se actualizaron los archivos con Mercurial?Obtenga las fechas de extracción y actualización en Mercurial

Más precisamente, hice un hg pull -u hace unos días, y ahora me gustaría saber si este pull descargó solo el último commit, o si hubo algunos commits que aún no se habían retirado, haciendo mi último pull obtenerlos también.

hg log parece dar las fechas de las confirmaciones, pero nada acerca de las actualizaciones. ¿Esta información está en alguna parte?

Respuesta

8

Esta información no está registrada por Mercurial. Un repositorio de Mercurial es solo un contenedor para conjuntos de cambios y Mercurial no almacena cómo (ni cuándo) los conjuntos de cambios ingresaron al repositorio.

Puede configurar ganchos para esto, aunque debería crear los guiones usted mismo. Un sistema muy rudimentario sería

[hooks] 
pre-pull = (date; hg root; hg tip) >> ~/.pull-log 
post-pull = hg tip >> ~/.pull-log 

Esto podría registrar la fecha actual, el repositorio actual, y la punta actual en ~/.pull-log justo antes de cada hg pull. Después del tirón, se registra la nueva punta. Podría construir scripts que analicen el archivo de registro para extraer información sobre lo que hizo cada extracción.

hg log parece dar las fechas de las confirmaciones, pero nada acerca de las actualizaciones

Sí, hg log sólo se ocupa de la historia almacenada (de cambios) y las operaciones de copia de trabajo al igual que la actualización no es parte de historia recordada.

Finalmente, permítanme mencionar que esta es la primera vez que veo a alguien pedir un "registro de extracción". Sin embargo, lo opuesto es bastante común: hay guiones para mantener un "registro de inserción" en un servidor para ver quién empujó qué y cuándo. Esto se hace por Mozilla entre otros. Consulte this README para obtener algunas instrucciones de inicio.

+0

Gracias por su respuesta, y sobre todo por darme una idea de solución para las necesidades futuras eventuales . Muy agradable. – nIcO

+0

@nIcO: ¡De nada! He agregado un poco sobre pushlogs, ese es el concepto opuesto. Eso será útil para otros en el futuro. –

1

Si desea registrar cuándo y con qué revisión hg actualización se utiliza para actualizar el código, a continuación, utilizar estos ganchos:

[hooks] 
pre-update = (echo "---------------------------------"; date --rfc-3339=s; hg root; echo "pre-update:"; hg identify --id --branch) >> .hgupdates 
post-update = (echo "post-update:"; hg identify --id --branch) >> .hgupdates 

los ganchos anteriores producen una entrada de registro como esto para cada actualización en tiempo hg es ejecute:

2015-12-23 00:44:31+02:00 
/var/www/my/project 
pre-update: 
802120d1d3a0 somebranch 
post-update: 
302720d1d3d2 otherbranch 

Esto también funciona cuando hg update se ejecuta sin una bandera específica de revisión (-r) establece

Cuestiones relacionadas