Kaynak kontrolü iş akışı

Android koduyla çalışmak için açık kaynaklı bir sürüm kontrol sistemi olan Git ve Git üzerinde çalışan, Google tarafından geliştirilmiş bir depo yönetim aracı olan Repo gerekir. Repo ile Git arasındaki ilişki ve her araç için destekleyici dokümanların bağlantıları hakkında açıklama için Kaynak kontrolü araçları başlıklı makaleyi inceleyin.

Flow

Android geliştirme süreci aşağıdaki temel iş akışını içerir:

  1. repo start kullanarak yeni bir konu dalı başlatın.
  2. Dosyaları düzenleyin.
  3. git add kullanarak değişiklikleri aşamalandırın.
  4. git commit kullanarak değişiklikleri işleyin.
  5. repo upload kullanarak değişiklikleri inceleme sunucusuna yükleyin.

Görevler

Android kod depolarında Git ve Repo ile çalışmak için aşağıdaki yaygın görevleri gerçekleştirmeniz gerekir.

Komut Açıklama
repo init Yeni bir istemci başlatır.
repo sync İstemciyi depolarla senkronize eder.
repo start Yeni bir dal başlatır.
repo status Mevcut şubenin durumunu gösterir.
repo upload Değişiklikleri inceleme sunucusuna yükler.
git add Dosyaları hazırlar.
git commit Hazırlanan dosyaları işler.
git branch Mevcut dalları gösterir.
git branch [branch] Yeni bir konu dalı oluşturur.
git checkout [branch] HEAD anahtarını belirtilen dala geçirir.
git merge [branch] [branch], geçerli dala birleştirilir.
git diff Hazırlanmamış değişikliklerin farkını gösterir.
git diff --cached Aşamalı değişikliklerin farkını gösterir.
git log Geçerli şubenin geçmişini gösterir.
git log m/[codeline].. Gönderilmeyen commit'leri gösterir.

Kaynak indirmek için Repo'yu kullanma hakkında bilgi edinmek için Kaynağı İndirme ve Repo Komut Referansı başlıklı makaleleri inceleyin.

İstemcileri senkronize etme

Mevcut tüm projelerin dosyalarını senkronize etmek için:

repo sync

Seçilen projelerin dosyalarını senkronize etmek için:

repo sync PROJECT0 PROJECT1 ... PROJECTN

Konu dalları oluşturma

Bir değişikliğe başladığınızda (ör. bir hata veya yeni özellik üzerinde çalışmaya başladığınızda) yerel çalışma ortamınızda bir konu dalı başlatın. Konu dalları, orijinal dosyaların kopyası değildir. Bunlar, belirli bir işleme yönelik işaretçilerdir. Bu sayede yerel dallar oluşturmak ve bunlar arasında geçiş yapmak kolay bir işlem haline gelir. Dalları kullanarak çalışmanızın bir yönünü diğerlerinden ayırabilirsiniz. Konu dallarını kullanmayla ilgili ilginç bir makale için Konu dallarını ayırma başlıklı makaleyi inceleyin.

Repo'yu kullanarak konu dalı başlatmak için projeye gidin ve şu komutu çalıştırın:

repo start BRANCH_NAME .

Sondaki dönem ( .), mevcut çalışma dizinindeki projeyi temsil eder.

Yeni şubenin oluşturulduğunu doğrulamak için:

repo status .

Konu dallarını kullanma

Şubeyi belirli bir projeye atamak için:

repo start BRANCH_NAME PROJECT_NAME

Tüm projelerin listesi için android.googlesource.com adresine bakın. Proje dizinine zaten gittiyseniz mevcut projeyi temsil etmek için yalnızca bir nokta kullanın.

Yerel çalışma ortamınızda başka bir dala geçmek için:

git checkout BRANCH_NAME

Mevcut şubelerin listesini görüntülemek için:

git branch

veya

repo branches

Her iki komut da mevcut dalların listesini döndürür. Geçerli dalın adı, yıldız işareti (*) ile başlar.

Hazırlık dosyaları

Varsayılan olarak Git, bir projede yaptığınız değişiklikleri fark eder ancak izlemez. Git'e değişikliklerinizi korumasını söylemek için bu değişiklikleri işaretlemeniz veya bir taahhüde dahil etmek üzere hazırlamanız gerekir.

Değişiklikleri hazırlamak için:

git add

Bu komut, proje dizinindeki dosyalar veya dizinler için bağımsız değişkenleri kabul eder. Adına rağmen git add yalnızca Git deposuna dosya eklemekle kalmaz, dosya değişikliklerini ve silme işlemlerini hazırlamak için de kullanılabilir.

Müşteri durumunu görüntüleme

Dosyaların durumunu listelemek için:

repo status

Kaydedilmemiş düzenlemeleri (kaydedilmek üzere işaretlenmemiş yerel düzenlemeler) görüntülemek için:

repo diff

İşlenen düzenlemeleri (işleme hazır olarak git diff işaretlenen yerel düzenlemeler) görüntülemek için proje dizininde olduğunuzdan emin olun ve cached bağımsız değişkeniyle git diff komutunu çalıştırın:

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

Değişiklikleri işleme

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. Git'te commit oluşturmak için bu komutu kullanın:

git commit

Commit mesajı istendiğinde, AOSP'ye gönderilen değişiklikler için kısa (ancak faydalı) bir mesaj girin. Kaydetme mesajı eklemezseniz kaydetme işlemi başarısız olur.

Değişiklikleri Gerrit'e yükleme

En son düzeltmeye güncelleyin ve değişikliği yükleyin:

repo sync
repo upload

Bu komutlar, işlediğiniz değişikliklerin listesini döndürür ve inceleme sunucusuna yüklenecek dalları seçmenizi ister. Yalnızca bir şube varsa basit bir y/n istemi görürsünüz.

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

repo sync komutu senkronizasyon çakışmaları döndürürse:

  1. Birleştirilmeyen dosyaları (durum kodu = U) görüntüleyin.
  2. Çakışan bölgeleri gerektiği gibi düzenleyin.
  3. İlgili proje dizinine geçin. Etkilenen dosyaları ekleyip commit edin, ardından değişiklikleri yeniden temellendirin:
    git add .
    git commit
    git rebase --continue
    
  4. Yeniden temellendirme işlemi tamamlandıktan sonra tüm senkronizasyonu tekrar başlatın:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

İstemcileri temizleme

Gerrit'te değişiklikleri birleştirdikten sonra yerel çalışma dizininizi güncelleyin ve eski konu dallarını güvenli bir şekilde kaldırmak için repo prune komutunu kullanın:

repo sync
repo prune

Müşteri silme

Tüm durum bilgileri istemcinizde depolandığından, yalnızca dizini dosya sisteminizden silmeniz gerekir:

rm -rf WORKING_DIRECTORY

Bir müşteriyi silmek, incelemeye yüklemediğiniz tüm değişiklikleri kalıcı olarak siler.