2012-07-06 20 views
16

Si tengo varias versiones de conjuntos de parches para un cambio en Gerrit, parece que solo puedo enviar la última versión del conjunto de parches (porque solo ese tiene el botón necesario). ¿Existe una manera fácil de de enviar una de las versiones anteriores del conjunto de parches del mismo cambio, usando solo mi navegador web en esa instancia de Gerrit?¿Volver a la versión anterior del conjunto de parches a través de la interfaz de usuario de Gerrit?

Sé que puedo recuperar la versión deseada del conjunto de parches de mi cliente de git y ponerla como una nueva versión del parche, pero me gustaría evitar tener versiones de parches idénticas varias veces en la revisión y discusión al respecto.

Respuesta

11

No, lo siento, esto no es posible en la actualidad. El diseño asume que el conjunto de parches más reciente es el que los desarrolladores revisarán y probarán, y como tal, los conjuntos de parches más antiguos no pueden enviarse. Tampoco pueden ser revisados ​​/ verificados. Si desea utilizar una versión anterior de un conjunto de parches, debe volver a enviarlo para que sea el conjunto de parches más reciente. Para evitar no hay nuevos cambios error git commit --amend y git creará un nuevo sha1, que será aceptado felizmente por Gerrit como un nuevo conjunto de parches.

+6

Esto no funciona: cuando pulso la confirmación de un conjunto de parches anterior, aparece el error "sin cambios nuevos". – oberlies

+1

Es un poco complicado. En realidad, debe revertir los cambios introducidos por los parches siguiendo el que desea, luego enmendar esas reversiones a la revisión y volver a enviarlas. Eso lo llevará de vuelta al estado representado por el parche que desee. Probablemente puedas lograr esto con el reflog, si sabes lo que estás buscando, pero tendré que dejar eso a los verdaderos magos del git. – geekofalltrades

+4

Aquí hay algo que funciona, aunque podría ser un poco complicado: encuentre en el reflector el estado HEAD del último patchset, llámelo X, y el estado HEAD del patchset al que desea volver, llámelo Y. Do 'git diff HEAD @ {X} HEAD @ {Y} | git apply --index'. Ahora tiene cambios en etapas que deshacen todos los cambios realizados entre Y y X. Haga 'git commit --amend', luego vuelva a enviar la revisión. Ahora tiene un nuevo parche que lo regresa al estado del parche deseado. – geekofalltrades

0

En la interfaz de usuario de Gerrit, haga clic en Patch Sets y en el menú desplegable verá todos los parches junto con sus identificaciones de confirmación. Simplemente haga clic en el commit que desee y seleccione Revert en el panel central

Gerrit patch sets

También puede obtener el ID y la salida se comprometen/Modificar el comprometerse a continuación, enviar para su revisión una vez más

Si desea extraer/buscar/seleccionar un conjunto de parches específico y luego hacer clic Download a la derecha de Patch Sets y copiar el comando necesario. En el comando, verá una URL como esta

ssh://[email protected]/branch.1 refs/changes/1/3456/4 
              ^

Observe el número en la última posición. Es el número de parche. Así que si usted desea conseguir el parche 2 nd , modificar la dirección URL como ssh://[email protected]/branch.1 refs/changes/1/3456/2

-1

No hay manera correcta de hacer esto utilizando sólo Gerrit interfaz de usuario. Elija el "conjunto de parches" específico de la "lista de cambios" (por ejemplo, si hay 15 conjuntos de parches en una lista de cambios y desea volver al conjunto de parches n.º 8). Obtenga el comando cherry-pick de Gerrit UI para obtener el parche requerido.

Ejecute el comando cherry-pick y use git commit --amend, luego presione su cambio. Generará un nuevo conjunto de parches (para el ejemplo anterior n. ° 16).

Cuestiones relacionadas