64 votes

Erreur de Gerrit lorsque les Change-Id sont manquants dans les messages de commit

J'ai créé une branche dans le dépôt distant et j'ai effectué quelques commits sur cette branche. Maintenant, je veux fusionner la branche distante avec le master distant.

Voici essentiellement mes opérations:

  1. checkout branch
  2. checkout master
  3. merge branch and fix merging errors
  4. commit
  5. push origin HEAD:refs/for/master

Mais je reçois des messages d'erreur à l'étape 5 :

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)

4 votes

Il suffit de faire comme suit dans git : gitdir=$(git rev-parse --git-dir); scp -p -P 29418 user@host:hooks/commit-msg ${gitdir}/hooks/ puis git commit --amend --no-edit.

0 votes

@Galley, je pense que c'est la solution la plus simple pour le problème mentionné ci-dessus. Je voulais confirmer avec SO à partir de ce que git suggère dans le terminal. Ça marche pour moi.

2voto

Mahi Points 1060

Vérifiez votre dépôt git avant de valider

gitrepo/.git/hooks/commit-msg

si ce fichier n'est pas présent à cet endroit, vous obtiendrez cette erreur "missing Change-Id in commit message".

Pour résoudre cela, il suffit de copier-coller le crochet de validation dans le dossier .git.

2voto

Smiley Points 118

Vous devez suivre les instructions ci-dessous en 2 étapes :

[Problème] à distance : Astuce : Pour insérer automatiquement le Change-Id, installez le crochet :

1) gitdir=$(git rev-parse --git-dir);

2) scp -p -P 29418 @gerrit.xyz.se:hooks/commit-msg ${gitdir}/hooks/

normalement $gitdir = ".git". Vous devez mettre à jour le nom d'utilisateur et le lien Gerrit.

2voto

Ravi Yadav Points 133

1) gitdir=$(git rev-parse --git-dir);

2) scp -p -P 29418 @gerrit.xyz.se:hooks/commit-msg ${gitdir}/hooks/

a) Je ne sais pas comment exécuter l'étape 1 sous Windows donc je l'ai sautée et j'ai utilisé le chemin codé en dur dans étape 2 scp -p -P 29418 @gerrit.xyz.se:hooks/commit-msg .git/hooks/

b) En cas d'erreur ci-dessous, créez manuellement le répertoire "hooks" dans le dossier .git

protocol error: expected control record

c) Si vous avez un submodule appelé "XX", vous devez répéter l'étape 2 également là-bas et cette fois-ci remplacer ${gitdir} par le chemin de ce submodule

d) Si scp n'est pas reconnu par Windows, donnez le chemin complet de scp

"C:\Program Files\Git\usr\bin\scp.exe"

e) Le dossier .git est présent dans votre dépôt de projet et c'est un dossier caché

0voto

schin chan Points 51

Sous mon dossier .git/hooks, certains fichiers d'exemple étaient manquants. comme commit-msg, post-commit.sample, post-update.sample... ajouter ces fichiers a résolu mon problème de changement manquant.

0voto

fflores Points 21

Par défaut, Gerrit empêchera la soumission pour examen si aucun Change-Id n'est fourni. Change-Id est ajouté au pied du message de validation côté client. Vous devez télécharger et configurer le script commit-msg au début. Vous pouvez trouver plus d'informations dans la documentation de Gerrit.

git clone ssh://gerrithost:29418/RecipeBook.git RecipeBook
scp -p -P 29418 gerrithost:hooks/commit-msg RecipeBook/.git/hooks/
chmod u+x .git/hooks/commit-msg

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X