Kod değişikliklerini gönderme

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:

Dal oluşturma

Yapmayı planladığınız her kod değişikliği için aşağıdaki adımları uygulayın:

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

  2. (İ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:

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

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

  3. Kaynak dosyaları değiştirme veya ekleme Yapılan değişiklikler için:

  4. Build Android.

  5. Derlemenizi test edin.

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:

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

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

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

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

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

  2. 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)?
    
  3. 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:

  1. Gerrit'te SUGGEST OWNERS'ı (SAHİPLER ÖNER) tıklayın:

    Gerrit'te sahipleri önerme bağlantısı

    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.

  2. İncelemenize eklemek istediğiniz kod sahibini tıklayın.

    GÖNDER düğmesi etkinleştirilir.

  3. (İsteğe bağlı) Değişikliğinizi incelemesini istediğiniz diğer kişilerin e-posta adresini girin.

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

Kod sahibinin onayını gösteren simgeler içeren dosya örneği

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

  1. Değişikliğinizi yapma ve test etme bölümündeki 2-4 arasındaki adımları uygulayın.

  2. Değişikliğinizi düzeltmek için aşağıdaki komutları çalıştırın:

    git add -A
    git commit --amend
  3. Değişikliğinizi yükleyin.

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:

  1. En güncel kodla çalıştığınızdan emin olun:

    repo sync .

    repo sync komutu, güncellemeleri kaynak sunucudan getirir ve ardından HEAD öğenizi yeni uzak HEAD üzerine otomatik olarak yeniden temellendirmeye çalışır.

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

    repo rebase .
  3. 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.

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