Código de cambio faltante en el pie de página del post de compromiso para git-review

He clonado un repository vacío de Gerrit. Creé una nueva twig llamada "new_files" y la networkingicé hacia arriba. Cuando bash ejecutar git-review, obtengo un error similar:

The outstanding commits are: 6d5d8ac (HEAD, new_files) Change-Id: If528f4dd29638e8c2a8d18a624a289afe390e6e2 cc81223 Merge branch 'master' of UPSTREAM into new_files d787290 (upstream/master) rename properties to dat 32d76cf rename properties to dat 73d8e05 rename data to properties e46416e Add file. 8bfcab5 referencing properties e8b03fc rename data Do you really want to submit the above commits? Type 'yes' to confirm, other to cancel: yes 2016-11-15 12:09:54.407178 Running: git branch --color=never 2016-11-15 12:09:54.411090 Running: git log HEAD^1..HEAD Using local branch name "new_files" for the topic of the change submitted 2016-11-15 12:09:54.416984 Running: git push gerrit HEAD:refs/publish/master/new_files remote: Processing changes: refs: 1, done remote: ERROR: missing Change-Id in commit message footer remote: remote: Hint: To automatically insert Change-Id, install the hook: remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 user@:hooks/commit-msg ${gitdir}/hooks/ remote: And then amend the commit: remote: git commit --amend remote: To ssh:// ! [remote rejected] HEAD -> refs/publish/master/new_files (missing Change-Id in commit message footer) error: failed to push some refs to 'ssh://' 2016-11-15 12:09:54.655379 Running: git rev-parse --show-toplevel --git-dir 

Intenté instalar el gancho y usar la enmienda, pero no hace la diferencia.

Estaría tentado de sugerir que el enganche commit no esté instalado correctamente. Además, sugeriría eliminar la git review de la ecuación hasta que pueda get un git commit --amend trabajando por su count ( working en este caso significa que la identificación de cambio aparece en el post de confirmación después de una confirmación de modificación).

Aquí se explica cómo solucionar el enganche del post de confirmación: (He notado que una gran parte de lo que sigue a continuación supone que la secuencia de commands commit-msg hook es una secuencia de commands shell. Avíseme si esta suposition es incorrecta)

Nivel 1: Lo básico

  1. Compruebe que el enganche del post de confirmación esté instalado donde espera que esté: $ ls -la .git/hooks/commit-msg -rwxr-xr-x 1 az staff 4407 15 Nov 19:00 .git/hooks/commit-msg
    Observe el tamaño distinto de cero del enlace del post de confirmación, así como el hecho de que el script ('-rwx') es ejecutable.

  2. Intente ejecutar el script commit-msg por sí mismo haciendo .git/hooks/commit-msg . Esto debería fallar con a: sed: : No such file or directory
    lo cual está bien y se espera, ya que el script hook se supone que está siendo ejecutado por git y no por sí mismo. Mantenga la calma y continúe.

  3. Agregue lo siguiente en la parte superior de .git/hooks/commit-msg (justo antes de unset GREP_OPTIONS ):
    echo "Executing basename" $ ​​0 " with args: $@"

  4. Ahora intenta hacer un git commit --amend , para mí la salida con un gancho instalado correctamente es la siguiente:
    $ git commit -m "Test commit-msg hook" Executing commit-msg with args: .git/COMMIT_EDITMSG

Si no ve el resultado esperado como se publicó anteriormente en ninguno de los pasos, entonces su script de gancho no se instaló correctamente. Puede anotar manualmente el guión de gancho en el directory .git/hooks y comprobar que sea ejecutable por el usuario correcto (el primero es el command git en su salida).

Nivel 2: pidiendo a GIT que sea un poco más detallado

GIT revelará un poco más si solo lo preguntas bien. Tenga en count que esto también muestra el script hook que se está ejecutando:

$ GIT_CURL_VERBOSE=1 GIT_TRACE=2 git commit --amend 19:13:26.836236 git.c:349 trace: built-in: git 'commit' '--amend' 19:13:27.025894 run-command.c:336 trace: run_command: '/usr/bin/vim' '/Users/some-git-dir/.git/COMMIT_EDITMSG' 19:13:27.026454 run-command.c:195 trace: exec: '/usr/bin/vim' '/Users/some-git-dir/.git/COMMIT_EDITMSG' 19:13:28.497117 run-command.c:336 trace: run_command: '.git/hooks/commit-msg' '.git/COMMIT_EDITMSG' Executing commit-msg with args: .git/COMMIT_EDITMSG 19:13:28.504150 git.c:349 trace: built-in: git 'stripspace' 19:13:28.507498 git.c:349 trace: built-in: git 'config' '--bool' '--get' 'gerrit.createChangeId' [some-branch-blah 1f205cb] Test commit-msg hook Date: Tue Nov 15 19:00:59 2016 +0000 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 a

Nivel 3: enlace de debugging como un script de shell

Dudo que sea el guión mismo el que necesite ser examinado, sin embargo, si ese fuera el caso, entonces el siguiente paso es hacer lo que normalmente haría para depurar scripts de shell (ya que eso es lo que el commit-msg pnetworkingeterminado) gancho es).

Comenzaría cambiando la línea she-bang de #!/bin/sh a #!/bin/sh -xv y luego me deleitaría con la salida uber-verbose, ya que el script se ejecuta cuando haces un git commit --amend