2010-01-02 16 views
14

से केवल एक विशेष हंक पैच कैसे करें एक फ़ाइल में एक diff से एक हंक लागू करने का कोई तरीका है? उदाहरण के लिए, मैं फ़ाइल ए और बी से एक diff कर कहते हैं, और कहा कि मतभेदों के तीन भागों प्रत्येक कुछ तरह के साथ चिह्नित पैदा करता है, ...एक diff

@@ -971,30 +977,28 @@ 

... (एकीकृत डिफ के मामले में) । मैं फिर उस diff को stdin में फ़ीड करने में सक्षम होना चाहता हूं, और पैच से केवल हंक एन

मैन्युअल विधि दिलचस्प शिकारी को काट और पेस्ट करना होगा, लेकिन मैं उसके बाद नहीं हूं एक समाधान की तरह।

+0

मेरे पिछले अनुभव में, एक संपादक में एक संदर्भ diff पढ़ने और इसे कम करने के लिए बस इतना मुश्किल नहीं है। मैं वास्तव में उस पर पैच के लिए जटिल तर्क संरचना का लाभ नहीं देखता हूं। क्या आप कुछ ऐसा करने की कोशिश कर रहे हैं जो इस अचूक बनाता है? – bmargulies

+0

चलो इसे इस तरह से रखें - अगर पैच * किया गया * इसका समर्थन करता है - मैं * इसका उपयोग करूंगा। मेरे पास कुछ विम मैक्रोज़ हैं जो diff वाक्यविन्यास को हटाते हैं, इसलिए यह बहुत बुरा नहीं है, लेकिन केवल एक कमांड टाइप करना आसान होगा। – Cyrus

उत्तर

0

कुछ जीयूआई diff/पैच टूल्स में ब्लॉक या यहां तक ​​कि व्यक्तिगत लाइनों का चयन करने का एक तरीका है। मुझे पता है कि TortoiseSV से TortoiseDiff इस तरह से काम कर सकते हैं। मुझे लगता है कि मैंने देखा है कि विंडिफ़ ऐसा करता है, लेकिन यह थोड़ी देर हो गया है क्योंकि मुझे इसका इस्तेमाल करना पड़ा था।

जहां तक ​​कमांड लाइन टूल्स हैं, मैंने कुछ भी नहीं देखा है जो आप पूछ रहे हैं।

+0

मुझे मैन पेज में कुछ भी नहीं मिला, लेकिन मुझे लगा कि यह अस्तित्व में होना चाहिए - और यह सिर्फ इसे ढूंढने में मेरी अक्षमता है। तो - पैच के लिए इसका कोई मूल समर्थन नहीं है - क्या यह सही है? – Cyrus

7

filterdiff मदद कर सकता है।

यह एक/कई पैच फ़ाइलों से विभिन्न आवश्यकताओं से मेल खाने वाले पैच के सबसेट का निष्कर्षण निकालने की अनुमति देता है। उदाहरण के लिए, यहाँ हम फ़ाइल unified_diff.patch से निकालने, नाम के साथ फ़ाइलों के लिए लागू पैच one_file.c मिलान, केवल लाइनों के लिए 950 मूल फ़ाइल 1050 को:

:

filterdiff -i *one_file.c --lines=950,1050 unified_diff.patch 

जिसे के विशिष्ट/रेंज निकालने के लिए मेल संदेशों से

filterdiff --hunks=1,3,5-8,15 file.patch 

निकाला जा रहा है पैच:

filterdiff message-with-diff-in-the-body > file.patch 

आदि

+0

अच्छा, बहुत आसान। – Nelson

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