web-dev-qa-db-fra.com

Gerrit Change a le statut: Soumis, Fusionner en attente, comment le résoudre?

Le système Gerrit n’est utilisé que par plusieurs personnes. Une fois la modification A effectuée et son statut: "Soumis, Fusionner en attente". La liste des modifications dans la page Web "ouverte". J'ai aussi remarqué que ce changement dépendait d'un autre changement B (dont le statut est abandonné).

  1. Comment faire figurer A sur la page Web "Fusionnée"?
  2. Comment faire disparaître B, alors A n'a plus de dépendance à B?
16
gemfield

Si le changement A a une dépendance sur B, alors A ne peut pas être fusionné avant que B ne soit fusionné. Puisque vous avez abandonné B, Gerrit ne fusionnera pas automatiquement A.

Ce que vous devrez faire est de modifier A (peut-être en utilisant git rebase) afin qu’il ne dépende plus de B, puis renvoyez la modification à Gerrit.

22
Greg Hewgill

FYI. J'ai eu le même problème de "Soumis, Fusionner en attente" lorsque l'utilisateur a appuyé deux fois sur Soumettre sur la même page (elle a double-cliqué sur le bouton d'envoi). C'est arrivé dans Gerrit 2.11.

Erreur dans le journal ressemble à

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:     Duplicate entry '5173-2-1' for key 'PRIMARY'
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:57)

Avant de soumettre, il n'y avait qu'un seul commit (changements de code). Mais après avoir appuyé deux fois, il y a 2 commits. Le second est avec le nouveau message de validation et le statut "Soumis, Fusionner en attente".

Quand j'ai supprimé toutes les informations sur le deuxième commit:

$ ssh -p 29418 admin@machine gerrit gsql
gerrit> delete from `patch_set_approvals` where change_id=5173 and patch_set_id=2;
gerrit> delete from `patch_set_ancestors` where change_id=5173 and patch_set_id=2;
gerrit> delete from `patch_sets` where change_id=5173 and patch_set_id=2;

il est marqué comme intégré par l'utilisateur Gerrit Code Review.

2
Maxim Suslov

Ce que Greg affirme est correct, une fusion automatique n’est pas possible. Il est possible d’intégrer uniquement A en utilisant l’option de "sélection de cerises" de Gerrit (essentiellement une fusion manuelle). Malheureusement, cela ne supprimera pas le statut "Fusion en attente" de Gerrit. J'écris habituellement un commentaire à cet effet, si le contributeur ne peut pas être dérangé pour rebase.

1
jastram

J'ai eu le même problème de "Soumis, Fusionner en attente" sans aucune dépendance ou conflit. La solution rapide consiste à parcourir tous les éléments ouverts et à voir s’il existe une autre validation en état "Soumis, Fusionner en attente". Si oui, abandonnez-les tous.

Puis git commit --amend -m "vos commentaires originaux" et git Push à nouveau, cette fois, vous pourrez fusionner votre correctif.

0
dyu

J'ai rencontré ce problème parce que j'ai poussé une balise vers le nom de la branche:

git tag x.y.z HEAD
git Push -f Origin x.y.z:master

Donc mieux Poussez une branche à la place,

git tag x.y.z HEAD
git Push -f Origin HEAD:master

De cette façon, gerrit est capable de fusionner à nouveau mes correctifs en attente.

0
RzR

Gars. Si vous utilisez une balise, vous pouvez rencontrer un bogue. Ce bogue avait été corrigé dans Gerrit V2.7.

Référence de bogue: https://groups.google.com/forum/#!topic/repo-discuss/tLVMibfzroc

0
velly.zhou
  1. Abandonnez votre Push de Gerrit.

Sur le terminal:

  1. journal git
  2. git reset HEAD ~ n

où n est le nombre de validations du début dans la liste des validations générées sur le terminal à partir de l'étape 2 

  1. git add.
  2. git commit -m "Votre message"
  3. git Push

maintenant, fusionnez votre engagement sur Gerrit.

0
Venu Gopal Tewari