Error de Gerrit cuando falta el Id de cambio en los posts de confirmación

Configuré una twig en el repository remoto y realicé algunas confirmaciones en esa twig. Ahora quiero fusionar la twig remota con el maestro remoto.

Básicamente sigue son mis operaciones:

  1. caja registradora
  2. maestro de pago
  3. fusionar twig y corregir errores de fusión
  4. cometer
  5. origen de inserción HEAD: refs / for / master

Pero recibe posts de error en el 5º paso:

remote: Resolving deltas: 0% (0/12) remote: ERROR: missing Change-Id in commit message ... remote: Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a To ssh://prc@test.gerrit.xxx.com:29418/hello_git ! [remote rejected] HEAD -> refs/for/master (missing Change-Id in commit message) 

Verifica si tus commits tienen Change-Id: ... en sus descripciones. Cada compromiso debería tenerlos.

Si no, use git rebase -i para git rebase -i a git rebase -i los posts de confirmación y agregar Change-Ids apropiados (generalmente esto es un SHA1 de la primera versión de la confirmación revisada).

Para el futuro, debe instalar commit hook, que agrega automáticamente el Change-Id requerido.

Ejecute scp -p -P 29418 username@your_gerrit_address:hooks/commit-msg .git/hooks/ en el directory del repository o descárguelos de http://your_gerrit_address/tools/hooks/commit-msg y cópielos en .git / hooks

Prueba esto:

 git commit --amend 

Luego, copie y pegue Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a al final del file.

Guárdalo y empújalo de nuevo!

Si necesita agregar Change-Id a múltiples commits, puede download el gancho desde su server de Gerrit y ejecutar estos commands para agregar los Change-Ids a todas las confirmaciones que los necesitan a la vez. El siguiente ejemplo corrige todos los commits en su twig actual que aún no se han enviado a la twig upstream.

 tmp=$(mktemp) hook=$(readlink -f $(git rev-parse --git-dir))/hooks/commit-msg git filter-branch -f --msg-filter "cat > $tmp; \"$hook\" $tmp; cat $tmp" @{u}..HEAD 

Es porque Gerrit está configurado para requerir Change-Id en los posts de confirmación.

http://gerrit.googlecode.com/svn-history/r6114/documentation/2.1.7/error-missing-changeid.html

Tienes que cambiar los posts de cada confirmación que estás presionando para include el ID de cambio (usando git filter-branch ) y solo luego presionar.

Es posible que sea un administrador que realice una inserción única directamente en refs/changes/<change_number> .

Por ejemplo, una vez que un commit sin Change-Id aterrizó en Subversion, lo extrae de Subversion usando git-svn, y le gustaría archivarlo como un parche de Gerrit en un cambio de Gerrit.

Si es así, puede ir a la página de configuration del proyecto ( http: // [ruta de installation] / # / admin / projects / [id del proyecto] ) y cambiar temporalmente el valor "Requerir ID de cambio en post de confirmación" a Falso.

¡No olvides volver a cambiarlo a Henetworkingar o Verdadero!

Recibí este post de error también.

y lo que me hace pensar que es útil dar una respuesta aquí es que la respuesta de @ Rafał Rawicki es una buena solución en algunos casos, pero no para todas las circunstancias. ejemplo que conocí:

 1.run "git log" we can get the HEAD commit change-id 2.we also can get a 'HEAD' commit change-id on Gerrit website. 3.they are different ,which makes us can not push successfully and get the "missing change-id error" 

solución:

 0.'git add .' 1.save your HEAD commit change-id got from 'git log',it will be used later. 2.copy the HEAD commit change-id from Gerrit website. 3.'git reset HEAD' 4.'git commit --amend' and copy the change-id from **Gerrit website** to the commit message in the last paragraph(replace previous change-id) 5.'git push *' you can push successfully now but can not find the HEAD commit from **git log** on Gerrit website too 6.'git reset HEAD' 7.'git commit --amend' and copy the change-id from **git log**(we saved in step 1) to the commit message in the last paragraph(replace previous change-id) 8.'git push *' you can find the HEAD commit from **git log** on Gerrit website,they have the same change-id 9.done 

Resolvimos este problema esta mañana al volver a clonar el repository y volver a aplicar los cambios. Esta es la forma más sencilla de volver a sincronizar su copy local con Gerrit. Como siempre, creamos una copy de security primero.

Aunque hay una serie de otras soluciones tremendamente complicadas, a menudo es ventajoso adoptar un enfoque simple para evitar empeorar las cosas.

Verifica tu repository git antes de comprometerte

 gitrepo/.git/hooks/commit-msg 

si este file no está presente en esa location, entonces obtendrá este error "Falta ID de cambio en post de confirmación".

Para resolver esto solo copie y pegue el gancho commit en la carpeta .git.

Esto también puede suceder si tienes esta restricción:

Por favor ingrese el post de confirmación para sus cambios. Las líneas que comienzan con '#' se ignorarán y un post vacío abortará la confirmación.

y le gusto: escriba un post de confirmación que empiece con "#" …..

Tuve el mismo error, pero ya tenía commit-msg e hice la rebase y todo. Error muy tonto sin embargo: D