Saya memiliki masalah berikut:
- versi di
master
berfungsi dengan baik - versi dari tag terakhir sebelum
master
(katakanlahlast
) memiliki bug - seorang kolega membutuhkan patch untuk
last
revisinya untuk bug tertentu itu
Baik. Mari tanyakan teman kita git bisect
tentang revisi yang memperbaiki bug:
git bisect start
git bisect bad last
git bisect good master
Tapi itu tidak akan berhasil:
Beberapa revs baik bukanlah nenek moyang dari revs buruk.
git bisect tidak dapat berfungsi dengan baik dalam kasus ini.
Mungkin Anda salah mengira revs baik dan buruk?
Ada petunjuk untuk mengatasi ini? Apakah saya melewatkan sesuatu di dokumen?
git bisect run ...
untuk mengotomatiskan membagi dua. Jadi saya tidak punya kesempatan hanya untuk menukar kata-katagood
danbad
(itu terlalu jelas). Bagaimana cara menggunakanrun
untuk menemukan revisi bagus pertama?git bisect run
mengembalikan baik atau buruk sebagai kode keluar, bukan sebagai string. Lihat jawaban saya yang baru saja saya posting di bawah ini.Jawaban:
Mulai git 2.7, Anda dapat menggunakan argumen --term-old dan --term-new.
Misalnya, Anda dapat mengidentifikasi komit perbaikan masalah sebagai berikut:
Saat Anda menguji, katakan
git bisect fixed
ataugit bisect unfixed
sesuai kebutuhan.Jawaban lama, untuk versi git sebelum 2.7
Daripada melatih diri Anda untuk sementara waktu untuk berpikir bahwa buruk berarti baik dan baik berarti buruk, mengapa tidak membuat beberapa alias?
Dalam
~/.gitconfig
menambahkan berikut:Anda dapat mulai mengidentifikasi komit perbaikan masalah sebagai berikut:
Saat Anda menguji, katakan
git bisect-fixed
ataugit bisect-unfixed
sesuai kebutuhan.sumber
is the first bad commit
, jadi sepertinya pelatihan sementara masih diperlukan, bukan?bisect-after = bisect bad
danbisect-before = bisect good
, sesuai rekomendasi Anda. Sekarang saya bisa menggunakan salah satu dari alias. Kita akan melihat mana yang akhirnya lebih saya sukai setelah beberapa penggunaan.Saya hanya akan "menipu" git dan menukar makna baik <=> buruk.
Dengan kata lain, anggap "buruk" sebagai sesuatu yang tidak menunjukkan masalah jadi ini bukan versi yang "baik" untuk mendasarkan tambalan Anda.
Baik dan buruk adalah konsep yang cukup subjektif, bukan? :)
sumber
Jika Anda menggunakan
git bisect run
seperti yang telah saya lakukan denganprove
perintah Perl (yang menjalankan tes otomatis) Anda tidak memiliki kesempatan hanya untuk menukargood
danbad
. Keberhasilan pengujian akan dilaporkan sebagai kode keluar.Saya telah menemukan sintaks Bash yang valid untuk meniadakan kode keluar dari program yang dijalankan oleh
git bisect run
:Ini memberi saya revisi pertama untuk lulus tes yang dijalankan
prove
.sumber
Git sekarang memungkinkan Anda menggunakan
old
dannew
tanpa mendefinisikannya terlebih dahulu. Anda harus memanggilgit bisect start
tanpa komit sebagai argumen lebih lanjut, lalu memulai pembagian dua dengan benar dengan meneleponhttps://git-scm.com/docs/git-bisect#_alternate_terms
Ini pada dasarnya adalah apa yang @MarcH sarankan untuk diterapkan.
sumber
git bisect start --term-new fixed --term-old broken
Git alias adalah ide yang baik, namun hal
fixed
danunfixed
memiliki masalah yang sama darigood
danbad
: Anda tidak dapat memiliki mereka kompatibel dengan baik regresi dan progresi. Sangat mudah untuk menemukan kata-kata yang bekerja dengan cara apa pun: cukup ambil dari terminologi pencarian biner asli yang bersifat netral tanpa prasangka tentang apa yang baik atau buruk. Contohnya:Dengan istilah netral seperti ini, Anda selalu dapat mengetik:
git bisect-high
(ataugit bisect-upper
, ataugit-bisect max
, ... pilihan Anda!) Apakah Anda sedang mencari regresi atau perbaikan .Sayang sekali para pengembang git bisect tidak bisa begitu saja menggunakan kembali istilah yang ada. Secara umum, antarmuka pengguna bukanlah urusan git: http://stevebennett.me/2012/02/24/10-things-i-hate-about-git/
sumber