Réponses:
La documentation de Gerrit, en particulier la section "Push changes" , explique que vous poussez vers le "magical refs/for/'branch'
ref using any Git client tool".
L'image suivante est tirée de l'Intro to Gerrit . Lorsque vous poussez vers Gerrit, vous le faites git push gerrit HEAD:refs/for/<BRANCH>
. Cela pousse vos modifications dans la zone de préparation (dans le diagramme, «Modifications en attente»). Gerrit n'a pas réellement de branche appelée <BRANCH>
; il ment au client git.
En interne, Gerrit a sa propre implémentation pour les piles Git et SSH. Cela lui permet de fournir les refs/for/<BRANCH>
références "magiques" .
Lorsqu'une demande push est reçue pour créer une référence dans l'un de ces espaces de noms, Gerrit exécute sa propre logique pour mettre à jour la base de données, puis ment au client sur le résultat de l'opération. Un résultat réussi amène le client à croire que Gerrit a créé la référence, mais en réalité, Gerrit n'a pas du tout créé la référence. [ Lien - Gerrit, "Gritty Details" ].
Après un correctif réussi (c'est-à-dire, le correctif a été poussé vers Gerrit, [en le plaçant dans la zone de préparation "Modifications en attente"], revu et la révision est passée), Gerrit pousse le changement de "Modifications en attente" dans le " Référentiel faisant autorité ", calculant dans quelle branche le pousser en fonction de la magie qu'il a exercée lorsque vous l'avez poussé refs/for/<BRANCH>
. De cette façon, les correctifs examinés avec succès peuvent être extraits directement des branches correctes du Authoritative Repository
.
Afin d'éviter d'avoir à spécifier complètement la commande git push, vous pouvez également modifier votre fichier de configuration git:
[remote "gerrit"]
url = https://your.gerrit.repo:44444/repo
fetch = +refs/heads/master:refs/remotes/origin/master
push = refs/heads/master:refs/for/master
Maintenant, vous pouvez simplement:
git fetch gerrit
git push gerrit
C'est selon Gerrit
remote.origin.push
au lieu d'avoir à le taper / le coller à chaque fois!
git fetch
et git push
avec la config @DavidDoria mentionnée ci-dessus.