Repo komut referansı

Repo, birden fazla kod deposunda çalışmayı kolaylaştırarak Git'i tamamlar. Repo ile Git arasındaki ilişki hakkında açıklama için Kaynak kontrolü araçları başlıklı makaleyi inceleyin. Repo hakkında daha fazla bilgi için Repo README'yi inceleyin.

Depo kullanımı aşağıdaki biçimde olur:

repo command options

İsteğe bağlı öğeler köşeli parantez içinde [] gösterilir. Örneğin, birçok komut project-list öğesini bağımsız değişken olarak alır. Projeler için project-list ad listesi veya yerel kaynak dizinlerinin 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. Bir komutu seçenek olarak belirterek belirli bir Repo komutu hakkında ayrıntılı bilgi edinebilirsiniz:

repo help command

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

repo help init

Bir komut için yalnızca kullanılabilir seçeneklerin listesini görmek istiyorsanız şunu çalıştırın:

repo command --help

Örneğin:

repo init --help

init

repo init -u url [options]

Repo'yu geçerli dizine yükler. Bu komut, Repo kaynak kodu ve standart Android manifest dosyaları için Git depolarının bulunduğu bir .repo/ dizini oluşturur.

Seçenekler:

  • -u: Manifest deposunun alınacağı bir URL belirtin. Ortak manifest https://android.googlesource.com/platform/manifest adresinde bulunur.

  • -m: Depodaki bir manifest dosyasını seçin. Bildiri adı seçilmezse varsayılan olarak default.xml kullanılır.

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

senkronizasyon

repo sync [project-list]

Yeni değişiklikleri indirir ve yerel ortamınızdaki çalışma dosyalarını günceller. Bu işlem, temelde tüm Git veri havuzlarında git fetch işlemini gerçekleştirir. repo sync komutunu bağımsız değişken olmadan çalıştırırsanız tüm projelerdeki dosyalar senkronize edilir.

repo sync komutunu çalıştırdığınızda şunlar olur:

  • Proje 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 edildiyse repo sync şu anlama gelir:

    git remote update
    git rebase origin/branch
    

    Burada branch, yerel proje dizinindeki mevcut kullanıma alınmış daldır. Yerel dal, uzak depodaki bir dalı izlemiyorsa proje için senkronizasyon gerçekleşmez.

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

Temel seçenekler:

  • -c: Sunucudan yalnızca mevcut manifest dalını getirin.
  • -d: Belirtilen projeleri manifest revizyonuna geri döndürün. Bu seçenek, proje bir konu dalındaysa ancak manifest revizyonuna geçici olarak ihtiyaç duyuluyorsa faydalıdır.
  • -f: Bir proje senkronize edilemese bile diğer projeleri senkronize etmeye devam edin.
  • -j threadcount: Daha hızlı tamamlamak için senkronizasyonu ileti dizileri arasında bölme. Makinenizi aşırı yüklemediğinizden emin olun. Diğer görevler için biraz CPU ayırın. Kullanılabilir CPU sayısını görmek için önce nproc --all komutunu çalıştırın.
  • -q: Durum mesajlarını bastırarak sessizce çalıştırır.
  • -s: Geçerli manifest dosyasındaki manifest-server öğesinde belirtildiği gibi 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. Belirtilen projeler için Repo, yerel dalları son Repo senkronizasyonu sırasında güncellenen uzak dallarla karşılaştırır. Repo, inceleme için yüklenmemiş dallardan birini veya daha fazlasını seçmenizi ister.

Seçilen dallardaki tüm işlemeler daha sonra bir 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 kullanmak için yeni bir kullanıcı adı/şifre çifti oluşturmak üzere Şifre oluşturucu'yu ziyaret edin.

Gerrit, sunucusu üzerinden nesne verilerini aldığında her bir commit'i değişikliğe dönüştürür. Böylece inceleme yapanlar belirli bir commit hakkında yorum yapabilir. Yükleme işlemini çalıştırmadan önce birkaç kontrol noktası commit'ini tek bir commit'te birleştirmek için git rebase -i kullanın.

repo upload komutunu bağımsız değişken olmadan çalıştırırsanız tüm projelerde yüklenecek değişiklikler aranır.

Yüklendikten sonra değişiklikleri düzenlemek için yerel commit'lerinizi güncellemek üzere git rebase -i veya git commit --amend gibi bir araç kullanın. Düzenlemeleriniz tamamlandıktan sonra:

  • Güncellenen dalın, şu anda kullanıma sunulan dal olduğunu doğrulayın.
  • Eşleşme değişikliği düzenleyicisini açmak için repo upload --replace PROJECT kısayolunu kullanın.
  • Serideki her bir commit için Gerrit değişiklik kimliğini parantez içine 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şikliklere ek bir yama seti uygulanır.

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

İlgili değişiklikler için tüm CL'leri aynı konuda tutmak faydalıdır. --topic=TOPIC ile yükleme yaparken konu adı ekleyebilirsiniz. Alternatif olarak, konu adını yerel şube adıyla aynı olacak şekilde ayarlamak için -t değerini iletebilirsiniz.

diff

repo diff [project-list]

git diff kullanarak commit ile çalışma ağacı arasındaki bekleyen değişiklikleri gösterir.

indir

repo download target change

İncelenen sistemdeki belirtilen değişikliği indirir ve projenizin yerel çalışma dizininde kullanılabilir hale getirir.

Örneğin, change 23823 dosyasını platform/build dizinine indirmek için:

repo download platform/build 23823

repo sync komutunu çalıştırmak, repo download ile alınan tüm commit'leri kaldırır. Alternatif olarak, git checkout m/main kullanarak uzak şubeyi inceleyebilirsiniz.

forall

repo forall [project-list] -c command

Belirtilen kabuk komutunu her projede yürütür. Aşağıdaki ek ortam değişkenleri repo forall tarafından sağlanır:

  • REPO_PROJECT, projenin benzersiz adına ayarlanır.
  • REPO_PATH, istemcinin köküne göre olan yoldur.
  • REPO_REMOTE, bildirideki uzak sistemin adıdır.
  • REPO_LREV, manifestteki düzeltmenin yerel izleme dalına çevrilmiş 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, manifestteki düzeltmenin adıdır ve manifestte yazıldığı şekliyle kullanılır.

Seçenekler:

  • -c: Yürütülecek komut ve bağımsız değişkenler. Komut, /bin/sh aracılığıyla değerlendirilir ve bundan sonraki tüm bağımsız değişkenler kabuk konumsal parametreleri olarak iletilir.
  • -p: Belirtilen komutun çıkışından önce proje başlıklarını gösterir. Bu, boruları komutun stdin, stdout ve sterr akışlarına bağlayarak ve tüm çıkışı tek bir sayfalayıcı oturumunda görüntülenen kesintisiz bir akışa yönlendirerek sağlanır.
  • -v: Komutun stderr'ye yazdığı mesajları gösterir.

budama

repo prune [project-list]

Zaten birleştirilmiş konuları temizler (siler).

start

repo start branch-name [project-list]

Manifest dosyasında belirtilen düzeltmeden başlayarak geliştirme için yeni bir dal oluşturur.

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 dahil olduğunu belirtir.

status

repo status [project-list]

Çalışma ağacını, hazırlama alanıyla (dizin) ve belirtilen her projede bu daldaki en son işlemeyle (HEAD) karşılaştırır. Bu üç durum arasında fark olan her dosya için bir özet satırı gösterir.

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

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

Mektup Anlamı Açıklama
- Değiştirmedi HEAD ve dizinde aynı
A Eklendi HEAD'de değil, dizinde
dk. Değiştirilme tarihi ANA'da, dizinde değiştirildi
D Silindi HEAD'de var, dizinde yok
R Yeniden adlandırıldı HEAD öğesinde değil, dizinde yol değiştirildi
C Kopyalandı HEAD'de değil, dizindeki başka bir öğeden kopyalandı
T Mod değiştirildi HEAD ve dizinde aynı içerik var, mod değiştirildi
U Birleştirilmemiş HEAD ve dizin arasında çakışma var; çözülmesi gerekiyor

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

Mektup Anlamı Açıklama
- Yeni/bilinmiyor Dizinde değil, çalışma ağacında
m Değiştirilme tarihi Dizinde, çalışma ağacında, değiştirilmiş
g Silindi Dizin içinde, çalışma ağacında değil

Depo hatalarını giderme

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: error: no branches ready for upload hatası, oturumun başında repo start komutu çalıştırılmadığında gösterilir. Kurtarmak için onaylama kimliğini kontrol edebilir, yeni bir dal başlatıp ardından birleştirebilirsiniz.