Zaman kazanmak ve teknoloji meraklısıysanız, bunun yerine çok kısa nasıl yapılır kılavuzunu kullanın: Gerrit/Eğitim/tl;dr
Uzman kullanıcılar için Gerrit/Advanced usage ek belgelere sahiptir.
Yalnızca Gerrit ile oynamak ve "gerçek" bir Wikimedia yazılım projesi için bir yama yazmak istemiyorsanız, bunun yerine Gerrit test örneğimizi kullanın.
Bu öğreticide, kutudaki dolar işareti ile başlamak için aşağıdaki gibi komutlar: command. $ önekini girmeyin.
Komut ayrıca kendinizi değiştirmeniz gereken bir değişken de içeriyorsa, değişken kırmızı renkte gösterilir: command variable.
Contents
1 Git nedir?
2 Gerrit nedir?
3 Wikimedia geliştirici hesabı oluşturun
4 Git'i kurun
4.1 Kurulum
4.1.1 Linux
4.1.2 Windows
4.1.3 macOS
4.2 Git'i yapılandırın
5 Gerrit'te SSH Anahtarlarını Ayarla
5.1 Yeni bir SSH anahtarı oluşturun
5.2 SSH Genel anahtarınızı kopyalayın
5.3 Gerrit hesabınıza SSH Genel anahtarı ekleyin
5.4 Git ile kullanmak için SSH Özel anahtarı ekleyin
5.5 Git'i kullanarak kod indirin
6 Gerrit ile çalışmaya hazırlanın
6.1 git-review yükleme
6.1.1 Linux
6.1.2 Windows
6.1.3 macOS
6.2 git-review yapılandırma
6.3 git-review ayarlama
7 Bir yama gönderin
7.1 Ana geliştirme dalını güncelleyin
7.2 Bir dal oluştur
7.3 Değişikliklerinizi yapın
7.4 Bir taahhüt için değişikliklerinizi yapın
7.5 Aşamalı değişikliklerinizi yapın
7.6 Taahhüdünüzü Gerrit'e aktarmaya hazırlanın
7.7 Taahhüdünüzü Gerrit'e aktarın
7.8 Değişikliği / Sonraki Adımları Görüntüleyin
8 Diğer yaygın durumlar
8.1 Rebase ile birkaç taahhüdü tek bir taahhütte toplayın
8.2 Değişikliği düzeltme (kendinizin veya başkasının)
8.3 Master'dan farklı bir dalına aktarın
9 Web arayüzü üzerinden düzenleme
10 Gerrit & Vagrant
11 Kod Gerrit'te nasıl incelenir
11.1 Birleştirmeden önce inceleyin
11.2 Kim inceleyebilir? Gerrit proje sahipleri
11.3 Gerrit'te kod hakkında yorum yapma, inceleme ve birleştirme nasıl yapılır
11.3.1 Kodu görüntüleme ve yorum yapma
11.3.2 Yama kümelerini karşılaştırma
11.3.3 Resmi olarak incelemek ve kodu birleştirmek veya reddetmek
12 Sorun giderme
13 Ayrıca bakınız
13.1 Üçüncü taraf Git kılavuzları
14 Tarihsel belgeler
15 Kaynakça
Git nedir?
Git ücretsiz ve açık bir kaynaktır dağıtılmış sürüm kontrol sistemi. “Dağıtılmış”, deponun merkezi bir kopyası olmadığı anlamına gelir. Git ile, depoyu klonladıktan sonra, tüm dallar ve etiketli sürümler elinizin altında olacak şekilde kaynak kodunun tam olarak çalışan bir kopyasına sahip olursunuz.
Gerrit nedir?
Gerrit Git ile entegre olan ücretsiz, web tabanlı bir ortak kod inceleme aracıdır.
Temel olarak: Önerilen yazılım değişikliğinizi (Gerrit'te "changeset" olarak adlandırılır) yeni bir dal olarak gönderirsiniz. İlk sürüm ("patchset 1") henüz mükemmel değilse, o dalda ("patchset 2" vb.) daha fazla değişiklik yapabilirsiniz ("amend"). Bir yama seti bir "+2" incelemesi aldığında, kabul edilir ve kod deposunun ana dalında birleştirilir (genellikle "master" olarak adlandırılır). Birleştirme, birisi bu kod deposunu teslim aldığında veya indirdiğinde, yaptığınız değişikliğin varsayılan olarak dahil edileceği anlamına gelir.
Wikimedia geliştirici hesabı oluşturun
Henüz bir Wikimedia geliştirici hesabınız yoksa, wikitech.wikimedia.org sayfasına gidin ve bir hesap oluşturun. Aynı kullanıcı adı ve parola aşağıdaki Gerrit'te oturum açmak için kullanılacaktır.
Git'i kurun
Bu talimatlar Git'in komut satırı (terminal penceresi) aracı olarak nasıl kurulacağını açıklar. Komut satırı yerine grafik kullanıcı arabirimi (GUI) tercih ederseniz, Git projesi tarafından tutulan istemcilerin listesini denetleyin. Alternatif kurulum talimatları için resmi belgelere bakın.
Kurulum
Linux
git paketini kurmak için Linux dağıtımınızın grafiksel yazılım paketi yönetim aracını kullanın.
Git dağıtımınız tarafından paketlenmemişse, lütfen dağıtımınızın destek forumuna sorun.
Windows
Windows için Git ile https://gitforwindows.org/ üzerinden yükleyin. Bu size Git'e ek olarak bu talimatlardaki komut satırlarının çoğunun Windows üzerinde çalışmasına izin veren "Git Bash" adlı bir kabuk verir.
Windows kabuğuyla ek entegrasyon istiyorsanız, Gerrit/TortoiseGit tutorial sayfasına bakın.
macOS
Homebrew paket yöneticisini kurun ve sonra brew install git komutunu çalıştırın – Diğer paketlerin kolay güncellenmesine ve kolayca kurulmasına izin verdiği için bu önerilir.
Alternatif olarak, tek başına Git for Mac yükleyebilirsiniz.
Git'i yapılandırın
Git'i yüklediğinize göre artık kişisel bilgilerinizi yapılandırma zamanı. Bunu sadece bir kez yapmanız gerekir. Ayrıca bu komutları tekrar çalıştırarak kişisel bilgilerinizi istediğiniz zaman değiştirebilirsiniz.
Git, kullanıcının adını ve e-postasını kontrol ederek her işlemi yapanları izler. Ayrıca, bu bilgi taahhütlerinizi Gerrit hesabınızla ilişkilendirmek için kullanılır.
Kullanıcı adınızı ve e-posta adresinizi ayarlamak için aşağıdaki iki komutu girin. gerrituser ile kendi Gerrit kullanıcı adınızla değiştirin ve gerrituser@example.com ile kendi e-posta adresinizle değiştirin:
git config --global user.email "gerrituser@example.com"
git config --global user.name "gerrituser"
Git'in nasıl davrandığını kontrol eden mevcut yapılandırma değişkenlerinizi görmek için git config -l kullanın.
Gerrit'te SSH Anahtarlarını Ayarla
Bilgisayarınız ve Gerrit arasında güvenli bir bağlantı kurmak için bir SSH anahtarı kullanıyoruz. Wikimedia Güvenlik Ekibi, Ağustos 2021'den itibaren, SSH Anahtarları oluşturan kullanıcıların optimum güvenlik ve performans için ed25519 türünü kullanmasını önerir. Yepyeni bir anahtar oluşturmanız gerekip gerekmediğinden emin olmak için, sisteminizde zaten bir SSH anahtarı olup olmadığını kontrol edelim. Bu komutu bir terminalde çalıştırın:
ls ~/.ssh
Komut, (gizli) .ssh dizinindeki dosyaları listeler. Dizin sisteminizde zaten varsa ve çıkışta id_ed25519.pub adlı bir dosya listeleniyorsa, doğrudan #SHH Genel anahtarınızı kopyalayın bölümüne gidebilirsiniz.
Yeni bir SSH anahtarı oluşturun
Yeni bir SSH anahtarı oluşturmak için aşağıdaki komutu girin ve gerrituser@example.com yerine kendi e-posta adresinizi yazın. Varsayılan ayarları istiyoruz, bu nedenle anahtarı kaydetmek için bir dosya girmeniz istendiğinde, enter tuşuna basın.
ssh-keygen komutunun çıkışı
ssh-keygen -t ed25519 -C "gerrituser@example.com"
Güçlü ve benzersiz bir parola girin ve [Enter] tuşuna basın.
Parolalar neden önemlidir?
Parolalar çok güvenli değildir. Hatırlaması kolay bir tane kullanırsanız, tahmin etmesi veya brute-force daha kolaydır. Rastgele bir tane kullanırsanız, hatırlaması zordur, bu nedenle parolayı not edebilirsiniz. İkisi de çok kötü. Bu nedenle ssh anahtarlarını kullanıyorsunuz. Ancak parola olmadan bir ssh anahtarı kullanmak, temelde bu rastgele parolayı bilgisayarınızdaki bir dosyaya yazmakla aynıdır. Sürücünüze erişim sağlayan herkes, bu anahtarı kullandığınız her sisteme erişim kazanmış olur. Bu yüzden bir parola da eklemelisiniz. Anahtarı her kullanışınızda uzun bir parola girmemek için ssh-agent adında bir araç vardır. Parolanızı güvenli bir şekilde kaydedebilir. MacOS veya Linux kullanıyorsanız, hayatınızı daha da kolaylaştırmak için anahtarlarınız sistemin anahtar zincirine kaydedilebilir.
ssh-keygen komutu ~/.ssh dizininde 2 dosya oluşturacaktır:
~/.ssh/id_ed25519 : özel SSH anahtarınız (tanımlama için)
~/.ssh/id_ed25519.pub : genel SSH anahtarınız
SSH Genel anahtarınızı kopyalayın
Genel anahtar dosyanızın içeriğini (örneğin, id_ed25519.pub) panonuza kopyalayın:
Bir seçenek, ortak anahtar dosyanızı en sevdiğiniz metin düzenleyicisiyle (Notepad, TextEdit, gedit vb.) açmaktır. Metin düzenleyicinizin dosya seçici iletişim kutusunda, dosyayı bulmak için “Gizli dosyaları görüntüle”'yi açmanız gerekebilir, çünkü .ssh dizini gizlidir. Bazen "Gizli dosyaları görüntüle" seçeneği, dosya seçici iletişim kutusuna sağ tıklayarak kullanılabilir.
Diğer seçenekler:
Linux'ta, cat ~/.ssh/id_ed25519.pub çalıştırın ve çıkışı manüel olarak panoya kopyalayın.
Windows'ta, Git GUI'yi açabilir, Yardım 🡒 Anahtarı Göster'e gidebilir ve ardından genel anahtarınızı panonuza kopyalamak için "Panoya Kopyala" düğmesine basabilirsiniz.
MacOS'ta, genel anahtar dosyanızın içeriğini panonuza kopyalamak için pbcopy < ~/.ssh/id_ed25519.pub çalıştırabilirsiniz.
SSH Genel anahtarınızı herhangi bir yeni satır veya boşluk eklemeden, aynen yazıldığı gibi kopyalamanız önemlidir. "ssh-ed25519" öneki, anahtarın kendisi ve e-posta adresi son eki dahil olmak üzere tam metni kopyalayın.
Gerrit hesabınıza SSH Genel anahtarı ekleyin
Gerrit için web arayüzünde oturum açın. Gerrit'inizin kullanıcı adı ve parolası Wikimedia Geliştirici hesabınız ile aynıdır.
Sağ üst köşedeki kullanıcı adınızı tıklayın ve ardından "Ayarlar" seçin.
Soldaki menüde "SSH Anahtarları" tıklayın.
SSH Genel Anahtarınızı ilgili alana yapıştırın ve "Ekle" düğmesine tıklayın.
Git ile kullanmak için SSH Özel anahtarı ekleyin
Git Bash komut satırını başlatın.
ssh-agent ile kullanarak çalıştırın
eval `ssh-agent`
Tek tırnak ' değil, ` vurguyu kullandığınızdan emin olun. (Bu özel karakteri kolayca giremezseniz bu sayfadan kopyalayıp yapıştırabilirsiniz.)
Özel anahtarınızı aracıya ekleyin.[1] Yukarıdaki adımları izlediyseniz ve anahtarınızın varsayılan adı id_ed25519 ise, komut şu şekildedir:
ssh-add ~/.ssh/id_ed25519
Her şeyin beklendiği gibi çalışıp çalışmadığını kontrol etmek için ssh ile Gerrit sunucusuna bağlanın. gerrituser ile Gerrit ayarlarınızda gösterilen kullanıcı adınızla değiştirin:
ssh -p 29418 gerrituser@gerrit.wikimedia.org
Dikkatli olun ve "ed25519 anahtar parmak izi" için SSH parmak izi ile aynı olduğunu karşılaştırın. Aynıysa, "Bağlanmaya devam etmek istediğinizden emin misiniz?" sorusuna "Evet" yanıtını verin. Ardından anahtarınızın parolasını girin.
"Welcome to Gerrit Code Review" mesajı almalısınız. Son satır "Connection to gerrit.wikimedia.org closed." ifadesini göstermelidir.
Sorunla karşılaşırsanız, ssh -p 29418 -v gerrituser@gerrit.wikimedia.org kullanın (gerrituser ile kullanıcı adınızla değiştirin). -v, sorunların bulunmasına yardımcı olmak için ayrıntılı çıkış sağlayacaktır. Ardından Gerrit Sorun Giderme'yi okuyun.
Örnek bir Gerrit SSH bağlantısı başarı mesajı şuna benzer:
Example:
gerrituser@machine:/mw/sandbox$ ssh -p 29418 gerrituser@gerrit.wikimedia.org
The authenticity of host '[gerrit.wikimedia.org]:29418 ([208.80.154.85]:29418)' can't be established.
ed25519 key fingerprint is dc:e9:68:7b:99:1b:27:d0:f9:fd:ce:6a:2e:bf:92:e1.
Are you sure you want to continue connecting (yes/no)? yes
Warning permanently added '[gerrit.wikimedia.org]:29418 ([208.80.154.85]:29418)' (ed25519) to the list of known hosts.
Enter passphrase for key '/home/gerrituser/.ssh/id_ed25519':

  ****    Welcome to Gerrit Code Review    ****

  Hi gerrituser, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://gerrituser@gerrit.wikimedia.org:29418/REPOSITORY_NAME.git

Connection to gerrit.wikimedia.org closed.

gerrituser@machine:/mw/sandbox$
Git'i kullanarak kod indirin
"Sandbox" adlı deposu indirerek ("cloning" denir) pratik yapalım. Git Bash komut satırı üzerinde aşağıdakileri çalıştırın:
git clone ssh://gerrituser@gerrit.wikimedia.org:29418/sandbox (gerrituser'i Gerrit kullanıcı adınızla değiştirin. Ve URL'nin https: ile değil, ssh: ile başladığından emin olun).
Bu işlem, "sandbox" uzantı deposunun tüm geçmişini ve kod tabanını makinenize kopyalar. Uzantının ana dalının (genellikle "git master" olarak da bilinir) bir çalışma dizinine sahip olursunuz. Yeni dizini girin (cd sandbox komutu ile). Artık koda bakıp düzenlemeye başlayabilirsiniz.
Deneme tahtası deposunu klonlamak size bir geliştirme ortamı kurulumu veya çalışan bir MediaWiki kurulumu sağlamaz. (Çalıştırmak için MediaWiki Core ve teslim aldığınız kodu web sunucunuz tarafından beklenen bir konuma yerleştirmeniz gerekir.) Git'ten Git'ten indirin MediaWiki Core, uzantılar, görünümler veya gerrit.wikimedia.org adresinde barındırılan diğer herhangi bir proje deposunu nasıl indirileceğine bakın.
Gerrit ile çalışmaya hazırlanın
Anasayfa: Gerrit/git-review
Gerrit, kaydetme mesajınızın bir "değişiklik kimliği" içermesini gerektirir I (büyük i) ile başlayan Change-Id: Ibd3be19ed1a23c8638144b4a1d32f544ca1b5f97 ile benziyorlar. Gerrit'te mevcut bir yamayı iyileştirmek için bir işlemi değiştirdiğiniz her seferinde, bu değişiklik kimliği aynı kalır, bu nedenle Gerrit bunu aynı kod değişikliğini ele alan yeni bir "yama kümesi" olarak anlar.
Kayıtlarınıza bir Change-ID satırı ekleyen git-review adında bir git taahhüdünüz var. git-review kullanılması önerilir. Git klonunuzu yapılandırmayı, bir değişiklik göndermeyi veya mevcut olanı getirmeyi kolaylaştırır.
git-review yükleme
Wikimedia Gerrit'in git-review 1.27 veya daha yeni bir sürümünü gerektirdiğini unutmayın.
Daha fazla bilgi için lütfen Gerrit/git-review#Kurulum bölümüne bakın.
Linux
git-review paketini kurmak için Linux dağıtımınızın grafiksel yazılım paketi yönetim aracını kullanın.
git-review dağıtımınız tarafından paketlenmemişse, git-review'i pip Python paket yükleyicisini kullanarak yüklenmesi gibi diğer seçenekler için git-review kontrol edin.
FreeBSD kullanıyorsanız, git-review'i bağlantı noktalarından yükleyin.
Windows
Lütfen git-review Windows sayfasına bakın.
macOS
OS X 10.11 El Capitan ve sonrası için, Yöntem 1'i izleyin.
10.11'den önceki sürümlerde, Yöntem 2'yi izleyerek pip Python paket yükleyicisini kullanın.
git-review yapılandırma
Git'in varsayılan uzak ana bilgisayar adı "origin". Bu ad Wikimedia projeleri tarafından da kullanılır. Bu konağı kullanabilmek için git-review söylememiz gerekiyor. gerrituser yerine Gerrit kullanıcı adınızı yazın:
git config --global gitreview.remote origin
git config --global gitreview.username gerrituser
git-review ayarlama
Bir depoyu indirdikten ("cloning") sonra, git-review için ayarlamanız gerekir. Bu, bir taahhüdü ilk kez göndermeye çalıştığınızda otomatik olarak gerçekleşir, ancak bunu klonlamadan hemen sonra yapmak genellikle daha iyidir. Klonladığınız projenin dizininde olduğunuzdan emin olun (aksi takdirde "hata: Git deposu değil" hatası alırsınız). Ardından şu komutu çalıştırın:
git review -s --verbose
Çıkışının sonuna doğru, şöyle bir şey görmelisiniz:
Example:
Found origin Push URL: ssh://gerrit.wikimedia.org:29418/PROJECT
Fetching commit hook from: scp://gerrit.wikimedia.org:29418/hooks/commit-msg
2019-02-19 12:40:16.712892 Running: scp -P29418 gerrit.wikimedia.org:hooks/commit-msg .git/hooks/commit-msg
Bu, kullandığınız kabuk kullanıcı adından farklıysa git kullanıcı adınızı isteyebilir.
git-review yükleyemezseniz, bir yama göndermek için Gerrit yama yükleyici veya Web arayüzü üzerinden düzenleme kullanabilirsiniz.
Bir yama gönderin
İlgilendiğiniz kod deposunu klonladığınızdan emin olun (buraya bakın).
Kod deposunun dizininde olduğunuzdan emin olun (pwd komutu size tam olarak nerede olduğunuzu söyler).
Ana geliştirme dalını güncelleyin
Ana geliştirme dalının (depoyu ilk kez klonladığınızda oluşturulan dal) güncel olduğundan emin olun:
git pull origin master
Ancak, bazı depoların ana geliştirme dalları için farklı bir ad kullandığını unutmayın (örneğin, master yerine main veya operations/puppet deposunda master dalı yerine production vardır).
Bir dal oluştur
İlk olarak, yeni değişikliğiniz için yerel bir dal oluşturun. Aşağıdaki BRANCHNAME kısa ama makul ölçüde açıklayıcı bir adla değiştirin (ör. değişiklikleriniz için karşılık gelen Phabricator görev varsa T1234, cleanup/some-thing veya badtitle-error) Diğer kişiler de dalınızı tanımlamak için bu adı kullanacaktır.
git checkout -b BRANCHNAME origin/master
Example:
gerrituser@example:~/dev/mw$ git checkout -b mentionWikimedia origin/master
# Switched to a new branch 'mentionWikimedia'
gerrituser@example:~/dev/mw$ git branch
* mentionWikimedia
  master
Bu, yeni bir şube oluşturacaktır (en son 'master' üzerinden BRANCHNAME) olarak adlandırılır ve sizin için kontrol edin. Yukarıdaki örnekte, bu yeni dalına mentionWikimedia adını verdik.
Değişikliklerinizi yapın
Yerel kodunuzda değişiklik yapın. Tercih ettiğiniz metin düzenleyiciyi kullanın ve bir dosyayı değiştirin. Aşağıdaki örnekte, README.md dosyasını düzenliyoruz ve bir kelime ekliyoruz.
Ardından metin düzenleyicinizi kapatın ve son işlemden bu yana, dosya(lar) ve dizin içinde yaptığınız değişiklikleri kontrol edin:
git diff
Example:
gerrituser@machine:/mw/sandbox$ git diff
diff --git a/README.md b/README.md
index 1d25b27..bc54021 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Hello world!
 
-You can make test changes and experiment with Gerrit in this repository!
+You can make test changes and experiment with Wikimedia Gerrit in this repository!
 
 Don't worry about messing this repository up; it is meant for testing.
 
gerrituser@machine:/mw/examples$
git diff, değişikliklerinizi birleştirilmiş fark biçimi olarak görüntüler: Kaldırılan satırların bir eksi (-) öneki ve eklenen satırların bir artı (+) öneki vardır. Bu değişiklikler, bir sonraki kaydetme için henüz "aşamalı" değildir (git add üzerinden).
Bir taahhüt için değişikliklerinizi yapın
Yaptığınız değişikliklerden hangisinin taahhüdünüzün bir parçası olacağına karar vermek için git status çalıştırın. Dizinde değiştirdiğiniz tüm dosyaların bir listesini gösterecektir. Bu noktada, çıkış son satır olarak "kaydetmeye hiçbir değişiklik eklenmedi" ifadesini gösterecektir.
Değiştirdiğiniz dosya(ları)nızı bir sonraki kaydetmenizin parçası haline getirmek için git add kullanın. Yukarıdaki örnekte README.md dosyasını değiştirdik, dolayısıyla komut şöyle olacaktır:
git add README.md git add ile geçmediğiniz, değiştirdiğiniz tüm dosyalar, bir sonraki adımda git commit çalıştırıldığında yok sayılacaktır.
İstediğiniz zaman, git status çalıştırarak önceden hazırlanmış değişiklikleri her zaman gözden geçirebilirsiniz. git add çalıştırdıktan sonra git status "artık taahhütte değişiklik yapılmadı" satırını göstermeyecek.
Ayrıca hangi değişikliklerin hazırlandığını ve bir sonraki işleme geçeceğini görmek için git diff --cached kullanabilirsiniz. Çıkış, yukarıdaki git diff komutuyla aynı görünecektir.
Aşamalı değişikliklerinizi yapın
git add yoluyla eklenen değişikliklerin listesinden memnun olduğunuzda, bu değişiklikleri kullanarak yerel deponuzdaki bir taahhüde dönüştürebilirsiniz.
git commit
sandbox/.git/COMMIT_EDITMSG:
Short subject line

More details. The blank line between the subject and body is
mandatory. The subject line is used to represent the commit in
code-review emails, search results, git-rebase, and more.

Bug: T999999
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch mentionWikimedia
# Your branch is up to date with 'origin/master'.
#
# Changes to be committed:
#       modified:   README.md
Daha sonra metin düzenleyicinizde işleminiz için açıklayıcı bir özet eklemeniz istenecektir. Taahhüt mesajı kurallarına uymalısınız. Kod deposundaki değişikliklerin geçmişine bakarken başkalarının göreceği şey budur.
İşleme mesajını kaydedin ve metin düzenleyicinizi kapatın. Bir özet (tamamlama kimliği, konu satırınız, değiştirilen dosyalar ve satırlar) görüntülenir.
Ana dalı itmek istediğiniz bir dizi değişiklik olana kadar bu adımı tekrar tekrar yapabilirsiniz.
git commit geldiğinizde, yerel kopyanızı taahhüt ediyorsunuz.
Bu, projedeki başka bir geliştirici için işleri potansiyel olarak bozmadan istediğiniz sıklıkta iş yapabileceğiniz anlamına gelir.
Taahhüdünüzü Gerrit'e aktarmaya hazırlanın
Değişiklik kümenizi, çalışırken ana dalda olabilecek tüm değişikliklerle senkronize edin ("yeniden basma"). Dalınızdan şunları çalıştırın:
git pull --rebase origin master
Example:
gerrituser@machine:/mw/sandbox$ git pull --rebase origin master
From ssh://gerrit.wikimedia.org:29418/sandbox
 * branch            master     -> FETCH_HEAD
Current branch mentionWikimedia is up to date.
gerrituser@machine:/mw/sandbox$
git pull --rebase origin master uzaktan yeni taahhütler getirecek ve daha sonra yerel taahhütlerinizi bunlara yeniden temellendirecektir.
Şubenizde yaptığınız değişiklikleri geçici olarak bir kenara bırakır, master'da gerçekleşen tüm değişiklikleri çalışma şubenize uygular, sonra da şubeye yaptığınız tüm değişiklikleri birleştirir (tavsiye eder). Bunu yapmak, gelecekteki birleşme çakışmalardan kaçınmanıza yardımcı olacaktır.
Ayrıca, değişikliklerinizi master'daki en son koda karşı test etme fırsatı verir.
Artık kodunuzu incelenmek üzere Gerrit'e göndermeye hazırsınız. Birkaç ilişkili kaydetme yaptıysanız, bunları incelenmek üzere tek bir işlemde birleştirmeyi düşünün.
Taahhüdünüzü Gerrit'e aktarın
Yukarıdaki #Gerrit ile çalışmaya hazırlanın bölümünü takip edip git-review yüklediyseniz ve git review -s çalıştırdıysanız, değişiklikleri Gerrit'e aktarma komutu:
git review -R
-R seçeneği, git-review ile değişikliği Gerrit'e göndermeden önce yeniden gönderme yapmamasını söyler.
Example:
gerrituser@machine:/mw/sandbox$ git review -R
Creating a git remote called 'gerrit' that maps to:
	ssh://gerrituser@gerrit.wikimedia.org:29418/sandbox.git
Your change was committed before the commit hook was installed.
Amending the commit to add a gerrit change id.
remote: 
remote: Processing changes: new: 1, done            
remote: 
remote: New Changes:        
remote:   https://gerrit.wikimedia.org/r/#/c/sandbox/+/563720 Test for https://www.mediawiki.org/wiki/Gerrit/Tutorial        
remote: 
To ssh://gerrit.wikimedia.org:29418/sandbox.git
 * [new branch]      HEAD -> refs/for/master%topic=mentionWikimedia
gerrituser@machine:/mw/examples$
Başarılı olduktan sonra, bir onay ve Gerrit'teki değişiklik setine bir bağlantı alacaksınız. Yukarıdaki örnekte, bu bağlantı: https://gerrit.wikimedia.org/r/#/c/sandbox/+/563720
Tebrikler! Yamanız Gerrit'te ve umarım yakında incelenir!
Değişikliği / Sonraki Adımları Görüntüleyin
Gerrit değişiklik setinizin bağlantısını bir web tarayıcısında açın.
"Dosyalar" altında, listedeki herhangi bir dosyanın en sağındaki aşağı oku tıkladıktan sonra, dosya başına yaptığınız değişikliğin farkını görebilirsiniz: Eski satırlar kırmızı renkte ve yeni satırlarınız yeşil renkte gösterilir .
Gerrit'in diff algoritması (jGit) git'in varsayılan diff algoritmasından biraz farklıdır. Gerrit tarafından görüntülenen farklar Git tarafından makinenizde görüntülenen farklılıklara benzemeyebilir.
Taahhütünüz Phabricator cinsinden bir bileti ele alırsa, Taahhüt mesajı yönergelerini izlediyseniz, Phabricator görevine otomatik olarak bir yorum eklenir. Bunu yapmadıysanız, tamamlama mesajınızı düzeltebilir (güncellenmiş bir yama seti oluşturarak) veya bu Phabricator biletine Gerrit'teki değişiklik kümenize bir bağlantı içeren bir yorumu manüel olarak ekleyebilirsiniz.
Diğer yaygın durumlar
Ayrıca durumunuz burada ele alınmıyorsa Gerrit Gelişmiş kullanıma bakın.
Rebase ile birkaç taahhüdü tek bir taahhütte toplayın
İncelemeye gönderilmeyi istemeden önce yerel deponuza ilgili birkaç taahhütte bulunduysanız, bu taahhütleri tek bir taahhütte ezmeniz (birleştirmeniz) gerekir.
--interactive veya -i seçeneği, kaydetme geçmişinizi değiştirmenize (yeniden yazmanıza) olanak tanır. Her taahhüt için, taahhüt mesajını değiştirebilir, dosya ekleyebilir veya kaldırabilir veya başka değişiklikler yapabilirsiniz.
Önce git'i ne kadar geri çekmek istediğinizi söylemelisiniz. Şubenizdeki tüm değişikliklerin bir listesini almak için:
git rebase -i origin/master
Ayrıca son değişikliklerin görüntülenen listesini de sınırlayabilirsiniz. HEAD~3, son üç taahhüt çek anlamına gelir:
git rebase -i HEAD~3
Bu komutu yazdıktan sonra, metin düzenleyiciniz taahhütlerinizi ters sırayla ve kullanılabilir komutların bir listesini görüntüler:
Example:
pick aa8cf1d Adding method customFilterFunctionGetRiskyCountryCodeScore() to GatewayAdapter.
pick 38828e2 Adding $wgDonationInterfaceCustomFiltersFunctionsRiskyCountries to donationinterface.php
pick be33007 Fix a typo

# Rebase 95ccd28..be33007 onto 95ccd28
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
İncelemek için yalnızca bir taahhüt göndermek istediğimizden, son iki taahhüt ilkinde ezeceğiz. Bu nedenle, ilk "pick" ile "squash" olarak değiştirin:
pick aa8cf1d Adding method customFilterFunctionGetRiskyCountryCodeScore() to GatewayAdapter.
squash 38828e2 Adding $wgDonationInterfaceCustomFiltersFunctionsRiskyCountries to donationinterface.php
squash be33007 Fix a typo
Seçip sıkıştırmayı bitirip dosyayı kaydettiğinizde, taahhüt mesajlarınızı düzenlemenize ve birleştirmenize izin vermek için metin düzenleyicinizde başka bir dosya açılır. Change-Id satırlarından yalnızca birini tutmaya ve boş bir satırdan sonra mesajın altında kalmasına dikkat edin.
Önceki taahhütlerinizde gelen mesajlarınız otomatik olarak bu mesaja yerleştirilecektir:
Example:
# This is a combination of 3 commits.
# The first commit's message is:
(mingle-fr-2012-69) Adding a custom filter for risky countries.

Adding method customFilterFunctionGetRiskyCountryCodeScore() to GatewayAdapter.

# This is the 2nd commit message:

Adding $wgDonationInterfaceCustomFiltersFunctionsRiskyCountries to donationinterface.php

# This is the 3rd commit message:

Fix a typo

Change-Id: I33e44ec0d93628d9a53c15e08eb89f352b7d5fe0

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   donationinterface.php
#       modified:   gateway_common/gateway.adapter.php
#
Özet mesajınızı (güncellenmiş) işleme koymayı unutmayın. Bu durumda yeni özet mesaj şöyle olacaktır:
(mingle-fr-2012-69) Adding a custom filter for risky countries.
Kullanmak istediğiniz Change-Id ile ilgili olarak, mevcut bir taahhüde (zaten Gerrit'te olan) bir taahhütte bulunmak için, yeni bir patchset göndermek istediğinize ait olan Change-Id ile seçmeniz gerekir (hayatta kalma taahhüt). Taahhütleriniz yeniyse ve Gerrit'te değilse, hangi Change-Id'yi seçtiğiniz önemli değildir.
Her şey yolunda giderse, başarılı bir rebase mesajı görmelisiniz:
Example:
[detached HEAD 02f5e63] (mingle-fr-2012-69) Adding a custom filter for risky countries.
 2 files changed, 92 insertions(+), 3 deletions(-)
Successfully rebased and updated refs/heads/mingle-fr-2012-69.
Daha sonra yamanızı incelemeye gönderin:
git review
Git incelemenizin Gerrit'e gittiğini gösteren bir mesaj görmelisiniz (bu örnekte https://gerrit.wikimedia.org/r/7187):
Example:
remote: Resolving deltas: 100% (4/4)
remote: (W) 02f5e63: commit message lines >70 characters; manually wrap lines
remote: 
remote: New Changes:
remote:   https://gerrit.wikimedia.org/r/7187
remote: 
To ssh://gerrituser@gerrit.wikimedia.org:29418/mediawiki/extensions/DonationInterface.git
 * [new branch]      HEAD -> refs/for/master/mingle-fr-2012-69
Değişikliği düzeltme (kendinizin veya başkasının)
Bazen, gönderilen bir değişikliği değiştirmeniz gerekebilir. Değişiklik henüz birleştirilmediği sürece bir değişikliği değiştirebilirsiniz.
Kendi değişikliklerinizi değiştirebilirsiniz. Başkası tarafından gönderilen değişiklikleri değiştirmek için Gerrit'in Trusted-Contributors grubunun bir üyesi olmanız gerekir. Trusted-Contributors grubun bir üyesi olmak için, üye olan birini bulun ve ondan sizi eklemesini isteyin. Grup, üyelerin yeni üyeler ekleyebilmesi, yetkilerinizi sorumlu bir şekilde kullanabilmesi açısından viraldir.
Yerel dalınızı uzak ile güncel hale getirmek için yeniden temel alın. Yeniden temelleme güncellemelerini ayrı bir yama yapmak en iyisidir, böylece kod inceleyecileri yaptığınız değişiklikleri kolayca görebilir. Gerrit kullandığınızı varsayarsak, bunu Gerrit'in web arayüzünde yamanızı görüntülerken "Rebase Change" düğmesine tıklayarak yapabilirsiniz.
Bu komutla tam sıfırlama ve değişikliği kontrol edin: (DİKKAT: git review -d, tüm yerel değişiklikleri kaldıran bir donanım sıfırlaması gerçekleştirir. Önce korumak istediğiniz değişiklikleri saklayın veya uygulayın!)
git review -d changenumber Örneğin: git review -d 9332
Yerel deponuzda bir dalda zaten değişiklik varsa, bunun yerine sadece kontrol edebilirsiniz:
git checkout BRANCHNAME Örneğin: git checkout review/gerrituser/2012/bug12345
Ardından, favori metin düzenleyicinizle bazı değişiklikler yapın.
git add dosyaları gerektiği gibi uygulayın, ardından değişikliği tamamlayın (kaydetmeyi "değiştirdiğinizden" emin olun):
git add Example/Example.body.php
git commit --amend
Bir taahhüt özeti belirtmek için -m işaretini KULLANMAYIN: bu önceki özeti geçersiz kılar ve Change-Id yeniden oluşturur. Bunun yerine, taahhüt özetini değiştirmek için metin düzenleyicinizi kullanın (gerekirse .git/COMMIT_EDITMSG dosyasında ve Change-Id satırını olduğu gibi bırakın.
Değişiklikliği push yapın:
git review -R
-R burada önemlidir. git-review ile değişikliğinizi ana bilgisayara karşı yeniden düzenlememesini söyler, bu da yama seti 1 ile 2 arasında farklılık gösterir.
Master'dan farklı bir dalına aktarın
Yukarıda taahhüt, ana dalına aktarıldı. Dal adı yalnızca Gerrit kullanıcı arayüzünde işlemin konusu olarak görünüyordu. Eğer gerçekten ana daldan farklı bir şubeye geçmek istiyorsanız, git review <branch name> üzerinden aktarmanız gerekir.
Web arayüzü üzerinden düzenleme
Gerrit'te oturum açtıysanız, doğrudan web arayüzünde kod değişiklikleri de oluşturabilirsiniz. Bu, küçük yamalar yapmak için veya geliştirici olmayanlar için küçük düzeltmelere katkıda bulunmak için yararlı olabilir.
https://gerrit.wikimedia.org/r/admin/repos/ gidin ve düzenlemek istediğiniz kod deposunu seçin.
Kenar çubuğunda "Commands" seçin
"Create Change" tıklayın
Dalı "master" olarak ayarlayın (ana dalı kullanmak istemiyorsanız, o proje için mevcut olan diğer dalları kullanabilirsiniz)
Konuyu seçtiğiniz bir şeye ayarlayın (ör. "copy-edit" - tümü tek dizeli olmalıdır) (isteğe bağlı)
Büyük metin alanına ileti yönergelerini uygulayarak bir açıklama ("taahhüt özeti") yazın. (Örnek)
"Create" tıklayın
Sağ üst köşede "Edit" düğmesini tıklayın
"Files" altında, "ADD/OPEN/UPLOAD" düğmesini tıklayın
Düzenlemek istediğiniz dosyanın klasör/dosya yolunu yazın (ör. i18n/en.json) ve "Confirm" düğmesine tıklayın
Değiştirmek istediğiniz satırları bulun ve değiştirin.
"Save" tıklayın
"Close" tıklayın
"Publish edit" tıklayın
Kod değişikliklerinizden "Work in Progress" durumunu kaldırmak için "Mark as active" seçeneğini tıklayın
Yapıldı!
Mevcut bir değişiklik kümesinin kaydetme mesajını değiştirmeniz gerekirse şu adımları kullanabilirsiniz:
Değişiklik setinin kendisine gidin. Örnek URL: https://gerrit.wikimedia.org/r/c/1234567890 (sondaki kimliği değiştirin)
"Files" bölümünde "Commit message" düğmesine tıklayın
Sağ üst köşede "Edit" düğmesini tıklayın
Taahhüt özetinde değişiklik yapın.
Sağ üst köşede "Save" düğmesini tıklayın
Sağ üst köşede "Close" düğmesini tıklayın
Sağ üst köşede "Publish edit" düğmesini tıklayın
Gerrit & Vagrant
MediaWiki-Vagrant is a portable MediaWiki development environment and is readily usable with git-review and gerrit. After installing MediaWiki-Vagrant use cd to navigate to your extensions folder. Then follow the instructions above on submitting a patch via gerrit.
Kod Gerrit'te nasıl incelenir
Kod incelemesi katkı iş akışımızın önemli bir parçasıdır. Prensip temeldir: herhangi bir yama birleştirilmeden önce başkaları tarafından incelenmelidir.
Bu, kodunuzun gözden geçirenlere ihtiyaç duyacağı anlamına gelir. Yorum alma tavsiyemize göz atın.
Birleştirmeden önce inceleyin
MediaWiki çekirdeği ve ayrıca herhangi bir uzantı için biz dağıtımı birleştirmeden önce inceleme iş akışına sahip olmak bizim için önemlidir. Bu seçeneği, uzantı için isteyen herhangi bir uzantı yazarına da sunacağız. Tek istisna, incelemeden aktarılabilecek yerelleştirme ve uluslararasılaştırma taahhütleridir.
Kim inceleyebilir? Gerrit proje sahipleri
Geliştirici hesabı oluşturduktan sonra, herkes taahhütler hakkında yorum yapabilir ve eleştirilerini ve onaylarını ifade edebilir. Herkes herhangi bir işleme için bağlayıcı olmayan bir "+1" verebilir. Bununla birlikte, herhangi bir veri deposu ("Gerrit project") için, yalnızca küçük bir grup insan Gerrit içinde kodu onaylama ve arşivde birleştirme yeteneğine sahip olacaktır. Bu süper onay, yanıltıcı bir ad olsa da bir "+2"'dir, çünkü iki +1 onayının toplamı +2 DEĞİLDİR. Bu kişiler "Gerrit proje sahipleri"'dir.
Gerrit'te kod hakkında yorum yapma, inceleme ve birleştirme nasıl yapılır
Gerrit'in web arayüzüne yeni yüklenmiş bir örnek değişiklik kümesi
Gerrit'in web arayüzünde yan yana farklılık
Gerrit'te kod hakkında herkes yorum yapabilir.
Kodu görüntüleme ve yorum yapma
Bir geliştirici hesabı sahibi olduğunuzdan emin olun.
Gerrit üzerinden oturum açın. Bakmak istediğiniz değişiklik kümesini biliyorsanız (URL https://gerrit.wikimedia.org/r/#/c/23939/ gibi görünecek), buna gidin. Aksi takdirde, arama kutusunu kullanın. Yazara ("Owner"), Gerrit projesine, dalına, yıldız verdiğiniz değişiklik setlerine vb. göre arama yapabilirsiniz. Gerrit arama belgelendirmesi, kullanabileceğiniz tüm farklı arama iletimlerini kapsar.
Değişiklik kümesinde birkaç alan, bağlantı ve düğme bulunur:
Vekil. Değişiklik kümesinin incelenmesinden tek bir kişinin sorumlu olmasını sağlayan isteğe bağlı bir alan. Bu, yalnızca vekil kabul etmişse ayarlanmalıdır.
İnceleyiciler. 'jenkins-bot', Jenkins testlerinden geçen her şeyi otomatik olarak doğrulayan otomatik inceleyicidir. Yapının geçip geçmediğine bağlı olarak kırmızı veya yeşil bir işaret bildirecektir.
"Add reviewer" düğmesi altındaki Reviewers: sol üst köşede birinden manüel olarak inceleme isteyin. Onların Gerrit kontrol panelinde görünecektir.
Files altında, Expand All aşağıdaki her dosya için farkı açar. Bir satırı çift tıklayabilir ve ardından o satır hakkında yorum yapmak için C tuşuna basabilir, ardından taslak yorumu kaydetmek için "Save" düğmesine tıklayabilirsiniz. Ardından, yorumunuzu yayınlamak için sayfanın üst kısmındaki "Reply" düğmesini tıklayın.
Reply, yorumlarınızı genel bir yorum ve/veya eklediğiniz satır içi yorumlar dahil olmak üzere bir değişiklik grubuna ekler (yukarıya bakın).
Kod incelemesi üzerine, approve basarsanız, "Reply" altında "Code-Review: -1" kullanın; aksi takdirde, reddetmek için "Code-Review: -1" kullanın. Bu numaralar bağlayıcı değildir, birleşmelere veya reddedilmelere neden olmaz ve kod incelemesi üzerinde resmi bir etkisi yoktur.
Abandon (bu farkı yazdıysan bunu göreceksin). Bu eylem, incelemek üzere listeden farkı kaldırır, ancak arşivleme amacıyla Gerrit'te bırakır.
"Only Comments" anahtarı, insan olmayan botların incelemelerini gizlemeye olanak tanır. Örnek için phab:T48148#6294913 sayfasına bakın.
Yama kümelerini karşılaştırma
Taahhüdünüzü her değiştirdiğinizde ve incelemeye gönderdiğinizde, yeni bir yama seti oluşturulur. Farklı yama setlerini şu şekilde karşılaştırabilirsiniz:
"Files" altında, "Expand All" seçin veya bu dosyayı açmak için listelenen belirli bir dosyayı seçin.
Sol tarafta Patch Set altında Base önceden seçilmiştir. Ekranın sağ tarafında Patch Set altında, en son yama seti önceden seçilmiştir. Seçili yama setlerini ihtiyaçlarınıza göre ayarlayın.
Resmi olarak incelemek ve kodu birleştirmek veya reddetmek
Gerrit proje sahiplerinden biriyseniz, şunları da göreceksiniz:
Abandon düğmesi
* Reply altında, +2 (onayla) veya -2 (veto) için ek Code-Review seçenekleri ve bir Post düğmesi (yorumunuzu yayımlayın ve farkı 1 adımda dalında birleştirin)
Submit düğmesi (merge -- yalnızca siz veya bir başkası farka +2 onayı verdiyse, ancak onu birleştirmediyse kullanışlıdır)
Ve bir şeyi örnek Gerrit projesiyle birleştirdiğinizde, onu https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/examples/ olarak göreceksiniz.
Phabricator'da bir göreve kaynaklanan bir taahhüt birleştirdiyseniz ve bu işlemin bu görevi tamamen düzeltmesi gerekiyorsa, lütfen o göreve gidin ve durumunu "Çözüldü" olarak değiştirin (Eylem Ekle… 🡒 Durumu Değiştir açılır menüsünden). Ayrıca gerritbot bu göreve daha önce göndermediyse birleştirme kimliğine bakın.
Sorun giderme
Sorunlar ve nasıl çözüleceği için Gerrit/Troubleshooting sayfasına bakın.
Ayrıca bakınız
Ayrıca şu sayfalar da yararlıdır:
Git'ten yükle
Başlarken
Gerrit
git-review
Gerrit Eğitimi tl;dr
Gerrit TortoiseGit eğitimi
Wikimedia Gerrit Yama Yükleyicisi
MediaWiki Git Kılavuzu (MGG) - MediaWiki Sanal Kitaplığındaki ilgili Git sayfalarının seçimi
Resmi Gerrit belgelendirmesi
Git/Gerrit SSS
Üçüncü taraf Git kılavuzları
Git'in nasıl kullanılacağı hakkında eğitim videoları (Wikimedia Commons'da)
Git'e giriş "eğitim görevi"
[çıkmaz bağlantı]
Git'i deneyin (etkileşimli demo)
GitMagic Çevirileri olan bir git kılavuzu
Git dallanma modeli
Git: basit kılavuz
Git Topluluk Kitabı sizi Git'in dahili bileşenlerine nazikçe götürecektir. (Dahili olarak nasıl çalıştığı hakkında bir şeyler öğrenene kadar git "elde etmek" zordur.)
Git web sitesinin belgelendirmesi
Pro Git kitabı
Başka bir kullanışlı OpenStack Git kılavuzu (GitHub öğelerini çıkarırsanız)
Git İş Akışını Anlamak Yazan Benjamin Sandofsky
Eclipse'de Git'i kullanma
Neden çekme yerine getirme/birleştirme Yazan Mark Longair
Tarihsel belgeler
Subversion/SVK kullanıcıları için git-svn'e giriş, Sam Vilain
Subversion kullanıcıları için Git, IBM
Brion Vibber tarafından hazırlanan Git'i nasıl kullanacağız slaytları, 2011 sonbaharında sunulduğu gibi
Git sunumundan ses, Brion Vibber, sonbahar 2011
Brion Vibber'ın sunumundan notlar
Kaynakça
↑ Bir Ubuntu kullanıcısı olarak "İzin reddedildi (publickey)" mesajınız varsa, lütfen bu yardım sayfasında kontrol edin
Retrieved from "https://www.mediawiki.org/w/index.php?title=Gerrit/Tutorial/tr&oldid=4840778"
Categories:
Tutorials/tr
Git/tr
Gerrit/tr
New contributors/tr
Navigation menu
Personal tools
English
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
Variants expanded collapsed
Views
Read
Translate
View history
More expanded collapsed
Search
Navigation
Main page
Get MediaWiki
Get extensions
Tech blog
Contribute
Support
User help
FAQ
Technical manual
Support desk
Communication
Development
Bug tracker
Code docs
Code repository
Statistics
MediaWiki.org
Community portal
Recent changes
Translate content
Random page
Village pump
Sandbox
Tools
What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Print/export
Create a book
Download as PDF
Printable version
In other languages
Add links
This page was last edited on 1 October 2021, at 11:13.
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. See Terms of Use for details.