Kod değişikliklerini gönder

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 için kod değişiklikleri yapmadan önce Katkıda Bulunan Lisans Sözleşmeleri ve Başlıkları'nı okumanız ve aşağıdaki sözleşmelerden birini imzalamanız gerekir:

Dal oluşturma

Yapmak istediğiniz 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. Dal, orijinal dosyaların kopyası değil, belirli bir kayda işaretçidir. Bu sayede yerel dallar oluşturmak ve bunlar arasında geçiş yapmak kolay bir işlem haline gelir. Dalları kullanarak değişiklikleri birbirinden ayırt edebilirsiniz. Şube başlatmak için şu komutu çalıştırın:

    repo start BRANCH_NAME
    

    Aynı depoda aynı anda birden fazla bağımsız dal başlatabilirsiniz. BRANCH_NAME şubesi, çalışma alanınıza yereldir ve Gerrit'e veya nihai kaynak ağacına dahil edilmemiştir. Dallar, bulunduğunuz projeye de özeldir. Bu nedenle, aynı değişikliğin bir parçası olarak farklı projelerdeki dosyaları değiştirmeniz gerekirse dosya değiştirdiğiniz her projede bir dalınız olmalıdır.

  2. (isteğe bağlı) Şubenin oluşturulduğunu doğrulayın:

    repo status .
    

    Yeni oluşturduğunuz dalı görürsünüz. Örnek:

    project frameworks/native/                      branch mynewbranch
    

Değişiklik yapın ve test edin

Değişiklik 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 herhangi bir çakışma yaşarsanız Senkronizasyon çakışmalarını çözme başlıklı makalenin 2-4. adımlarına bakın.

  2. Değiştirilecek kodu bulun. Kod bulmak için Android Code Search'i kullanabilirsiniz. AOSP kaynak kodunu, gerçekten kullanırken düzenlendiği şekilde görüntülemek için Android Code Search'i kullanabilirsiniz. Daha fazla bilgi için Code Search'i kullanmaya başlama başlıklı makaleyi inceleyin. Android kod aramasında main dalındaki tüm kodu görüntülemek için https://cs.android.com/android/platform/superproject/main bölümüne gidin.

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

  4. Android'i derleyin.

  5. Derlemenizi test edin.

Değişikliklerinizi aşamalandırıp kaydetme

Commit, Git'teki düzeltme denetiminin temel birimidir ve projenin tamamının dizin yapısı ve dosya içeriklerinin anlık görüntüsünden oluşur. Değişikliklerinizi kaydetmek için aşağıdaki adımları uygulayın:

  1. Git varsayılan olarak yaptığınız değişiklikleri kaydeder ancak izlemez. Git'e değişikliklerinizi izlemesini bildirmek için bu değişiklikleri bir kayda dahil edilmek üzere işaretlemeniz veya aşamaya almanız gerekir. Değişikliği aşamalı olarak uygulamak için şu komutu çalıştırın:

    git add -A
    

    Bu komut, dosyalarda yaptığınız değişiklikleri izler.

  2. Dosyaları hazırlık alanından alıp yerel veritabanınızda kaydetme veya depolama:

    git commit -s
    

    Varsayılan olarak bir metin düzenleyici açılır ve bir taahhüt mesajı girmeniz istenir.

  3. Aşağıdaki biçimde bir gönderme 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ı tanımlamak için ön eklerin ardından bu kayda yaptığınız değişikliğin açıklamasını kullanabilirsiniz. Kullanıcı arayüzü değişikliği içeren aşağıdaki örnekte bu yöntem gösterilmektedir:

      ui: Removes deprecated widget
      
    • 2. satır: Boş satır. Başlığın ardından boş bir satır ekleyin.

    • 3. satır: Gövde. Maksimum 72 karakterde sabit satır başı olacak şekilde 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ği tekrar incelemesi gereken diğer kullanıcılar için faydalıdır. Başka bir katkıda bulunan bu özellik üzerinde çalışırken önemli olabilecek varsayım veya arka plan bilgilerini kısaca not edin.

    İyi commit açıklamaları hakkında (örneklerle) bir blog okumak için Git Commit Mesajı Yazma başlıklı makaleyi inceleyin.

  4. Taahhüt işlemini kaydedin.

Benzersiz bir değişiklik kimliği ve repo init sırasında sağladığınız adınız ile e-posta adresiniz, gönderme mesajınıza otomatik olarak eklenir.

Değişikliği incelemeye gönderme

Değişikliklerinizi kişisel Git geçmişinize kaydettikten sonra Gerrit'e yükleyin:

  1. Tüm projelerinizin tüm gönderimlerini 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.

    Kanca 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 main:
    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şlarına basın.

remote: SUCCESS'e benzer bir mesaj alırsınız.

İnceleme isteğinde bulunun

Yükleme işlemi başarıyla tamamlandıktan sonra Repo, Gerrit'teki değişikliklerinizin bağlantısını sağlar. Değişikliklerinizi inceleme sunucusunda görüntülemek, yorum eklemek veya değişikliğiniz için belirli incelemeciler istemek için bağlantıyı tıklayın. Koddaki tüm değişiklikler, ilgili kod sahipleri tarafından incelenmelidir.

İnceleme isteğinde bulunmak için:

  1. Gerrit'te SAHİP ÖNERİ'yi tıklayın:

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

    Şekil 1. Gerrit'te sahip öneri bağlantısı.

    İnceleme uzmanı iletişim kutusu görünür. Bu iletişim kutusu, değişikliğinizi inceleyebilecek kod sahiplerinin listesini içerir.

  2. Bir kod sahibini tıklayarak yorumunuza ekleyin.

    GÖNDER düğmesi etkinleştirilir.

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

  4. (İsteğe bağlı) Onay aldıktan sonra değişikliği otomatik olarak göndermek için Otomatik gönder'in yanındaki +1 simgesini tıklayın. Bu düğmeyi tıklamazsanız değişikliğiniz bir Google çalışanı tarafından sizin adınıza gönderilmelidir.

  5. Değişikliği incelemeye göndermek için GÖNDER'i tıklayın.

Kod sahipleri, kod değişikliklerinizi inceler ve değişiklikleri çözmeniz veya onaylamanız için geri bildirim sağlar.

Değişikliğin durumunu belirleme

Değişiklikteki dosyaların durumunu belirlemek için değişiklikteki dosyaların yanındaki aşağıdaki simgeleri kontrol edin:

  • (onay işareti simgesi): Kod sahibi tarafından onaylandı
  • (haç simgesi): kod sahibi tarafından onaylanmadı
  • (saat simgesi): Kod sahibinin onayı bekleniyor

Aşağıdaki şekilde, bir değişiklikteki dosyalara uygulanan bu durum simgeleri gösterilmektedir:

Kod sahibinin onayını gösteren simgelerin bulunduğu dosyalar örneği

Şekil 2. Kod sahibinin onayını gösteren simgelerin bulunduğu dosyalar örneği.

Geri bildirimi çözme ve değişim değişikliği yükleme

Bir inceleme uzmanı, güncellemenizde değişiklik yapılmasını isterse Git'te gönderiminizi düzeltebilirsiniz. Bu işlem, aynı değişiklik için yeni bir yama grubu oluşturur.

Geri bildirimi çözmek ve değişikliğinizi düzeltmek için:

  1. Değişikliğinizi yapın ve test edin başlıklı makaledeki 2-4. adımları uygulayın.

  2. Değişikliklerinizi 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.

Düzeltilen değişikliği yüklediğinizde bu değişiklik 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 sizinkilerle çakışan başka değişiklikler gönderilirse çakışmalar olduğunu belirten bir mesaj alırsınız. Çakışmaları çözmek 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 dosyanızı yeni uzak HEAD dosyasına otomatik olarak yeniden temellendirmeyi dener.

  2. Otomatik yeniden temellendirme başarısız olursa manuel olarak yeniden temellendirme yapın:

    repo rebase .
    
  3. Birleştirme çakışmalarını çözme 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'i kullanabilirsiniz.

  4. Çakışan dosyaları başarıyla düzelttikten sonra yeni taahhütleri uygulamak için şu komutu çalıştırın:

    git rebase --continue
    

Değişikliği gönder

Gönderim, inceleme ve doğrulama sürecinden geçtikten sonra bir Google inceleme uzmanı kodu sizin için göndermelidir. Diğer kullanıcılar, güncellemeyi kendi yerel istemcilerine çekmek için repo sync komutunu çalıştırabilir.

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.