Kaynak kontrolü iş akışı

Android koduyla çalışmak için Git (açık kaynak bir sürüm kontrol sistemi) ve Repo (Git'in üzerinde çalışan, Google tarafından geliştirilmiş bir depo yönetimi aracı) kullanmanız gerekir. Repo ile Git arasındaki ilişkinin açıklamasını ve her aracın destekleyici dokümanlarına bağlantıları Kaynak Kontrol Araçları bölümünde bulabilirsiniz.

Akış

Android geliştirme, aşağıdaki temel iş akışını içerir:

  1. repo start simgesini 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 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 yaygın görevleri gerçekleştirmeyi içerir.

Komut Açıklama
repo init Yeni bir istemciyi başlatır.
repo sync İstemciyi depolarla senkronize eder.
repo start Yeni bir dal başlatır.
repo status Mevcut dalın durumunu gösterir.
repo upload Değişiklikleri inceleme sunucusuna yükler.
git add Dosyaları aşamalara ayırır.
git commit Sahnelenen dosyaları gönderir.
git branch Mevcut dalları gösterir.
git branch [branch] Yeni bir konu dalı oluşturur.
git checkout [branch] HEAD öğesini belirtilen dalla değiştirir.
git merge [branch] [branch]'ü mevcut dalla birleştirir.
git diff Sahnelenmemiş değişikliklerin farkını gösterir.
git diff --cached Kademeli değişikliklerin farkını gösterir.
git log Mevcut dalın geçmişini gösterir.
git log m/[codeline].. Yayınlanmayan taahhütleri gösterir.

Kaynağı indirmek için Repo'yu kullanma hakkında bilgi edinmek isterseniz Kaynağı indirme 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 projelerdeki dosyaları senkronize etmek için:

repo sync PROJECT0 PROJECT1 ... PROJECTN

Konu dalları oluşturma

Bir değişiklik yapmaya 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. Belirli bir kayda işaretçidir. 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ı kullanma hakkında ilginç bir makale için Konu dallarını ayırma başlıklı makaleyi inceleyin.

Repo'yu kullanarak bir konu dalı başlatmak için projeye gidin ve şu komutu çalıştırın:

repo start BRANCH_NAME .

Son nokta ( .), 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 geçerli projeyi temsil etmek için 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 dalların listesini, geçerli dalın adının önünde yıldız işareti (*) olacak şekilde döndürür.

Dosyaları hazırlama

Git, varsayılan olarak 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 kayda dahil edilecek şekilde işaretlemeniz veya aşamaya eklemeniz gerekir.

Değişiklikleri aşamalı olarak uygulamak için:

git add

Bu komut, proje dizinindeki dosya veya dizinlerle ilgili bağımsız değişkenleri kabul eder. Adına rağmen git add, Git deposuna yalnızca dosya eklemez. Dosya değişikliklerini ve silme işlemlerini aşamalandırmak için de kullanılabilir.

İstemci durumunu görüntüleme

Dosyaların durumunu listelemek için:

repo status

Taahhüt edilmemiş düzenlemeleri (taahhüt edilmek ü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ş düzenlemeler) görüntülemek istiyorsanız proje dizininde olduğunuzdan emin olun ve ardından cached bağımsız değişkeniyle git diff'yi çalıştırın:

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

Değişiklikleri kaydetme

Commit, Git'teki düzeltme denetiminin temel birimidir ve projenin tamamının 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 şu komutu kullanın:

git commit

Bir gönderme mesajı girmeniz istendiğinde, AOSP'ye gönderilen değişiklikler için kısa (ancak faydalı) bir mesaj girin. Bir kaydetme mesajı eklemezseniz kaydetme işlemi başarısız olur.

başlıklı makaleyi inceleyin.

Değişiklikleri Gerrit'e yükleme

En son düzeltmeyi uygulayın ve ardından değişikliği yükleyin:

repo sync
repo upload

Bu komutlar, kaydettiğiniz değişikliklerin 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ışması döndürüyorsa:

  1. Birleştirilmemiş dosyaları görüntüleyin (durum kodu = U).
  2. Çakışan bölgeleri gerektiği gibi düzenleyin.
  3. İlgili proje dizine geçin. Etkilenen dosyaları ekleyip kaydetme, ardından değişiklikleri yeniden temellendirme:
    git add .
    git commit
    git rebase --continue
    
  4. Yeniden temellendirme tamamlandıktan sonra senkronizasyonun tamamını 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 ardından eski konu dallarını güvenli bir şekilde kaldırmak için repo prune simgesini kullanın:

repo sync
repo prune

İstemcileri silme

Tüm durum bilgileri istemcinizde depolandığından, dizini dosya sisteminizden silmeniz yeterlidir:

rm -rf WORKING_DIRECTORY

Bir müşteriyi sildiğinizde, incelemeye yüklemediğiniz değişiklikler kalıcı olarak silinir.