2009-12-11 13 views
12

मुझे "svn स्विच" के व्यवहार के बारे में कुछ स्पष्टीकरण की आवश्यकता है। मैं एसवीएन संस्करण 1.6.5 का उपयोग कर रहा हूँ।क्या 'svn switch' कभी स्थानीय रूप से जोड़े गए फ़ाइलों को हटा देता है?

मैनुअल पढ़ने से, व्यवहार की मेरी समझ है कि स्थानीय परिवर्तन संरक्षित किया जाएगा है। इसलिए मैं svn switch के बाद अपनी कार्यशील निर्देशिका में स्थानीय रूप से जोड़े गए फ़ाइल को अभी भी मौजूद होने की उम्मीद करूंगा।

हालांकि, अपने सहयोगियों और मैं कई उदाहरण हैं जहां नई फ़ाइलें स्विच द्वारा हटा दिया जाता है देखा है। दुर्भाग्य से, हम यह नहीं समझ सकते कि इसे पुन: पेश कैसे किया जाए।

क्या कोई परिस्थिति है (या तो एक सुविधा या ज्ञात बग) जिसके तहत svn switch स्थानीय रूप से जोड़े गए फ़ाइलों को हटा देता है?

उत्तर

11

मुझे लगता है कि यह एक बुरा विचार स्विच करने के लिए है, तो आप अप्रतिबद्ध परिवर्तन है जब। सबसे पहले, svn cp . <branch URL> वाली शाखा में अपने स्थानीय परिवर्तन करें, और फिर स्विच करें। बहुत मुश्किल परिस्थितियां हो सकती हैं जिन्हें आप अन्यथा प्राप्त कर सकते हैं।

कल्पना कीजिए, कि एक संस्करण आप का उपयोग करने जा रहे हैं में, फ़ाइलें आप स्थानीय रूप से जोड़ा पहले से ही मौजूद है, और पूरी तरह से अलग कर रहे हैं। या, यदि आपने फ़ाइलों की पूरी निर्देशिका जोड़ दी है, जिसे आप जिस संस्करण में स्विच कर रहे हैं उसमें फ़ाइलों के साथ पर्याप्त रूप से विलय नहीं किया जा सकता है। क्या आप वास्तव में एक बड़ा संघर्ष चाहते हैं?

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

+0

धन्यवाद इवान। जब आप कहते हैं "svn cp के साथ एक शाखा में अपने स्थानीय परिवर्तन करें", संभवतः मुझे एक अस्थायी, डेवलपर-विशिष्ट शाखा का उपयोग करना चाहिए? यानी मैं अंत में स्विच नहीं करना चाहता, क्योंकि मेरे परिवर्तन अभी तक पूर्ण नहीं हैं। –

+0

हां। यह आपकी व्यक्तिगत "काम प्रगति पर" शाखा का कुछ प्रकार होगा। –

+0

यह वास्तव में यदि आपके भंडार के भीतर अपनी परियोजना के लिए पथ बदल गया है (व्यवस्थापक यह आगे बढ़ के कारण), के बाद से कारण है कि आप करने जा रहे हैं अपने काम में जांच करने के लिए काम नहीं करता है। – badbod99

6

यह तो स्थानीय हटाना नहीं चाहिए जोड़ा फाइल या unversioned फ़ाइलें। किनारे के मामले हैं जहां एक निर्देशिका स्विच द्वारा स्थानांतरित या हटा दी जाती है, लेकिन उस मामले में एक वृक्ष संघर्ष होना चाहिए।

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

svn diff > ../somewhere/safe/save.diff 
# Break stuff 
patch -p0 < ../somewhere/safe/save.diff 
+0

उस बारे में सोचा नहीं था :) – Pondidum

+0

धन्यवाद एंड्रयू। मैंने अतीत में कोशिश की लेकिन svn diff की सीमा यह है कि यह नई फाइलें नहीं दिखाती - केवल संशोधित। –

+3

यदि आप एक फ़ाइल को 'svn add'' करते हैं, तो यह इसे जांचने से पहले भी भिन्नता में दिखाई देगा। –

0

svn switch के व्यवहार बहुत svn update के समान है: स्विच का लक्ष्य एक रास्ता है, जिसमें कुछ फ़ाइल काम कर प्रतिलिपि के संबंध में याद आ रही है है, तो उन फ़ाइलों को काम करने की प्रतिलिपि से हटा दिया जाएगा।

तरह इवान ने कहा, आप अपने परिवर्तन के लिए प्रतिबद्ध होना चाहिए और उसके बाद स्विच करें।

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