2012-08-04 17 views
8

Tenemos un proyecto de grandes raíles que se ejecuta en un servidor de producción y almacenamiento intermedio. ¿Es una buena idea crear etiquetas cada vez que implementamos en etapas o producción (esto sucedería automáticamente con capistrano). ¿O es mejor crear ramas llamadas "desarrollo" y "puesta en escena", (el maestro contendría el estado de producción)?tags vs branches en git

Respuesta

1

Puede utilizar las ramas para desarrollo, montaje y producción y, al mismo tiempo, usar etiquetas para identificar las versiones de producción. Me gusta la forma en que git flow maneja esas ramas y le permite usar más sucursales para desarrollar nuevas funciones. Como desarrollador, nunca tendrías que ingresar código en la rama principal, y las fusiones en master también son raras.

5

Las etiquetas en git son bastante duraderas: se propagan automáticamente cuando se busca desde un repositorio remoto, y si quiere limpiarlas, tiene que hacerlo manualmente en cada copia. Por lo tanto, prefiero usar las ramas (y posiblemente sus reflogs) para marcar el despliegue automático, porque de lo contrario probablemente sería enterrado en muchas etiquetas muy pronto.

1

Etiquetamos cada uno de nuestros despliegues (automáticamente en nuestras secuencias de comandos de implementación) con el fin de una recuperación rápida si es necesario, pero también son útiles como un historial de implementación. Por ejemplo:

deployment_stag_20120804 
deployment_stag_20120823 
deployment_prod_20120715 
deployment_prod_20120724 

Usted puede hacer su escritura etiquetas para mantener sólo el último número N de despliegues si se quiere evitar una gran cantidad de etiquetas.

Una rama tiene más sentido si su método de implementación se fusiona, por ejemplo, en una rama de producción, en la que un gancho git podría desencadenar un tirón en el servidor de prod.