2010-07-18 16 views
14

मैं दो .nib फ़ाइलों को मर्ज करने का प्रयास कर रहा हूं। FileMerge में दो फ़ाइलों की तुलना दिखाने में कोई समस्या नहीं है। मैं दूसरी सेटिंग्स (यानी बाईं तरफ) से कॉपी करने के लिए दो सेटिंग्स को छोड़कर सभी सेटिंग्स को एक फ़ाइल (यानी दाएं तरफ) रखने की कोशिश कर रहा हूं। मतभेद केवल कोड की एक पंक्ति हैं जो एक ऑटोरेसाइजिंग मास्क कुंजी के पूर्णांक मान को बदलता है। इसलिए इसे मर्ज करना मुश्किल नहीं होना चाहिए। मैं TextEdit का उपयोग करता हूं अगर यह मुझे .nib फ़ाइल खोलने की अनुमति देगा।FileMerge .nib फ़ाइल प्रकार को विलय नहीं किया जा सकता

हालांकि मुझे त्रुटि मिलती है "यह फ़ाइल प्रकार विलय नहीं किया जा सकता है।" मैंने इस साइट पर पोस्ट किए गए एक समान प्रश्न के उत्तर में उल्लिखित .nib एक्सटेंशन के लिए FileMerge> वरीयताएँ> फ़िल्टर सेटिंग्स के साथ खेलने का प्रयास किया लेकिन कोई भाग्य नहीं था। जहां तक ​​मैं डिस्प्ले सेटिंग को बता सकता हूं कि एक .nib के लिए "फ़िल्टर" के रूप में छोड़ा जाना चाहिए क्योंकि यह फ़िल्टर नहीं किया गया है और मैंने चयन लागू करने की कोशिश की है। मुझे लगता है कि इस्तेमाल किए गए वास्तविक फ़िल्टर को स्वयं बदला या संशोधित नहीं किया जाना चाहिए?

क्या कोई आम कारण है कि दो .nib फाइलें जो फ़ाइलमर्ज को तुलना विंडो में कोई समस्या नहीं दिख रही है, को विलय नहीं किया जा सकता है?

धन्यवाद

उत्तर

3

निब और XIB फ़ाइलों मर्ज नहीं किया जा सकता है, लेकिन आकर्षक यह हो सकता है। फ़ाइलमेर्ज का उपयोग करके एक अंतर को देखने के लिए उपयोगी हो सकता है, लेकिन यह जानकारी केवल यह जानकारी देने के लिए करें कि आप इंटरफ़ेस बिल्डर में मैन्युअल रूप से कौन से परिवर्तनों को पुनर्निर्मित करते हैं।

इसके अतिरिक्त, फ़ाइलमेयर एनआईबी फाइलों के वास्तविक पाठ diff को नहीं दिखाता है, बल्कि इबेटोल से आउटपुट दिखाता है। आप FileMerge वरीयताओं में एनआईबी के लिए प्रविष्टि को हटाकर वास्तविक टेक्स्ट diff देख सकते हैं, लेकिन यह सेटिंग FileMerge के लॉन्च के बीच सहेजी नहीं गई है।

+0

आप बिल्कुल सही हैं। एक nib/xib एक एक्सएमएल का एक सेब संस्करण है जिसे एक संपत्ति सूची कहा जाता है (संक्षेप में plist। हो सकता है कि आपने इन्हें संसाधन फ़ाइल टेम्पलेट्स में देखा हो)। इसे साबित करने के लिए, nib/xib पर राइट क्लिक करें 'ओपन एज़' पर जाएं और 'प्रॉपर्टी लिस्ट' पर क्लिक करें। कोई अन्य फ़ाइल (एक .plist को छोड़कर) इस तरह से खोला जा सकता है। वापस बदलने के लिए, 'ओपन एज़' पर वापस जाएं और 'इंटरफ़ेस बिल्डर' पर क्लिक करें –

+1

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

4

एक्सआईबी विलय किया जा सकता है। सरल मामलों में (जैसे पाठ परिवर्तन, तत्वों का आकार बदलना) यह सुरक्षित और आसान है, और नवीनतम XIB संस्करण और भी जटिल विलय से बच सकते हैं (ऐप्पल प्रारूप को अपग्रेड कर रहा है, और आजकल यह उचित रूप से पठनीय है और यह संख्यात्मक आईडी का उपयोग नहीं करता है जो बनाने के लिए उपयोग किया जाता है त्रुटि-प्रवण विलय।)

समस्या यह है कि फ़ाइलमेज ने आईआईबीओएल सुंदर प्रिंट के माध्यम से XIB फ़ाइलों को फ़िल्टर करने के लिए अंतर्निहित कॉन्फ़िगरेशन हार्डकोड किया है, और यह कहता है कि वे विलय योग्य नहीं हैं।

// संपादित करें: ऐसा लगता है कि ऐप्पल ने निष्पादन योग्यता की अखंडता का सत्यापन जोड़ा है, इसलिए पैचिंग समाधान अब और काम नहीं करता है। "FileMerge का उपयोग करना बंद करें" अब समाधान है।

कुछ युक्तियां:

  • सक्षम करें "संक्षिप्त खाली स्थान के" FileMerge वरीयताओं में विकल्प।

  • जब diff कुल गड़बड़ है और XIB फ़ाइलें पूरी तरह से भिन्न दिखाई देती हैं, तो वे प्रारूप के शायद अलग-अलग संस्करण हैं। (मर्ज संघर्ष मार्कर के बिना प्राचीन फाइलों पर) विलय से पहले प्रत्येक XIB फ़ाइल पर यह भागो, :

    ibtool --write foo.xib --upgrade foo.xib 
    

यह नवीनतम संस्करण के लिए Xcode XIB फ़ाइलों में परिवर्तित कर देंगे, इसलिए दोनों समान संरचना होगा।

2

.xib फ़ाइलें टेक्स्ट हैं - वे काम करना चाहिए, खासकर आधुनिक जो स्टोरीबोर्ड फ़ाइलों की तरह हैं। FileMerge, हालांकि, इसकी फ़िल्टर वरीयताओं में xib फ़ाइलों के लिए एक अनुभाग है - यह मूल फ़ाइलों की बजाय संसाधित आउटपुट की तुलना करता है। यह विलय को सहेजने से रोकता है।

वरीयताओं में "xib" प्रविष्टि को हटाने से सैद्धांतिक रूप से काम करना चाहिए - लेकिन जब भी मैं उस फ़िल्टर लाइन को हटाने की कोशिश करता हूं, तो यह वापस आता है जब मैं FileMerge को फिर से लॉन्च करता हूं। तो, वह दृष्टिकोण काम नहीं कर रहा है।

काम करने के लिए प्रतीत होता है कि दूसरे कॉलम में फ़िल्टर कमांड को cat (यानी "ibtool" कमांड और इसके तर्कों को हटा दें, और केवल "बिल्ली" के साथ प्रतिस्थापित करें, जिसके परिणामस्वरूप एक सीधी प्रतिलिपि होगी मूल फ़ाइल) - और फिर तीसरे कॉलम में "फ़िल्टर" की बजाय "मूल" प्रदर्शित करना चुनें। उस बिंदु पर, फ़ाइलमर्ज (द्विआधारी हैकिंग किए बिना) विलय .xib फ़ाइलों को सहेजते समय ठीक लगता है।

यह बाइनरी .nib फ़ाइलों के साथ काम नहीं करेगा, लेकिन वे अब सीधे संपादित नहीं किए गए हैं, इसलिए विलय के दौरान यह एक बड़ा मुद्दा नहीं होना चाहिए।

+0

हालांकि यह विलय के लिए काम करता था, लेकिन यह किसी भी तरह से एक्सकोड को मेरी परियोजना के निर्माण में विफल होने का कारण बना। मुझे xib के लिए नई FileMerge फ़िल्टर सेटिंग को वापस करना पड़ा, फिर एक्सकोड सफलतापूर्वक प्रोजेक्ट का निर्माण करेगा। – duncanc4

+0

एक्सकोड का कौन सा संस्करण? मैंने उस समस्या को नहीं देखा है (एक्सकोड 7.3 और एक्सकोड 8.3.3)। वह व्यवहार पूरी तरह से विचित्र प्रतीत होता है। बिल्ड प्रक्रिया को सामान्य रूप से FileMerge सामग्री का उपयोग नहीं करना चाहिए, जब तक कस्टम बिल्ड स्क्रिप्ट (या नियम बनाएं) जो किसी भी तरह से नहीं करते हैं। –

+0

यह एक्सकोड 8.3.3 के साथ था। – duncanc4

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