Depo komut referansı

Depo, birden fazla depoda çalışmayı basitleştirerek Git'i tamamlar. Repo ile Git arasındaki ilişkinin açıklaması için Kaynak kontrol araçları bölümüne bakın. Repo hakkında daha fazla bilgi için Repo README'yi inceleyin.

Depo kullanımı şu biçimdedir:

repo command options

İsteğe bağlı öğeler köşeli parantez [] içinde gösterilmiştir. Örneğin, birçok komut project-list öğesini bağımsız değişken olarak alır. project-list öğesini, projeler için ad listesi veya yerel kaynak dizinlere giden yol listesi olarak belirtebilirsiniz:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

yardım

repo help

repo komutuyla ilgili yardım sağlar. Seçenek olarak bir komut belirten belirli bir Repo komutuyla ilgili ayrıntılı bilgileri görebilirsiniz:

repo help command

Örneğin, aşağıdaki komut, init komutu için bir açıklama ve seçenekler listesi sunar:

repo help init

Alternatif olarak, yalnızca bir komutla ilgili kullanılabilir seçeneklerin listesini görmek için şu komutu çalıştırın:

repo command --help

Örneğin:

repo init --help

başlat

repo init -u url [options]

Depoyu geçerli dizine yükler. Bu komut Repo kaynak kodu ve standart Android manifest dosyaları için Git depolarıyla bir .repo/ dizini oluşturur.

Seçenekler:

  • -u: Manifest deposunun alınacağı URL'yi belirtin. Yaygın bildirimin bulunduğu adres: https://android.googlesource.com/platform/manifest.

  • -m: Depoda bir manifest dosyası seçin. Manifest adı seçilmezse varsayılan değer default.xml olur.

  • -b: Bir düzeltme, yani belirli bir manifest-branch belirtin.

senkronize et

repo sync [project-list]

Yeni değişiklikleri indirir ve yerel ortamınızdaki çalışma dosyalarını günceller. Böylece, tüm Git depolarında git fetch işlemini gerçekleştirir. repo sync öğesini bağımsız değişkenler olmadan çalıştırırsanız dosyaları tüm projeler için senkronize eder.

repo sync çalıştırıldığında şunlar olur:

  • Proje daha önce hiç senkronize edilmediyse repo sync, git clone ile eş değerdir. Uzak depodaki tüm dallar yerel proje dizinine kopyalanır.

  • Proje daha önce senkronize edilmişse repo sync şuna eş değerdir:

    git remote update
    git rebase origin/branch
    

    Burada branch, yerel proje dizinindeki mevcut ödeme dalıdır. Yerel dal uzak depodaki bir dalı izlemiyorsa proje için herhangi bir senkronizasyon gerçekleşmez.

Başarılı bir repo sync çalıştırıldıktan sonra, belirtilen projelerdeki kod güncel olur ve uzak depodaki kodla senkronize edilir.

Anahtar seçenekler:

  • -c: Sunucudan yalnızca geçerli manifest dalını getirin.
  • -d: Belirtilen projeleri manifest düzeltmesine geri döndürür. Proje bir konu dalındaysa ancak manifest düzeltmesi geçici olarak gerekiyorsa bu seçenek yararlıdır.
  • -f: Bir proje senkronize edilemediğinde bile diğer projeleri senkronize etmeye devam edin.
  • threadcount: Daha hızlı tamamlanması için senkronizasyonu ileti dizileri arasında bölebilirsiniz. Makinenizi bunaltmayın; CPU'nun bir kısmını diğer görevler için ayrılmış halde bırakın. Kullanılabilir CPU sayısını görmek için önce nproc --all komutunu çalıştırın.
  • -q: Durum mesajlarını gizleyerek sessizce çalışır.
  • -s: Geçerli manifestteki manifest-server öğesi tarafından belirtilen, bilinen iyi bir derlemeyle senkronize edin.

Diğer seçenekler için repo help sync komutunu çalıştırın.

yükle

repo upload [project-list]

Değişiklikleri inceleme sunucusuna yükler. Repo, belirtilen projeler için yerel dalları son Depo senkronizasyonu sırasında güncellenen uzak dallarla karşılaştırır. Depo, inceleme için yüklenmemiş dallardan bir veya daha fazlasını seçmenizi ister.

Seçilen dallardaki tüm kaydetmeler daha sonra HTTPS bağlantısı üzerinden Gerrit'e iletilir. Yükleme yetkilendirmesini etkinleştirmek için bir HTTPS şifresi yapılandırmanız gerekir. HTTPS üzerinden kullanılacak yeni bir kullanıcı adı/şifre çifti oluşturmak için Şifre oluşturma aracı'nı ziyaret edin.

Gerrit, nesne verilerini sunucusu üzerinden aldığında her kaydı bir değişikliğe dönüştürür. Böylece, inceleme uzmanları belirli bir kayıt hakkında yorum yapabilir. Birkaç kontrol noktası kaydetmesini tek bir kayıtta birleştirmek için yüklemeyi çalıştırmadan önce git rebase -i kullanın.

repo upload öğesini bağımsız değişken olmadan çalıştırırsanız yüklenecek değişiklikleri tüm projelerde arar.

Değişiklikleri yüklendikten sonra düzenlemek için git rebase -i veya git commit --amend gibi bir araç kullanarak yerel kaydetmelerinizi güncelleyin. Düzenlemeleriniz tamamlandıktan sonra:

  • Güncellenen dalın, çıkış yapılan geçerli dal olduğunu doğrulayın.
  • Değişiklik eşleştirme düzenleyicisini açmak için repo upload --replace PROJECT öğesini kullanın.
  • Serideki her bir kaydetme için parantez içine Gerrit değişiklik kimliğini girin:

    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacements
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

Yükleme işlemi tamamlandıktan sonra değişiklikler için ek bir yama grubu uygulanır.

Yalnızca şu anda kontrol edilmiş olan Git dalını yüklemek istiyorsanız --current-branch işaretini (veya kısaca --cbr) kullanın.

fark

repo diff [project-list]

git diff kullanarak kaydetme ve çalışma ağacı arasında önemli değişiklikleri gösterir.

indir

repo download target change

Belirtilen değişikliği inceleme sisteminden indirir ve projenizin yerel çalışma dizininde kullanılabilir hale getirir.

Örneğin, change 23823platform/build dizininize indirmek için:

repo download platform/build 23823

repo sync çalıştırıldığında repo download ile alınan tüm kayıtlar kaldırılır. Alternatif olarak, git checkout m/main kullanarak uzak şubeyi kontrol edebilirsiniz.

herkes için

repo forall [project-list] -c command

Her projede verilen kabuk komutunu yürütür. Aşağıdaki ek ortam değişkenleri repo forall tarafından kullanıma sunulmuştur:

  • REPO_PROJECT, projenin benzersiz adına ayarlandı.
  • REPO_PATH, istemcinin köküne bağlı yoldur.
  • REPO_REMOTE, manifest'teki uzak sistemin adıdır.
  • REPO_LREV, manifest'ten alınan ve yerel izleme dalına çevrilen düzeltmenin adıdır. Manifest düzeltmesini yerel olarak yürütülen bir Git komutuna iletmeniz gerekiyorsa bu değişkeni kullanın.
  • REPO_RREV, tam olarak manifest'te yazıldığı şekliyle manifest dosyasındaki düzeltme adıdır.

Seçenekler:

  • -c: Yürütülecek komut ve bağımsız değişkenler. Bu komut, kabuk konum parametreleri olarak iletildikten sonraki tüm bağımsız değişkenler ve /bin/sh aracılığıyla değerlendirilir.
  • -p: Belirtilen komuttan önce proje başlıklarını gösterir. Bu işlem, ardışık düzenleri komutun stdin, stdout ve sterr akışlarına bağlayarak ve tüm çıktıları tek bir sayfalık oturumunda görüntülenen sürekli bir akışa dönüştürerek gerçekleştirilir.
  • -v: Komutun stderr'e yazdığı mesajları gösterir.

budama

repo prune [project-list]

Zaten birleştirilmiş olan konuları ayıklar (siler).

başlat

repo start branch-name [project-list]

Manifestte belirtilen düzeltmeden başlayarak geliştirme için yeni bir dal başlatır.

BRANCH_NAME bağımsız değişkeni, projelerde yapmaya çalıştığınız değişikliğin kısa bir açıklamasını sağlar. bilmiyorsanız default adını kullanabilirsiniz.

project-list bağımsız değişkeni, bu konu dalına hangi projelerin katılacağını belirtir.

status

repo status [project-list]

Çalışma ağacını, hazırlık alanı (dizin) ve belirtilen her projede bu daldaki (HEAD) en son kaydetmeyle karşılaştırır. Bu üç durum arasında fark olduğunda her dosya için bir özet satırı görüntüler.

Yalnızca mevcut dalın durumunu görmek için repo status . komutunu çalıştırın. Durum bilgileri proje bazında listelenir. Projedeki her dosya için iki harfli bir kod kullanılır.

İlk sütundaki büyük harf, hazırlık alanının son kaydedilen durumdan nasıl farklı olduğunu gösterir.

Letter Anlamı Açıklama
- Değiştirmedi HEAD ve dizinde aynı
CEVAP Eklendi HEAD klasöründe, dizinde değil
A Değiştirilme tarihi HEAD öğesinde, dizinde değiştirildi
G Silindi HEAD öğesinde, dizinde değil
K Yeniden adlandırıldı HEAD öğesinde değil, dizinde yol değişti
C Kopyalandı HEAD klasöründe değil, dizindeki başka bir klasörden kopyalandı
T Mod değişti HEAD ve dizinde aynı içerik, mod değiştirildi
U Birleştirilmemiş HEAD ve dizin arasında çakışma var; çözüm gerekiyor

İkinci sütundaki küçük harf, çalışma dizininin dizinden nasıl farklı olduğunu gösterir.

Letter Anlamı Açıklama
- Yeni/bilinmeyen Dizinde değil, iş ağacında
dk. Değiştirilme tarihi Dizinde, iş ağacında, değiştirilmiş
g Silindi Dizinde, iş ağacında değil

Depo hatalarını işleme

git commit -a # Commit local changes first so they aren't lost.
repo start branch-name # Start the branch
git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start
repo upload .

repo start komutu oturumun başında çalıştırılmadığında repo: error: no branches ready for upload hatası görünür. Kurtarmak için kayıt kimliğini kontrol edip yeni bir dal başlatıp bu dalı birleştirebilirsiniz.