2016-10-11 52 views
13

Gerrit'in git taahhütlerini (belki de update kancasını kullanarak) aldığını ve akran değerlendirmesi yapılıncaya kadar sahte bir yere yazdığını anlıyorum, ancak bu süreç teknik uygulama açısından tam olarak nasıl çalışıyor? Ve hangi Git komutları yer alıyor?Gerrit sunucusu nasıl çalışır? Teknik ayrıntıları mı arıyorsunuz?

+1

Gerrit sistem tasarım dökümanları ilginizi çekebilir - https://gerrit-review.googlesource.com/Documentation/dev-design.html - kaynak burada da mevcuttur https://gerrit.googlesource.com/ gerrit / – Robbie

cevap

2

Kullanıcı tarafından kullanılan refs/for/<branch ref> başvuru numarasına başvuruda bulunabilirsiniz. when pushing new commits.

git push ssh://[email protected]:29418/projectname HEAD:refs/for/branch 

Ör:

inceleme için yeni değişiklikleri oluşturmak için, herhangi Git istemci aracını kullanarak projenin büyülü refs/for/'branch' ref itmek john.doe git.example.com Gerrit sunucuda barındırılan projenin kernel/common ait experimental dalı için yeni değişiklikler, upload git itmek kullanabilirsiniz:

git push ssh://[email protected]:29418/kernel/common HEAD:refs/for/experimental 

Her yeni bir değişiklik çevrilecektir git push istemci tarafından yüklenen işlemek sunucuya kayıt.
İstemcinin durum iletileri aksini belirtse bile, uzaktan ref refs/for/experimental aslında Gerrit tarafından oluşturulmaz.


Teknik olarak bu cmd-receive-pack tarafından yönetilmektedir. 'Git push' olarak çağrıldığında

ve ile 'git push' ucundan beslenen bilgi projenin deposunu günceller.

O Git receive-pack protocol kullanarak SSH üzerinden yükleme değiştirmek aldığı, gerrit/sshd/commands/Receive.java tarafından uygulanmaktadır.