Empujar a gerrit usando SourceTree

No puedo descifrar cómo hacer que SourceTree presione a Gerrit.

Vi este enlace, pero todavía no entiendo cómo se puede hacer: https://answers.atlassian.com/questions/29361/configuring-sourcetree-push-for-gerrit

Aparentemente de acuerdo con las notas de la versión 1.3.3 hay una forma de hacerlo, pero no puedo resolverlo: http://www.sourcetreeapp.com/update/ReleaseNotes.html#version-1.3.3

¿Hay alguna guía paso a paso en algún lugar sobre cómo hacerlo?

Ahora ejecuto este command en la terminal para empujar

git push origin HEAD:refs/for/master 

Creo que la respuesta proporcionada por atlassian dice que cambie el nombre de la twig remota cuando vea el dialog de inserción.

  1. Abra el dialog de inserción
  2. Haga clic en el nombre de la sucursal remota debajo de la columna "Sucursal remota" (la mina actualmente es "maestra")
  3. Escriba el nuevo nombre de la sucursal remo – que sería 'refs / for / master' para mí
  4. Haga clic en Aceptar.

Esto parece haber empujado adecuadamente los commits en Gerrit para mí. El problema que tengo ahora es que el valor 'refs / for / master' no persiste. Ahora para descubrirlo. Actualizaré esta publicación una vez que me haya dado count. Espero que esto ayude incluso aunque sea tarde para el juego.

Actualización: resulta que debe agregar una input de inserción en origen remoto en .git / config. Deberías hacer esto a través del command git config (aunque edité el file manualmente, estoy seguro de que es una mala práctica). la línea de inserción que escribí es:

 push = refs/heads/*:refs/for/* 

para mayor claridad aquí está mi input de origen remoto en .git / config:

 [remote "origin"] url = ssh://gerrit-test.example.com:29418/mystuff.git fetch = +refs/heads/*:refs/remotes/origin/* push = refs/heads/*:refs/for/* 

En SourceTree ahora puede presionar y presionará a gerrit en lugar del repository final. (Ahora también puedes hacer git push sin especificar nada más y presionará a gerrit). Tenga en count que después de un empuje, SourceTree seguirá mostrando un número en el button que dice que todavía tiene cosas para empujar. Esto se debe a que todavía está obteniendo del repository maestro y los cambios que ha introducido en gerrit aún no se han fusionado en el repository principal. Una vez que sus cambios se hayan fusionado en el repository principal, el número en el button desaparecerá.

Si tiene una configuration con Git Flow ( http://nvie.com/posts/a-successful-git-branching-model/ ), o similar, a menudo desea enviar su sucursal local a una sucursal remota diferente. En tal caso, la regla de inserción genérica (mencionada por mozart27) no funcionará ya que siempre empuja a su twig local a la twig remota correspondiente.

Ejemplo: Tengo una twig local "feature123" que está list para revisión (es decir, Gerrit). Nuestra twig de integración es "origen / desarrollo". Si utilizo la regla de inserción genérica, entonces "feature123" se presionará para su revisión en "origin / feature123", pero lo que realmente quiero es presionarlo para que lo revise en "origin / develop".

Solución: en SourceTree puede crear una acción personalizada:

 Menu caption: Push for review Script to run: cmd Parameters: /c git push origin $SHA:refs/for/develop 

Recuerde agregar Git a su ruta para habilitar cmd para usarlo.

Luego, en lugar de hacer clic en "Enviar", haces clic con el button derecho en tu confirmación y seleccionas "Acciones personalizadas -> Solicitar revisión".

Por supuesto, estas 2 soluciones pueden coexistir, con la regla de inserción genérica que garantiza que siempre envía una revisión cuando se envía a una sucursal remota, y la acción personalizada para cuando desea enviar una bifurcación de funciones para su revisión en la bifurcación de integración.