Gerrit erreur lors du Changement de l'Id dans des messages de validation sont manquants
J'ai créer une succursale dans le dépôt distant et fait quelques révisions sur cette branche.
Maintenant, je veux fusionner la branche à distance pour la télécommande maître.
Fond suit sont mes opérations:
- la caisse de la succursale
- checkout master
- de fusion de la branche et de fixer la fusion des erreurs
- commettre
- push origin TÊTE:refs/pour/master
Mais obtenez des messages d'erreur sur la 5e étape:
remote: Resolving deltas: 0% (0/12)
remote: ERROR: missing Change-Id in commit message
...
remote: Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a
To ssh://[email protected]:29418/hello_git
! [remote rejected] HEAD -> refs/for/master (missing Change-Id in commit message)
- il suffit de faire comme git promot:
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 user@host:hooks/commit-msg ${gitdir}/hooks/
puisgit commit --amend --no-edit
.
Vous devez vous connecter pour publier un commentaire.
Vérifier si vos commits ont
Change-Id: ...
dans leurs descriptions. Chaque livraison doit avoir.Si non, utiliser
git rebase -i
à reformuler les messages de validation et d'ajouter bon Changement-Id (habituellement, c'est un SHA1 de la première version de la revue commettre).Pour l'avenir, vous devez installer commit hook, qui ajoute automatiquement les Changements nécessaires,-Id.
Exécuter
scp -p -P 29418 username@your_gerrit_address:hooks/commit-msg .git/hooks/
dans le répertoire de dépôtou de les télécharger à partir de
http://your_gerrit_address/tools/hooks/commit-msg
et de copie .git/hooksgit log
,mais toujours obtenir la même erreur.Change-Id: I<your_commit_sha-1>
à la fin du message de commit. Les détails peuvent être trouvés dans la documentation: liengit rebase -i
- comment l'utiliser? Créer un nouveau vide branche avant de le faire? Si j'ai déjà installécommit-msg
crochet, pourrais-je fairegit rebase
à répéter toutes les modifications ajoutChange-Id:
automatiquement à chaque message de commit?Essayez ceci:
Puis copiez et collez le
Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a
à la fin du fichier.De l'enregistrer et de le pousser encore!
Si vous avez besoin d'ajouter de Modifier l'Id de multiples s'engage, vous pouvez télécharger le crochet de votre Gerrit serveur et d'exécuter ces commandes pour ajouter le Changement-les Id de tous les commits qui ont besoin à la fois. L'exemple ci-dessous résout tous les commits sur votre branche courante qui n'ont pas encore été poussé à l'amont de la branche.
readlink -f
ne fonctionne pas sur mac.@{u}
est un moyen rapide de référence en amont de la direction générale, vous êtes suivi et devrait être le pousser à. Si vous n'êtes pas suivi en amont de la branche pour une raison quelconque, vous pouvez utiliser la pleine ref nom à la place de@{u}
au lieu de cela, commeorigin/foo
. Vous pouvez également définir vos amont à l'aide de la commande fournie par Git, commegit branch -u origin/foo
.@{u}..HEAD
est simplement préciser la gamme des s'engage à les réécrire, de sorte que vous pouvez utiliser n'importe quel format que vous souhaitez spécifier une plage.Found nothing to rewrite
. Comment le modifier pour ajouterChange-Id
à chaque message de commit dans mon cas: stackoverflow.com/q/52321292/630169. Merci!C'est parce que Gerrit est configuré pour exiger le Changement-Id dans les messages de validation.
http://gerrit.googlecode.com/svn-history/r6114/documentation/2.1.7/error-missing-changeid.html
Vous devez changer les messages de chaque livraison que vous avez poussé à inclure le changement d'identification ( à l'aide de
git filter-branch
) et ensuite pousser.Vous pourriez être un admin de faire un push directement dans
refs/changes/<change_number>
.Par exemple, une fois une validation sans Modification-Id a débarqué dans la Subversion, vous sortez de la Subversion à l'aide de git-svn, et que vous souhaitez archiver un Gerrit nouveau jeu de patches dans un Gerrit changement.
Si oui, vous pouvez aller dans les paramètres de projet page (http://[installation-path]/#/admin/projets/%5Bproject-id%5D) et modifier temporairement "Exiger le Changement de l'Id dans le message de validation" de la valeur à False.
N'oubliez pas par la suite modifier à Hériter ou de Vrai!
Vérifier votre repo git avant de s'engager
si ce fichier n'est pas présent à cet endroit, alors vous obtiendrez ce message d'erreur "manque de Changement de l'Id dans le message de validation" .
Pour résoudre cela il suffit de copier coller le commit hook dans .git dossier.
Vous devez suivre au-dessous de 2 étapes instructions:
[Question] distance: Astuce: Pour insérer automatiquement le Changement de l'Id, installer le crochet:
1)
gitdir=$(git rev-parse --git-dir);
2)
scp -p -P 29418 <username>@gerrit.xyz.se:hooks/commit-msg ${gitdir}/hooks/
normalement $gitdir = ".git". Vous avez besoin de mettre à jour le nom d'utilisateur et le Gerrit lien.
1) gitdir=$(git rev-parse --git-dir);
un) je ne sais pas comment faire pour exécuter l'étape 1 dans windows, donc sauté et ont utilisé le chemin codé en dur dans
step 2 scp -p -P 29418 <username>@gerrit.xyz.se:hooks/commit-msg .git/hooks/
b) Dans le cas où vous obtenez l'erreur ci-dessous, créez manuellement des "crochets" - répertoire dans le répertoire .git dossier
c) si vous avez des sous-module disons-le, "XX", alors vous devez répéter l'étape 2, il y a aussi bien et en ce moment remplacer ${gitdir} avec qui submodules chemin
d) Dans le cas de la scp n'est pas reconnu par windows donner le chemin complet de la scp
e) .git dossier est présent dans votre projet repo et c'est dossier caché
J'ai eu ce message d'erreur trop.
et ce qui me fait penser qu'il est utile de donner une réponse ici, c'est que la réponse de @Rafał Rawicki est une bonne solution dans certains cas, mais pas pour toutes les circonstances.
exemple que j'ai rencontré:
solution:
Nous avons résolu ce problème ce matin par re-clonage de référentiel et de ré-appliquer les changements. C'est la façon la plus simple de re-synchroniser votre copie locale avec Gerrit. Comme toujours, nous avons créé d'abord une sauvegarde.
Bien qu'il existe un certain nombre d'autres sauvagement compliqué solutions, souvent avantageux de prendre une approche simple pour éviter de faire empirer les choses.
sous mon .git/hooks dossier, quelques exemples de fichiers sont manquants. commit-msg,post-commit.de l'échantillon,après mise à jour.l'échantillon...l'ajout de ces fichiers résolu mon changement d'identification question manquante.
Cela peut aussi arriver si vous avez cette restriction:
et vous faites comme moi: écrire un message de commit en commençant par "#" .....
J'ai eu la même erreur, mais j'ai déjà eu l'
commit-msg
et ne lerebase
et tout et tout. Très bête erreur si 😀