Repo, birden fazla 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 ayrıntı için Repo README'ye bakın.
Repo kullanımı aşağıdaki şekli alır:
repo command options
İsteğe bağlı öğeler parantez [ ] içinde gösterilmiştir. Örneğin birçok komut project-list argüman olarak alır. project-list projeler için bir ad listesi veya yerel kaynak dizinlerine giden yolların bir listesi olarak belirtebilirsiniz:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
yardım
Bu sayfa yalnızca temel seçenekleri vurgulamaktadır. Tüm ayrıntılar için komut satırı yardımına bakın. Repo yüklendiğinde, aşağıdakileri çalıştırarak tüm komutların ö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 Repo'nun init
argümanı için bir açıklama ve seçenekler listesi sağlar. (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ını içeren bir .repo/
dizini oluşturur.
Seçenekler:
-
-u
: Bildirim deposunun alınacağı URL'yi belirtin. Ortak bildirimhttps://android.googlesource.com/platform/manifest
adresinde bulunur. -
-m
: Depodaki bir bildirim dosyasını seçin. Herhangi bir bildirim adı seçilmezse varsayılan değerdefault.xml
olur. -
-b
: Bir revizyon, yani belirli bir manifest-branch belirtin.
Not: Geriye kalan tüm Repo komutları için geçerli çalışma dizini ya .repo/
dosyasının ü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
gerçekleştirir. repo sync
bağımsız değişkenler olmadan çalıştırırsanız, tüm projeler için dosyalar senkronize edilir.
repo sync
çalıştırdığınızda şunlar olur:
Proje hiç senkronize edilmemişse,
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
şuna eşdeğerdir:git remote update git rebase origin/branch
burada
branch
yerel proje dizininde şu anda teslim alınan şubedir. Yerel şube uzak depodaki 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.
repo sync
başarılı bir şekilde çalıştırılmasının ardından, belirtilen projelerdeki kod güncel olur ve uzak depodaki kodla senkronize edilir.
İşte temel seçenekler. Daha fazla bilgi için repo help sync
bakın:
-c
: Sunucudan yalnızca geçerli bildirim dalını getir.-d
: Belirtilen projeleri manifest revizyonuna geri döndürün. Proje şu anda bir konu dalındaysa ancak bildirim revizyonuna geçici olarak ihtiyaç duyuluyorsa bu yararlı olur.-f
: Bir proje senkronize edilemese bile diğer projeleri senkronize etmeye devam edin.-j threadcount
: Daha hızlı tamamlamak için senkronizasyonu iş parçacıklarına bölün. Makinenizi aşırı yüklemediğinizden emin olun; CPU'nun bir kısmını diğer görevler için ayırı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 iyi bir yapıya senkronize edin.
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, incelenmek üzere yüklenmemiş bir veya daha fazla şubeyi 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 şifresi yapılandırmanız gerekir. HTTPS üzerinden kullanılacak yeni bir kullanıcı adı/şifre çifti oluşturmak için Şifre Oluşturucu'yu ziyaret edin.
Gerrit, nesne verilerini kendi sunucusu üzerinden aldığında, her bir işlemi bir değişikliğe dönüştürür, böylece gözden geçirenler belirli bir işleme ilişkin yorum yapabilir. Birkaç kontrol noktası taahhüdünü 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, tüm projelerde yüklenecek değişiklikleri arar.
Değişiklikler yüklendikten sonra düzenlemek için git rebase -i
veya git commit --amend
gibi bir araç kullanarak yerel taahhütlerinizi güncelleyin. Düzenlemeleriniz tamamlandıktan sonra:
- Güncellenen şubenin şu anda teslim alınan şube olduğunu doğrulayın.
- Değişiklik eşleştirme düzenleyicisini açmak için
repo upload --replace PROJECT
kullanı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 teslim alınan Git şubesini yüklemek istiyorsanız --current-branch
(veya kısaca --cbr
) işaretini kullanın.
fark
repo diff [project-list]
git diff
kullanarak taahhüt ile çalışma ağacı arasındaki önemli değişiklikleri gösterir.
indirmek
repo download target change
Belirtilen değişikliği inceleme sisteminden indirir ve projenizin yerel çalışma dizininde kullanılabilir hale getirir.
Örneğin, 23823 numaralı değişikliği platform/derleme 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/main
kullanarak uzak şubeyi kontrol edebilirsiniz.
Not: Dünya çapındaki tüm sunucularda çoğaltma gecikmeleri vardır, bu nedenle Gerrit'te web üzerinde bir değişikliğin görünür olması ile repo download
değişikliği tüm kullanıcılar için bulması arasında hafif bir yansıtma gecikmesi vardır.
hepsi için
repo forall [project-list] -c command
Her projede verilen kabuk komutunu çalıştırır. Aşağıdaki ek ortam değişkenleri repo forall
tarafından kullanıma sunulmuştur:
REPO_PROJECT
projenin benzersiz adı olarak ayarlanır.REPO_PATH
, istemcinin köküne göreli yoldur.REPO_REMOTE
, bildirimdeki uzak sistemin adıdır.REPO_LREV
, manifestteki düzeltmenin yerel izleme dalına çevrilmiş adıdır. Bildiri revizyonunu yerel olarak yürütülen bir Git komutuna aktarmanız gerekiyorsa bunu kullanın.REPO_RREV
, manifestte yer alan revizyonun tam olarak manifestte yazıldığı şekliyle adıdır.
Seçenekler:
-c
: Yürütülecek komut ve argümanlar. Komut,/bin/sh
aracılığıyla değerlendirilir ve ondan sonraki tüm argümanlar kabuk konumsal parametreler olarak iletilir.-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ıyı 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ş olan konuları eritir (siler).
başlangıç
repo start branch-name [project-list]
Manifest'te belirtilen revizyondan başlayarak yeni bir geliştirme 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
argümanı bu konu dalına hangi projelerin katılacağını belirtir.
Not: Bir nokta ( . ), geçerli çalışma dizinindeki projenin kısaltmasıdır.
durum
repo status [project-list]
Çalışma ağacını, belirtilen her projedeki hazırlama alanı (dizin) ve bu daldaki en son taahhüt (HEAD) ile karşılaştırır. Bu üç durum arasında fark bulunan her dosya için bir özet satırı görüntüler.
Yalnızca geçerli şubenin 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ütundaki 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, dizinde |
M | Değiştirilmiş | HEAD'de, dizinde değiştirildi |
D | silindi | HEAD'de, dizinde değil |
R | Yeniden adlandırıldı | HEAD'de değil, dizinde yol değişti |
C | Kopyalandı | HEAD'de değil, dizindeki başka birinden kopyalandı |
T | Mod değiştirildi | HEAD ve indekste aynı içerik, mod değişti |
sen | Birleştirilmemiş | HEAD ve indeks arasındaki çatışma; çözünürlük gerekli |
İkinci sütundaki küçük harf, çalışma dizininin dizinden ne kadar farklı olduğunu gösterir.
Mektup | Anlam | Tanım |
---|---|---|
- | Yeni/bilinmiyor | 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 |
Repo 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 .
Oturumun başında repo start
komutu çalıştırılmadığında repo: error: no branches ready for upload
hatası görünüyor. Kurtarmak için taahhüt kimliğini kontrol edebilir, yeni bir şube başlatabilir ve ardından birleştirebilirsiniz.