¿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.
version-control
git
branching
balanv
fuente
fuente
Respuestas:
¡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.
fuente
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.
fuente
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:
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.
fuente
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.
fuente
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.
fuente