यदि मैं चलाता हूं svn rm file
, तो फ़ाइल को स्थानीय कार्य प्रतिलिपि से हटा दिया जाता है।
अब मैं क्या करूँ:
$ cp file file2
$ svn rm file
$ svn ci
$ mv file2 file
उपयोग करते समय मैं svn को स्थानीय फ़ाइल को हटाने से कैसे बचा सकता हूं svn rm
?
यदि मैं चलाता हूं svn rm file
, तो फ़ाइल को स्थानीय कार्य प्रतिलिपि से हटा दिया जाता है।
अब मैं क्या करूँ:
$ cp file file2
$ svn rm file
$ svn ci
$ mv file2 file
उपयोग करते समय मैं svn को स्थानीय फ़ाइल को हटाने से कैसे बचा सकता हूं svn rm
?
जवाबों:
आप --keep-local
कमांड लाइन विकल्प चाहते हैं। यह आपके फ़ाइल सिस्टम से हटाए बिना फ़ाइल को संस्करण नियंत्रण से हटा देता है।
$ svn rm --keep-local my_important_file
नोट:--keep-local
केवल प्रभावित करता है svn rm
अपनी कॉपी की। अन्य उपयोगकर्ताओं को हटाए गए फ़ाइल की अपनी स्थानीय प्रतिलिपि हो सकती है जब तक कि उनकी स्थानीय प्रतिलिपि और उनके द्वारा किए गए परिवर्तनों के कारण रिपॉजिटरी के बीच कोई संघर्ष न हो। यह वांछित परिणाम नहीं हो सकता है। नीचे टिप्पणी देखें।
स्थानीय स्तर पर इसे हटाने के बिना SVN से किसी फ़ाइल को हटाना एक आम समस्या है। एक प्रमुख उदाहरण एक ग्रहण परियोजना में फ़ाइल .classpath है। एसवीएन के तहत इस कॉन्फ़िगरेशन फ़ाइल को डालना जब तक परियोजना में उपयोग की जाने वाली सभी मशीनों में एक ही ग्रहण और जावा इंस्टॉलेशन होता है, तब तक यह अद्भुत है। एक बार जब इस स्थिति का उल्लंघन किया जाता है तो अन्य ग्रहण परियोजनाएं शुरू हो जाती हैं। यह वह बिंदु है जिसमें किसी भी स्थान को हटाए बिना SVN से एक फ़ाइल को निकालना है।
svn rm --keep-local .classpath
पूरी तरह से एक मशीन पर काम करता है और उस समय में।
समस्या यह है कि अन्य मशीनें उस फ़ाइल को खो सकती हैं (अपडेट करने पर) या इसे फिर से जीवित करें (कमिट पर)। एसवीएन का दोष न --keep-local
तो रिपॉजिटरी में संभालना है और न ही इसे अन्य कार्यशील प्रतियों में प्रचारित करना है। इसलिए कमांड के ऊपर अन्य सभी मशीनों को निष्पादित किया जाना चाहिए - किसी भी प्रतिबद्ध या अपडेट से पहले सबसे अच्छा।
यह, निश्चित रूप से, 90%, सबसे अच्छा काम करेगा। डिलीट और री-वर्जन अचानक से हो जाएगा। मेरा समाधान हर मशीन के पास है, मेरे पास प्रत्यक्ष या अप्रत्यक्ष रूप से पहुंच है, है
svn rm --keep-local .classpath
copy .classpath .classpath-nameOfTheMachine
svn add .classpath-nameOfTheMachine
यह शायद ही एक बदसूरत बदसूरत है जिसे "समाधान" कहा जाता है। फिर भी यह हमेशा किसी भी बाद की दुर्घटनाओं की त्वरित मरम्मत की अनुमति देता है।
मेरे पास इस सटीक प्रश्न का उत्तर नहीं है, लेकिन मेरे पास संबंधित प्रश्न का उत्तर है, जो कि सभी फाइलों (यानी विशिष्ट एक नहीं) को स्थानीय रूप से हटाए बिना संस्करण नियंत्रण से निर्देशिका में निकालना है। यह समाधान एक वैज्ञानिक लिनक्स कार्यान्वयन से आता है।
ls -a .svn
svn निर्देशिका को दिखाना चाहिए जो डेटा को नियंत्रित करती है। सीधे शब्दों में:
rm -r .svn
इस निर्देशिका से छुटकारा मिलेगा। फिर टाइपिंग:
svn status
एक 'चेतावनी देगा: यह निर्देशिका कार्यशील प्रतिलिपि नहीं है' त्रुटि है, क्योंकि यह अब संस्करण नियंत्रण में नहीं है।
आशा है कि ये आपकी मदद करेगा।