2011-07-06 18 views
5

Somos un pequeño equipo de desarrolladores y desarrollamos una aplicación web. Actualmente estamos teniendo un entorno de prueba en vivo y varios entornos de desarrollo.¿Cuál es la arquitectura de sucursal ideal dentro de git para aplicaciones web?

¿Qué arquitectura de sucursal sugeriría, por lo que, idealmente, cada desarrollador puede trabajar en su (s) característica (s), estos pueden ser probados e implementados sin tangencial de otros desarrolladores/características?

Actualmente, cada desarrollador tiene su propia rama de desarrollo y rebases en la rama de pruebas. Tan pronto como se aprueba una función, el desarrollador cambia sus cambios al maestro.

Esto funciona mientras las características se prueban inmediatamente. Sin embargo, si un desarrollador está trabajando en la siguiente característica mientras todavía se prueba la característica anterior, debemos manejar las cosas manualmente.

Gracias por las opiniones.

Respuesta

3

Ha pasado un tiempo que sigo estas pautas útiles descritas por Vincent Driessen en su artículo A successful Git branching model.

Puede echar un vistazo allí y verá cómo se describe la gestión de ramas y evitar rebases

+0

Gracias, este modelo se ve bien! –

+1

El modelo de Vincent parece más adecuado para una aplicación de escritorio con lanzamientos infrecuentes que para una aplicación web con lanzamientos frecuentes. – claymation

+0

Tengo que estar en desacuerdo ya que uso este enfoque para aplicaciones móviles y web y no puedo ver un vínculo entre su enfoque y la frecuencia de publicación que tiene. ¿Dónde sería la frecuencia un problema? –

0

Supongo que está trabajando con un repositorio desnudo centralizado donde todos están impulsando sus cambios, y luego está tirando de la última rama testing en el entorno de prueba.

¿Por qué no utilizar Git como un DVCS real y simplemente extraer las características de cada usuario en el entorno de prueba cuando finaliza la prueba de la función anterior?

Si Bill está desarrollando FeatureX, y Ted está desarrollando FeatureY, que podría hacer que sus características disponibles en las ramas llamados testing/feature-x y testing/feature-y respectivamente, y usted puede simplemente la comprobación bill:testing/feature-x en el entorno de prueba.

En su defecto, el uso de múltiples ramas testing/feature-name-here resolvería su problema en un sistema centralizado tradicional. Simplemente haga que sus usuarios inserten su rama testing/... en el repositorio central, tírelos al entorno de prueba y elimine la rama cuando se haya probado. Siempre puede ver una lista de características que esperan ser probadas examinando todas las ramas con el prefijo testing/. Si las pruebas de una función fallan, tiene una sucursal ubicada en el centro, específica para esa función, donde puede agregar nuevas confirmaciones al corregir la característica antes de volver a analizarla.

¿Qué está haciendo ahora si una característica falla en la prueba, después de volver a basar la característica en la única rama de prueba? ¿Qué pasa si alguien más ha modificado su función para probar en la sucursal que ahora contiene una característica rota?

0

para una aplicación web, que estés (esperemos) el despliegue de código de trabajo diario, por lo que es probable que encuentre una una sola rama (principal) para ser adecuada. Use la integración/implementación continua, escriba buenas pruebas y diseñe sus funciones para lanzarlas en pequeñas dosis en lugar de todas a la vez.

0

This slidedeck (creada después de la OP y respuesta) era muy servicial cuando estaba explorando opciones, básicamente recomienda cada ramas Developer en una sola develop rama, y ​​luego empuja de nuevo allí y reajusta periódicamente para los últimos cambios (advertencias incluido).

Cuestiones relacionadas