Risposte:
La documentazione per Gerrit, in particolare la sezione "Cambia modifiche" , spiega che si spinge verso " refs/for/'branch'
ref magici usando qualsiasi strumento client Git".
L'immagine seguente è presa dall'Intro a Gerrit . Quando spingi verso Gerrit, lo fai git push gerrit HEAD:refs/for/<BRANCH>
. In questo modo le modifiche vengono apportate all'area di gestione temporanea (nel diagramma "Modifiche in sospeso"). Gerrit in realtà non ha un ramo chiamato <BRANCH>
; sta al client git.
Internamente, Gerrit ha una propria implementazione per gli stack Git e SSH. Ciò gli consente di fornire i riferimenti "magici" refs/for/<BRANCH>
.
Quando viene ricevuta una richiesta push per creare un riferimento in uno di questi spazi dei nomi, Gerrit esegue la propria logica per aggiornare il database e quindi si trova al client sul risultato dell'operazione. Un risultato di successo fa credere al cliente che Gerrit abbia creato l'arbitro, ma in realtà Gerrit non ha creato l'arco. [ Link - Gerrit, "Dettagli grintosi" ].
Dopo che una patch ha avuto esito positivo (ovvero, la patch è stata trasferita a Gerrit, [inserendola nell'area di gestione temporanea "In attesa di modifiche"], rivista e la revisione è passata), Gerrit inserisce la modifica da "Modifiche in sospeso" in " Repository autorevole ", che calcola in quale ramo spingerlo in base alla magia che ha fatto quando hai spinto refs/for/<BRANCH>
. In questo modo, le patch riviste correttamente possono essere estratte direttamente dai rami corretti di Authoritative Repository
.
Per evitare di dover specificare completamente il comando git push, puoi in alternativa modificare il tuo file di configurazione 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
Ora puoi semplicemente:
git fetch gerrit
git push gerrit
Questo è secondo Gerrit
remote.origin.push
invece di doverlo digitare / incollare ogni volta!
git fetch
e git push
con la configurazione @DavidDoria di cui sopra.