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:
repo startkullanarak yeni bir konu dalı başlatın.- Dosyaları düzenleyin.
git addkullanarak değişiklikleri aşamalandırın.git commitkullanarak değişiklikleri işleyin.repo uploadkullanarak 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/PROJECTgit 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 syncrepo 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:
- Birleştirilmeyen dosyaları (durum kodu = U) görüntüleyin.
- Çakışan bölgeleri gerektiği gibi düzenleyin.
- İlgili proje dizinine geçin. Etkilenen dosyaları ekleyip commit edin, ardından değişiklikleri yeniden temellendirin:
git add .git commitgit rebase --continue - 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 syncrepo 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.