Revup menyediakan alat baris perintah yang memungkinkan pengembang untuk beralih lebih cepat pada perubahan paralel dan mengurangi overhead membuat dan memelihara ulasan kode.
revup amend
dan revup restack
Hemat Waktu Dengan Mengganti Rebase LambatRevup membutuhkan Python 3.8 atau lebih tinggi dan git 2.43 atau lebih tinggi. Revup bekerja dengan Linux, OSX, dan Windows (pengujian terbatas).
Ikuti instruksi di sini untuk mendapatkan versi git terbaru untuk OS Anda. Revup menggunakan bendera hanya ada dalam versi git yang lebih baru.
Instal dengan pip
atau manajer paket favorit Anda.
python3.8 -m pip install revup
Verifikasi bahwa instalasi berhasil dengan menunjukkan halaman bantuan.
revup -h
Anda juga dapat membangun dari sumber untuk mendapatkan pembaruan terbaru.
git clone https://github.com/Skydio/revup.git && cd revup
make deps && make package && make install
Tutorial ini akan memandu Anda melalui menggunakan fitur revup dasar.
Kloning repo kotak pasir dengan forking revup, membuat repo baru, atau menggunakan beberapa repo lain yang Anda miliki. Membuat PR uji bisa spam, jadi jangan lakukan tutorial pada repo orang lain.
git clone https://github.com/ < your-name > /revup.git && cd revup
Pada menjalankan pertama, Anda perlu mengonfigurasi kredensial github. Buat token akses pribadi di sini dan centang kotak untuk "izin repo penuh". Revup membutuhkan ini untuk membuat dan memodifikasi permintaan tarik. Lalu jalankan
revup config github_oauth
dan salin dan tempel oauth ke prompt.
Jadikan dua komit pertama Anda yang akan menjadi dua permintaan tarikan terpisah. Perhatikan tag "topik:" dalam pesan komit - inilah yang menyebabkan revup mengenali dan bertindak berdasarkan komit. Masing -masing topik bernama terpisah akan menjadi permintaan tarik baru.
echo meh > foo ; git add foo
git commit -m " My first revup foo " -m " Topic: foo "
echo peh > bar ; git add bar
git commit -m " My first revup bar " -m " Topic: bar "
revup upload
Anda telah mengunggah perubahan revup pertama Anda! Perhatikan bagaimana di GitHub, kedua cabang target 'utama'. Ini memungkinkan mereka untuk digabungkan secara mandiri.
Di bawah kap, Revup membuat dan mendorong cabang -cabang ini untuk Anda, melacak dan mengelola dependensi sesuai kebutuhan.
Sekarang kita akan membuat ulasan baru yang relatif terhadap "foo". Tag "relatif" akan memastikan ulasan baru menargetkan cabang yang benar.
echo deh >> foo ; git add foo
git commit -m " My second revup foo " -m " Topic: foo2 " -m " Relative: foo "
revup upload
Dengan model yang sederhana namun kuat ini, Anda dapat mengunggah perubahan independen dan tergantung sekaligus.
Sekarang mari kita perbarui permintaan tarik.
echo heh >> bar ; git add bar
# Either
revup amend HEAD~ --no-edit # Specify a commit to amend
# or
revup amend bar --no-edit # Specify a topic name to amend
revup upload
revup amend
memudahkan untuk memodifikasi komit dalam sejarah Anda. Anda juga memiliki opsi lain untuk memodifikasi ulasan:
git rebase --interactive
bersama dengan git commit --amend
Gunakan git pull --rebase
untuk menarik perubahan. Jangan gunakan git merge
atau git pull
tanpa rebase karena ini menciptakan komit gabungan.
Secara default revup tidak akan mengunggah jika Anda menarik tetapi belum membuat perubahan pada komit. Untuk mengesampingkan ini dan selalu mengunggah, jalankan revup upload --rebase
.
[pull]
rebase = true
[rebase]
autoStash = true
Kami merekomendasikan untuk menambahkan di atas ke .gitconfig
untuk membuat penarikan dan rebasing lebih mudah.
Ini adalah intro yang tidak lengkap untuk beberapa fitur revup yang lebih praktis.
Untuk deskripsi lengkap fitur, lihat dokumen atau jalankan revup -h
atau revup upload -h
untuk melihat dokumen dalam format man
.
Untuk berkontribusi pada proyek -proyek yang mungkin tidak Anda miliki untuk mendapatkan akses, revup dapat dikonfigurasi untuk mendorong ke garpu saat membuat permintaan tarik di proyek utama.
Tambahkan remote git untuk yang asli dan garpu.
$ git remote -v
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (fetch)
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (push)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (fetch)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (push)
Saat mengunggah, berikan remote untuk membuat permintaan tarik sebagai --remote-name
dan remote forked sebagai --fork-name
.
revup --remote-name origin --fork-name myfork upload
Revup juga dapat menambahkan pengulas, penugasan, dan label untuk menarik permintaan. Tambahkan tag yang sesuai ke komitmen apa pun dalam suatu topik.
Reviewers: alice, bob
Assignees: eve
Labels: bug, feature, draft
Nama pengguna GitHub dapat disingkat dan akan cocok dengan nama terpendek dengan awalan yang diberikan.
Label harus cocok dengan tepat. Label draft
khusus dan akan membuat permintaan tarik draf jika ada dan rancangan yang tidak dibuat jika dihapus.
Revup biasanya mendeteksi secara otomatis cabang basis lokal Anda dan menggunakannya untuk mendaftar komit dan target ulasan. Anda dapat memilih untuk menargetkan topik tertentu ke cabang lain atau bahkan beberapa cabang, dalam hal ini Revup akan menggunakannya sebagai cabang dasar sebagai gantinya (dan membuat beberapa permintaan tarik dalam kasus terakhir).
A fix for multiple branches
Topic: fix
Branches: main, rel1.1
Anda dapat menentukan cabang dasar pada baris perintah juga, meskipun ini biasanya tidak diperlukan kecuali Anda mengerjakan cabang yang tidak diketahui oleh autodetector (lihat Konfigurasi Repo di bawah).
revup upload --base-branch custom-branch-name
Revup akan menambahkan 2 komentar di setiap permintaan tarik untuk memberikan fitur yang bermanfaat bagi pengguna dan pengulas. Ini diaktifkan secara default dan diperbarui secara otomatis saat permintaan tarik berubah.
Grafik ulasan menyediakan tautan dan judul untuk semua permintaan tarik lokal yang memiliki hubungan relatif dengan permintaan tarik saat ini, termasuk yang tergantung pada, atau yang bergantung padanya. Ini memungkinkan Anda untuk menelusuri dengan cepat antara permintaan tarik dalam rantai.
Tabel PatchSets menyediakan riwayat unggahan untuk permintaan tarik yang diberikan serta tautan dan ringkasan diff antara setiap unggahan. Khususnya, Revup secara khusus menangani kasus di mana Anda rebase kemudian mengunggah dan akan menunjukkan kepada Anda diff dengan file hulu dikecualikan.
Revup sangat dapat dikonfigurasi menggunakan format file konfigurasi standar. Setiap bendera juga merupakan opsi konfigurasi, sehingga pengguna bisa mendapatkan perilaku persis yang mereka butuhkan.
Bendera yang ditentukan pada baris perintah diutamakan, diikuti oleh konfigurasi di ~/.revupconfig
, diikuti oleh .revupconfig
dalam repo saat ini.
Usecase utama untuk file konfigurasi in-repo adalah mengatur penamaan cabang utama dan rilis cabang.
Misalnya jika cabang utama Anda adalah cabang master
dan rilis dinamai seperti rel1.1
, lakukan yang berikut untuk .revupconfig
di root repo.
[revup]
main_branch = master
base_branch_globs =
rel[1-9].[0-9]
rel[1-9].[0-9][0-9]
Konfigurasi pengguna di ~/.revupconfig
menghemat waktu secara default bendera yang paling umum digunakan.
Misalnya, setelah terbiasa dengan alur kerja, pengguna mungkin tidak perlu pemeriksaan konfirmasi. Menambahkan baris berikut akan sama dengan berjalan dengan --skip-confirm
.
[upload]
skip_confirm = True
(alias "ditumpuk diff", "berbasis patch", dll)
Jika Anda menggunakan alat seperti Gerrit, Phabricator, atau Git Mailing, Anda mungkin sudah terbiasa dengan gaya pengembangan ini. Jika Anda ingin membaca lebih lanjut, berikut adalah beberapa diskusi yang ditulis dengan baik tentang masalah ini.
Revup sebagian terinspirasi oleh daftar proyek open source yang tidak lengkap ini yang juga mendukung alur kerja berbasis tambalan:
revup upload
tetapi tidak mendorong atau membuat ulasan.revup amend
dan backend untuk hal di atas dengan sistem gabungan yang menangani konflik Terima kasih telah berkontribusi pada Revup! Anda dapat memulai dengan ide Anda sendiri, atau melihat halaman masalah untuk ide -ide yang membuat orang lain bersemangat.
Saat melaporkan masalah:
revup -v
untuk menyediakan log verbose. Revup diterbitkan oleh Skydio tetapi bukan produk Skydio yang didukung secara resmi.