Repo, birden fazla depodaki çalışmaları basitleştirerek Git'i tamamlar. Repo ile Git arasındaki ilişkinin açıklanması için Kaynak denetimi araçları başlıklı makaleyi inceleyin. Depo hakkında daha fazla bilgi için Repo README dosyasını inceleyin.
Depo kullanımı aşağıdaki biçimdedir:
repo command options
İsteğe bağlı öğeler köşeli parantez içinde [] gösterilir. Örneğin, birçok komut project-list bağımsız değişkeni alır. project-list değerini, projelerin adlarının veya yerel kaynak dizinlerinin yollarının 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 komutuyla ilgili ayrıntılı bilgi görebilirsiniz:
repo help command
Örneğin, aşağıdaki komut init
komutunun açıklamasını ve seçenek listesini döndürür:
repo help init
Yalnızca bir komut için kullanılabilen seçeneklerin listesini görmek isterseniz şu komutu çalıştırın:
repo command --help
Örnek:
repo init --help
init
repo init -u url [options]
Depoyu geçerli dizine yükler. Bu komut, .repo/
Repo kaynak kodu ve standart Android manifest dosyalarının Git depolarını içeren bir dizin oluşturur.
Seçenekler:
-u
: Manifest deposunun alınacağı URL'yi belirtin. Ortak manifesthttps://android.googlesource.com/platform/manifest
adresinde bulunur.-m
: Depodan bir manifest dosyası seçin. Manifest adı seçilmezse varsayılan olarakdefault.xml
kullanılır.-b
: Bir düzeltmeyi (yani belirli bir manifest-branch) belirtin.
senkronizasyon
repo sync [project-list]
Yeni değişiklikleri indirir ve yerel ortamınızdaki çalışan dosyaları güncelleyerek tüm Git depolarında git fetch
işlemini gerçekleştirir. repo sync
bağımsız değişkeni olmadan çalıştırırsanız tüm projelerin dosyalarını senkronize eder.
repo sync
komutunu çalıştırdığınızda şunlar olur:
Proje hiç senkronize edilmediyse
repo sync
,git clone
ile aynıdır; uzak depoda bulunan 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 alınmış olan şubedir. Yerel dal, uzak depoda bir dalı takip etmiyorsa proje için senkronizasyon gerçekleşmez.
repo sync
başarıyla çalıştırıldıktan sonra, belirtilen projelerdeki kod günceldir ve uzak depodaki kodla senkronize edilir.
Anahtar seçenekleri:
-c
: Sunucudan yalnızca mevcut manifest dalını getirin.-d
: Belirtilen projeleri manifest düzeltmesine geri döndürün. Proje bir konu dalındaysa ancak manifest düzeltmesinin geçici olarak gerekli olduğu durumlarda bu seçenek faydalıdır.-f
: Bir proje senkronize edilemese bile diğer projeleri senkronize etmeye devam edin.threadcount
: Senkronizasyonu daha hızlı tamamlamak için ileti dizileri arasında bölün. 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 öncenproc --all
komutunu çalıştırın.-q
: Durum mesajlarını bastırarak sessizce çalıştırın.-s
: Geçerli manifest dosyasındamanifest-server
öğesi tarafından belirtildiği gibi, bilinen iyi bir derlemeyle senkronize edilir.
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 Repo senkronizasyonu sırasında güncellenen uzak dallarla karşılaştırır. Repo, inceleme için yüklenmemiş şubelerden bir veya daha fazlasını seçmenizi ister.
Ardından, seçilen dallardaki tüm taahhütler 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 sunucusu üzerinden aldığında her bir gönderimi bir değişikliğe dönüştürür. Böylece, yorumcuların belirli bir gönderim hakkında yorum yapması sağlanır.
Birden fazla kontrol noktası kaydını tek bir kayda birleştirmek için yükleme işlemini başlatmadan önce git rebase -i
repo upload
bağımsız değişkeni olmadan çalıştırırsanız tüm projelerde yüklenecek değişiklikler aranacaktır.
Yüklendikten sonra değişiklikleri düzenlemek için yerel taahhütlerinizi 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 kontrol edilen dal olduğunu doğrulayın.
- Değişiklik eşleştirme düzenleyicisini açmak için
repo upload --replace PROJECT
simgesini kullanın. Serideki her bir 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 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 oluşturulur.
Yalnızca şu anda kontrol edilen 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 yararlı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 iletin.
diff
repo diff [project-list]
git diff
kullanarak, kaydetme ile çalışma ağacı arasındaki ö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, indirmek için 23823 değerini platform/build
dizininize değiştirin:
repo download platform/build 23823
repo sync
çalıştırıldığında repo download
ile alınan tüm taahhütler kaldırılır. Dilerseniz git checkout m/main
kullanarak uzaktaki dalı da kontrol edebilirsiniz.
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 göreli yoldur.REPO_REMOTE
, manifest'teki uzak sistemin adıdır.REPO_LREV
, yerel bir izleme şubesine çevrilen manifest'teki düzeltmenin adıdır. Manifest revizyonunu yerel olarak yürütülen bir Git komutuna iletmeniz gerekiyorsa bu değişkeni kullanın.REPO_RREV
, manifest'teki düzeltmenin adı olup manifest'te yazıldığı şekilde belirtilmelidir.
Seçenekler:
-c
: Yürütülecek komut ve bağımsız değişkenler. Komut,/bin/sh
aracılığıyla değerlendirilir ve sonraki tüm bağımsız değişkenler kabuk konumsal parametreleri olarak iletilir.-p
: Belirtilen komutun çıktısından önce proje başlıklarını gösterin. Bu, boruların komutun stdin, stdout ve sterr akışlarına bağlanması ve tüm çıktıların tek bir sayfalayıcı oturumunda görüntülenen kesintisiz bir akışa aktarılmasıyla elde edilir.-v
: Komutun stderr'ye yazdığı mesajları göster.
kuru erik
repo prune [project-list]
Zaten birleştirilmiş konuları budar (silir).
start
repo start branch-name [project-list]
Manifest'te 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ıldığını belirtir.
status
repo status [project-list]
Çalışma ağacını, belirtilen her projedeki hazırlık alanı (dizin) ve bu daldaki en son taahhüt (HEAD) ile karşılaştırır. Bu üç durum arasında fark olan her dosya için bir özet satırı gösterir.
Yalnızca mevcut 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ırlık alanının son commit edilen 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 |
M | Değiştirilme tarihi | ANA'da, dizinde değiştirildi |
D | Silindi | Dizine eklenmemiş, HEAD'de |
K | Yeniden adlandırıldı | HEAD'da 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, mod değişti |
U | Birleştirilmemiş | HEAD ile dizin arasında çakışma; çözüm gerekli |
İkinci sütunda, çalışma dizininin dizinden nasıl farklı olduğunu küçük harf gösterir.
Mektup | Anlamı | Açıklama |
---|---|---|
- | Yeni/bilinmiyor | Dizine eklenmemiş, çalışma ağacında |
m | Değiştirilme tarihi | Dizinde, çalışma ağacında, değiştirildi |
g | Silindi | Çalışma ağacında değil, dizinde |
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österilir. Kurtarmak için, kaydetme kimliğini kontrol edebilir, yeni bir dal başlatabilir ve ardından bu dalı birleştirebilirsiniz.