He estado leyendo todas las preguntas aquí sobre el tema del control de versiones, pero no creo haber encontrado un escenario que se parezca al mío."Mejor práctica" de control de versiones
El escenario es:
tenemos una aplicación de medio/gran tamaño web que tiene (al menos debería tener) un núcleo que se despliega a todos los clientes. Cuando hacemos demostraciones de la aplicación a los clientes, casi todos solicitan cambios en el diseño, los datos en los listados, los campos en los formularios de entrada de datos, etc. Casi todos estos cambios requieren cambios en el resto ". capas "de la aplicación.
En nuestra situación actual estamos usando CVS (con tortoiseCVS) y no usamos ramas, utilizamos etiquetas para diferenciar los cambios de código de la aplicación (sí, sé que es bastante malo). Esto trae muchos problemas cuando queremos hacer un lanzamiento a un cliente específico, y cambios en el check-in, etc. Para preparar un lanzamiento, siempre lleva alrededor de 1-2 días de trabajo y, a veces, aún se rompe.
A veces, una solicitud de un cliente también se incluye en el núcleo para ser distribuida a todos los clientes.
Así que mi pregunta es: ¿son las sucursales la mejor manera de aislar los cambios en las versiones de cliente personalizadas de la aplicación? ¿Deberíamos ramificarnos cada vez que un nuevo cliente solicite personalización? ¿O deberíamos tratarlo como un proyecto completamente diferente, con un repositorio diferente?
Todas las diferentes versiones tendrán que mantenerse, y como he escuchado que las ramas son "temporales", tengo dudas si la bifurcación es la mejor solución.
Gracias por la respuesta.
Antonio Dias
Solo quiero decir gracias por todas las respuestas. Incluso si no es la mejor estrategia, voy a probar la estrategia "rama para el cliente". Cada cliente obtiene su propia rama de larga vida y cada una de estas obtiene sus ramas "principal" y "dev". Al menos creo que será mejor que lo que tenemos ahora. Gracias a todos. –