एडिफ में दोनों वेरिएंट का उपयोग कैसे करें?


17

एडिफ़ इंटरफ़ेस में +बटन होता है, लेकिन यह कुछ भी करने के लिए प्रतीत नहीं होता है (जब मैं इसे दबाता हूं तो मिनीबफ़र हमेशा "शून्य" दिखाता है), मुझे लगा कि यह बटन परिणाम बफर में दोनों वेरिएंट का उपयोग करने के लिए था।

किसी भी तरह, मूल प्रश्न यह है कि मैं एडिफ हल को बफर ए और बी दोनों से सामग्री को बफर सी में डालकर एक मर्ज संघर्ष कैसे हल कर सकता हूं (मुझे पता है कि मैं सिर्फ सी संपादित कर सकता हूं, लेकिन आशा है कि यह अधिक आसानी से किया जा सकता है)।

मान लीजिए कि फ़ाइल A है:

एक ही पंक्ति

अलग लाइन

एक ही पंक्ति

फ़ाइल B है:

एक ही पंक्ति

एक और पंक्ति

एक ही पंक्ति

मैं फ़ाइल सी चाहता हूं , को बी के साथ विलय करने का परिणाम इस प्रकार है:

एक ही पंक्ति

अलग लाइन

एक और पंक्ति

एक ही पंक्ति


मुझे यकीन नहीं है कि मैं इस प्रश्न को पूरी तरह से समझता हूं, लेकिन विलयdiff3 पर यह एडिफ मैनुअल अनुभाग और मदद कर सकता है
तियानजिन Xiong

@TianxiangXiong का एक उदाहरण जोड़ूंगा कि मेरा क्या मतलब है। मुझे नहीं लगता कि लिंक किया गया मैनुअल पेज इसे कवर करता है।
wvxvw

जवाबों:


7

इस StackOverflow जवाब देखें ।

@ किलडश 9 से :

D को दबाने से A और B दोनों की बफर C कॉपी हो जाएगी।

(defun ediff-copy-both-to-C ()
  (interactive)
  (ediff-copy-diff ediff-current-difference nil 'C nil
                   (concat
                    (ediff-get-region-contents ediff-current-difference 'A ediff-control-buffer)
                    (ediff-get-region-contents ediff-current-difference 'B ediff-control-buffer))))
(defun add-d-to-ediff-mode-map () (define-key ediff-mode-map "d" 'ediff-copy-both-to-C))
(add-hook 'ediff-keymap-setup-hook 'add-d-to-ediff-mode-map)

क्योंकि डुप्लिकेट StackExchange नेटवर्क पर भी है (और परिणामस्वरूप यदि लोग इस साइट पर पहुंच सकते हैं तो वे उस एक को भी प्राप्त कर सकेंगे), मैं कोड की नकल नहीं करने के पक्ष में हूं , लेकिन विशुद्ध रूप से उत्तर से लिंक कर रहा हूं ( क्रॉस-साइट डुप्लिकेट को संभालने के लिए एक सामान्य दृष्टिकोण के रूप में )। इस तरह अगर मूल उत्तर में सुधार किया जाता है, तो अन्य साइटों पर पुरानी प्रतियां नहीं हैं। अप मतदान, परवाह किए बिना।
फिल्स

मैं इस धारणा के तहत था कि StackExchange साइटें आमतौर पर केवल एक लिंक के बजाय साइट पर ही उत्तर देना पसंद करती हैं। लेकिन शायद यह अलग है अगर लिंक एक और StackExchange साइट है? / श्रग
तियानजिन Xiong

मैं वास्तव में नहीं जानता कि आधिकारिक नीति क्या है, लेकिन मुझे निश्चित रूप से लगता है कि इंट्रा-नेटवर्क लिंक को आउट-ऑफ-नेटवर्क लिंक से अलग तरह से व्यवहार किया जाना चाहिए। सामान्य रूप से लिंक का उपयोग न करने का अर्थ है कि दूरस्थ स्रोत के अनुपलब्ध होने पर भी उत्तर सुलभ है, लेकिन मुझे लगता है कि यह StackExchange नेटवर्क के केवल किसी भी समय उपलब्ध होने की संभावना के लिए अत्यधिक संभावना नहीं होगी, इसलिए मुझे लगता है कि तर्क दूर हो जाता है; जिस बिंदु पर सवाल यह है कि क्या दो अलग-अलग डुप्लिकेट सवालों के जवाबों को विभाजित करना समझदारी है, और मेरा मानना ​​है कि यह लगभग कभी मददगार नहीं है। IMO, किसी भी तरह।
फिल्स

3

संपादित करें: डुप्लिकेट क्यू एंड ए StackOverflow पर (टिप्पणी में Tianxiang Xiong से उठाई बाहर के रूप में) इस सवाल का जवाब है।

नीचे दिए गए मेरे जवाब का कोई फायदा नहीं है, क्योंकि आप इस तरह से वांछित परिणाम प्राप्त नहीं कर सकते हैं। मैं केवल यह हटा रही हूं इसलिए नहीं कि जानकारी करता दे कुछ हद तक प्रासंगिक है, और अभी भी किसी को रोचक जानकारी साबित हो सकता है।


व्यक्तिगत रूप से मैं सीधे मर्ज बफर को संपादित करता हूं, लेकिन आप Emacs को सिखा सकते हैं कि यदि आपके पास मानक आवश्यकता है तो क्या करें।

+कॉल ediff-combine-diffs:

Nth को बफ़र्स A और B के अलग-अलग क्षेत्रों में मिलाएं और C। N में संयोजन को एक उपसर्ग तर्क दें। यदि शून्य है, तो वर्तमान अंतर क्षेत्रों को मिलाएं। संयोजन वैरिएबल में विनिर्देशों के अनुसार किया जाता है ediff-combination-pattern

जो है:

बफ़र्स ए और बी में अंतर क्षेत्रों के संयोजन के लिए उपयोग किए जाने वाले पैटर्न का मूल्य उस फॉर्म की एक सूची होना चाहिए (STRING1 bufspec1 STRING2 bufspec2 STRING3 bufspec3 STRING4) जहां bufspec प्रतीक ए, बी, या पूर्वज है। उदाहरण के लिए, यदि मान है '(STRING1 A STRING2 Ancestor STRING3 B STRING4)तो संयुक्त पाठ इस तरह दिखेगा:

STRING1
संस्करण एक से diff क्षेत्र
string2
पूर्वज से diff क्षेत्र
STRING3
संस्करण बी से diff क्षेत्र
STRING4

ध्यान दें कि जब आपको लगता है कि यह कुछ नहीं कर रहा है, तो यह वास्तव में सामान्य संघर्ष मार्करों का उपयोग करके वेरिएंट के संयोजन है। यानी यदि आपने पहले से ही ए या बी का चयन किया था, तो डिफ़ॉल्ट रूप +से मूल संघर्ष को बहाल करने का एक तरीका है।


क्या ediff-combination-patternडिफ़ॉल्ट रूप से उपयोग किए जाने वाले पारंपरिक संघर्ष चिह्नों को हटाने का मेरा परिवर्तन नहीं होगा ? मैं वास्तव में इस तरह से संघर्ष को बनाए रखना चाहूंगा जब तक कि मैं विलय की गई फ़ाइलों से भिन्न के संयोजन का उपयोग करके इसे हल नहीं करता।
wvxvw

संघर्ष मार्कर एमएसीएस के बाहर उत्पन्न होते हैं, इसलिए मुझे संदेह है कि यह मामला है, लेकिन मुझे वास्तव में नहीं पता है। कोशिश करो?
फिल्स

मैं करूंगा, लेकिन आज बाद में। मुझे पता है मैं एक बार अद्यतन करेंगे।
wvxvw

वास्तव में आप सही हैं - बफ़र प्रस्तुत करने से पहले उस पैटर्न के अनुसार सभी संघर्ष क्षेत्रों को संपादित और परिवर्तित करता है। हालाँकि, आप एक कमांड के लिए एक कस्टम बाइंडिंग जोड़ सकते हैं, जो ediff-combination-patternआपके कस्टम पैटर्न को बांधता है और फिर कॉल करता है ediff-combine-diffs
11:14

2
यह समाधान आपको लगता है कि आप क्या चाहते हैं।
तियानजिन Xiong
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.