Gerrit dokümantasyonu, özellikle "Değişiklikleri itin" bölümü, " refs/for/'branch'
herhangi bir Git istemci aracını kullanarak sihirli ref'e " ittiğinizi açıklar .
Aşağıdaki görüntü Gerrit'e Giriş bölümünden alınmıştır . Gerrit'e ittiğin zaman yaparsın git push gerrit HEAD:refs/for/<BRANCH>
. Bu, değişikliklerinizi aşama alanına (diyagramda "Bekleyen Değişiklikler") iter . Gerrit'in aslında adında bir şubesi yok <BRANCH>
; git istemcisine yalan söylüyor.
Dahili olarak, Gerrit'in Git ve SSH yığınları için kendi uygulaması vardır. Bu, "sihirli" refs/for/<BRANCH>
referanslar sağlamasına izin verir .
Bu ad alanlarından birinde bir ref oluşturmak için bir push isteği alındığında Gerrit, veritabanını güncellemek için kendi mantığını gerçekleştirir ve ardından işlemin sonucu hakkında müşteriye yalan söyler. Başarılı bir sonuç, müşterinin ref'i Gerrit'in yarattığına inanmasına neden olur, ancak gerçekte Gerrit ref'i hiç yaratmamıştır. [ Link - Gerrit, "Cesur Ayrıntılar" ].
Başarılı bir yamadan sonra (yani, yama Gerrit'e gönderildikten, ["Bekleyen Değişiklikler" hazırlık alanına yerleştirildikten sonra gözden geçirildi ve inceleme geçildi), Gerrit değişikliği "Bekleyen Değişiklikler" den " Authoritative Repository ", ittiğinizde yaptığı sihre dayalı olarak hangi şubeye itileceğini hesaplar refs/for/<BRANCH>
. Bu şekilde, başarıyla gözden geçirilen yamalar, doğrudan Authoritative Repository
.
fatal: internal server error
ama bununla birlikteremote: SUCCESS
çelişkili mesajlar gibi görünen bir çıktı ve bazen testler başladı. Gerrit, hiçbir şey değişmeden çalışır, bazen çalışmaz. Kimsenin neler olduğunu bilmediği duygusu iyi değil