Dokumentasi untuk Gerrit, khususnya bagian "Perubahan push" , menjelaskan bahwa Anda mendorong ke " refs/for/'branch'
ref ajaib menggunakan alat klien Git".
Gambar berikut diambil dari Pengantar ke Gerrit . Ketika Anda mendorong ke Gerrit, Anda melakukannya git push gerrit HEAD:refs/for/<BRANCH>
. Ini mendorong perubahan Anda ke area pementasan (dalam diagram, "Perubahan Tertunda"). Gerrit sebenarnya tidak memiliki cabang yang dipanggil <BRANCH>
; itu terletak pada klien git.
Secara internal, Gerrit memiliki implementasi sendiri untuk tumpukan Git dan SSH. Ini memungkinkannya untuk memberikan refs/for/<BRANCH>
referensi "magis" .
Ketika permintaan push diterima untuk membuat ref di salah satu ruang nama ini Gerrit melakukan logikanya sendiri untuk memperbarui database, dan kemudian berbohong kepada klien tentang hasil operasi. Hasil yang sukses menyebabkan klien percaya bahwa Gerrit telah menciptakan referensi, tetapi dalam kenyataannya Gerrit belum menciptakan referensi sama sekali. [ Tautan - Gerrit, "Detail Berpasir" ].
Setelah tambalan yang berhasil (yaitu tambalan telah didorong ke Gerrit, [memasukkannya ke dalam area pementasan "Pending Changes], ditinjau, dan peninjauan telah berlalu), Gerrit mendorong perubahan dari" Pending Changes "ke dalam" Repositori Resmi ", menghitung cabang mana yang mendorongnya berdasarkan sihir yang dilakukannya ketika Anda mendorong ke refs/for/<BRANCH>
. Dengan cara ini, tambalan yang berhasil ditinjau dapat ditarik langsung dari cabang yang benar Authoritative Repository
.