2012-11-12 5 views
5

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

यदि मुझे सही याद है, तो SmartSVN का Remove कमांड फ़ाइल के इतिहास को हटा देता है (मैं इसे सत्यापित करने में स्पष्ट रूप से संकोच कर रहा हूं)। अगर मैं गलत हूं तो कृपया मुझे सही करें। अन्यथा: मैं वांछित प्रभाव कैसे प्राप्त कर सकता हूं?

संपादित करें: एक डमी फ़ाइल का उपयोग करना, पुष्टि की है कि पूरी तरह से Remove SVN नियंत्रण से फ़ाइल निकाल देता है, और उसके इतिहास और दिखाई नहीं देता। तो समस्या असली है।

+0

आप इसे एक डमी फ़ाइल पर आज़मा सकते हैं। इसे जोड़ें, फिर इसे हटा दें। तो मुझे यकीन है के लिए, एक हिरन है 'remove' या' del' या 'rm' रिपोजिटरी से इतिहास नहीं निकाला जाएगा। –

+0

@ ल्यूक एम: सिर्फ 'डेल' को कॉल करने का मतलब है कि काम करने वाली प्रतिलिपि के अगले अपडेट के बाद, फ़ाइल फिर से होगी। – Dabbler

+0

मैं अपने काम की नकल से हटाने के लिए 'commit' करने के लिए है कि आप अनुमान लगा। –

उत्तर

4

सबवर्जन कभी भी भंडार से फ़ाइल को पूरी तरह से हटा देता है। वास्तव में, यह एक अच्छी तरह से अनुरोधित सुविधा है।

आप svn delete या svn rm करते हैं, और फ़ाइल कार्यशील प्रति में नहीं है। हालांकि, यह निश्चित रूप से अभी भी वहाँ है। क्या शायद आप को समझाने की है कि फ़ाइल स्थायी रूप से हटा दिया गया है कि आप कुछ इस तरह कर रहे हैं है:

$ svn co http://repo/svn/project 
[...] 
$ cd project 
$ svn del foo.txt 
$ svn commit -m "Removed foo.txt" 
committed version 12345 
$ svn ls http://repo/svn/project/foo.txt 
No such file 

यह सच है। फ़ाइल foo.txt अब सबवर्जन के सबसे वर्तमान संशोधन में नहीं है।

आप जानते थे कि फ़ाइल संशोधन 12345 में क्योंकि आपने उसे निकाल नहीं है:

शायद तुम कुछ इस तरह से किया था। हालांकि, की फाइल अभी भी है कि संशोधन में होना चाहिए संशोधन 12344. को देखो:

$ svn ls -r12344 http://repo/svn/project/foo.txt 
No such file 

देखो, संशोधन संशोधन 12344. इसलिए, यह स्थायी रूप से हटा दिया गया है में नहीं है।

इतना तेज़ नहीं, बंकी। आपने जो अनुरोध किया है वह रिपॉजिटरी लेआउट के वर्तमान संशोधन में फ़ाइल के 12344 संशोधन है। आपको फ़ाइल संशोधन और भंडार संशोधन के बीच अंतर को समझने की आवश्यकता है। इसे revision pegging कहा जाता है, और सबवर्सन में और अधिक कठिन अवधारणाओं में से एक हो सकता है।

आप जो देखना चाहते हैं वह है रिपोजिटरी के 12,344 वें संशोधन में फ़ाइल। ऐसा करने के लिए, आप रिपोजिटरी URL के अंत में एक @ डाल:

$ svn ls http://repo/svn/project/[email protected] 
foo.txt 

अब, हम फ़ाइल देख सकते हैं, क्योंकि यह है कि भंडार लेआउट के 12344 संशोधन में है।

$ svn cp -r12344 -m"undeleting foo.txt" \ 
     http://repo/svn/project/[email protected] \ 
     http://repo/svn/project 

इस के 12344 संशोधन पर फ़ाइल foo.txt में संशोधन 12344 कॉपी जाएगा: आप फ़ाइल को हटाना रद्द करने की जरूरत है, तो आप हमेशा फ़ाइल में संशोधन आप भंडार लेआउट की आंकी संशोधन से चाहते हैं कॉपी कर सकते हैं भंडार के वर्तमान संशोधन के लिए भंडार।

कि हटा दिया गया है फ़ाइलों को खोजने के लिए सबसे आसान तरीका है svn log को देखने के लिए है:

$ svn log -rHEAD -v http://repo/svn/project/foo.txt 
r12345 | dweintraub | [...] 

Removed foo.txt 

D /project/foo.txt 
----------------------------------------------------- 

मैं नष्ट कर दिया फ़ाइल `संशोधन 12345 में foo.txt इसलिए, यह अभी भी संशोधन 12344 में ही अस्तित्व में।जानना अच्छा है कि मुझे फ़ाइल को अनावृत करने की आवश्यकता है या नहीं।

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

0

मैं डेविड डब्ल्यू के जवाब में स्वीकार कर लिया है - यह सही ढंग से देखने की सबवर्सन के दृष्टिकोण से चीजों के राज्य में वर्णित (कमांड लाइन आधार पर)। जब से मैं एक जीयूआई सामने के अंत के रूप में SmartSVN उपयोग कर रहा हूँ, मैं इस नजरिए से उचित जानकारी जोड़ना चाहते हैं।

हटाई गई फ़ाइल के इतिहास SmartSVN का उपयोग कर,

  • खुला एक भंडार ब्राउज़र
  • अंक Repository | Show Revision आदेश
  • Revision रेडियो बटन चुनें (के रूप में विंडो प्रोजेक्ट के खिलाफ) को देखने के लिए; उसके बाद Select बटन
  • भंडार संशोधन आप को देखने के लिए

फिर आप फ़ाइल को नहीं देखेंगे चाहते हैं, बशर्ते वह भंडार आपके द्वारा चयनित वर्शन में उपस्थित थे।

ध्यान दें कि चयनित फ़ोल्डर निर्धारित करता है कि कौन सी फाइलें प्रदर्शित होती हैं (प्रोजेक्ट विंडो में सभी फ़ाइलों को प्रदर्शित करने का कोई तरीका प्रतीत नहीं होता है), और यह भी चुनने के लिए कौन से भंडार संशोधन प्रदर्शित किए जाते हैं।

1

SmartSVN में:

करें फ़ाइल/फ़ोल्डर -> राइट क्लिक करें -> "भंडार ब्राउज़र में खोलें" -> सही फ़ाइल पर क्लिक करें/फ़ोल्डर आप निकालना चाहते हैं -> "निकालें ..."