¿Cómo trabajo en varias correcciones mientras espero una revisión en Gerrit?

He estado buscando en la web y no puedo encontrar la respuesta exacta.

He estado usando git bajo el model de git flow durante un par de años. Cambié de trabajo recientemente, y aquí, utilizamos Gerrit.

Con Gerrit, entre otras restricciones, no parece encontrar la manera adecuada de trabajar en 2 correcciones / funciones separadas y revisarlas al mismo time. Según tengo entendido, tengo que trabajar en la parte superior de la twig principal, y solo puedo enviar 1 compromiso a la vez (a less que remueve mi revisión inicial). Lo cual es muy diferente a lo que git es para mí.

En git, podría hacer lo siguiente:

# work in a feature git checkout -b feature/awesome echo "nice" > nice.txt git add nice.txt git commit -m "My nice change" git push -u origin feature/awesome # work on a hotfix git checkout -b hotfix/1.1.1 echo "fixed" > fixed.txt git add fixed.txt git commit -m "It's fixed" git push -u origin hotfix/1.1.1 

Luego, 2 types estarían revisando mi código antes de que se fusionara en master o desarrollara twigs y se labelra correctamente.

Sé que solo necesito aprender este nuevo model de Gerrit, pero ¿podría alguien ayudarme a descubrir cómo trabajar en 2 revisiones diferentes a la vez? Siento que mi productividad acaba de caer al 20%.

Solo soy un usuario de gerrit, no un administrador, así que tal vez estoy fuera de la base aquí, pero ¿por qué no puedes tener varios cambios abiertos en gerrit al mismo time? Tengo cuatro cambios abiertos en el mismo proyecto en este momento.

No mantengo sucursales locales. De hecho, rara vez hay algo importante en mi tree de trabajo cuando voy a casa por la noche.

Cuando quiero comenzar un nuevo cambio:

 git reset --hard git fetch git checkout master git reset --hard origin/master # make my changes git add ... git commit git push origin HEAD:refs/publish/master 

Cuando quiero trabajar en algún otro cambio que ya esté en gerrit:

 git reset --hard git fetch ssh://[email protected]/project refs/changes/nn/nnnnn/pp git checkout FETCH_HEAD # make my changes git add ... git commit git push origin HEAD:refs/publish/master 

Esas líneas de reset --hard rara vez son un problema porque, como dije, no mantengo nada importante en mi tree de trabajo local.

El único truco es que si tengo dos o más cambios abiertos que tocan el mismo file, es posible que deba hacer una fusión manual de git para orderarlos. Eso no es peor que si yo y algún otro desarrollador intentamos cambiar el mismo file al mismo time.

La regla simple es: nunca trabajar en la parte superior de una confirmación de revisión en curso . En su lugar, cree una sucursal local para cada tarea desde la twig master fusionada (o lo que sea).

IIRC, la configuration pnetworkingeterminada en Gerrit es fusionar esos commits automáticamente, y como administrador puede cambiarlo a rebase (o fusión más estricta de avance rápido).

Si el server no puede hacer esto (por ejemplo, en conflictos), tendrá que search la primera confirmación aprobada y rebase / fusionar la segunda en ella. (Esto no rompe la regla anterior, porque el primer compromiso ahora está fusionado ).

Entonces para su ejemplo, cambie

 git checkout -b hotfix/1.1.1 

a

 git checkout -b hotfix/1.1.1 HEAD~