Bu sayfada, inceleme isteğinde bulunma ve değişikliklerinizi izleme dahil olmak üzere Android Açık Kaynak Projesi'ne (AOSP) kod değişikliği gönderme sürecinin tamamı açıklanmaktadır.
AOSP, Git kullanan projeler için web tabanlı bir kod inceleme sistemi olan Gerrit'i kullanır.
Katkıda bulunanların lisans sözleşmelerini imzalama
AOSP'ye herhangi bir kod değişikliği göndermeden önce Katkıda bulunan lisans sözleşmelerini ve başlıklarını okumanız ve aşağıdaki sözleşmelerden birini imzalamanız gerekir:
- Yalnızca kendi adınıza katkıda bulunan bireysel bir katkıda bulunan olarak Bireysel Katkıda Bulunan Lisans Sözleşmesi'ni imzalayın.
- Bir şirkette çalışan olarak, şirketinizin Kurumsal Katkıda Bulunan Lisans Sözleşmesi'ni imzaladığından ve bu sözleşmeyle şirket adına katkıda bulunma yetkisi aldığınızdan emin olun.
Dal oluşturma
Yapmayı planladığınız her kod değişikliği için aşağıdaki adımları uygulayın:
İlgili Git deposunda yeni bir dal başlatın. Dallar, orijinal dosyaların kopyası değildir. Belirli bir işleme yönelik işaretçilerdir. Bu nedenle, yerel dallar oluşturmak ve bunlar arasında geçiş yapmak kolay bir işlemdir. Dalları kullanarak değişiklikleri birbirinden ayırt edebilirsiniz. Bir dal başlatmak için şu komutu çalıştırın:
repo start BRANCH_NAME
Aynı depoda aynı anda birkaç bağımsız dal başlatabilirsiniz. BRANCH_NAME dalı, çalışma alanınızda yereldir ve Gerrit'e veya nihai kaynak ağacına dahil edilmez. Dallar, bulunduğunuz projeye de özeldir. Bu nedenle, aynı değişikliğin bir parçası olarak farklı projelerdeki dosyaları değiştirmeniz gerekiyorsa dosya değiştirdiğiniz her projede bir dal oluşturmanız gerekir.
(İsteğe bağlı) Şubenin oluşturulduğunu doğrulayın:
repo status .
Yeni oluşturduğunuz şubeyi görmeniz gerekir. Örneğin:
project frameworks/native/ branch mynewbranch
Değişikliğinizi yapma ve test etme
Değişikliğinizi yapmak ve test etmek için aşağıdaki adımları uygulayın:
En güncel kod tabanıyla çalıştığınızdan emin olmak için kod tabanının tamamını senkronize edin:
repo sync
Senkronizasyon sırasında çakışmalarla karşılaşırsanız Senkronizasyon çakışmalarını çözme başlıklı makalenin 2-4. adımlarını inceleyin.
Değiştirmek istediğiniz kodu bulun. Kod bulmak için Android Code Search'ü kullanabilirsiniz. AOSP kaynak kodunu gerçekte kullandığınız şekilde görmek için Android Code Search'ü kullanabilirsiniz. Daha fazla bilgi için Code Search'ü kullanmaya başlama başlıklı makaleyi inceleyin. Android Code Search'te en son AOSP sürüm dalındaki tüm kodu görüntülemek için
https://cs.android.com/android/platform/superproject/
adresine gidin.Kaynak dosyaları değiştirme veya ekleme Yapılan değişiklikler için:
Özellik lansmanı işaretleri kullanmanız gerekip gerekmediğini belirleyin ve gerekirse bunları yeni kodunuzda uygulayın.
Lisans başlıkları ekleme bölümündeki en iyi uygulamaları izleyin.
Java kodu için AOSP Java code style for contributors (Katkıda bulunanlar için AOSP Java kodu stili) bölümündeki talimatları uygulayın.
AOSP'nin bazı bölümleri Kotlin (
.kt
) ile yazılmıştır ve platformun Kotlin ile yazılmış bölümlerinde Kotlin kullanabilirsiniz. Android'de Kotlin hakkında daha fazla bilgi için Android geliştirici Kotlin stil kılavuzuna ve Kotlin-Java birlikte çalışabilirlik kılavuzuna bakın. Kotlin hakkında daha kapsamlı bilgi için Kotlin dil sitesine bakın.API yazarken Android API Yönergeleri'ne uyun. Android'in API kararlarının arkasındaki bağlamı görmek için bu yönergeleri kullanın. Platform API'lerinde yapılan eklemeler ve değişiklikler Metalava tarafından doğrulanır.
Değişikliğinizi hazırlayın ve işleyin
Commit, Git'teki temel revizyon kontrolü birimidir ve tüm projenin dizin yapısının ve dosya içeriklerinin anlık görüntüsünden oluşur. Değişikliğinizi işlemek için aşağıdaki adımları uygulayın:
Varsayılan olarak Git, yaptığınız değişiklikleri kaydeder ancak izlemez. Git'e değişikliklerinizi izlemesini söylemek için bu değişiklikleri bir taahhüde dahil edilecek şekilde işaretlemeniz veya hazırlamanız gerekir. Değişikliği hazırlamak için bu komutu çalıştırın:
git add -A
Bu komut, dosyalarda yaptığınız değişiklikleri izler.
Hazırlama alanındaki dosyaları alıp yerel veritabanınıza kaydedin veya depolayın:
git commit -s
Varsayılan olarak bir metin düzenleyici açılır ve sizden bir commit mesajı sağlamanız istenir.
Aşağıdaki biçimde bir commit mesajı sağlayın:
1. satır: Başlık. Değişikliğin tek satırlık bir özetini girin (en fazla 50 karakter). Değiştirdiğiniz alanı açıklamak için önekler kullanmayı düşünebilirsiniz. Ardından, bu commit'te yaptığınız değişikliğin açıklamasını ekleyin. Örneğin, kullanıcı arayüzü değişikliği içeren aşağıdaki örneği kullanabilirsiniz:
ui: Removes deprecated widget
2. satır: Boş satır. Başlığın ardından boş bir satır bırakın.
3. satır: Gövde. Maksimum 72 karakterde satır sonu içeren uzun bir açıklama girin. Değişikliğin hangi sorunu nasıl çözdüğünü açıklayın. Gövde isteğe bağlı olsa da değişikliğe tekrar bakması gereken diğer kullanıcılar için faydalıdır. Başka bir katılımcı bu özellik üzerinde çalışırken önemli olabilecek varsayımlar veya arka plan bilgileriyle ilgili kısa bir not eklemeyi unutmayın.
İyi commit açıklamaları (örneklerle birlikte) hakkında bir blog yazısı okumak için How to Write a Git Commit Message (Git Commit İletisi Nasıl Yazılır?) başlıklı makaleyi inceleyin.
Commit işlemini kaydedin.
repo init
sırasında sağlanan benzersiz bir değişiklik kimliği ile adınız ve e-posta adresiniz, commit iletinize otomatik olarak eklenir.
Değişikliği incelemeye gönderme
Değişikliğinizi kişisel Git geçmişinize kaydettikten sonra Gerrit'e yükleyin:
Tüm projelerinizdeki tüm commit'lerinizi yüklemek için aşağıdaki komutu çalıştırın:
repo upload
Tüm projelerdeki tüm değişiklikler yüklemeye dahil edilir.
Hook komut dosyalarını çalıştırmanız istenir.
a ve ardından Enter tuşlarına basın.
Yüklemeyi onaylamanız istenir:
Upload project frameworks/native/ to remote branch android16-release: branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android codelab change to https://android-review.googlesource.com/ (y/N)?
Yüklemeyi onaylamak için y ve ardından Enter tuşuna basın.
remote: SUCCESS
adlı kullanıcıya benzer bir mesaj alırsınız.
İnceleme isteğinde bulunun
Başarılı bir yükleme işleminden sonra Repo, Gerrit'teki değişikliklerinize yönelik bir bağlantı sağlar. Değişikliklerinizi inceleme sunucusunda görüntülemek, yorum eklemek veya değişikliğiniz için belirli incelemeciler talep etmek üzere bağlantıyı tıklayın. Koddaki tüm değişiklikler, uygun kod sahipleri tarafından incelenmelidir.
İnceleme isteğinde bulunmak için:
Gerrit'te SUGGEST OWNERS'ı (SAHİPLER ÖNER) tıklayın:
1. şekil. Gerrit'te sahiplerin bağlantısını önerme
Yorumcu iletişim kutusu görünür. Bu iletişim kutusunda, değişikliğinizi inceleyebilecek kod sahiplerinin listesi yer alır.
İncelemenize eklemek istediğiniz kod sahibini tıklayın.
GÖNDER düğmesi etkinleştirilir.
(İsteğe bağlı) Değişikliğinizi incelemesini istediğiniz diğer kişilerin e-posta adresini girin.
Değişikliği incelemeye göndermek için GÖNDER'i tıklayın.
Kod sahipleri, kod değişikliklerinizi inceler ve kabul ederse değişikliği seçerek dahili geliştirme dalıyla birleştirir.
Değişikliğin durumunu belirleme
Değişikliğinizdeki dosyaların durumunu belirlemek için değişikliğin içindeki dosyaların yanında aşağıdaki simgeleri arayın:
- (onay işareti simgesi): Kod sahibinin onayı
- (çarpı simgesi): Kod sahibi tarafından onaylanmadı
- (saat simgesi): Kod sahibinin onayı bekleniyor
Aşağıdaki şekilde, bu durum simgelerinin bir değişiklikteki dosyalara nasıl uygulandığı gösterilmektedir:
Şekil 2. Kod sahibinin onayını gösteren simgeler içeren dosya örneği.
Geri bildirimi çözme ve yerine değişiklik yükleme
İnceleyen yetkili, güncellemenizde değişiklik yapılmasını isterse Git'te commit'inizi düzeltebilirsiniz. Bu durumda, aynı değişiklik için yeni bir yama grubu oluşturulur.
Geri bildirimi çözmek ve değişikliğinizi düzeltmek için:
Değişikliğinizi yapma ve test etme bölümündeki 2-4 arasındaki adımları uygulayın.
Değişikliğinizi düzeltmek için aşağıdaki komutları çalıştırın:
git add -A git commit --amend
Değiştirilmiş değişikliği yüklediğinizde, hem Gerrit'te hem de yerel Git geçmişinizde orijinal değişikliğin yerini alır.
Senkronizasyon çakışmalarını çözme
Kaynak ağacına, sizin değişikliklerinizle çakışan başka değişiklikler gönderilirse çakışmalarınız olduğuyla ilgili bir mesaj alırsınız. Çakışmaları gidermek için:
En güncel kodla çalıştığınızdan emin olun:
repo sync .
repo sync
komutu, güncellemeleri kaynak sunucudan getirir ve ardındanHEAD
öğenizi yeni uzakHEAD
üzerine otomatik olarak yeniden temellendirmeye çalışır.Otomatik yeniden temellendirme başarısız olursa manuel yeniden temellendirme gerçekleştirin:
repo rebase .
Birleştirme çakışmalarını çözün. Birleştirme çakışmalarını çözmek için tercih ettiğiniz bir yöntem yoksa dosyalar arasındaki çakışmaları manuel olarak düzeltmek için
git mergetool
'ı kullanabilirsiniz.Çakışan dosyaları başarıyla düzelttiğinizde yeni commit'leri uygulamak için bu komutu çalıştırın:
git rebase --continue
Değişikliği gönder
Gönderim, inceleme ve doğrulama sürecini tamamladıktan sonra kod sahibi, kodu sizin için gönderir. Bu işlem, değişikliğin incelendiği dalda veya dahili bir dalda yapılır.
Gönderiminiz birleştirildikten sonra, gönderimlerinizin ağaca ne zaman entegre edildiğini izlemek için Android Sürekli Entegrasyon kontrol panelini ziyaret edebilirsiniz.