2011-01-19 14 views
7

मुझे कुछ व्यवहार का सामना करना पड़ा है जिसे मैंने सबवर्जन से अपेक्षा नहीं की थी, और इसे लगभग गलती से खोजा: एक संशोधित फ़ाइल को संशोधित के रूप में फ़्लैग नहीं किया जा रहा है।सबवर्जन एक संशोधित माइक्रोसॉफ्ट एक्सेल स्प्रेडशीट फ़ाइल को ध्वजांकित करने में विफल क्यों होता है?

मेरे पास एक यूनिट परीक्षण है जिसमें एक Microsoft फ़ाइल स्प्रेडशीट इनपुट फ़ाइल के रूप में शामिल है। यूनिट टेस्ट एक सीआरसी चेकसम की गणना करता है; चेकसम बदलने के कारण मेरा परीक्षण विफल हो गया।

परीक्षण फ़ाइल एसवीएन में संग्रहीत है, और इसमें एमआईएमई प्रकार "एप्लिकेशन/ऑक्टेट-स्ट्रीम" है, और इसलिए एसवीएन द्वारा बाइनरी के रूप में माना जाता है।

मुझे एसटीएन 1.6 पर आधारित इस मामले में TortoiseSVN और SVN कमांड लाइन क्लाइंट से वही व्यवहार मिलता है: जब Excel में फ़ाइल खोली जाती है, तो तथ्य यह है कि यह खुला है फ़ाइल में ही एन्कोड किया जाना चाहिए; एसवीएन दिखाता है कि फ़ाइल संशोधित है। हालांकि, जब फ़ाइल दोबारा बंद हो जाती है (सहेजे बिना), ऐसा लगता है कि यह अपने असम्बद्ध स्थिति में वापस आ रहा है: यानी svn status एक्सेल फ़ाइल सूचीबद्ध नहीं करता है; svn diff बाइनरी होने के कारण किसी भी आउटपुट का उत्पादन नहीं करता है।

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

वह हिस्सा जिसके लिए मुझे कोई कारण नहीं मिल रहा है, क्यों एसवीएन फ़ाइल को संशोधित नहीं करता है। मैं कल्पना नहीं कर सकता कि एसवीएन के पास Excel फ़ाइलों के लिए कोई विशेष हैंडलिंग है (और किसी भी मामले में एमआईएमई प्रकार विशेष रूप से एमएस एक्सेल से जुड़ा नहीं है); परिभाषित कोई एसएनवी कीवर्ड संपत्ति नहीं है। इसी प्रकार, मैं कल्पना कर सकता हूं कि एक्सेल छिपी हुई एसएसएन उपनिर्देशिका की सामग्री के बारे में कुछ भी जानता है जिसमें एसवीएन कामकाजी प्रतिलिपि जानकारी संग्रहीत की जाती है।

क्या आपके पास कोई संकेत है कि यहां क्या हो रहा है?

धन्यवाद, रॉब।

उत्तर

3

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

बदली गई सामग्री के लिए, मुझे यकीन नहीं है। क्या आप समस्या का पुनरुत्पादन कर सकते हैं?

+0

धन्यवाद। हां समस्या पुनरुत्पादित है। यह एक संभावित स्पष्टीकरण की तरह लगता है; मैं विम के जवाब पर अपनी टिप्पणी में यह बहुत कुछ कहूंगा, लेकिन यह स्वतंत्र रूप से मनाया जाना अच्छा है। मैं यह (काम पर, कल) की जांच करूंगा। – Rhubbarb

+0

बस पुष्टि करने के लिए: यह ठीक है कि क्या हो रहा है। जब एक्सेल फ़ाइल खोला जाता है, तो फ़ाइल की सामग्री बदल जाती है (जैसा कि md5sum के साथ देखा जा सकता है) और संशोधित समय में परिवर्तन। जब फ़ाइल को सहेजे बिना बंद कर दिया जाता है, तो फ़ाइल सामग्री बदलती नहीं है, लेकिन इसके मूल स्थिति में वापस नहीं आती है; और संशोधित समय खोलने से पहले मूल्य पर वापस आ जाता है। – Rhubbarb

+3

बस यह पाया: http://spreadsheetpage.com/index.php/oddity/who_last_opened_that_file/ ऐसा लगता है कि एक्सेल सलामी बल्लेबाज (और शायद अधिक) का नाम सहेजता है, भले ही आप सहेज न जाएं। अजीब। – Martin

1

क्या यह संभव है कि फाइल एक्सेल द्वारा लॉक हो, जबकि यह खुला है और svn यह देखने के लिए नहीं पहुंच सकता है कि यह बदल गया है या नहीं?

+0

मुझे लगता है कि एमएस अनुप्रयोग आमतौर पर एक अलग छिपी हुई फाइल (जैसे '~ file.doc') में लॉकिंग इंगित करते हैं, लेकिन मुझे लगता है कि एक्सेल अलग है। लॉकिंग एक सुराग है, लेकिन मुझे नहीं लगता कि यह पूरी कहानी है, और मुझे चीज़ों की पहुंच को रोका नहीं जाता है। (मुझे और प्रयोग करने की ज़रूरत है।) – Rhubbarb

4

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

संपादित करें: कैसे SVN इस संबंध, questions.c SVN काम कर प्रति पुस्तकालय के स्रोत में में काम करता है के विवरण के लिए एक अच्छी शुरुआत है।

+1

बस मैं सुझाव देने वाला था - टाइमस्टैम्प की जांच करें :-) मुझे कुछ अजीब समस्याएं थीं, जहां इसे ठीक से सेट नहीं किया जा रहा था जो इस तरह के समान थे। – berry120

+0

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

+0

आपके संपादन में लिंक के लिए भी धन्यवाद। – Rhubbarb

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