Yamaları Gönderme

Bu sayfada, Gerrit ile nasıl inceleme talebinde bulunacağınız ve değişikliklerinizi nasıl izleyeceğiniz dahil olmak üzere Android Açık Kaynak Projesi'ne (AOSP) bir yama gönderme sürecinin tamamı açıklanmaktadır.

Önkoşullar

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

Kaynaklar

  • Repo ve Git hakkında 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ısıyla ilgili lisans bilgileri için Lisanslar sayfasına bakın.

Katkıda bulunanlar için

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ı aynı IP adresinden yeni istemcileri kısa bir süre içinde eşitlediğinde olabilir. Kimliği doğrulanmış erişim, IP adresinden bağımsız olarak her kullanıcı için ayrı bir kota kullanır. Kimliği doğrulanmış erişimi etkinleştirme hakkında bilgi almak için Kimlik doğrulamayı kullanma bölümüne bakın.

Repo şubesi başlatmak

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

repo start NAME .

Aynı depoda aynı anda birkaç bağımsız şube başlatabilirsiniz. NAME dalı, çalışma alanınızda yereldir ve ne Gerrit'te ne de son kaynak ağacında yer almaz.

Değişikliğinizi yapmak

Kaynak dosyaları değiştirin ve değişikliklerinizi doğrulayın.

Değişiklikleri yerel deponuza şu komutlarla uygulayın:

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 ( en fazla 50 karakter)

    Bu biçim 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 önekler kullanmayı ve ardından bu taahhütte yaptığınız değişikliğin bir açıklamasını kullanmayı düşünün; örneğin, ön ek olarak kullanıcı ui sahip olan bu:

    ui: Removes deprecated widget

  • 2. satır: 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 karakterde sabit sarılmalıdır. Değişikliğin hangi sorunu ve nasıl çözdüğünü açıklayın. Bu, yeni özellikleri uygularken isteğe bağlı olsa da, daha sonra özellikle hata ayıklama için bu değişikliğe atıfta bulunan diğer kişiler için çok yararlıdır.

    Başka bir katılımcı bu özellik üzerinde çalışırken önemli olabilecek varsayımların veya arka plan bilgilerinin kısa bir notunu ekleyin.

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

İşte örnek bir 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.
İyi taahhüt açıklamaları hakkında bir blog okumak için (örneklerle birlikte), Chris Beams tarafından Git Taahhüt Mesajı Nasıl Yazılır konusuna bakın.

Gerrit'e yükleme

Kişisel geçmişinize yaptığınız değişikliği yaptıktan sonra, bu komutla Gerrit'e yükleyin:

repo upload

Aynı depoda birden çok şube başlattıysanız, hangilerinin yükleneceğini seçmeniz istenir.

Başarılı bir yüklemeden sonra, Repo size Gerrit'te yeni bir sayfanın URL'sini sağlar. Yamanızı inceleme sunucusunda görüntülemek, yorum eklemek veya yamanız için belirli gözden geçirenler istemek için Repo'nun size verdiği bağlantıya tıklayın.

İnceleme talep etme

Değişikliklerinizi Gerrit'e yükledikten sonra, yama uygun kod sahipleri tarafından gözden geçirilmeli ve onaylanmalıdır. OWNERS dosyalarında kod sahiplerini bulun.

Uygun kod sahiplerini bulmak ve bunları değişikliğiniz için gözden geçirenler olarak eklemek için aşağıdaki adımları izleyin.

  1. Yamanızdaki dosyalar için kod sahiplerinin listesini görmek için Gerrit kullanıcı arayüzündeki SAHİPLERİ ÖNER bağlantısını seçin.

    Gerrit'te sahiplerin bağlantısını öner
    Şekil 1. Gerrit'te sahip öner bağlantısı
  2. Yamanız için gözden geçirenler olarak listeden kod sahiplerini ekleyin.

Yamanızdaki dosyaların durumunu belirlemek için yamadaki dosyaların yanında aşağıdaki simgeleri kontrol edin.

  • (onay işareti simgesi): Kod sahibi tarafından onaylandı
  • (çapraz simge): Kod sahibi tarafından onaylanmadı
  • (saat simgesi): Kod sahibinin onayı bekleniyor
Şekil 2. Kod sahibi onay durumunu gösteren simgeler içeren dosya örneği

Yeni bir yama yükleme

Bir gözden geçirenin yamanıza baktığını ve küçük bir değişiklik istediğini varsayalım. Taahhüdünüzü Git içinde değiştirebilirsiniz; bu, Gerrit'te orijinaliyle aynı değişiklik kimliğine sahip yeni bir yama ile sonuçlanır.

git add -A
git commit --amend

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

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

Kaynak ağaca sizinkiyle çelişen başka yamalar gönderilirse, yamanızı kaynak havuzunun yeni HEAD üstüne yeniden yerleştirin. Bunu yapmak için şu komutu çalıştırın:

repo sync

repo sync komut sonra, otomatik olarak rebase girişimlerini kaynak sunucudan güncellemeleri getirir HEAD yeni uzaktan üzerine HEAD .

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

repo rebase

git mergetool çakış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 temellendirme tamamlandıktan sonra, yeniden temellenen yamanızı göndermek için repo upload çalıştırın.

Gönderim onaylandıktan sonra

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

Yukarı akış projeleri 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 projesini kullanır. external/ altında bulunan çoğu proje için değişiklikleri yukarı akış yapın, ardından Android bakımcılarını değişikliklerinizi içeren yeni yukarı akış sürümü hakkında bilgilendirin.

Yeni bir yukarı akış sürümünün izlenmesine neden olan yamaları da yükleyebilirsiniz. Proje, aşağıda belirtilen ve genellikle her sürümde yükseltilen daha büyük olanların çoğu gibi, Android'de yaygın olarak kullanılıyorsa, bunların yapılması zor olabilir.

İlginç bir özel durum Bionic'tir. Kodun çoğu BSD'den geliyor, bu nedenle değişiklik Bionic'te yeni olan bir kod değilse, lütfen bir yukarı akış düzeltmesi yapın, ardından uygun BSD'den tamamen yeni bir dosya çekin.

Android Çekirdeği

Tüm değişiklikleri yukarı yönde yapmayı tercih edin. Genel rehberlik için Android Çekirdeği Katkı Yönergeleri'ni izleyin.

yoğun bakım

ICU4C projesinde tüm değişiklikleri ICU-TC Ana Sayfasında external/icu4c icu4c'de yapın. Daha fazlası için YBÜ Hatalarını ve Özellik İsteklerini Gönderme bölümüne bakın.

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, ya mirbsd.org alan miros-mksh bir e miros-mksh posta göndererek (orada göndermek için abonelik gerekmez) veya Launchpad'den external/mksh adresinde yapın.

OpenSSL

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

V8

V8 projesinde yapılan tüm değişiklikleri V8 sorun sayfasındaki external/v8 gönderin. Ayrıntılar için V8'e Katkıda Bulunma bölümüne bakın.

WebKit

WebKit projesindeki tüm değişiklikleri WebKit sayfasındaki external/webkit . Bir WebKit hatası göndererek süreci başlatın . Hata olarak kullanmak Android Platformu için ve OS hata Android'e özgü olduğu takdirde alanlar. Önerilen bir düzeltme eklendikten ve testler dahil edildikten sonra hataların gözden geçirenlerin dikkatini çekmesi çok daha olasıdır. Ayrıntılar için Kodu WebKit'e Katma bölümüne bakın.

zlib

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