Comment modifier un commit qui a été refusé

Il se peut que qu'un de vos commits ne soit pas accepté dès la première soumission. Voici les différentes étapes pour soumettre une nouvelle version de votre commit et que ce dernier soit dans le même "change" au niveau de gerrit Imaginons que votre repository local (positionné sur la branch master) ressemble a ceci et considérons que le commit C ait été refusé.

  A---B---C---D
  # Branch master

La première chose à faire est de mettre votre repository au carré

  [$SHELL] git fetch 
  [$SHELL] git reset --hard refs/remotes/origin/master

A ce moment là, votre repository local ressemble a ceci

  A---B---D---E---F
  # Les commit E et F on été soumis entre temps par un autre développeur

Il faut maintenant récupéré le commit refusé

[$SHELL] git fetch ssh://prenom.nom@git.scilab.org:29418/scilab refs/changes/17/17/1 && git cherry-pick FETCH_HEAD
   # Vous pouvez retrouvez cette ligne de commande sur la page web
   # de codereview.scilab.org associé au commit refusé. Imaginons que
   # ce soit le 17ème changement enregistré dans gerrit, l'URL de la
   # page sera http://codereview.scilab.org/#change,17

Maintenant, votre repository a cette tête:

  A---B---D---E---F---C'
  # Un commit C' correspondant aux modifications de C a été créé 

Ok, maintenant, vous pouvez modifier votre copie locale afin de corriger ce qui n'allait pas dans le commit C

  [$SHELL] emacs builder.sce
  [$SHELL] git add builder.sce

Pour ajouter cette modification au commit incriminé, il faut utiliser la commande "git commit --amend"

  [$SHELL] git commit --amend

Votre repository a désormais l'enchainement suivant:

  A---B---D---E---F---C''

Et enfin, le "git push"

  [$SHELL] git push origin master:refs/for/master

Un nouveau "patchset" pour le changement 17 a été créé. Malgré un hash différent (C <> C'), gerrit arrive a replacer C' dans le changement 17 grâce à la ligne Change-Id (qui est unique par changement) présente dans le commentaire. D'où l'importance de ne pas oublier cette ligne.

public: gerrit/faq (last edited 2011-03-30 16:18:19 by localhost)