git log -G<regex> -p
bir kod tabanının geçmişini belirtilen kalıpla eşleşen değişiklikler için aramak için harika bir araçtır. Bununla birlikte, çoğunlukla ilgisiz iri denizde diff / patch çıktısında ilgili iri bulmak çok zor olabilir.
Elbette git log
orijinal dizginin / regex'in çıktısını aramak mümkündür , ancak görsel paraziti ve ilgisiz birçok değişikliğin dikkatini dağıtmak için çok az şey yapar.
Okurken git log
, --pickaxe-all
istediğim şeyin tam tersi olduğunu görüyorum: çıktıyı genişletiyor (tüm değişiklik kümesine), oysa onu sınırlamak istiyorum (belirli bir hunk ile).
Esasen, fark / yamayı tek tek parçalara "akıllıca" ayrıştırmanın ve sonra her bir parçaya (sadece değişen satırları hedefleyen) karşı bir arama yürütmenin, eşleşmeyen parçaların atılmasının ve çıktıların alınmasının bir yolunu arıyorum öyle.
Anlattığım gibi bir araç var mı? Eşleşen / etkilenen yakışıklılıkları almak için daha iyi bir yaklaşım var mı?
Yaptığım bazı ilk araştırmalar ...
grep
Diff / patch çıkışı mümkün olduğunda ve bağlam seçeneği değerlerini dinamik hale getirirse ( örneğin, satır sayıları yerine regexps aracılığıyla) bu yeterli olabilir. Amagrep
tam olarak bu şekilde inşa edilmedi (ne de bu özelliği talep etmiyorum).Başlangıçta benim ihtiyaçlarına uygun gibi geliyordu patchutils paketi buldum . Ancak
man
sayfalarını okuduktan sonra , araçlar normal ifadelere dayalı eşleşen öbekleri işlemiyor gibi görünmüyor. (Bununla birlikte, bir parça listesini kabul edebilirler ...)Sonunda , yamanın ayrıştırılmasını iyi işleyen splitpatch.rb ile karşılaştım , ancak okuma yamalarını ele almak
stdin
, istenen yakışıklılıkları eşleştirmek ve sonra iri parçaların çıktısını almak için önemli ölçüde artırılması gerekir .