Kaynak denetimi iş akışı

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:

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

  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 onaylayın, ardından değişiklikleri yeniden temel alın:
    git add .
    git commit
    git rebase --continue
    
  4. 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 .