Yamaları gönder

Bu sayfada, Gerrit ile nasıl inceleme isteyebileceğiniz ve değişikliklerinizi takip edebileceğiniz de dahil olmak üzere Android Açık Kaynak Projesi'ne (AOSP) yama gönderme işleminin tamamı açıklanmaktadır. Gerrit, Git kullanan projelere yönelik web tabanlı bir kod inceleme sistemidir. Gerrit, tüm yetkili kullanıcıların değişiklikleri göndermesine izin vererek Git'in daha merkezi kullanımını teşvik eder; bu değişiklikler, kod incelemesini geçmeleri durumunda otomatik olarak birleştirilir. Ayrıca Gerrit, değişiklikleri tarayıcıda yan yana görüntüleyerek ve satır içi yorumları etkinleştirerek incelemeyi kolaylaştırır.

Önkoşullar

Başlamak için aşağıdakileri yaptığınızdan emin olun:

Kaynaklar

  • Repo ve Git ile ilgili ayrıntılar için Kaynak Kontrol Araçları sayfasına bakın.
  • Android Açık Kaynak topluluğu içindeki farklı roller hakkında bilgi için Proje rolleri sayfasına bakın.
  • Android platformuna kod katkıda bulunmaya ilişkin lisanslama bilgileri için Lisanslar sayfasına bakın.

Git'i yapılandır

Gerrit'i kullanabilmeniz için e-postanızın kayıtlı bir Google Hesabı ile ilişkilendirilmesi gerekir. Git'i kayıtlı bir Google Hesabıyla ilişkilendirilmiş bir ad ve e-posta adresiyle yapılandırmak için aşağıdaki komutları çalıştırın:

git config --global user.name Your Name
git config --global user.email your_email@gmail.com
    

Sunucuyla kimlik doğrulama

Bir IP adresini diğer kullanıcılarla paylaşırsanız, normal kullanım kalıpları için bile kotalar tetiklenebilir. Bu, örneğin birçok kullanıcının aynı IP adresinden yeni istemcileri kısa bir süre içinde senkronize etmesi durumunda meydana gelebilir. Kimliği doğrulanmış erişim, IP adresinden bağımsız olarak her kullanıcı için ayrı bir kota kullanır. Kimlik doğrulamalı erişimi etkinleştirme hakkında bilgi edinmek için bkz. Kimlik doğrulamayı kullanma .

Repo şubesi başlatın

Yapmayı düşündüğünüz her değişiklik için ilgili Git deposunda yeni bir şube başlatın:

repo start NAME .

You can start several independent branches at the same time in the same repository. The branch NAME is local to your workspace and isn't included either on Gerrit or in the final source tree.

Make your change

Modify the source files, and test your changes.

For any changes made, follow License header best practices.

Commit your change

Commit the changes to your local repository with these commands:

git add -A
git commit -s

Açıklamaları değiştir

  • 1. Satır: Başlık

    Tek satırlık bir özet sağlayın ( maksimum 50 karakter)

    Bu format Git ve Gerrit tarafından çeşitli gösterimler için kullanılır. Taahhüt mesajınızın en önemli, en yoğun kısmıdır. Değiştirdiğiniz alanı tanımlamak için önekleri kullanmayı ve ardından bu işlemde yaptığınız değişikliğin açıklamasını (örneğin, öneki ui olan) kullanmayı düşünün:

    ui: Removes deprecated widget

  • Satır 2: Boş

    Bu satırı her zaman boş tutun.

  • Satır 3: Gövde

    Bu satırdan başlayarak daha uzun bir açıklama yazın.

    Bu, maksimum 72 karakter olacak şekilde sabit olarak sarılmalıdır. Değişikliğin hangi sorunu ve nasıl çözdüğünü açıklayın. Her ne kadar yeni özellikler uygulanırken bu isteğe bağlı olsa da, daha sonra diğerlerinin özellikle hata ayıklama amacıyla bu değişikliğe başvurmaları çok faydalı olacaktır.

    Katkıda bulunan başka bir kişi bu özellik üzerinde çalıştığında önemli olabilecek varsayımlara veya arka plan bilgilerine ilişkin kısa bir not ekleyin.

repo init sırasında sağlanan benzersiz bir değişiklik kimliği ve adınız ile e-posta adresiniz, taahhüt mesajınıza otomatik olarak eklenir.

İşte bir örnek taahhüt mesajı:

Line 1, Headline - a short description

Line 3, Body - Add the detailed description of your patch here. Use as many lines
as needed. You can write an overall description, then list specifics.

I6e3c64e7a:Added a new widget.
I60c539a8f:Fixed the spinning image.
To read a blog about good commit descriptions (with examples), see How to Write a Git Commit Message by Chris Beams.

Upload to Gerrit

After you commit your change to your personal history, upload it to Gerrit with this command:

repo upload

If you started multiple branches in the same repository, you're prompted to select which ones to upload.

After a successful upload, Repo provides you with the URL of a new page on Gerrit. Click the link that Repo gives you to view your patch on the review server, add comments, or request specific reviewers for your patch.

Request a review

After you've uploaded your changes to Gerrit, the patch must be reviewed and approved by the appropriate code owners. Locate code owners in OWNERS files.

To find the appropriate code owners and add them as reviewers for your change, follow these steps.

  1. Select the SUGGEST OWNERS link in the Gerrit UI to see a list of code owners for the files in your patch.

    suggest owners link in Gerrit
    Figure 1. Suggest owners link in Gerrit
  2. Add code owners from the list as reviewers for your patch.

To determine the status of the files in your patch, check for the following icons next to the files in the patch.

  • (checkmark icon): Approved by code owner
  • (cross icon): Not approved by code owner
  • (clock icon): Pending approval by code owner
Figure 2. Example of files with icons showing code owner approval status

Upload a replacement patch

Suppose a reviewer looked at your patch and requested a small modification. You can amend your commit within Git, which results in a new patch on Gerrit that has the same change ID as the original.

git add -A
git commit --amend

Değiştirilen yamayı yüklediğinizde, hem Gerrit'te hem de yerel Git geçmişinizde orijinalin yerine geçer.

Senkronizasyon çakışmalarını çözme

Kaynak ağacına sizinkiyle çakışan başka yamalar gönderilirse, yamanızı kaynak deposunun yeni HEAD üzerine yeniden yerleştirin. Bunu yapmak için şu komutu çalıştırın:

repo sync

repo sync komutu, güncellemeleri kaynak sunucudan alır ve ardından HEAD otomatik olarak yeni uzak HEAD yeniden yerleştirmeye çalışır.

Otomatik yeniden temellendirme başarısız olursa, manuel yeniden temellendirme gerçekleştirin.

repo rebase

Rebase çatışmasıyla başa çıkmak için başka bir araç da git mergetool . Çakışan dosyaları başarıyla birleştirdiğinizde şu komutu çalıştırın:

git rebase --continue

Otomatik veya manuel yeniden oluşturma tamamlandıktan sonra, yeniden temellenen yamayı göndermek için repo upload çalıştırın.

Gönderim onaylandıktan sonra

Bir gönderim inceleme ve doğrulama sürecinden geçtikten sonra Gerrit, değişikliği otomatik olarak genel depoya birleştirir. Diğer kullanıcılar, güncellemeyi kendi yerel istemcilerine çekmek için repo sync çalıştırabilir.

Yukarı yönlü projeler için

Android, Android Yazılım Yönetimi bölümünde açıklandığı gibi Linux çekirdeği ve WebKit gibi bir dizi başka açık kaynak projeden yararlanır. external/ altında bulunan çoğu proje için değişiklikleri yukarı yönde yapın, ardından değişikliklerinizi içeren yeni yukarı yöndeki sürüm hakkında Android bakımcılarını bilgilendirin.

Ayrıca yeni bir yukarı akış sürümünün izlenmesine neden olan yamaları da yükleyebilirsiniz. Aşağıda belirtilen ve genellikle her sürümde yükseltilen daha büyük değişikliklerin çoğu gibi, projenin Android'de yaygın olarak kullanılması durumunda bunların yapılması zor değişiklikler olabileceğini unutmayın.

İlginç bir özel durum Bionic'tir. Kodun büyük bir kısmı BSD'den geliyor, dolayısıyla Bionic için yeni olan bir kodda değişiklik yapılmadığı sürece, lütfen yukarı yönde bir düzeltme yapın ve ardından uygun BSD'den tamamen yeni bir dosya çekin.

Android çekirdeği

Tüm değişiklikleri yukarı yönde yapın. Genel rehberlik için Android Çekirdek Katkı Yönergeleri'ni ve GKI için Çekirdek Kodu Geliştirme sayfasını izleyin.

yoğun bakım

ICU projesindeki tüm değişiklikleri ICU-TC Ana Sayfasındaki external/icu ( icu4c/ ve icu4j/ klasörleri) yapın. Daha fazla bilgi için bkz . Yoğun Bakım Hatalarını ve Özellik İsteklerini Gönderme. Tüm yukarı akış Jira isteklerine "android" etiketini ekleyin.

CLDR

ICU'daki dilsel verilerin çoğu Unicode CLDR projesinden gelir. Tüm istekleri CLDR'ye Katkıda Bulunma'ya göre yukarı akışa gönderin ve "android" etiketini ekleyin.

LLVM/Clang/Derleyici-rt

LLVM Derleyici Altyapısı sayfasında LLVM ile ilgili projelerde ( external/clang , external/compiler-rt , external/llvm ) tüm değişiklikleri yapın.

mksh

MirBSD Korn Shell projesinde tüm değişiklikleri external/mksh adresinden, mirbsd.org alan adındaki miros-mksh (oraya göndermek için abonelik gerekmez) veya Launchpad'den bir e-posta göndererek yapın.

OpenSSL

OpenSSL projesinde tüm değişiklikleri OpenSSL sayfasındaki external/openssl adresinde yapın.

V8

V8 projesindeki tüm değişiklikleri V8 sorun sayfasında external/v8 gönderin. Ayrıntılar için bkz . V8'e Katkıda Bulunma.

Web Kiti

WebKit projesinde tüm değişiklikleri WebKit sayfasındaki external/webkit yapın. Bir WebKit hatası bildirerek işlemi başlatın. Hatada, yalnızca hata Android'e özelse Platform ve İşletim Sistemi alanları için Android kullanın. Önerilen bir düzeltme eklendikten ve testler dahil edildikten sonra hataların incelemecilerin dikkatini çekme olasılığı çok daha yüksektir. Ayrıntılar için WebKit'e Kod Katkıda Bulunma konusuna bakın.

zlib

Zlib projesinde tüm değişiklikleri zlib ana sayfasındaki external/zlib adresinde yapın.