Referensi perintah repo

Repo melengkapi Git dengan menyederhanakan pekerjaan di beberapa repositori. Untuk mengetahui penjelasan tentang hubungan antara Repo dan Git, lihat Alat kontrol sumber. Untuk mengetahui detail selengkapnya tentang Repo, lihat Repo README

Penggunaan Repo memiliki 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 project:

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

bantuan

repo help

Memberikan bantuan terkait perintah repo. Anda dapat melihat informasi mendetail tentang perintah Repo tertentu dengan menentukan perintah sebagai opsi:

repo help command

Misalnya, perintah berikut akan menghasilkan deskripsi dan daftar opsi untuk perintah init:

repo help init

Atau, untuk melihat daftar opsi yang tersedia untuk perintah, jalankan:

repo command --help

Contoh:

repo init --help

init

repo init -u url [options]

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

Opsi:

  • -u: Menentukan URL tempat mengambil repositori manifes. Manifes umum dapat ditemukan di https://android.googlesource.com/platform/manifest.

  • -m: Memilih file manifes dalam repositori. Jika tidak ada nama manifes yang dipilih, nama default-nya adalah default.xml.

  • -b: Menentukan revisi, yaitu manifest-branch tertentu.

sinkronisasi

repo sync [project-list]

Mendownload perubahan baru dan mengupdate file kerja di lingkungan lokal Anda, yang pada dasarnya menyelesaikan git fetch di semua repositori Git. Jika Anda menjalankan repo sync tanpa argumen, file akan disinkronkan untuk semua project.

Saat Anda menjalankan repo sync, hal berikut akan terjadi:

  • Jika project belum pernah disinkronkan, repo sync akan setara dengan git clone; semua cabang di repositori jarak jauh akan disalin ke direktori project lokal.

  • Jika project telah disinkronkan sebelumnya, repo sync akan setara dengan:

    git remote update
    git rebase origin/branch
    

    Dengan branch adalah cabang yang saat ini di-checkout di direktori project lokal. Jika cabang lokal tidak melacak cabang di repositori jarak jauh, tidak ada sinkronisasi yang terjadi untuk project tersebut.

Setelah repo sync berhasil dijalankan, kode dalam project yang ditentukan akan diperbarui dan disinkronkan dengan kode di repositori jarak jauh.

Opsi kunci:

  • -c: Hanya mengambil cabang manifes saat ini dari server.
  • -d: Mengalihkan project yang ditentukan kembali ke revisi manifes. Opsi ini berguna jika project berada di cabang topik, tetapi revisi manifes diperlukan untuk sementara.
  • -f: Melanjutkan sinkronisasi project lain meskipun project gagal disinkronkan.
  • -j threadcount: Membagi sinkronisasi di seluruh thread untuk penyelesaian yang lebih cepat. Pastikan Anda tidak membebani mesin Anda secara berlebihan. Sisakan beberapa CPU untuk tugas lain. Untuk melihat jumlah CPU yang tersedia, jalankan nproc --all terlebih dahulu.
  • -q: Menjalankan secara diam-diam dengan menekan pesan status.
  • -s: Menyinkronkan ke build yang diketahui baik seperti yang ditentukan oleh elemen manifest-server dalam manifes saat ini.

Untuk opsi lainnya, jalankan repo help sync.

upload

repo upload [project-list]

Mengupload perubahan ke server peninjauan. Untuk project yang ditentukan, Repo membandingkan cabang lokal dengan cabang jarak jauh yang diupdate selama sinkronisasi Repo terakhir. Repo akan meminta Anda untuk memilih satu atau beberapa cabang yang belum diupload untuk ditinjau.

Semua commit di cabang yang dipilih kemudian akan dikirimkan ke Gerrit melalui koneksi HTTPS. Anda harus mengonfigurasi sandi HTTPS untuk mengaktifkan otorisasi upload. Untuk membuat pasangan nama pengguna/sandi baru yang akan digunakan melalui HTTPS, buka Generator sandi.

Saat Gerrit menerima data objek melalui servernya, Gerrit akan mengubah setiap commit menjadi perubahan sehingga peninjau dapat memberikan komentar pada commit tertentu. Untuk menggabungkan beberapa commit checkpoint menjadi satu commit, gunakan git rebase -i sebelum Anda menjalankan upload.

Jika Anda menjalankan repo upload tanpa argumen, semua project akan ditelusuri untuk menemukan perubahan yang akan diupload.

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

  • Pastikan cabang yang diupdate adalah cabang yang saat ini di-checkout.
  • Gunakan repo upload --replace PROJECT untuk membuka editor pencocokan perubahan.
  • Untuk setiap commit 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 replacements
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

Setelah upload selesai, perubahan akan memiliki kumpulan patch tambahan.

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

Untuk perubahan terkait, sebaiknya simpan semua CL dalam topik yang sama. Anda dapat menambahkan nama topik saat mengupload dengan --topic=TOPIC. Atau, cukup teruskan -t untuk menetapkan nama topik yang sama dengan nama cabang lokal.

diff

repo diff [project-list]

Menampilkan perubahan yang belum selesai antara commit dan pohon kerja menggunakan git diff.

download

repo download target change

Mendownload perubahan yang ditentukan dari sistem peninjauan dan membuatnya tersedia di direktori kerja lokal project Anda.

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

repo download platform/build 23823

Menjalankan repo sync akan menghapus commit yang diambil dengan repo download. Atau, Anda dapat meng-checkout cabang jarak jauh menggunakan git checkout m/main.

forall

repo forall [project-list] -c command

Menjalankan perintah shell yang diberikan di setiap project. Variabel lingkungan tambahan berikut disediakan oleh repo forall:

  • REPO_PROJECT ditetapkan ke nama unik project.
  • REPO_PATH adalah jalur relatif terhadap root klien.
  • REPO_REMOTE adalah nama sistem jarak jauh dari manifes.
  • REPO_LREV adalah nama revisi dari manifes, yang diterjemahkan ke cabang pelacakan lokal. Gunakan variabel ini jika Anda perlu meneruskan revisi manifes ke perintah Git yang dijalankan secara lokal.
  • REPO_RREV adalah nama revisi dari manifes, persis seperti yang tertulis dalam manifes.

Opsi:

  • -c: Perintah dan argumen yang akan dijalankan. Perintah dievaluasi melalui /bin/sh dan argumen apa pun setelahnya diteruskan sebagai parameter posisi shell.
  • -p: Menampilkan header project sebelum output perintah yang ditentukan. Hal ini dicapai dengan mengikat pipa ke aliran stdin, stdout, dan sterr perintah, serta menyalurkan semua output ke aliran berkelanjutan yang ditampilkan dalam satu sesi pager.
  • -v: Menampilkan pesan yang ditulis perintah ke stderr.

prune

repo prune [project-list]

Memangkas (menghapus) topik yang sudah digabungkan.

mulai

repo start branch-name [project-list]

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

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

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

status

repo status [project-list]

Membandingkan pohon kerja dengan area penahapan (indeks) dan commit terbaru di cabang ini (HEAD) di setiap project yang ditentukan. Menampilkan baris ringkasan untuk setiap file yang memiliki perbedaan antara ketiga status ini.

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

Di kolom pertama, huruf kapital menunjukkan perbedaan area penahapan dengan status terakhir yang di-commit.

Huruf Arti Deskripsi
- Tidak ada perubahan Sama di HEAD dan indeks
A Ditambahkan Tidak ada di HEAD, ada di indeks
M Diubah Ada di HEAD, diubah di indeks
D Dihapus Ada di HEAD, tidak ada di indeks
R Diganti nama Tidak ada di HEAD, jalur diubah di indeks
C Disalin Tidak ada di HEAD, disalin dari yang lain di indeks
T Mode diubah Konten yang sama di HEAD dan indeks, mode diubah
U Tidak digabungkan Konflik antara HEAD dan indeks; resolusi diperlukan

Di kolom kedua, huruf kecil menunjukkan perbedaan direktori kerja dengan indeks.

Huruf Arti Deskripsi
- Baru/tidak diketahui Tidak ada di indeks, ada di pohon kerja
m Diubah Ada di indeks, ada di pohon kerja, diubah
d Dihapus Ada di indeks, tidak ada di pohon kerja

Menangani error 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 .

Error repo: error: no branches ready for upload muncul saat perintah repo start tidak dijalankan di awal sesi. Untuk memulihkan, Anda dapat memeriksa ID commit, memulai cabang baru, lalu menggabungkannya.

Struktur repositori Git

Untuk Android, repositori Git (project) tidak bertingkat. Setiap project dikaitkan dengan direktori tertentu di pohon sumber, dan semua subdirektori serta file di bawah direktori tersebut adalah bagian dari project yang sama. Hindari penggunaan fitur git submodule Repo untuk pengembangan Android.