Paralelo Dev: ¿Deben los desarrolladores trabajar dentro de la misma sucursal?

¿Deben varios desarrolladores trabajar dentro de la misma twig y actualizar, modificar, comprometer? ¿O debería cada desarrollador tener su propia twig en exclusiva? ¿Y cómo afectaría el uso compartido de las twigs a un entorno en el que se realiza mantenimiento de rutina en lugar de flujos de código no actualizados? Además, ¿cómo funcionaría esto si implementa cada trabajo de los desarrolladores tan pronto como se realiza y pasa las testings (rápidamente, en lugar de poner todo su trabajo en una sola versión)?

En general, he encontrado que tener desarrolladores (que trabajan en el mismo proyecto) usan la misma twig es mejor para encontrar problemas de integración más rápido. Si los desarrolladores cada uno usa una twig individual, entonces solo está demorando posibles problemas de integración hasta más adelante, cuando fusiona las sucursales.

Por supuesto, hacer que los desarrolladores trabajen en la misma twig significa que debes tener comunicación real entre esos desarrolladores, pero ese es un problema social y no uno técnico.

Los desarrolladores trabajarían en sucursales separadas cuando haya una buena razón para que esa twig exista en primer lugar (como un lanzamiento de parche de una versión anterior del software, o una versión especial para un cliente específico).

Tenga en count que herramientas como Git y Mercurial permiten a los desarrolladores crear fácilmente sus propias sucursales privadas para organizar su propio trabajo. Esta es una situación diferente a la de más de un desarrollador que comparte una sucursal, y las sucursales privadas (generalmente de corta duración) deben ser alentadas.

Las twigs están pensadas como una forma de controlar la versión de cualquier característica o pieza de código experimental que pueda romper la línea principal / troncal.

Si bien es común que los desarrolladores tengan sus propias twigs personales para la experimentación profunda, a menudo las sucursales se centran en una nueva característica que se agrega. Estas nuevas funciones a menudo requieren que más de una persona se comprometa.

Por ejemplo, en un proyecto web, dos desarrolladores y un diseñador pueden estar haciendo un lavado de cara en el website de su compañía. Todavía necesitan mantener limpio su código de línea principal / troncal en caso de que necesiten hacer un cambio rápido antes de que se complete el lavado de cara. Entonces crean una twig de "cirugía estética" y trabajan en eso. Mientras los desarrolladores están cometiendo javascript, el diseñador puede estar comprometiendo CSS e imágenes. Una vez que se completa la function de cirugía estética, pueden fusionarla en la línea principal y enviarla en vivo.

La única razón por la que cualquiera de ellos necesitaría sucursales personales sería para experimentar. Quizás el diseñador está tratando de implementar tabs de "puertas cornetworkingeras" y no puede get el relleno correcto en IE6, por ejemplo. Si resuelve el problema, puede fusionarlo en la twig de cirugía estética, si no puede, simplemente lo ignora y continúa con el rest del layout en la twig de cirugía estética.

Hasta cierto punto, el software de control de versiones que está utilizando lo llevará a un enfoque particular. GIT está orientado a los contribuyentes de código abierto y se asemeja al model de "un desarrollador" (la ramificación ni siquiera es un concepto en GIT. GIT se trata más de gestionar cambios). Clearcase es más corporativo, por lo que tiene múltiples desarrolladores en una sucursal, pero cada desarrollador puede jugar en su propia vista.

Estoy de acuerdo con la respuesta de Greg, esto es más un problema de planificación social. Muchos de los desarrolladores en una twig pisarán los dedos de los demás. He estado en un proyecto donde había más desarrolladores que files de fuente individuales 🙂

Creo que la fusión de sucursales puede ser problemática (funcionalidad caída o inconsistente), independientemente de cuán buenas sean las herramientas de control de origen. Preferiría optar por múltiples desarrolladores trabajando en una única twig principal. Podría haber otras twigs para cosas como correcciones de errores de producción o testings de conceptos (POC), donde la fusión podría / debería ocurrir muy pronto después del cambio (correcciones de errores) o una buena posibilidad de que la fusión no tenga que pasar (POC).