2011-04-21 18 views
24

किसी ने हाल ही में हमारे Mercurial भंडार में एक PowerShell (.ps1) स्क्रिप्ट जोड़ा है। फ़ाइल सादा पाठ है लेकिन TortoiseHg लगता है कि यह बाइनरी है और एक संदेश प्रदर्शित करता है: "फ़ाइल या diffs प्रदर्शित नहीं है: फ़ाइल बाइनरी है"।मैं TortoiseHg कैसे कहूं कि फ़ाइल बाइनरी नहीं है?

मैं कैसे TortoiseHg को बताता हूं कि ps1 फ़ाइलें टेक्स्ट हैं और बाइनरी नहीं हैं। मैं संस्करण TortoiseHg 2.0.3

+3

मुझे इस के लिए एक जवाब देखना अच्छा लगेगा जो फ़ाइल के एन्कोडिंग को बदलने पर भरोसा नहीं करता है। हम एक प्रोजेक्ट फ़ाइल को ट्रैक करते हैं कि एक वाणिज्यिक उपकरण के लिए जिसे हम बदल नहीं सकते और यूसीएस -2 में फाइलों को सहेज सकते हैं; TortoiseHg का दावा है कि ये फ़ाइलें बाइनरी हैं, और diff दिखाने के लिए चुनता है। –

+0

@ChrisPhillips - यदि आप फ़ाइलों के अनुपयुक्त रिकोडिंग के लिए उपकरण लिख सकते हैं, तो आप [एन्कोड | डीकोड चाल] का उपयोग कर सकते हैं (http://www.selenic.com/mercurial/hgrc.5.html#decode -नकोड) इन फ़ाइलों के लिए –

उत्तर

28

फ़ाइलों को यूसीएस -2 एन्कोडिंग में एन्कोड किया गया है और मैंने इसे यूटीएफ -8 में बदलने के लिए नोटपैड ++ का उपयोग किया है।

अब यह किया गया है, Mercurial फ़ाइल को पाठ के रूप में पहचानता है और एक diff ठीक से प्रदर्शन करता प्रतीत होता है।

यह समय मैं read फिर से कर रहा हूं!

this पर भी देखने लायक हो सकता है, क्योंकि यूसीएस -2 यूटीएफ -16 से निकटता से संबंधित है। उस लिंक के मुताबिक, यह सुपर-सीड करता है लेकिन यूसीएस -2 से विंडोज़ को यूटीएफ -16 में ले जाने का प्रयास 2000 से पहले चल रहा है!

1

नोटपैड ++ का उपयोग यूसीएस -8 एन्कोडिंग को यूटीएफ -8 में परिवर्तित करने में मदद करता है।

हालांकि, जब मैं इसे इस्तेमाल करते हैं, उदाहरण के लिए, एक्सएमएल (विजुअल स्टूडियो csproj) फ़ाइल को रूपांतरित करने, मत भूलना एक्सएमएल एन्कोडिंग की तरह, UTF-8 के लिए UTF-16 से बदलने के लिए:

<?xml version="1.0" encoding="utf-8"?> 
5

ऐसी पोस्ट का जवाब देने के लिए खेद है जो बहुत पुराना है, लेकिन ऐतिहासिक उद्देश्यों के लिए, कुछ टिप्पणियां क्रमशः हैं।

सबसे पहले, अंतर्निहित कोड भंडार (Mercurial) सभी फ़ाइलों को बाइनरी के रूप में संदर्भित करता है जहां तक ​​संशोधन होते हैं। जो कुछ आप यहां खो रहे हैं वह अंतर देखने की क्षमता है, भौतिक मतभेदों को अभी भी ट्रैक किया गया है, और उन परिवर्तनों की प्रकृति इस तथ्य के आधार पर बड़ी नहीं है कि कछुए उन्हें प्रदर्शित नहीं कर सकता है। (इसके विपरीत, जेपीईजी बाइनरी फाइलों में, छोटे पिक्सेल परिवर्तनों के लिए भी बड़े बाइनरी अंतर होते हैं, जबकि इन फ़ाइलों में अपेक्षाकृत छोटे अंतर होते हैं।)

दूसरा, भले ही टोर्टोइज़ मतभेद प्रदर्शित न कर सके, kdiff3 अगर आप सेट अप कर सकते हैं आपकी mercurial.ini फ़ाइल उचित रूप से। आपकी होम निर्देशिका में, आपके पास एक mercurial.ini फ़ाइल हो सकती है, भले ही आपका उपयोगकर्ता नाम रिकॉर्ड करें। यदि आप विलय-पैटर्न को शामिल करने के लिए इसे विस्तारित करते हैं। मर्ज-पैटर्न के लिए यहां देखें: http://www.selenic.com/mercurial/hgrc.5.html

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

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