2011-10-25 12 views
11

Estoy usando gerrit. He utilizado el siguiente comandoGerrit recrear ID de cambio

$ cd .git/hooks 
$ scp -P 29418 [email protected]:hooks/commit-msg . 
$ cd ../.. 

Esto se suma el cambio-id a mi mensaje del informe, sin embargo, si puedo modificar a un COMPROMÉTANSE crea un nuevo cambio-id. Así que cuando le doy la espalda a Gerrit no está agregando el conjunto de parches, está creando una entrada de revisión completamente nueva.

¿Alguna sugerencia por favor?

Encontré la respuesta, pero stackoverflow no me deja responder mi propia pregunta.

Así que este fue un error completo de mi parte. Cuando yo estaba tratando de cometer git commit -m --amend "Commit inicial"

me procesos en línea del mensaje de entrega y que estaba enjugando el cambio-Id, dándome así una nueva.

+0

¿Está seguro de que el ChangeId está en el último párrafo del mensaje de entrega? Eche un vistazo a: [ChangeId] (http: //gerrit.chromium.org/gerrit/Documentation/user-changeid.html) – vquintans

+0

Mmmm, acabo de leer su pregunta :-) y sí, el -m es un error típico. – vquintans

Respuesta

21

cometer-msg trabajo gancho de esa manera:

  1. Compruebe si tiene cambio-id en el mensaje de confirmación.
  2. Si no, genera uno.

Si escribe git commit --amend y edita el mensaje de confirmación, todavía tiene el ID de cambio anterior (es bueno).

Pero si escribe git commit --amend -m "...." ha eliminado change-id, por lo que gerrit genera uno nuevo.

Regla de un pulgar: No utilice --amend -m con gerrit.

+0

Si realmente quisiera, podría escribir un gancho para preparar-comprometer-msg que arrancaría el changeid y luego lo volvería a poner. – forivall

+2

¡Yikes! encontré esto demasiado tarde :) – mlvljr

+0

--ammend y -m do work ... solo tienes que acordarme de un 'git rebase --interactive' antes de empujar - para limpiar cosas. Y, por supuesto, debes asegurarte de no cambiar el ID de cambio cuando lo hagas ;-) – GhostCat

1

Si git commit --amend o git commit --amend -m "...." no ayuda y gerrit todavía se queja sobre la falta del identificador de cambio. (Esto sucede debido a problemas de red en su mayoría)

Así es como lo tengo resuelto (se aseguró de que había aplicado el gancho commit-msg, en el directorio padre del directorio desprotegido reference):

  1. Stash the Changes usando git stash.
  2. Usado gitk & para volver a establecer la base de datos con el cambio a la confirmación anterior. enter image description here
  3. Luego, extraiga y rebase desde Repo git pull --rebase.
  4. Luego aplique los cambios ocultos usando git stash apply, reference. Resolver Conflictos de Fusión si alguno usa git mergetool.
  5. reiteraron en el cambio de nuevo utilizando git commit o git commit --amend, esto genera un nuevo cambio-Id
  6. empujar los cambios en rama en el repositorio usando git push ... comando.

No es cuestión similar alrededor, así for reference

Cuestiones relacionadas