git log -G<regex> -p
निर्दिष्ट पैटर्न से मेल खाने वाले परिवर्तनों के लिए कोडबेस के इतिहास को खोजने के लिए एक अद्भुत उपकरण है। हालांकि, ज्यादातर अप्रासंगिक हंक के समुद्र में अंतर / पैच आउटपुट में प्रासंगिक हंक का पता लगाना भारी हो सकता है।
git log
मूल स्ट्रिंग / रेगेक्स के आउटपुट की खोज करना निश्चित रूप से संभव है , लेकिन यह दृश्य शोर को कम करने और कई असंबंधित परिवर्तनों की विकर्षण को कम करने के लिए है।
पर पढ़ना git log
, मुझे लगता है कि वहाँ है --pickaxe-all
, जो मैं चाहता हूँ के विपरीत है: यह उत्पादन (पूरे बदलाव के लिए) को व्यापक करता है, जबकि मैं इसे (विशिष्ट हंक तक) सीमित करना चाहता हूं।
अनिवार्य रूप से, मैं अलग-अलग हंक में अंतर / पैच पार्स करने के लिए "बुद्धिमानी से" एक रास्ता खोज रहा हूं और फिर प्रत्येक हंक (लक्षित लाइनों को लक्षित करना) के खिलाफ एक खोज को निष्पादित करता हूं, उन हंक्स को त्यागें जो मेल नहीं खाते हैं, और जो आउटपुट करते हैं। यह काम करता है।
क्या एक उपकरण जैसे मैं वर्णन करता हूं मौजूद है? क्या मिलान / प्रभावित हंक प्राप्त करने के लिए एक बेहतर तरीका है?
कुछ प्रारंभिक शोध मैंने किए हैं ...
यदि यह
grep
अंतर / पैच आउटपुट के लिए संभव था और संदर्भ विकल्प मानों को गतिशील बनाता है - पंक्ति गणना के बजाय regexps के माध्यम से - जो पर्याप्त हो सकता है। लेकिनgrep
बिल्कुल उस तरह से नहीं बनाया गया है (और न ही मैं जरूरी उस सुविधा का अनुरोध कर रहा हूं)।मुझे चिथड़े मिल गए सूट सूट , जो शुरू में ऐसा लगता था जैसे यह मेरी आवश्यकताओं के अनुरूप हो। लेकिन इसके
man
पृष्ठों को पढ़ने के बाद , उपकरण regexps के आधार पर मिलान हंक को संभालने के लिए प्रकट नहीं होते हैं। (वे लोकों की सूची स्वीकार कर सकते हैं, हालांकि ...)मैं आखिरकार स्प्लिटपैच.आरबी में आया , जो पैच के पार्सिंग को अच्छी तरह से संभालने के लिए लगता है, लेकिन
stdin
वांछित पैच का मिलान, और फिर स्टॉक्स को आउटपुट करने के लिए इसे पढ़ने के पैच को संभालने के लिए काफी संवर्धित होने की आवश्यकता होगी ।