Android koduyla çalışmak Git'i (açık kaynaklı bir sürüm kontrol sistemi) ve Repo'yu (Git'in üzerinde çalışan, Google tarafından oluşturulmuş bir veri havuzu yönetim aracı) kullanmayı gerektirir. Repo ve Git arasındaki ilişkinin açıklaması ve her araca yönelik destekleyici belgelere bağlantılar için Kaynak Kontrol Araçları'na bakın.
Akış
Android geliştirme aşağıdaki temel iş akışını içerir:
-
repo start
kullanarak yeni bir konu dalı başlatın. - Dosyaları düzenleyin.
-
git add
kullanarak değişiklikleri sahneleyin. -
git commit
kullanarak değişiklikleri kaydedin. -
repo upload
kullanarak değişiklikleri inceleme sunucusuna yükleyin.
Görevler
Android kod depolarında Git ve Repo ile çalışmak aşağıdaki ortak görevlerin gerçekleştirilmesini içerir.
Emretmek | Tanım |
---|---|
repo init | Yeni bir istemci başlatır. |
repo sync | İstemciyi depolarla senkronize eder. |
repo start | Yeni bir şube açar. |
repo status | Geçerli şubenin durumunu gösterir. |
repo upload | Değişiklikleri inceleme sunucusuna yükler. |
git add | Dosyaları aşamalandırır. |
git commit | Aşamalı dosyaları kaydeder. |
git branch | Mevcut şubeleri gösterir. |
git branch [branch] | Yeni bir konu dalı oluşturur. |
git checkout [branch] | HEAD belirtilen dala değiştirir. |
git merge [branch] | [branch] geçerli dalla birleştirir. |
git diff | Aşamalandırılmamış 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].. | Aktarılmayan taahhütleri gösterir. |
Kaynağı indirmek için Repo'yu kullanma hakkında bilgi için bkz. Kaynağın İndirilmesi ve Repo Komut Referansı .
İ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şiklik yapmaya başladığınızda, örneğin bir hata veya yeni bir özellik üzerinde çalışmaya başladığınızda, yerel çalışma ortamınızda bir konu dalı başlatın. Konu dalı orijinal dosyaların bir kopyası değildir ; bu, yerel şubeler oluşturmayı ve bunlar arasında geçiş yapmayı hafif bir işlem haline getiren belirli bir taahhüdün işaretçisidir. Dalları kullanarak işinizin bir yönünü diğerlerinden ayırabilirsiniz. Konu dallarını kullanmayla ilgili ilginç bir makale için Konu dallarını ayırma konusuna bakın.
Repo'yu kullanarak bir konu dalı başlatmak için projeye gidin ve şunu çalıştırın:
repo start BRANCH_NAME .
Sondaki nokta ( .
) geçerli ç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. Zaten proje dizinine gittiyseniz mevcut projeyi temsil etmek için bir nokta kullanın.
Yerel çalışma ortamınızdaki başka bir şubeye 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, önünde yıldız işareti (*) bulunan geçerli dalın adının yer aldığı şekilde döndürür.
Hazırlama 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 bir işleme dahil edilmek üzere işaretlemeniz veya hazırlamanız gerekir.
Değişiklikleri aşamalandırmak için:
git add
Bu komut, proje dizini içindeki dosyalar veya dizinler için bağımsız değişkenleri kabul eder. Adına rağmen git add
, Git deposuna yalnızca dosya eklemez; aynı zamanda dosya değişiklikleri ve silme işlemlerini gerçekleştirmek 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
Taahhüt edilen düzenlemeleri (taahhüt için işaretlenmiş bulunan düzenlemeler) görüntülemek için proje dizininde olduğunuzdan emin olun ve ardından cached
argümanla git diff
komutunu çalıştırın:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Değişiklikler gerçekleştiriliyor
Taahhüt , Git'teki revizyon kontrolünün temel birimidir ve tüm proje için dizin yapısının ve dosya içeriklerinin anlık görüntüsünden oluşur. Git'te bir taahhüt oluşturmak için bu komutu kullanın:
git commit
Bir taahhüt mesajı istendiğinde, AOSP'ye gönderilen değişiklikler için kısa (ama faydalı) bir mesaj sağlayın. Bir taahhüt mesajı eklemezseniz taahhüt başarısız olur.
Değişiklikler Gerrit'e yükleniyor
En son revizyona güncelleyin ve ardından değişikliği yükleyin:
repo sync
repo upload
Bu komutlar, taahhüt ettiğiniz değişikliklerin bir listesini döndürür ve inceleme sunucusuna yüklenecek dalları seçmenizi ister. Yalnızca bir dal varsa basit bir y/n
istemi görürsünüz.
Senkronizasyon çakışmalarını çözme
repo sync
komutu senkronizasyon çakışmalarını döndürürse:
- Birleştirilmemiş dosyaları görüntüleyin (durum kodu = U).
- Çatışma bölgelerini gerektiği gibi düzenleyin.
- İlgili proje dizinine geçin. Etkilenen dosyaları ekleyin ve kaydedin, ardından değişiklikleri yeniden temellendirin:
git add .
git commit
git rebase --continue
- Yeniden oluşturma tamamlandıktan sonra senkronizasyonun tamamını yeniden başlatın:
repo sync PROJECT0 PROJECT1 ... PROJECTN
İstemcileri temizleme
Gerrit'teki değişiklikleri birleştirdikten sonra yerel çalışma dizininizi güncelleyin, ardından eski konu dallarını güvenli bir şekilde kaldırmak için repo prune
kullanın:
repo sync
repo prune
İstemcileri silme
Tüm durum bilgileri istemcinizde saklandığından, dizini yalnızca dosya sisteminizden silmeniz gerekir:
rm -rf WORKING_DIRECTORY
Bir istemciyi silmek, inceleme için yüklemediğiniz tüm değişiklikleri kalıcı olarak siler .