Gerrit/Tutorial/tr

Bu, Git ve Gerrit'in Wikimedia gelişimi için nasıl kullanılacağını açıklayan bir öğreticidir.


 * Zaman kazanmak ve teknoloji meraklısıysanız, bunun yerine çok kısa nasıl yapılır kılavuzunu kullanın:
 * Uzman kullanıcılar için 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:. ö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:.

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.

Font Awesome 5 brands linux.svg Linux

 * 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.

Font Awesome 5 brands windows.svg 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.

Apple logo black.svg macOS

 * Homebrew paket yöneticisini kurun ve sonra 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. ile kendi Gerrit kullanıcı adınızla değiştirin ve ile kendi e-posta adresinizle değiştirin:

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. 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:

Komut, (gizli)  dizinindeki dosyaları listeler. Dizin sisteminizde zaten varsa ve çıkışta  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 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.

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  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.

komutu  dizininde 2 dosya oluşturacaktır:


 * : özel SSH anahtarınız (tanımlama için)
 * : genel SSH anahtarınız

SSH Genel anahtarınızı kopyalayın
Genel anahtar dosyanızın içeriğini (örneğin, ) 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ü  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, ç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 ç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-rsa" ö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 Genel 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
 * Tek tırnak  değil,   vurguyu kullandığınızdan emin olun. (Bu özel karakteri kolayca giremezseniz bu sayfadan kopyalayıp yapıştırabilirsiniz.)
 * 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. Yukarıdaki adımları izlediyseniz ve anahtarınızın varsayılan adı  ise, komut şu şekildedir:


 * Her şeyin beklendiği gibi çalışıp çalışmadığını kontrol etmek için  ile Gerrit sunucusuna bağlanın.  ile Gerrit ayarlarınızda gösterilen kullanıcı adınızla değiştirin:

Örnek bir Gerrit SSH bağlantısı başarı mesajı şuna benzer:
 * Paranoyak olun ve "RSA anahtarı parmak izinin" gerrit.wikimedia.org:29418 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, kullanın ( ile kullanıcı adınızla değiştirin). , sorunların bulunmasına yardımcı olmak için ayrıntılı çıkış sağlayacaktır. Ardından Gerrit Sorun Giderme'yi okuyun.

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:

('i Gerrit kullanıcı adınızla değiştirin. Ve URL'nin  ile değil,   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 ( komutu ile). Artık koda bakıp düzenlemeye başlayabilirsiniz.

Gerrit ile çalışmaya hazırlanın
Gerrit, kaydetme mesajınızın bir "değişiklik kimliği" içermesini gerektirir I (büyük i) ile başlayan  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.

Font Awesome 5 brands linux.svg Linux

 * 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.

Font Awesome 5 brands windows.svg Windows

 * Lütfen git-review Windows sayfasına bakın.

Apple logo black.svg 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. yerine Gerrit kullanıcı adınızı yazın:

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:

Çıkışının sonuna doğru, şöyle bir şey görmelisiniz:

Bu, kullandığınız kabuk kullanıcı adından farklıysa git kullanıcı adınızı isteyebilir.

Bir yama gönderin
İlgilendiğiniz kod deposunu klonladığınızdan emin olun (buraya bakın).

Kod deposunun dizininde olduğunuzdan emin olun ( komutu size tam olarak nerede olduğunuzu söyler).

Güncelleme yöneticisi
Ana dalınızın (depoyu ilk kez klonladığınızda oluşturulan dal) güncel olduğundan emin olun:

Ancak, birkaç deponun farklı terimler kullandığını unutmayın (örneğin,  deposunda   yerine   vardır).

Bir dal oluştur
İlk olarak, yeni değişikliğiniz için yerel bir dal oluşturun. Aşağıdaki kısa ama makul ölçüde açıklayıcı bir adla değiştirin (ör. değişiklikleriniz için karşılık gelen  görev varsa ,   veya  ) Diğer kişiler de dalınızı tanımlamak için bu adı kullanacaktır.

Bu, yeni bir şube oluşturacaktır (en son 'master' üzerinden ) olarak adlandırılır ve sizin için kontrol edin. Yukarıdaki örnekte, bu yeni dalına  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,  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:

, 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 ( ü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 ç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  kullanın. Yukarıdaki örnekte  dosyasını değiştirdik, dolayısıyla komut şöyle olacaktır:

ile geçmediğiniz, değiştirdiğiniz tüm dosyalar, bir sonraki adımda  çalıştırıldığında yok sayılacaktır.

Aşamalı değişikliklerinizi yapın
yoluyla eklenen değişikliklerin listesinden memnun olduğunuzda, bu değişiklikleri kullanarak yerel deponuzdaki bir taahhüde dönüştürebilirsiniz.

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.

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:

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  yüklediyseniz ve   çalıştırdıysanız, değişiklikleri Gerrit'e aktarma komutu:

seçeneği, git-review ile değişikliği Gerrit'e göndermeden önce yeniden gönderme yapmamasını söyler.

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.

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.

veya  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:

Ayrıca son değişikliklerin görüntülenen listesini de sınırlayabilirsiniz. , son üç taahhüt çek anlamına gelir:

Bu komutu yazdıktan sonra, metin düzenleyiciniz taahhütlerinizi ters sırayla ve kullanılabilir komutların bir listesini görüntüler:

İ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:

Ö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.

Her şey yolunda giderse, başarılı bir rebase mesajı görmelisiniz:

Daha sonra yamanızı incelemeye gönderin:

Git incelemenizin Gerrit'e gittiğini gösteren bir mesaj görmelisiniz (bu örnekte https://gerrit.wikimedia.org/r/7187):

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. The group is viral in that members can add new members, use your powers responsibly.

Rebase to bring your local branch up to date with the remote. It's best to make rebase updates a separate patch, so that your code reviewers have an easy time seeing what changes you've made. Assuming you are using Gerrit, you can do this by clicking the "Rebase Change" button when viewing your patch in Gerrit's web interface.

Hard reset and checkout the change with this command: (BEWARE:  performs a hard reset that destroys all local changes. Stash or commit changes first which you wish to preserve!)

For example:

Yerel deponuzda bir dalda zaten değişiklik varsa, bunun yerine sadece kontrol edebilirsiniz:

For example:

Ardından, favori metin düzenleyicinizle bazı değişiklikler yapın.

the files as needed, then commit the change (ensuring you are amending the commit):

Değişiklikliği push yapın:

The  is important here. It tells git-review to not rebase your change against master, which clutters diffs between patch set 1 and 2.

Push to a branch different than master
Above, the commit was pushed to the master branch. The branch name only appeared as the topic of the commit in the Gerrit UI. If you really want to push to a different branch than master, you have to push via.

Editing via the web-interface
If you're logged in to Gerrit, you can also create code changes directly within the web interface. This can be useful for making small patches, or for non-developers to contribute small fixes.


 * 1) Go to https://gerrit.wikimedia.org/r/admin/projects and choose the code repository that you want to edit.
 * 1) Select "Commands" in the sidebar
 * 1) Click "Create Change"
 * 1) Set branch to "master" (if you don't want to use master branch you can use the other branches available for that project)
 * 1) Set the topic to something of your choosing (e.g. "copy-edit" - must be all-one-string) (optional)
 * 1) Write a description ("commit summary") in the big text field by following message guidelines. (Example)
 * 1) Click "Create"
 * 1) In the upper right corner, click the "Edit" button
 * 1) Under "Files", click "ADD/OPEN/UPLOAD" button
 * 1) Type the folder/file path for the file you wish to edit (e.g. i18n/en.json) and click "Open"
 * 1) Find the line(s) you want to change, and change them.
 * 1) Click "Save"
 * 1) Click "Close"
 * 1) Click "Publish edit"
 * 1) Click the button "Start Review"

Done!

If you need to change the commit message of an existing changeset, you can use these steps:


 * 1) Go to the changeset itself. Example URL: https://gerrit.wikimedia.org/r/c/1234567890 (replace the ID at the end)
 * 1) In the "Files" section, click "Commit message"
 * 1) In the upper right corner, click the "Edit" button
 * 1) Make changes to the commit summary.
 * 1) In the upper right corner, click "Save"
 * 1) In the upper right corner, click "Close"
 * 1) In the upper right corner, click "Publish edit"

How code is reviewed in Gerrit
Code review is an essential part of our contribution workflow. The principle is basic: any patch must be reviewed by others before being merged.

This means that your code will need reviewers. Check our advice for getting reviews.

Review before merge
It's important to us to have a review-before-merge workflow for MediaWiki core and also for any extension we deploy. We will also offer that option to any extension author who wants it for their extension. The one exception is localisation and internationalisation commits, which will be able to be pushed without review.

Who can review? Gerrit project owners
After creating a Developer account, anyone can comment on commits and express criticism and approvals. Anyone can give a nonbinding "+1" to any commit. However, for any given repository ("Gerrit project"), only a small group of people will have the ability to approve code within Gerrit and merge it into the repository. This superapproval is a "+2" even though that's a misleading name, because two +1 approvals DO NOT add up to a +2. These people are "Gerrit project owners".

How to comment on, review, and merge code in Gerrit




Anyone can comment on code in Gerrit.

Viewing and commenting on code
If you know the changeset you want to look at (URL will look like https://gerrit.wikimedia.org/r/#/c/23939/), go to that. Otherwise, use the search box. You can search by author ("Owner"), Gerrit project, branch, changesets you've starred, etc. The Gerrit search documentation covers all of the different search operators you can use. This should only be set if the assignee has agreed. It will report a red or green mark depending on whether the build passes. It'll show up in their Gerrit dashboard. You can double-click on a line and then press the C key to comment on that line, then click "Save" to save the draft comment. Then, at the top of the page click the "Reply" button to publish your comment. These numbers are nonbinding, won't cause merges or rejections, and have no formal effect on the code review. This action removes the diff from the list to review, but leaves it in Gerrit for archival purposes. See https://phabricator.wikimedia.org/T48148#6294913 for an example.
 * Make sure that you have a developer account.
 * Log in to Gerrit.
 * The changeset has a few fields, links and buttons:
 * Assignee. An optional field to make a single person responsible for handling reviewing the changeset.
 * Reviewers. 'jenkins-bot' is the autoreviewer that auto-verifies anything that passes the Jenkins tests.
 * The "Add reviewer" button under Reviewers: in the upper left corner manually request review from someone.
 * Under Files, Expand All opens the diff for each file below.
 * Reply adds your comments to a changeset, including an overall comment and/or inline comments you added (see above).
 * If, upon code review, you approve, use "Code-Review: " under "Reply"; otherwise, use "Code-Review:  " to disapprove.
 * Abandon (you'll see this if you wrote this diff).
 * The "Only Comments" switch allows to hide reviews by non-human bots.

Comparing patch sets
Every time you amend your commit and submit it for review, a new patch set is created. You can compare the different patch sets like this: On the right of the screen under Patch Set, the latest patch set is preselected. Adjust the selected patch sets to your needs.
 * Under Files, select either Expand All or choose a specific file listed to open that file.
 * On the left side under Patch Set, Base is preselected.

Formally reviewing and merging or rejecting code
If you are one of the Gerrit project owners, you'll also see:


 * Abandon button


 * under Reply, additional Code-Review options to +2 (approve) or -2 (veto) a diff, and a Post button (publish your comment and merge diff into the branch, in 1 step)


 * Submit button (merge -- only useful if you or someone else has already given a +2 approval to the diff, but not merged it)

And once you've merged something into the example Gerrit project you'll see it in https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/examples/.

If you merged a commit that references a task in Phabricator and that commit is supposed to fix that task completely, please go to that task and change its status to "Resolved" (via the Add Action… 🡒 Change Status dropdown). Also reference the merge ID if gerritbot has not already posted it in that task.

Sorun giderme
For problems and how to solve them, see Gerrit/Troubleshooting.

Ayrıca bakınız
Also useful are these pages:


 * Getting Started
 * Gerrit Tutorial tl;dr
 * Gerrit TortoiseGit tutorial
 * Wikimedia Gerrit Patch Uploader