www with whats what update tutorials learn features advantages version-control project-management

version-control - with - what''s git



Gestionar múltiples ramas de código y entregas (4)

Es posible usar CVS en esta situación (aunque recomendaría que eche un vistazo a otras opciones como SVN).

Trabajé en algunos proyectos similares. y lo que hicimos fue tener una sucursal Commom, para las características principales del sistema y una rama "Cliente" para cada variación del producto, de esta manera puede implementar características específicas y correcciones de errores de cada cliente y aún usar los mismos cambios en "commom" "a todas las variaciones del producto.

Sin embargo, este enfoque requiere mucho esfuerzo de gestión de configuración (fusión y construcción), por lo que es posible que desee tener una persona específica para manejar estas tareas.

EDITAR:

Además, debería (si no lo hace ya) tener un sistema de seguimiento de errores, en el cual debe documentar el cliente / sucursal en la que está trabajando.

Trabajo para una pequeña empresa de un solo producto y un solo cliente que está en transición a una compañía de un solo producto y múltiples clientes. Aunque solo hemos tenido un cliente, hemos tenido diferentes proyectos con diferentes fechas de entrega, pero para cada proyecto hemos podido entregar el último lanzamiento mensual que mantuvimos en una rama de código separada en caso de que lo hagamos ". Tuve que entregar correcciones de errores para esa versión específica.

Recientemente, hemos adquirido varios clientes nuevos y ha surgido un nuevo problema: la sucursal principal normalmente resolverá (sin interrumpir la funcionalidad) muchos problemas diferentes específicos del cliente, y no todos los clientes desean todos los cambios, pero preferirían preferir la cereza. -pick arreglos y características.

¿Tienes alguna experiencia con esa situación y cómo manejarla prácticamente sin sobrecargarla con pruebas y trabajo (nuestras pruebas mensuales de lanzamiento tardan aproximadamente 3 días de tiempo en la computadora)? Y en cuanto al control de versiones, ¿cómo se las arregla (supongo que los cvs finalmente tendrán que irse ...)?


La solución más simple es cortar el producto en un producto central y cada característica en un plug-in. De esta forma, cada cliente puede seleccionar las características que desea. Pero incluso esta solución puede abrumar rápidamente a una empresa pequeña.

En realidad, generalmente se encuentra en una situación peor: tiene una nueva característica que ayuda al cliente A y rompe algo para el cliente B (por ejemplo, el cliente B no está listo para modificar su base de datos y la nueva característica no funciona sin el cambio, así que esto de hecho hace que la nueva versión no se pueda usar para el cliente B). Si fueras grande, simplemente podrías ignorar al cliente B.

Tal como está, realmente necesita encontrar una forma de convencer a sus clientes para que sigan adelante. La forma más simple es el dinero: dígales cuánto les costará obtener un producto a medida y cuánto ahorrarán todos si puede encontrar una solución que se adapte a todos. Invite a sus clientes, elabore una lista de cambios juntos y haga que todos estén de acuerdo con el plan.

Además, realmente debe tener pruebas unitarias automáticas, para que pueda estar 100% seguro de que el producto que sale de la casa hoy en día no puede ser peor que el que vendió hace cuatro semanas.

Incluso con el mejor sistema de control de versiones que existe (para mí, eso sería git ), no puedes resolver la cantidad de fans que obtienes si no puedes hacer que todos tiren en la misma dirección (excepto, por supuesto, puedes realmente dividir a cada cliente en un complemento).


Tenemos una configuración similar de un producto (bastante especializado) y varios (pero solo el pedido de cientos) de clientes que desean su propia característica para mascotas.

Por lo que puedo ver, puede ir a la ruta ''estándar'' donde su producto no es específico del cliente, y cualquier característica que agregue es por el bien del producto (posiblemente a petición del cliente); o recorre la ruta de consultoría personalizada, donde cada cliente tiene su propia versión única del producto.

Si todos sus clientes requieren básicamente el mismo producto, entonces debe ir por la primera ruta y eso significa que todas las funciones van a todos los clientes.

Ocultar las características es fácil, ¡mantener múltiples versiones simultáneas es una pesadilla!

Una solución que podría funcionar si sus clientes exigen seleccionar sus características es mantener sucursales para cada una de ellas y luego copiar cuidadosamente los cambios relevantes de su sucursal.

Esto significa que sus compromisos deben ser tan atómicos como sea posible, solo corrija exactamente un problema, y ​​que ningún cambio debe ir directamente a las sucursales de los clientes. Pero ese enfoque sigue siendo muy peligroso.


Solo admita la cabecera / troncal principal, a menos que haya una rama que tenga una corrección / función de error que no esté presente en la línea principal.

Sé que dijiste que algunos clientes no quieren eso, pero he visto el resultado final del apoyo de muchas sucursales. No quieres eso. Es una pesadilla y paralizará sus equipos de desarrollo, producto y prueba.

No lo hagas

Se firme.