Gerrit/Eğitim
Bu, Git ve Gerrit'in Wikimedia gelişimi için nasıl kullanılacağını açıklayan bir öğreticidir.
- For reference documentation on specific tasks, check Gerrit/Advanced usage instead.
- 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: tmpl|0=$1
.
$
ö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: tmpl|0=$1 $2
.
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.
Wikimedia geliştirici hesabı oluşturun
Henüz bir Wikimedia geliştirici hesabınız yoksa, $3 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, [$url Git projesi tarafından tutulan istemcilerin listesini] denetleyin. Alternatif kurulum talimatları için [$url resmi belgelere] bakın.
Kurulum
Follow Installing Git to learn how to install git on your operating system.
Git'i yapılandırın
git config -l
kullanı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 $2 ile kendi e-posta adresinizle değiştirin: Replace gerrituser@example.com with your own email address. And, replace shell_user with the shell username (chosen when you created the Wikimedia Developer account):
git config --global user.email "gerrituser@example.com"
git config --global user.name "Gerrituser"
git config --global url."ssh://shell_user@gerrit.wikimedia.org:29418/".insteadOf "https://gerrit.wikimedia.org/r/"
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.
Yeni bir SSH anahtarı oluşturun
Follow SSH keys#Generating a new SSH key.
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 "ADD NEW SSH KEY" düğmesine tıklayın.
Test Gerrit SSH connection
Her şeyin beklendiği gibi çalışıp çalışmadığını kontrol etmek için ssh
ile Gerrit sunucusuna bağlanın.
shell_user ile Gerrit ayarlarınızda gösterilen kullanıcı adınızla değiştirin:
ssh -p 29418 shell_user@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 shell_user@gerrit.wikimedia.org
kullanın (shell_user 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:
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://gerrit.wikimedia.org:29418/REPOSITORY_NAME.git Connection to gerrit.wikimedia.org closed. gerrituser@machine:/mw/sandbox$
Git'i kullanarak kod indirin
Sandbox
"Sandbox" adlı deposu indirerek ("cloning" denir) pratik yapalım.
Git Bash komut satırı üzerinde aşağıdakileri çalıştırın:
git clone https://gerrit.wikimedia.org/r/sandbox
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.
Existing repositories
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.
Vagrant
If you have downloaded MediaWiki or extensions using Vagrant, make sure you have configured Git to push code using SSH instead of HTTPS.
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 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.
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.
- Lütfen git-review Windows sayfasına bakın.
- 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:
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.By default git-review
uses the branch master
.
If the repo you're working on uses another branch, e.g. main
, you need to set the config variable gitreview.branch
.
This can be done with the following command (where main
is the branch name):
git config --add gitreview.branch main
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-something
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
gerrituser@example:~/dev/mw$ git checkout -b cleanup-something origin/master # Switched to a new branch 'cleanup-something' gerrituser@example:~/dev/mw$ git branch * cleanup-something 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 cleanup-something
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
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.
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.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
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 cleanup-something # 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.
git commit
geldiğinizde, yerel kopyanızı taahhüt ediyorsunuz.
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
gerrituser@machine:/mw/sandbox$ git pull --rebase origin master From ssh://gerrit.wikimedia.org:29418/sandbox * branch master -> FETCH_HEAD Current branch cleanup-something 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
gerrituser@machine:/mw/sandbox$ git review Creating a git remote called 'gerrit' that maps to: ssh://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=cleanup-something 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!
If git review
fails
If you are asked to enter your username and password credentials when running git review
, it means Git has not yet been configured to use SSH.
Review the steps at #Set up Git. In particular, run the following command:
git config --global url."ssh://shell_user@gerrit.wikimedia.org:29418/".insteadOf "https://gerrit.wikimedia.org/r/"
This is okay to run again if you're not sure whether you did it already. Replace shell_user with the shell username for your Wikimedia Developer account.
If you get a Permission denied (publickey). fatal: Could not read from remote repository.
, review the instructions at SSH keys#Add SSH Private key to use with Git to make sure your ssh agent is running and your identity is added. If you close your Git Bash shell, you will be signed out and need to re-follow these instructions each time.
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.
--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:
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:
# 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.
Her şey yolunda giderse, başarılı bir rebase mesajı görmelisiniz:
[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):
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://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.
Bu komutla tam sıfırlama ve değişikliği kontrol edin:
git review -d changeNumber
Örneğin: git review -d 1814356
You can look in Gerrit to figure out the changeNumber. It is the number in the URL of your code review page.
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
-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
Rebasing (updating the patch to include other changes)
Sometimes you might want to update your patch to include all of the changes in the repository that have happened since you submitted it. This is called "rebasing". There's usually no need to do it, unless the review has been taking a long time and you want to make sure your changes still work with the latest version of the software, or if Gerrit reports a merge conflict in your change.
You can do it locally using the git rebase
command with the right options, but Gerrit's web interface provides a more convenient way to do it.
In the simplest scenario, just click "Rebase", keep the default selection of "Rebase on top of the master branch", and click "Rebase" again to confirm.
If your patch has a merge conflict, you will get an error. You can then check the "Allow rebase with conflicts" option and try again, which will amend your patch with conflict markers, similar to those generated by Git commands. You will then need to amend it yourself, editing the files manually to resolve the conflicts.
Sometimes you might also want update your patch to include changes proposed in another patch (adding a dependency on that patch), but which have not been merged yet. In this case, select "Rebase on a specific change, ref, or commit" instead and provide the change in the input field.
If your patch already has such a dependency, you will also get the option to select "Rebase on top of the master branch (breaks relation chain)" in order to remove it. You will also get the option to check "Rebase all ancestors", which will rebase the patch together with the dependency.
Yeniden temelleme güncellemelerini ayrı bir yama yapmak en iyisidir, böylece kod inceleyecileri yaptığınız değişiklikleri kolayca görebilir.
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:
Üçüncü taraf Git kılavuzları
- Git'in nasıl kullanılacağı hakkında eğitim videoları (Wikimedia Commons'da)
- Git'i deneyin (etkileşimli demo)
- GitMagic Çevirileri olan bir git kılavuzu
- 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
- 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