2012-01-25 16 views
12

मैं मर्कुरियल और पायथन से निराश हूं क्योंकि इससे आसान चीजें मुश्किल हो जाती हैं। मैं एक छोटी सी विरोध होता है और कैसे इस तुच्छ फ़ाइल संघर्ष को हल करने के बाद से मर्क्युरियल कोई सुझाव क्या मैं भी नहीं जानता कि क्या करना नहीं देता:इस Mercurial संघर्ष को कैसे हल करें?

KDiff3

संघर्ष मामूली बात है लेकिन अगर मैं का समाधान नहीं कर यह मैं जटिल कुछ भी हल नहीं कर सकता। क्या मैं सिर्फ फाइल को जिस तरह से चाहता हूं उसे संपादित कर सकता हूं और इसे कहीं से भी फिर से कर सकता हूं? क्या मुझे hg merge चलाना चाहिए? Mercurial क्यों मुझे रखने के लिए एक संस्करण चुनने नहीं दे सकता? 1000 खराब लिखित मैनपेजों के माध्यम से खोदने के बिना असंभव होने के करीब कुछ मामूली क्यों है?

+1

बस रिकॉर्ड्स के लिए, यह Mercurial और Python चीजों को मुश्किल बनाने के बारे में नहीं है बल्कि 'kdiff3' प्रोग्राम के उपयोग के बारे में है .. – Tobias

उत्तर

24

आपको KDiff3 documentation पर विशेष रूप से merging and the output window पर अनुभाग देखने की आवश्यकता है। संघर्ष को हल करने के लिए, आपको यह तय करने की आवश्यकता है कि live या january लाइन के लिए सही विकल्प है या नहीं। यह निर्णय आपका है, कोई उपकरण यह नहीं जान सकता कि आपका मतलब एक या दूसरे का है या नहीं।

KDiff3 में, आप प्रेस Ctrl + चयन करने के लिए january या नीचे खिड़की के मार्जिन में राइट क्लिक करें और लाइन आप चाहते हैं का चयन Ctrl दबाते हैं, तो + live चयन करने के लिए। आप नीचे की विंडो में भी क्लिक कर सकते हैं और लाइन को मैन्युअल रूप से संपादित कर सकते हैं।

Mercurial आपको configure your merge tool किसी भी तरह से पसंद करते हैं। TortoiseHg एक डिफ़ॉल्ट कॉन्फ़िगरेशन वाले जहाजों जो सूची के शीर्ष में KDiff3 डालता है, लेकिन यदि आप चाहें तो आप किसी अन्य टूल का उपयोग कर सकते हैं। एक मर्ज टूल वास्तव में केवल एक प्रोग्राम है जो चार फ़ाइल नाम स्वीकार करता है: तुलना करने के लिए तीन फाइलें (बेस, पैरेंट 1, पैरेंट 2) और आउटपुट फ़ाइल नाम।

कमांड लाइन पर विवादों को हल करने के लिए आपको उपयुक्त कमांड लाइन तीन-तरफा विलय टूल लॉन्च करने की आवश्यकता है। यदि आप चाहें तो उदाहरण के लिए आप merge with vim कर सकते हैं। (मुझे डर है कि मैं vimdiff के बारे में कुछ नहीं जानता हूँ, मैं अपने आप को KDiff3 का उपयोग करें।)

आप मर्ज उपकरण पॉप अप को देखने के लिए पसंद नहीं है, तो आप

[ui] 
merge = internal:merge 

बनाने के लिए सेट कर सकते हैं Mercurial केवल आंतरिक तीन तरह के विलय का उपयोग करें। जब संपादन विवादों में नहीं होते हैं तो यह फ़ाइलों को ठीक कर देगा। जब कोई संघर्ष होता है, तो फ़ाइल को "अनसुलझा" के रूप में चिह्नित किया जाता है और फ़ाइल में विवाद चिह्नक संग्रहीत किए जाते हैं।

आपको फिर इच्छित संस्करण प्राप्त करने के लिए फ़ाइल को हाथ से संपादित करने की आवश्यकता है। तुम भी फिर से मर्ज कर सकते हैं और लेने या तो स्थानीय (अपने) संस्करण:

$ hg resolve --tool internal:local your-file 

या अन्य संस्करण:

$ hg resolve --tool internal:other your-file 

आप hg resolve your-file साथ पूरी तरह से मर्ज को पुनरारंभ करें। इससे पहले कि आप इसे प्रतिबद्ध कर सकें, फ़ाइल को "हल" करने की आवश्यकता है। यह hg resolve --mark your-file के साथ किया जाता है। वर्तमान विलय की स्थिति के लिए hg resolve --list देखें।

+0

मार्टिन धन्यवाद। यदि संभव हो तो मैं कमांड लाइन पर भी हल करने में सक्षम होना चाहूंगा। –

+1

आप सही हैं हालांकि - KDiff3 में इंटरफेस का सबसे सहज ज्ञान नहीं है। आप पाएंगे कि यह थोड़ी देर के बाद बहुत सरल लगता है लेकिन यह भूलना आसान है कि पहली बार पॉप अप होने पर स्क्रीन कितनी डरावनी दिखती है। वैसे, आप टूलबार में "ए", "बी" और "सी" बटन का भी उपयोग कर सकते हैं यह तय करने के लिए कि कौन सा बिट रखना है। –

+0

@NickRosencrantz: मैंने कुछ जोड़ा है कि आप विलय टूल को कैसे कॉन्फ़िगर कर सकते हैं। –

19

बेस आपके स्थानीय सिस्टम में पिछले संस्करण है, अभिभावक 1 आपके वर्तमान परिवर्तन है, पैरेंट 2 सर्वर से फ़ाइल है।

यदि आपको अपने परिवर्तनों की जांच करने की आवश्यकता है, तो मर्ज मेनू में हर जगह बी का चयन करें। यदि आप अपनी स्थानीय मशीन में नवीनतम सर्वर संस्करण चाहते हैं, तो मर्ज मेनू में हर जगह सी का चयन करें

+5

धन्यवाद! आप कैसे जानते थे "बेस" पिछले संस्करण है? रहस्यमय और व्यर्थ "आधार", "parent1", "parent2" शब्दों के बारे में एक घंटे के लिए googling था, भगवान! – Slav

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