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/manifestbulunur.
-
-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 cloneeş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.
- Değişiklik eşleştirme düzenleyicisini açmak için
repo upload --replace PROJECTkullanı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ünür olması ve
repo download işleminin değişikliği tüm kullanıcılar için bulabilmesi 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/shve 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.