meld

2012-06-20 13 views
5

का उपयोग करके svn diff में असमर्थ मैं संशोधनों के बीच अंतर देखने के लिए meld का उपयोग करना चाहता हूं। मैं मिलकर एक हो जाना स्थापित और फिर परियोजना निर्देशिका में मार डाला:meld

svn diff -r 2165:2182 --diff-cmd meld 

लेकिन यह निम्न त्रुटि अप thows: गलत यहाँ क्या चल रहा है

Index: app/models/college_friends_count.rb 
=================================================================== 
svn: E200012: Process 'meld' failed (exitwhy 2) 

किसी को भी मुझे बता सकते हैं?

+0

दो मनमाना फ़ाइलों पर मिलकर एक हो जाना चलाने की कोशिश करें (Btw, echo diff-cmd के रूप में उपयोग करते हुए आप आसानी से SVN जाएँगी तो भेजना होगा क्या निरीक्षण करने के लिए अनुमति देता है)। क्या यह काम करता है? –

+1

हाँ ... यह काम कर रहा है ... अगर मैं कुछ फाइलों में बिना किसी प्रतिबद्धता में सामग्री बदलता हूं, तो मैल्ड "मेल्ड" निष्पादित करके अंतर दिखाता है। लेकिन विभिन्न संशोधनों की तुलना करना –

+0

काम नहीं कर रहा है एसवीएन डिफ टूल में गुजरता है न कि तुलना करने के लिए केवल 2 पथ बल्कि लेबल्स जैसे अन्य विकल्प (आप एक स्क्रिप्ट को पास करके सभी विकल्पों को देख सकते हैं जो इसकी कमांड लाइन प्रिंट करता है)। शायद वेल्ड उन अतिरिक्त विकल्पों को स्वीकार नहीं करता है। मैं सिर्फ एक विचार के बारे में पता है। –

उत्तर

5

मेरा मानना ​​है कि ई200012 का अर्थ है अंतर्निहित प्रक्रिया (मिश्रित) गैर-शून्य निकास कोड से निकलती है। Diff ऑपरेशन के परिणाम इंगित करने के लिए बहुत से diff उपकरण ऐसा करते हैं (0 = कोई अंतर 1 = अंतर, आदि)।

हालांकि मैल्ड का मेरा संस्करण गैर-शून्य निकास कोड का उपयोग नहीं करता है, मुझे पता है कि कोलोर्डिफ़ करता है, जो निर्देशिका के दौरान एसवीएन को रोकता है-"svn diff" क्रॉलिंग, जैसा कि उपरोक्त आपके उदाहरण में है। इसे उस फ़ाइल पर आज़माएं जिसमें परीक्षण में कोई बदलाव नहीं है।

एक अच्छा ठीक अपनी खुद की diff आदेश बनाने के लिए करने के लिए, मान लीजिए कि आप कहते हैं यह meld_svn जाने है:

#!/bin/bash 
meld "$6" "$7" 
exit 0 

तो क्या हम कर रहे हैं मिलकर एक हो जाना के बाहर निकलने के कोड अनदेखी कर रहा है, और हमारे अपने साथ बाहर निकलने (जो जीता एसवीएन बंद नहीं करें)। तर्कों के चारों ओर उद्धरण का अर्थ है कि उनमें रिक्त स्थान वाले फ़ाइल नाम आपकी स्क्रिप्ट को नहीं तोड़ेंगे।

इसे निष्पादन योग्य बनाएं, फिर अपने ~/.subversion/config को संपादित करें और diff-cmd को "meld_svn" पर सेट करें। यह कॉलोर्डिफ़ के लिए बहुत अच्छा काम करता है, अगर मैल्ड वास्तव में गैर-शून्य निकास कोड से बाहर निकलता है तो अपनी समस्या को हल करने के साथ ठीक करना चाहिए।

मुझे उम्मीद है कि इससे मदद मिलती है।

4

मेरे लिए समस्या यह थी कि डिफ़ॉल्ट रूप से svn passes -u बाहरी diff कमांड के विकल्प के रूप में, और meld अपेक्षा या ध्वज की अपेक्षा नहीं करता है।

svn-diff के लिए -x झंडा आप इस डिफ़ॉल्ट ध्वज को ओवरराइड करने के लिए अनुमति देता है: melds कमांड लाइन पर "" साथ

svn diff -x \"\" --diff-cmd meld 

यह बदलता है -u, पलायन के लिए आवश्यक हैं, ताकि आपके खोल quote- पार्स नहीं है पहली बार गोल करता है और इसके बजाय उन्हें एसवीएन में भेजता है, जो इसे meld कमांड लाइन पर पास करता है।

+0

देखें [यह उत्तर] (http: // stackoverflow।कॉम/ए/7418087/420867) एक और दृष्टिकोण के लिए जो विलय करने में मदद करता है। – drevicko