2012-07-05 5 views
6

मैं संशोधनों के निर्दिष्ट सेट (या सभी) के लिए एक फ़ाइल के अंतर (आदर्श रूप से फ़ाइलों का एक सेट) खोजना चाहता हूं। मैं एक diff रिपोर्ट की तलाश में हूं जो पाठ खोजने योग्य है। मैं इस मिल गया है:फ़ाइल के लिए किसी विशेष स्ट्रिंग के लिए diffs के सेट को खोजने का कोई तरीका है?

hg diff -r 0:47131 .\TheFile.cs | grep 'theSearch' -Context 50

ठीक है, कि काफी अच्छी तरह से काम करता है, लेकिन निर्णय लेने से कितना संदर्भ शामिल करने के लिए पहली और आखिरी संशोधन खोजने के साथ ही एक मुद्दा है। मैं इसे बेहतर कर सकता हूं लेकिन ऐसा लगता है कि यह थोड़ा सा काम होगा।

मुझे आश्चर्य है कि वहां कोई उपकरण है जो बेहतर होगा। शायद एचजी सर्वर के लिए एक diff रिपोर्ट वेब पेज?

उत्तर

10

आप पूरे रेपो इतिहास को खोजने के लिए hg grep का उपयोग कर सकते हैं।

उदाहरण के लिए:

hg grep --all --include .\TheFile.cs 'theSearch' 

रेपो के हर संशोधन में 'theSearch' के सभी उदाहरणों मिल जाएगा। --all ध्वज के बिना, यह पहले संशोधन में बंद हो जाता है जिसमें स्ट्रिंग शामिल है।

1

मुझे एहसास है कि hg grep प्रत्येक मिलान संशोधन के लिए पूरी फ़ाइल की सामग्री की खोज करता है। जबकि अगर आप केवल diff खोज करना चाहते हैं, कुछ इस तरह का प्रयास करें:

hg log --template "{ifcontains('TODO', diff(), '{node} {desc}\n', '')}"

यह उनकी diff में "TODO" युक्त संशोधन सूची जाएगा। नोट यह लाइनों को हटाए जाने के साथ-साथ diff संदर्भ (+/- 3 लाइन) भी खोजेगा, इसलिए यह सही नहीं है।

आप diff() - hg help template देखें - और revsets (-r ...) का उपयोग करके आगे का उपयोग कर प्रतिबंधित कर सकते हैं।

यह आपके hg diff | grep दृष्टिकोण का उपयोग करने से बेहतर हो सकता है क्योंकि यह दो परिवर्तनों में पूरे रेपो को अलग करने के बजाय प्रत्येक परिवर्तन को एक-एक करके अलग करता है, और उदाहरण के लिए, विलय संशोधन को फ़िल्टर करने के लिए आपको रेससेट का उपयोग करने की अनुमति देता है।

+0

''नोड} {desc} \ n'' अधिक उपयोगी आईएमओ – arhak

+0

@arhak धन्यवाद, संपादित किया जाएगा। –

संबंधित मुद्दे

 संबंधित मुद्दे