Repo Komut Referansı

Repo, birden çok depoda çalışmayı basitleştirerek Git'i tamamlar. Repo ve Git arasındaki ilişkinin açıklaması için Kaynak Kontrol Araçları'na bakın. Repo hakkında daha fazla bilgi için Repo README'ye bakın.

Repo kullanımı aşağıdaki formu alır:

repo command options

İsteğe bağlı öğeler parantez [ ] içinde gösterilmiştir. Örneğin, birçok komut argüman olarak project-list alır. project-list , projeler için yerel kaynak dizinlerine giden bir ad listesi veya yol listesi olarak belirtebilirsiniz:

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

Yardım Edin

Bu sayfa yalnızca temel seçenekleri vurgular. Tüm ayrıntılar için komut satırı yardımına bakın. Repo kurulduğunda, aşağıdakileri çalıştırarak tüm komutların bir özetiyle başlayan en son belgeleri bulabilirsiniz:

repo help

Bunu bir Repo ağacında çalıştırarak herhangi bir komutla ilgili ayrıntılı bilgileri görebilirsiniz:

repo help command

Örneğin, aşağıdaki komut, Repo'yu geçerli dizinde başlatan init argümanı için bir açıklama ve seçenekler listesi verir. (Ayrıntılar için init'e bakın.)

repo help init

Veya yalnızca mevcut seçeneklerin listesini görmek için şunu çalıştırın:

repo command --help
Örneğin:
repo init --help

içinde

repo init -u url [options]

Repo'yu geçerli dizine yükler. Bu, Repo kaynak kodu ve standart Android bildirim dosyaları için Git depolarıyla birlikte bir .repo/ dizini oluşturur.

Seçenekler:

  • -u : Bir bildirim havuzunun alınacağı bir URL belirtin. Ortak bildirim https://android.googlesource.com/platform/manifest bulunur.
  • -m : Depo içinde bir bildirim dosyası seçin. Hiçbir bildirim adı seçilmemişse, varsayılan değer default.xml .
  • -b : Bir revizyon belirtin, yani belirli bir manifest-branch .

Not: Kalan tüm Repo komutları için, geçerli çalışma dizini ya .repo/ 'nun üst dizini ya da üst dizinin bir alt dizini olmalıdır.

senkronizasyon

repo sync [project-list]

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

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

  • Proje hiç senkronize edilmemişse, repo sync git clone 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 dizininde şu anda teslim alınmış şubedir. Yerel şube uzak havuzdaki bir şubeyi izlemiyorsa, proje için senkronizasyon gerçekleşmez.

  • Git rebase işlemi birleştirme çakışmalarıyla sonuçlanırsa, çakışmaları çözmek için normal Git komutlarını (örneğin git rebase --continue ) kullanın.

Başarılı bir repo sync çalıştırmasından sonra, belirtilen projelerdeki kod günceldir ve uzak havuzdaki kodla senkronize edilir.

İşte önemli seçenekler. Daha fazlası için repo help sync bakın:

  • -c : Sunucudan yalnızca geçerli bildirim dalını getirir.

  • -d : Belirtilen projeleri tekrar bildirim revizyonuna geçirin. Bu, proje şu anda bir konu dalındaysa, ancak bildirim revizyonunun geçici olarak gerekli olması durumunda yararlıdır.

  • -f : Bir proje senkronize edilemese bile diğer projeleri senkronize etmeye devam edin.

  • -j threadcount : Daha hızlı tamamlama için senkronizasyonu diziler arasında bölün. Makinenizi bunaltmadığınızdan emin olun - diğer görevler için ayrılmış bir miktar CPU bırakın. Kullanılabilir CPU sayısını görmek için önce şunu çalıştırın: nproc --all

  • -q : Durum mesajlarını bastırarak sessizce çalıştırın.

  • -s : Geçerli bildirimdeki manifest-server öğesi tarafından belirtildiği gibi bilinen bir iyi yapıyla eşitleyin.

yüklemek

repo upload [project-list]

Belirtilen projeler için Repo, yerel şubeleri son Repo senkronizasyonu sırasında güncellenen uzak şubelerle karşılaştırır. Repo, inceleme için yüklenmemiş bir veya daha fazla şube seçmenizi ister.

Seçilen dallardaki tüm taahhütler daha sonra bir HTTPS bağlantısı üzerinden Gerrit'e iletilir. Yükleme yetkilendirmesini etkinleştirmek için bir HTTPS parolası yapılandırmanız gerekir. HTTPS üzerinden kullanılacak yeni bir kullanıcı adı/parola çifti oluşturmak için Parola Oluşturucu'yu ziyaret edin.

Gerrit, nesne verilerini sunucusu üzerinden aldığında, gözden geçirenlerin belirli bir taahhüt hakkında yorum yapabilmesi için her bir işlemi bir değişikliğe dönüştürür. Birkaç kontrol noktası işlemini tek bir taahhütte birleştirmek için, yüklemeyi çalıştırmadan önce git rebase -i kullanın.

repo upload bağımsız değişkenler 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, yerel taahhütlerinizi güncellemek için 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 alınmış dal olduğunu doğrulayın.
  • Serideki her taahhüt 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 replacments
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

Yükleme tamamlandıktan sonra, değişikliklerin ek bir yama seti olur.

Yalnızca şu anda kullanıma alınmış Git dalını yüklemek istiyorsanız --current-branch (veya --cbr ) bayrağını kullanın.

fark

repo diff [project-list]

git diff kullanarak taahhüt ve çalışan ağaç arasındaki olağanüstü değişiklikleri gösterir.

indirmek

repo download target change

Belirtilen değişikliği gözden geçirme sisteminden indirir ve projenizin yerel çalışma dizininde kullanılabilir hale getirir.

Örneğin, 23823 değişikliğini platform/yapı dizininize indirmek için:

repo download platform/build 23823

repo sync çalıştırmak, repo download ile alınan tüm taahhütleri kaldırır. Veya git checkout m/master kullanarak uzak şubeyi kontrol edebilirsiniz.

Not: Dünya çapındaki tüm sunucularda çoğaltma gecikmeleri vardır, bu nedenle Gerrit'te web'de bir değişikliğin göründüğü zaman ile repo download işleminin değişikliği tüm kullanıcılar için bulabileceği zaman arasında hafif bir yansıtma gecikmesi vardır.

hepsi 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 sağlanır:

  • REPO_PROJECT , projenin benzersiz adına ayarlanır.

  • REPO_PATH , istemcinin köküne göre yoldur.

  • REPO_REMOTE , bildirimdeki uzak sistemin adıdır.

  • REPO_LREV , bildirimdeki revizyonun yerel bir izleme şubesine çevrilmiş adıdır. Bildirim revizyonunu yerel olarak yürütülen bir Git komutuna geçirmeniz gerekiyorsa bunu kullanın.

  • REPO_RREV , tam olarak bildirimde yazıldığı gibi, bildirimdeki revizyonun adıdır.

Seçenekler:

  • -c : Yürütülecek komut ve argümanlar. Komut, /bin/sh ve kabuk konum parametreleri olarak iletildikten sonraki tüm argümanlar aracılığıyla değerlendirilir.

  • -p : Belirtilen komutun çıktısından önce proje başlıklarını göster. Bu, boruları komutun stdin, stdout ve sterr akışlarına bağlayarak ve tüm çıktıları tek bir çağrı cihazı oturumunda görüntülenen sürekli bir akışa aktararak elde edilir.

  • -v : Komutun stderr'e yazdığı mesajları göster.

kuru erik

repo prune [project-list]

Halihazırda birleştirilmiş konuları erir (siler).

Başlat

repo start
branch-name [project-list]

Bildirimde belirtilen revizyondan 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ı kullanmayı düşünün.

project-list bağımsız değişkeni, bu konu dalında hangi projelerin yer alacağını belirtir.

Not: Geçerli çalışma dizinindeki proje için bir nokta ( . ) kısaltmasıdır.

durum

repo status [project-list]

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

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

İlk sütunda, bir büyük harf, hazırlama alanının son taahhüt edilen durumdan ne kadar farklı olduğunu gösterir.

Mektup Anlam Tanım
- Değişiklik yok HEAD ve indekste aynı
A Katma HEAD'de değil, indekste
M Değiştirilmiş HEAD'de, dizinde değiştirildi
D silindi HEAD'de, indekste değil
R yeniden adlandırıldı HEAD'de değil, dizinde yol değişti
C kopyalandı HEAD'de değil, dizinde başka birinden kopyalandı
T Mod değişti HEAD ve dizinde aynı içerik, mod değişti
sen Birleştirilmemiş HEAD ve dizin arasındaki çakışma; çözünürlük gerekli

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

Mektup Anlam Tanım
- Yeni/bilinmeyen Dizinde değil, çalışma ağacında
m Değiştirilmiş Dizinde, çalışma ağacında, değiştirildi
d silindi Dizinde, çalışma 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 .

Hata deposu: hata: oturumun başında repo start komutu çalıştırılmadığında repo: error: no branches ready for upload görünür. Kurtarmak için taahhüt kimliğini kontrol edebilir, yeni bir şube başlatabilir ve ardından birleştirebilirsiniz.