No archivaría sucursales. Dicho de otra manera, las sucursales se archivan a sí mismas. Lo que desea es asegurarse de que la información relevante para los arqueólogos se pueda encontrar por medios confiables. Confiables en que ayudan al desarrollo diario y no agregan un paso adicional al proceso de hacer el trabajo. Es decir, no creo que las personas recuerden agregar una etiqueta una vez que hayan terminado con una rama.
Aquí hay dos pasos simples que ayudarán en gran medida a la arqueología y el desarrollo.
- Enlace cada rama de tarea con un problema asociado en el rastreador de problemas utilizando una convención de nomenclatura simple .
- Siempre se usa
git merge --no-ff
para fusionar ramas de tareas; desea esa burbuja de compromiso e historial de fusión, incluso para un solo compromiso.
Eso es. ¿Por qué? Porque como arqueólogo de códigos, rara vez empiezo con querer saber qué trabajo se realizó en una sucursal. ¡Mucho más a menudo es por qué en todos los nueve infiernos gritos se escribe el código de esta manera? Necesito cambiar el código, pero tiene algunas características extrañas, y necesito descifrarlas para evitar romper algo importante.
El siguiente paso es git blame
encontrar las confirmaciones asociadas y luego esperar que el mensaje de registro sea explicativo. Si necesito profundizar más, averiguaré si el trabajo se realizó en una rama y leeré la rama en su conjunto (junto con sus comentarios en el rastreador de problemas).
Digamos git blame
puntos en commit XYZ. Abro un navegador de historial de Git (gitk, GitX git log --decorate --graph
, etc.), encuentro commit XYZ y veo ...
AA - BB - CC - DD - EE - FF - GG - II ...
\ /
QQ - UU - XYZ - JJ - MM
Ahí está mi rama! Sé que QQ, UU, XYZ, JJ y MM son parte de la misma rama y debería consultar sus mensajes de registro para obtener más detalles. Sé que GG será un commit de fusión y tendrá el nombre de la rama que, con suerte, está asociada con un problema en el rastreador.
Si, por alguna razón, quiero encontrar una rama vieja que puedo ejecutar git log
y buscar el nombre de la rama en la confirmación de fusión. Es lo suficientemente rápido incluso en repositorios muy grandes.
A eso me refiero cuando digo que las ramas se archivan a sí mismas.
Etiquetar cada rama agrega un trabajo innecesario para hacer las cosas (un proceso crítico que debería simplificarse sin piedad), engulle la lista de etiquetas (sin hablar de rendimiento, sino de legibilidad humana) con cientos de etiquetas que solo ocasionalmente son útiles, y no es Incluso muy útil para la arqueología.
git checkout [rev] file
Attic/<branchname>
embargo, uso etiquetas livianas para archivar ramas.