¿Es una buena práctica tener una sucursal remota para cada desarrollador?

11

¿Se considera una buena práctica tener una sucursal remota para cada desarrollador individual en el proyecto?

Estamos usando Git con las siguientes ramas:

  • Maestro
  • lanzamiento
  • desarrollar

Si cada desarrollador tuviera su propia sucursal, podrían insertar código en sus sucursales y otros podrían fusionar estos cambios en sus propias sucursales.

balanv
fuente
1
Me recuerda los espacios de trabajo de Accurev, excepto que no está vinculado a la dirección MAC de una máquina en particular. Me gusta.
Brandon
posible duplicado de A ramificarse o no ramificarse?
mosquito
1
¿Por qué nat tiene una rama única para cada nueva característica que se agrega?
Martin York
@Loki Sí ... es una buena idea ..
balanv

Respuestas:

4

¡No! Es una buena práctica tener un espacio de nombres de sucursal remota para cada desarrollador.

Una sola rama a menudo no es suficiente, por lo que el desarrollador terminaría rebobinando mucho o no sería de mucha ayuda. Prefiere decir que un desarrollador puede insertar lo que quiera debajo de su.nombre/ . Pueden usarlo para publicar versiones preliminares para otros, dando versiones para que alguien más las pruebe o incluso para que alguien más las integre.

Puede usar esto también para dar ramas al integrador o puede usar nombres basados ​​en tareas. Los nombres basados ​​en tareas suelen ser más fáciles de rastrear para el integrador, pero hacen que los desarrolladores piensen más en los nombres y que a las personas no les guste pensar. No sé cuál funcionará mejor en la práctica; incluso podría depender del equipo en particular.

Jan Hudec
fuente
2

Probablemente no le daría a cada desarrollador una sucursal en el servidor central a menos que tenga algún tipo de infraestructura de estilo github que les permita crear y destruir las sucursales ellos mismos y documentar claramente para qué sirven. Algunos desarrolladores necesitarán más de una rama y otros no necesitarán ninguna, pero está creando un desorden para que todos lo clasifiquen y una sobrecarga administrativa para usted.

En cambio, recomendaría el tipo de intercambio orgánico en el que Git sobresale. Es muy fácil hacer un clon simple en su propia máquina y hacer que esa carpeta sea un recurso compartido de SMB de solo lectura para que otros puedan extraerla. De hecho, me sorprendería mucho si varios de sus desarrolladores aún no lo están haciendo.

Karl Bielefeldt
fuente
1
Por defecto, todos siempre pueden crear una rama. Github permite crear repositorios completos, pero eso es excesivo en este caso.
Jan Hudec
1

Depende de cómo estén organizados su equipo de desarrollo y sus tareas. En mi opinión, el modelo que especificó funcionaría mejor si:

  1. Cada desarrollador trabaja en tareas independientes por sí mismo.
  2. Todos los desarrolladores están contribuyendo a la misma tarea.

Donde esto podría no funcionar bien es si tiene proyectos de características concurrentes en desarrollo y cada uno tiene múltiples desarrolladores trabajando en ellos.

Brandon
fuente
1

Dar a cada desarrollador su propia sucursal puede ser útil si todos están trabajando en diferentes cosas que pueden tocar los mismos archivos. Puede ayudar a evitar pisar los pies de los demás, pero requerirá que todos se fusionen con frecuencia y sean responsables al manejar los conflictos. Esto es lo que se hace en mi oficina y funciona bastante bien, aparte del raro día en que tiene que fusionar manualmente la mitad de los archivos que editó.

Si tiene varios desarrolladores trabajando en la misma característica, probablemente sea mejor crear ramas basadas en la característica en desarrollo en lugar del desarrollador.

Ryathal
fuente
1

Si está trabajando con Git, debe probar Pull Requests.

En resumen, primero combina la rama maestra en su rama de trabajo actual. Cualquier conflicto de fusión estará en su sucursal local. Esto es bueno porque su rama maestra nunca se rompe. Si realmente te equivocas, tienes un compromiso local al que puedes volver.

Una vez que finaliza la fusión, le pide a otra persona del equipo que revise y fusione su rama en la rama maestra. ¡Nunca fusiones el tuyo! Mientras nadie se cuela e hizo otra solicitud de extracción, se garantiza que se fusionará con éxito. Dado que todos conocen la solicitud de extracción, de todos modos no debe tener varias personas fusionándose en master al mismo tiempo.

Una vez que se acostumbre a este proceso, debe intentar fusionarse con la mayor frecuencia posible, una especie de integración continua de un hombre pobre. Cuanto menos tiempo entre conflictos, mejor. Identificará cuándo dos personas están duplicando esfuerzos y pueden formar un equipo. Algunos lugares se fusionarán cada vez que completen un requisito, que podría ser cada dos horas. Recomiendo fusionar al menos una vez a la semana; de lo contrario, debe dividir mejor sus tareas.

Normalmente creo una rama por tarea. Git es bueno porque distingue entre commits y empujes locales. Esto proporciona algunos de los beneficios de que cada persona tenga su propia rama sin toda la complejidad.

Travis Parks
fuente