2011-09-17 7 views
7

He estado leyendo acerca de las etiquetas mercuriales. Puedo ver, generalmente, etiquetar un conjunto de cambios para marcar un punto de lanzamiento y estas etiquetas también están controladas por la revisión.Por qué separar el archivo de etiquetas en Mercurial

Pero realmente no podía entender la idea de tener un archivo .hgtags. ¿Cuál es el propósito de este archivo?

Respuesta

5

Tener un archivo .hgtags permite que los cambios en el archivo .hgtags se graben utilizando el mismo formato utilizado para registrar los cambios en todos los demás archivos. También permite que las etiquetas se transfieran entre repositorios en el mismo formato utilizado para transferir cambios de archivos.

Esto permite a Mercurial implementar un sistema para almacenar cambios en un directorio, y un protocolo para transferir un montón de cambios a un directorio y tener información de bifurcación y etiqueta manejada automáticamente cuando se transfieren cambios de archivos.

También permite que uno vea el historial de las etiquetas de un proyecto, mirando el historial del archivo .hgtags.

+2

Las desventajas incluyen la confusión sobre 'hg clone -r ' y el requisito innecesario para resolver un conflicto en el archivo' .hgtags' cuando se agregan dos etiquetas separadas en dos ramas separadas que luego se fusionan. – Jesse

+0

+1, los mismos principios también se aplican a '.hgignore'. –

+0

Aunque entiendo estos argumentos, también parece mucho "porque es un hack oportuno". También es un reconocimiento de que las etiquetas no son realmente una parte de primera clase de Hg. –

0

Los nombres de etiqueta en dos repositorios relacionados pueden ser contradictorios.

E.G. La etiqueta A puede en un punto repo en ID del conjunto de cambios X y en otro repositorio la misma etiqueta puede apuntar en ID del conjunto de cambios Y. Durante la fusión, este conflicto debe ser resuelto.

Los conflictos durante la fusión se resuelven al inspeccionar los archivos y las modificaciones asociadas.

Por lo tanto, las etiquetas deben almacenarse en un archivo ordinario en el repositorio.

0

De hecho, no veo ningún uso para tener un archivo de etiquetas por separado. El historial del repositorio (incluidas las etiquetas) debe verse bien con un comando 'log'. Tener el archivo de etiquetas también rompe una regla importante: un cambio que está relacionado estrictamente con el sistema de versiones no debe alterar el repositorio de ninguna manera.

Cuestiones relacionadas