Android koduyla çalışmak, Git (açık kaynaklı bir sürüm kontrol sistemi) ve Repo'yu (Git'in üzerinde çalışan, Google tarafından oluşturulmuş bir depo yönetim aracı) kullanmayı gerektirir. Repo ve Git arasındaki ilişkinin açıklaması ve her araç için 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 aşama değişiklikleri. -
git commit
kullanarak değişiklikleri yapın. -
repo upload
.
Görevler
Android kod havuzlarında Git ve Repo ile çalışmak, aşağıdaki genel görevleri gerçekleştirmeyi içerir.
Emretmek | Tanım |
---|---|
repo init | Yeni bir istemci başlatır. |
repo sync | İstemciyi depolarla eşitler. |
repo start | Yeni bir şube açar. |
repo status | Mevcut dalın durumunu gösterir. |
repo upload | Değişiklikleri inceleme sunucusuna yükler. |
git add | Dosyaları aşamalar. |
git commit | Aşamalı dosyaları taahhüt eder. |
git branch | Mevcut dalları gösterir. |
git branch [branch] | Yeni bir konu dalı oluşturur. |
git checkout [branch] | HEAD belirtilen şubeye geçirir. |
git merge [branch] | [branch] öğesini geçerli dalla birleştirir. |
git diff | Aşamalı olmayan değişikliklerin farkını gösterir. |
git diff --cached | Aşamalı değişikliklerin farkını gösterir. |
git log | Geçerli dalın geçmişini gösterir. |
git log m/[codeline].. | İttirilmeyen taahhütleri gösterir. |
Kaynağı indirmek için Repo'yu kullanma hakkında bilgi için, bkz . Kaynağı İndirme ve Repo Komut Referansı .
İstemcileri senkronize etme
Mevcut tüm projeler için dosyaları senkronize etmek için:
repo sync
Seçilen projeler için dosyaları senkronize etmek için:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Konu dalları oluşturma
Bir hata veya yeni bir özellik üzerinde çalışmaya başladığınızda olduğu gibi, bir değişikliğe her 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 ; yerel şubeler oluşturmayı ve bunlar arasında geçiş yapmayı hafif bir işlem haline getiren belirli bir taahhüt için bir işaretçidir. Dalları kullanarak çalışmanızın bir yönünü diğerlerinden ayırabilirsiniz. Konu dallarını kullanma hakkında ilginç bir makale için Konu dallarını ayırma bölümüne bakın.
Repo kullanarak bir konu dalı başlatmak için projeye gidin ve çalıştırın:
repo start BRANCH_NAME .
Sondaki nokta ( .
) mevcut çalışma dizinindeki projeyi temsil eder.
Yeni dalın 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 bir nokta kullanın.
Yerel çalışma ortamınızda 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 dalın adının önünde bir yıldız işareti (*) bulunan mevcut dalların listesini döndürür.
Dosyaları hazırlama
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 taahhüde dahil edilmek üzere işaretlemeniz veya aşamalandırmanı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
, yalnızca Git deposuna dosya eklemez; ayrıca dosya değişikliklerini ve silmelerini yapmak için de kullanılabilir.
İstemci durumunu görüntüleme
Dosyaların durumunu listelemek için:
repo status
Taahhüt edilmemiş düzenlemeleri (kayıt için işaretlenmemiş yerel düzenlemeler) görüntülemek için:
repo diff
Taahhüt edilmiş düzenlemeleri (kayı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
çalıştırın:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Değişiklikleri taahhüt etme
Taahhüt, Git'teki temel revizyon denetimi birimidir ve tüm proje için dizin yapısının ve dosya içeriğinin anlık görüntüsünü içerir. 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 (ancak faydalı) bir mesaj sağlayın. Bir taahhüt mesajı eklemezseniz, taahhüt başarısız olur.
Değişikliklerin Gerrit'e yüklenmesi
En son revizyona güncelleyin, 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 gözden geçirme 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, eşitleme çakışmaları 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 onaylayın, ardından değişiklikleri yeniden temel alın:
git add .
git commit
git rebase --continue
- Yeniden temellendirme tamamlandıktan sonra tüm eşitlemeyi yeniden başlatın:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Müşterileri temizlemek
Gerrit'teki değişiklikleri birleştirdikten sonra yerel çalışma dizininizi güncelleyin, ardından eski konu dallarını güvenle 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 .