Referensi Perintah Repo

Repo melengkapi Git dengan menyederhanakan pekerjaan di beberapa repositori. Lihat Alat Kontrol Sumber untuk penjelasan tentang hubungan antara Repo dan Git. Untuk detail lebih lanjut tentang Repo, lihat Repo README .

Penggunaan repo mengambil bentuk berikut:

repo command options

Elemen opsional ditampilkan dalam tanda kurung [ ]. Misalnya, banyak perintah menggunakan project-list sebagai argumen. Anda dapat menentukan project-list sebagai daftar nama atau daftar jalur ke direktori sumber lokal untuk proyek:

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

Tolong

Halaman ini hanya menyoroti opsi utama. Lihat bantuan baris perintah untuk detail selengkapnya. Saat Repo diinstal, Anda dapat menemukan dokumentasi terbaru yang dimulai dengan ringkasan semua perintah dengan menjalankan:

repo help

Anda dapat melihat informasi terperinci tentang perintah apa pun dengan menjalankan ini di dalam pohon Repo:

repo help command

Misalnya, perintah berikut menghasilkan deskripsi dan daftar opsi untuk argumen init dari Repo, yang menginisialisasi Repo di direktori saat ini. (Lihat init untuk detailnya.)

repo help init

Atau untuk hanya melihat daftar opsi yang tersedia, jalankan:

repo command --help
Misalnya:
repo init --help

init

repo init -u url [options]

Menginstal Repo di direktori saat ini. Ini membuat direktori .repo/ dengan repositori Git untuk kode sumber Repo dan file manifes Android standar.

Pilihan:

  • -u : Tentukan URL untuk mengambil repositori manifes. Manifes umum ditemukan di https://android.googlesource.com/platform/manifest .
  • -m : Pilih file manifes di dalam repositori. Jika tidak ada nama manifes yang dipilih, defaultnya adalah default.xml .
  • -b : Tentukan revisi, yaitu manifest-branch tertentu.

Catatan: Untuk semua perintah Repo yang tersisa, direktori kerja saat ini harus berupa direktori induk dari .repo/ atau subdirektori dari direktori induk.

sinkronisasi

repo sync [project-list]

Mengunduh perubahan baru dan memperbarui file yang berfungsi di lingkungan lokal Anda, pada dasarnya menyelesaikan git fetch di semua repositori Git. Jika Anda menjalankan repo sync tanpa argumen, itu menyinkronkan file untuk semua proyek.

Saat Anda menjalankan repo sync , inilah yang terjadi:

  • Jika proyek belum pernah disinkronkan, maka repo sync setara dengan git clone . Semua cabang di repositori jarak jauh disalin ke direktori proyek lokal.

  • Jika proyek telah disinkronkan sebelumnya, maka repo sync setara dengan:

    git remote update
    git rebase origin/branch
    

    di mana branch adalah cabang yang saat ini diperiksa di direktori proyek lokal. Jika cabang lokal tidak melacak cabang di repositori jarak jauh, maka tidak ada sinkronisasi yang terjadi untuk proyek tersebut.

  • Jika operasi Git rebase menghasilkan konflik penggabungan, gunakan perintah Git normal (misalnya, git rebase --continue ) untuk menyelesaikan konflik.

Setelah sukses menjalankan repo sync , kode dalam proyek tertentu diperbarui dan disinkronkan dengan kode di repositori jarak jauh.

Berikut adalah opsi utama. Lihat repo help sync untuk lebih lanjut:

  • -c : Ambil hanya cabang manifes saat ini dari server.

  • -d : Mengalihkan proyek yang ditentukan kembali ke revisi manifes. Ini berguna jika proyek saat ini berada di cabang topik, tetapi revisi manifes diperlukan untuk sementara.

  • -f : Lanjutkan dengan menyinkronkan proyek lain meskipun proyek gagal disinkronkan.

  • -j threadcount : Pisahkan sinkronisasi di seluruh utas untuk penyelesaian yang lebih cepat. Pastikan Anda tidak membebani mesin Anda - biarkan beberapa CPU dicadangkan untuk tugas lain. Untuk melihat jumlah CPU yang tersedia, jalankan terlebih dahulu: nproc --all

  • -q : Jalankan dengan tenang dengan menekan pesan status.

  • -s : Sinkronkan ke build bagus yang diketahui seperti yang ditentukan oleh elemen manifest-server dalam manifes saat ini.

mengunggah

repo upload [project-list]

Untuk proyek yang ditentukan, Repo membandingkan cabang lokal dengan cabang jarak jauh yang diperbarui selama sinkronisasi Repo terakhir. Repo meminta Anda untuk memilih satu atau lebih cabang yang belum diunggah untuk ditinjau.

Semua komit pada cabang yang dipilih kemudian ditransmisikan ke Gerrit melalui koneksi HTTPS. Anda perlu mengonfigurasi kata sandi HTTPS untuk mengaktifkan otorisasi pengunggahan. Kunjungi Pembuat Kata Sandi untuk menghasilkan pasangan nama pengguna/kata sandi baru untuk digunakan melalui HTTPS.

Saat Gerrit menerima data objek melalui servernya, Gerrit mengubah setiap komit menjadi perubahan sehingga peninjau dapat mengomentari komit tertentu. Untuk menggabungkan beberapa komit pos pemeriksaan menjadi satu komit, gunakan git rebase -i sebelum Anda menjalankan unggahan.

Jika Anda menjalankan repo upload tanpa argumen, itu akan mencari semua proyek untuk perubahan yang akan diunggah.

Untuk mengedit perubahan setelah diunggah, gunakan alat seperti git rebase -i atau git commit --amend untuk memperbarui commit lokal Anda. Setelah pengeditan Anda selesai:

  • Verifikasi bahwa cabang yang diperbarui adalah cabang yang saat ini diperiksa.
  • Untuk setiap komit dalam seri, masukkan ID perubahan Gerrit di dalam tanda kurung:
    # 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.
    

Setelah unggahan selesai, perubahan memiliki set tambalan tambahan.

Jika Anda hanya ingin mengunggah cabang Git yang saat ini diperiksa, gunakan flag --current-branch (atau --cbr untuk singkatnya).

berbeda

repo diff [project-list]

Menunjukkan perubahan luar biasa antara komit dan pohon kerja menggunakan git diff .

unduh

repo download target change

Mengunduh perubahan yang ditentukan dari sistem peninjauan dan membuatnya tersedia di direktori kerja lokal proyek Anda.

Misalnya, untuk mengunduh perubahan 23823 ke direktori platform/build Anda:

repo download platform/build 23823

Menjalankan repo sync menghapus semua komit yang diambil dengan repo download . Atau Anda dapat memeriksa cabang jarak jauh menggunakan git checkout m/master .

Catatan: Ada penundaan replikasi ke semua server di seluruh dunia, jadi ada sedikit jeda antara saat perubahan terlihat di web di Gerrit dan saat repo download dapat menemukan perubahan untuk semua pengguna.

untuk semua

repo forall [project-list] -c command

Mengeksekusi perintah shell yang diberikan di setiap proyek. Variabel lingkungan tambahan berikut ini disediakan oleh repo forall :

  • REPO_PROJECT diatur ke nama unik proyek.

  • REPO_PATH adalah jalur relatif terhadap akar klien.

  • REPO_REMOTE adalah nama sistem jarak jauh dari manifes.

  • REPO_LREV adalah nama revisi dari manifes, diterjemahkan ke cabang pelacakan lokal. Gunakan ini jika Anda perlu meneruskan revisi manifes ke perintah Git yang dieksekusi secara lokal.

  • REPO_RREV adalah nama revisi dari manifes, persis seperti yang tertulis dalam manifes.

Pilihan:

  • -c : Perintah dan argumen untuk dieksekusi. Perintah dievaluasi melalui /bin/sh dan argumen apa pun setelah dilewatkan sebagai parameter posisi shell.

  • -p : Tampilkan header proyek sebelum output dari perintah yang ditentukan. Ini dicapai dengan mengikat pipa ke aliran stdin, stdout, dan sterr perintah, dan menyalurkan semua output ke aliran berkelanjutan yang ditampilkan dalam satu sesi pager.

  • -v : Menampilkan pesan yang ditulis perintah ke stderr.

memangkas

repo prune [project-list]

Memangkas (menghapus) topik yang sudah digabungkan.

Mulailah

repo start
branch-name [project-list]

Memulai cabang baru untuk pengembangan, mulai dari revisi yang ditentukan dalam manifes.

Argumen BRANCH_NAME memberikan deskripsi singkat tentang perubahan yang Anda coba lakukan pada proyek. Jika Anda tidak tahu, pertimbangkan untuk menggunakan nama default .

Argumen project-list proyek menentukan proyek mana yang berpartisipasi dalam cabang topik ini.

Catatan: Tanda titik ( . ) adalah singkatan untuk proyek di direktori kerja saat ini.

status

repo status [project-list]

Membandingkan pohon kerja dengan area pementasan (indeks) dan komit terbaru pada cabang ini (HEAD) di setiap proyek yang ditentukan. Menampilkan garis ringkasan untuk setiap file di mana ada perbedaan antara ketiga status ini.

Untuk melihat status cabang saat ini saja, jalankan repo status . . Informasi status dicantumkan berdasarkan proyek. Untuk setiap file dalam proyek, kode dua huruf digunakan.

Di kolom pertama, huruf besar menunjukkan bagaimana staging area berbeda dari kondisi commit terakhir.

Surat Arti Keterangan
- Tidak ada perubahan Sama di HEAD dan indeks
SEBUAH Ditambahkan Tidak di HEAD, di indeks
M Diubah Di HEAD, dimodifikasi dalam indeks
D Dihapus Di HEAD, bukan di indeks
R Berganti nama Tidak di HEAD, jalur berubah dalam indeks
C disalin Tidak di HEAD, disalin dari yang lain di indeks
T Modus berubah Konten yang sama di HEAD dan indeks, mode berubah
kamu Tidak digabung Konflik antara HEAD dan indeks; diperlukan resolusi

Di kolom kedua, huruf kecil menunjukkan bagaimana direktori kerja berbeda dari indeks.

Surat Arti Keterangan
- Baru/tidak diketahui Tidak dalam indeks, di pohon kerja
m Diubah Dalam indeks, di pohon kerja, dimodifikasi
d Dihapus Dalam indeks, bukan di pohon kerja

Menangani kesalahan repo

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 muncul ketika perintah repo start tidak dijalankan pada awal sesi. Untuk memulihkan, Anda dapat memeriksa id komit, memulai cabang baru, lalu menggabungkannya.