git log -G<regex> -p
adalah alat yang luar biasa untuk mencari sejarah basis kode untuk perubahan yang cocok dengan pola yang ditentukan. Namun, itu bisa menjadi luar biasa untuk menemukan bongkahan yang relevan di output diff / patch di lautan bakhil yang sebagian besar tidak relevan.
Tentu saja mungkin untuk mencari output dari git log
string / regex asli, tetapi itu tidak banyak mengurangi kebisingan visual dan gangguan banyak perubahan yang tidak terkait.
Membaca git log
, saya melihat ada --pickaxe-all
, yang merupakan kebalikan dari apa yang saya inginkan: itu memperluas output (ke seluruh changeset), sedangkan saya ingin membatasi (ke bingkah tertentu).
Pada dasarnya, saya mencari cara untuk "secara cerdas" mengurai diff / patch ke masing-masing bakhil dan kemudian melakukan pencarian terhadap masing-masing bakhil (hanya menargetkan baris yang diubah), membuang bakhil yang tidak cocok, dan menghasilkan yang itu.
Apakah alat seperti yang saya jelaskan ada? Apakah ada pendekatan yang lebih baik untuk mendapatkan bakhil yang cocok / terpengaruh?
Beberapa penelitian awal yang telah saya lakukan ...
Jika dimungkinkan untuk
grep
keluaran diff / patch dan membuat nilai opsi konteks menjadi dinamis — katakanlah, melalui regexps alih-alih jumlah baris — itu mungkin sudah cukup. Tapigrep
tidak persis seperti itu (saya juga tidak perlu meminta fitur itu).Saya menemukan paket patchutils , yang awalnya terdengar seperti mungkin sesuai dengan kebutuhan saya. Tetapi setelah membaca
man
halaman - halamannya, alat tersebut tampaknya tidak menangani bakhil yang cocok berdasarkan regexps. (Mereka dapat menerima daftar orang bakhil, meskipun ...)Saya akhirnya menemukan splitpatch.rb , yang tampaknya menangani penguraian tambalan dengan baik, tetapi perlu ditambah secara signifikan untuk menangani pembacaan tambalan melalui
stdin
, mencocokkan bakhil yang diinginkan, dan kemudian menghasilkan bakhil.