2011-04-07 11 views
7

में विलय करते समय व्हाइटस्पेस को अनदेखा करें जब हम मर्कुरियल में विलय करते समय समस्या का सामना कर रहे हैं, जहां व्हाइटस्पेस परिवर्तन विलय विवाद पैदा कर रहे हैं जो हमारे पास "वास्तविक" संघर्षों को मुखौटा कर सकता है और एक दुःस्वप्न विलय कर देता है। हमने हाल ही में एक स्वरूपण शैली के अनुरूप है जिसने कुछ शाखाओं में फ़ाइलों का इंडेंटेशन बदल दिया है और विलय लगभग तब तक असंभव हो गया है।Mercurial

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

@ 2  " This is text". 
|  
| 
| o 1 "This is some more text." 
|/  
| 
o 0  "This is text." 

जब इस पर एक hg merge की कोशिश कर रहा एक मिलता है:

hg init testrepo 
cd testrepo/ 

echo "This is text." > newfile.txt 
hg add newfile.txt 
hg commit -m "Created a file." 
hg branch newbranch 
echo "This is some more text." > newfile.txt 
hg commit -m "Changed text in the file." 
hg update default 
echo " This is text." > newfile.txt 
hg commit -m "Added indentation whitespace." 

यह दो शाखाओं, शाब्दिक परिवर्तन के साथ खाली स्थान के परिवर्तन के साथ एक, अन्य में जो परिणाम संघर्ष विलय करें। यदि हमारे पास हर पंक्ति पर संघर्ष है तो यह "असली" संघर्षों को हल करने में मुश्किल और समय लेने वाला हो जाता है। जो मैं चाहता हूं वह विलय प्रक्रिया के लिए सोचने के लिए है "ठीक है, परिवर्तन 2 लाइन 1 माता-पिता से केवल सफेद जगह में अलग है, इसलिए इसे अपरिवर्तित मानें। विलयित परिणाम के रूप में परिवर्तन 1 लाइन 1 चुनें।"

+0

@ सिंटेक्स टी 3rr0r: नोट के लिए धन्यवाद - मुझे गो लैंग के बारे में पता नहीं था और रुचि के साथ इसे पढ़ रहा है। एक प्रकार की पायथन/जावा हाइब्रिड की तरह। –

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/3515597/add-only-non-whitespace-changes/29986651#29986651 –

उत्तर

10

व्हाइटस्पेस को अनदेखा करना या नहीं, यह आपके मर्ज टूल को पसंद करता है। जैसा कि यहाँ दिखाया आप अस्थिर साथ प्रयोग के लिए मर्ज उपकरण के सभी तरह कॉन्फ़िगर कर सकते हैं: MergeToolConfiguration

मर्क्युरियल के आंतरिक पूर्व मर्ज/श्वेतस्थान नहीं नजरअंदाज नहीं कर सकते जाएगा, लेकिन अगर आपके बाहरी मर्ज उपकरण करता है और उसे खाली स्थान के केवल यह परिवर्तन पाता है तुरंत बाहर निकल जाएगा, और यदि यह अन्य पाया जाता है कि व्हाइटस्पेस बदलता है तो यह लोड होने पर व्हाइटस्पेस परिवर्तन को छुपा सकता है।

उदाहरण के लिए, लोकप्रिय kdiff3 merge tool के साथ आप "व्हाइट स्पेस 2/3-फ़ाइल विलय" सेटिंग सक्षम करेंगे और बताएंगे कि बाएं या दाएं को चुनना है या नहीं।

टीएल; डॉ: इसे अपने मर्ज टूल में चालू करें, मर्कुरियल में नहीं।

+0

Thx, मैं mdge टूल के रूप में kdiff3 सेट करने में कामयाब रहा और "व्हाइट स्पेस 2/3-फ़ाइल विलय" को "पिक बी" पर सेट किया। दुर्भाग्यवश यह अभी भी मेरे द्वारा दिए गए उदाहरण के साथ एक संघर्ष है और इसलिए अभी भी मैन्युअल हस्तक्षेप की आवश्यकता है, यहां तक ​​कि एक तरफ के बदलाव के माध्यम से केवल सफेद जगह है। मुझे लगता है कि मैं इसके लिए मर्ज टूल्स पर एक नया प्रश्न पोस्ट करूंगा। –

0

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

विकल्प विपरीत करने के लिए जांच करने से पहले मानक प्रारूपक का उपयोग करना होगा ... सफेद जगह जोड़ें जहां यह होना चाहिए।

+0

हमारे पास चेकइन से पहले फ़ाइल बनाने वाला एक फॉर्मेटर मिला है। समस्या तब आई जब हमारे सम्मेलन इंडेंटेशन और रिक्त स्थान/टैब के उपयोग पर बदल गए। नई सम्मेलनों के साथ फाइलें शुरू हो रही हैं और विलय शाखाओं के बीच किया गया था और हम एक बड़ी गड़बड़ी में आ गए। आखिरकार हमने सभी शाखाओं में सभी फाइलों पर फॉर्मेटर चलाया लेकिन अब विलय करने की कोशिश करते समय यह व्हाइटस्पेस मुद्दा है। कई फाइलें हैं इसलिए हम जितना संभव हो विलय स्वचालित करना चाहते थे। एक बार विलय हो जाने के बाद और सभी इतिहास में नया प्रारूप होता है, सब ठीक हो जाएंगे। –