Actualmente, nuestra compañía está utilizando un modelo simple de troncalización/liberación/revisión de revisiones y desearía asesoramiento sobre qué modelos de ramificación funcionan mejor para su empresa o proceso de desarrollo.¿Qué modelos de ramificación de Git trabajan para usted?
flujos de trabajo/modelos de ramificación
A continuación se presentan los tres principales descripciones de este he visto, pero se contradicen parcialmente entre sí o que no van lo suficientemente lejos de resolver los problemas posteriores que Me he topado con (como se describe a continuación). Por lo tanto, hasta ahora nuestro equipo no tiene soluciones excelentes. ¿Estás haciendo algo mejor?
Fusión vs cambio de base (enredado vs historia secuencial)
caso de que uno
pull --rebase
o espere con la fusión de nuevo a la línea principal hasta que su la tarea ha terminado? Personalmente me inclino por la fusión, ya que conserva una ilustración visual de la base en la que se inició y finalizó una tarea, e incluso prefieromerge --no-ff
para este propósito. Sin embargo, tiene otros inconvenientes. Además, muchos no se han dado cuenta de la propiedad útil de la fusión, que no es commutative (fusionar una rama de tema en maestro no significa fusionar el maestro en la rama de tema).Busco a un flujo de trabajo natural de
A veces se cometen errores porque nuestros procedimientos no captan una situación específica con reglas simples. Por ejemplo, una solución necesaria para las versiones anteriores debería basarse, por supuesto, en una etapa posterior para que sea posible fusionarse en todas las ramas necesarias (¿el uso de estos términos es lo suficientemente claro?). Sin embargo, sucede que una solución llega al maestro antes de que el desarrollador se dé cuenta de que debería haberse colocado más adelante, y si eso ya está presionado (incluso peor, fusionado o algo basado en él), la opción restante es elegir, con sus peligros asociados ¿Qué reglas simples como esas usas? También en esto se incluye la incomodidad de una rama de tema que necesariamente excluye otras ramas de tema (suponiendo que estén ramificadas a partir de una línea base común). Los desarrolladores no quieren terminar una función para empezar otra sensación de que el código que acaba de escribir ya no está allí
Cómo evitar la creación de conflictos de fusión (debido a cereza-escoge)?
Lo que parece una forma segura de crear un conflicto de combinación es elegir entre las ramas, nunca se pueden fusionar de nuevo? Sería posible que al aplicar el mismo compromiso en revertir (¿cómo hacer esto?) En cualquiera de las ramas se resuelva esta situación? Esta es una de las razones por las que no me atrevo a impulsar un flujo de trabajo en gran medida basado en fusiones.
¿Cómo descomponerse en ramas tópicas?
Nos damos cuenta de que sería increíble ensamblar una integración completa de las ramas temáticas, pero a menudo el trabajo de nuestros desarrolladores no está claramente definido (a veces tan simple como "hurgar") y si algún código ya se ha tema "misc", no se puede sacar de allí de nuevo, de acuerdo con la pregunta anterior? ¿Cómo trabajas definiendo/aprobando/graduando/liberando tus ramas temáticas?
Los procedimientos correctos, como la revisión del código y la graduación serían, por supuesto, encantadores.
Pero simplemente no podemos mantener las cosas lo suficientemente desenredadas para gestionar esto, ¿alguna sugerencia? ramas de integración, ilustraciones?
A continuación se presenta una lista de preguntas relacionadas (! Gracias por this PDF)
- What are some good strategies to allow deployed applications to be hotfixable?
- Workflow description for Git usage for in-house development
- Git workflow for corporate Linux kernel development
- How do you maintain development code and production code?
- git releases management
- Git Cherry-pick vs Merge Workflow
- How to cherry-pick multiple commits
- How do you merge selective files with git-merge?
- How to cherry pick a range of commits and merge into another branch
- ReinH Git Workflow
- git workflow for making modifications you’ll never push back to origin
- Cherry-pick a merge
- Proper Git workflow for combined OS and Private code?
- Maintaining Project with Git
- Why cant Git merge file changes with a modified parent/master.
- Git branching/rebasing good practices
- When will "git pull --rebase" get me in to trouble?
- How are DVCS used in large teams?
También puedes ver lo que escribe en Plastic SCM task driven development, y si El plástico no es su elección, el estudio nvie's branching model y su supporting scripts.
Hah, gracias, de hecho lo ha hecho ... De hecho, he leído la mayor parte de eso ... cosas :-). Es algo por lo que soy conocido: no conformarme con la solución mediocre, sino continuar buscando la perfecta. A menudo esto es un error, pero en este caso hay mucho en juego y las soluciones a mano son demasiado desordenadas o deficientes como para seguir buscando. Entonces decidí enumerar todos los problemas que tengo con eso. –
Plastic SCM blog arrojó su opinión en la discusión, es al menos perspicaz: http://codicesoftware.blogspot.com/2010/08/branch-per-task-workflow-explained.html –
Tienes que tener cuidado al usar " merge --no-ff ", mira esto para algunas advertencias http://sandofsky.com/blog/git-workflow.html – Doppelganger