Kaynak kontrolü iş akışı

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:

  1. repo start kullanarak yeni bir konu dalı başlatın.
  2. Dosyaları düzenleyin.
  3. git add kullanarak değişiklikleri sahneleyin.
  4. git commit kullanarak değişiklikleri kaydedin.
  5. 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 göstergesidir. 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:

  1. Birleştirilmemiş dosyaları görüntüleyin (durum kodu = U).
  2. Çatışma bölgelerini gerektiği gibi düzenleyin.
  3. İlgili proje dizinine geçin. Etkilenen dosyaları ekleyin ve kaydedin, ardından değişiklikleri yeniden temellendirin:
    git add .
    git commit
    git rebase --continue
    
  4. Yeniden oluşturma tamamlandıktan sonra tüm senkronizasyonu 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 .