¿Cómo organizar git workflow cuando no puedo enviar directamente a Origin / Master?

Revisé un proyecto de git en el que quiero trabajar. No tengo permissions de inserción, así que enviaré parches a los mantenedores ascendentes. Quiero crear mi propia sucursal y queueborar con otras personas en esa twig. Cuando termine el trabajo, quiero volver a establecer una base de mi twig contra el jefe actual del proyecto principal y enviar el parche a los encargados de la stream ascendente. La pregunta es: ¿cómo organizar la queueboración entre un grupo de personas que trabajan en una twig?

Actualmente uso la siguiente configuration:

  • Tengo mi propio server de git en el cual guardo una copy del repository.
  • Guardo mi twig de trabajo en ese server
  • Otros desarrolladores envían sus cambios a esa twig en el server y retiran los cambios realizados por otros, por lo que el server actúa como un repository central para todas las personas que trabajan en una twig
  • Los cambios realizados en el maestro se extraen del repository ascendente del proyecto.
  • El maestro puede ser enviado a mi server si es necesario

Pensé que esta es una buena configuration, pero me di count de que todo se romperá si alguna vez decido reubicar mi twig contra el maestro actual desde la parte superior. Si presiono la twig rebasada a mi server local, terminará siendo un desastre para los demás, así que obviamente esta no es una configuration correcta. Tuve una discusión sobre esto con mi amigo y notó que el problema se debe al uso de mi propio server local como server central para todos los desarrolladores, como si fuera un repository de subversión. Entonces, aunque creo que nos dimos count de la fuente de nuestro problema, no encontramos una forma correcta de organizar nuestro flujo de trabajo de git. ¿Cómo debería hacerse esto?

Cada uno de sus compañeros de trabajo debería crear micro-twigs [también conocidas como twigs de características] (desde su twig principal, como debería hacerlo usted) para cada una de sus pequeñas iteraciones que pueden enviar a su server en cualquier momento para permitir que se vean. A medida que se completa cada micro-iteración, ellos (y usted) volverían a calcular esa iteración en la parte superior de su twig principal para ver si todavía está funcionando y list para la integración con su twig principal.

Aquí hay una carrera para mantener las iteraciones cortas y pequeñas para que 'solo funcionen' y sean aceptables, y se reúnan o se reenvíen rápidamente a su twig principal. En algunos casos las diferentes iteraciones interactuarán y los desarrolladores apropiados pueden queueborar usando las micro twigs empujadas / tiradas para evitar peleas internas 😉

Si hay muchas características de ejecución cruzada en desarrollo, entonces puede usar un flujo de trabajo (flujos de git help workflows ) similar al utilizado por el mantenedor Git, de las twigs Maestro <- Siguiente <- pu (posibles actualizaciones) <- queueborador, con pu ser rebobinado después de cada ciclo con queueboradores que trazan una nueva visión de esa twig de nueva herida para ver cómo encajan sus cambios en el todo más grande.


Envío de parches

Una vez que hayas completado una tarea en tu twig "principal", deberás volver a search / extraer el maestro en sentido ascendente (y todos los candidatos de lanzamiento que puedan tener) y volver a establecer los cambios sobre ellos para que estén realmente actualizados.

Ahora prepararía una serie de parches de su sucursal usando el git format-patch , probablemente preparando una carta de presentación para presentar la serie. Luego, use git send-email para enviarlos. Sin embargo, vale la pena practicar enviándoselos a usted mismo y search las instrucciones proporcionadas por el proyecto original. Por ejemplo, Git's SubmittingPatches .