2009-09-17 17 views
42

मान लें कि तोड़फोड़ के नियंत्रण में एक निर्देशिका है, कि कुछ फ़ाइलें और उप निर्देशिकाओं की टन, उस तरह शामिल हैं:एसवीएन: क्या आप केवल स्थानीय चेकआउट से निर्देशिका हटा सकते हैं (भंडार से नहीं)?

file1.txt 
file2.txt 
file3.txt 
dir1/ 
dir2/ 
dir3/ 
dir4/ 
: 
dirXX/ 

अब आप फ़ाइलों और dirs में से कुछ है, लेकिन उनमें से सभी की जरूरत है। यह एसवीएन के साथ किया जा सकता है। बस चेकआउट गैर-रिकर्सिव बनाएं:

svn checkout -N <URL> 

यह केवल पहली निर्देशिका और फ़ाइलों को अंदर से जांचता है। कोई उपनिर्देशिका शामिल नहीं हैं। यहां तक ​​कि यदि आप चेकआउट निर्देशिका में जाते हैं और "svn up" चलाते हैं, तो यह केवल पहले चेक की गई फ़ाइलों को अपडेट करेगा, यह निर्देशिका को नहीं जोड़ देगा। अब आप उन निर्देशिकाओं को चुनिंदा रूप से जोड़ सकते हैं जिन्हें आपको स्पष्ट रूप से अपडेट करके आवश्यक है। जैसे यदि आप dir2 और केवल dir4 की जरूरत है, आप चेकआउट निर्देशिका में जाकर

svn up dir2 
svn up dir4 

निष्पादित आप एक सामान्य "svn up" भविष्य में, यह केवल फाइलों और उन दो निर्देशिका अद्यतन करेगा चलाते हैं कर सकते हैं, ऐसा नहीं होगा अन्य निर्देशिकाओं में से कोई भी जोड़ें।

अब समस्या: क्या होगा यदि मैं किसी भी बाद के बिंदु पर फैसला करता हूं कि मुझे अब dir2 की आवश्यकता नहीं है? मुझे इससे छुटकारा कैसे मिलेगा? ऐसा करने का कोई तरीका नहीं है, पूरे चेकआउट को हटाने और स्क्रैच से शुरू करने के अलावा।

जब आप सिर्फ dir2 को हटाते हैं, तो अगले "svn up" इसे वापस लाएगा, क्योंकि "svn status" निश्चित रूप से इसे अब गायब ("!" इसके नाम के सामने) दिखाता है। "svn remove" चलाना निश्चित रूप से इसे हटा देगा, लेकिन अगली प्रतिबद्धता पर यह इसे भंडार से भी हटा देगा, जो नहीं होना चाहिए।

सबवर्सन उथले checkouts के 1.5 के कार्यान्वयन अच्छा है, लेकिन समर्थन की एक जोड़ी नहीं करता है:

यहां तक ​​कि नए विरल निर्देशिका ("उथले चेकआउट") SVN 1.5 की सुविधा यहाँ किसी काम का नहीं है दिलचस्प व्यवहार। सबसे पहले, आप डी-टेलीस्कोप एक कार्यशील प्रति आइटम नहीं कर सकते हैं। एसवीएन अपडेट --सेट-गहराई खाली एक अनंत गहराई से काम करने वाली प्रतिलिपि में को छोड़ने का प्रभाव नहीं है, लेकिन शीर्ष निर्देशिका - यह बस त्रुटि होगी।
- http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html

SVN के साथ इस पूरी असंभव है? कोई भी कभी चतुर काम के साथ आया था-उस दौर में?

बस चेकआउट निर्देशिका (एसवीएन के बिना) बनाना और फिर सीधे रजिस्ट्री से व्यक्तिगत उपनिर्देशिकाएं जांचना क्योंकि इस निर्देशिका में उपनिर्देशिका निर्देशिकाओं के लिए काम करेगी: अब प्रत्येक निर्देशिका स्वयं का चेकआउट है, इसे अपडेट किया जा सकता है और एक बार अब और आवश्यकता नहीं है, आप इसे हटा सकते हैं। हालांकि, मैं फ़ाइलों को तब कैसे प्राप्त करूं (उदा। File1.txt)? एसवीएन अलग-अलग फाइलों की जांच करने की अनुमति नहीं देता है, आप केवल संपूर्ण निर्देशिकाओं को चेकआउट कर सकते हैं।

+0

मुझे लगता है कि यह इन दोनों के रूप में ही सवाल यह है: http://stackoverflow.com/questions/ 862950/सबवर्सन-रोक-स्थानीय-संशोधनों-से-एक-फ़ाइल-से-होने-प्रतिबद्ध, http: // stackoverflow।कॉम/प्रश्न/635446/svn-is-there-a-way-to-mark-a-file-as-do-not-commit –

+0

@ire_and_curses: सबसे पहले, आप इसे उत्तर के रूप में क्यों नहीं लिखते? दूसरा: ये दो प्रश्न कुछ करने से रोकने के बारे में हैं। इसमें मेरी समस्या से बिल्कुल कुछ लेना देना नहीं है। यहां तक ​​कि अगर मैं निर्देशिका पर svn हटा देता हूं और इसे कम करने से रोकता हूं, तो निर्देशिका दूर नहीं जाएगी। क्या आपने मेरा प्रश्न या सिर्फ शीर्षक पढ़ा है? – Mecki

+0

@ मेकी: मैंने आपका प्रश्न पढ़ा, हालांकि मैं जल्दी में प्रवेश करता हूं। मैंने सोचा * आप पूछ रहे थे कि स्थानीय प्रतिलिपि में संस्करण-नियंत्रित डीआईआर को रिपोजिटरी संस्करण को प्रभावित किए बिना, और अगले अपडेट में डीआईआर वापस प्राप्त किए बिना। यद्यपि मैंने यह कोशिश नहीं की है, ऐसा लगता है कि सबकुछ बनाने के लिए एक चेंजलिस्ट का सदस्य ठीक वही करेगा। मैंने इसे एक उत्तर के रूप में नहीं लिखा क्योंकि यह दोनों अन्य प्रश्नों में पहले से मौजूद है (जो मैंने सोचा था) - अगर मैं सही था, तो मैं किसी और के काम के लिए प्रतिनिधि बनूंगा। क्षमा करें अगर यह आपके लिए उपयोग नहीं है। –

उत्तर

50

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

जो मैं करने की कोशिश कर रहा हूं वह सबवर्जन 1.4 या सबवर्जन 1.5 के साथ नहीं किया जा सकता है; अवधि।
कोई काम मौजूद नहीं है, यह वही तरीका है।

यह सबवर्सन 1.6 के साथ किया जा सकता है।

SVN 1.5 के विपरीत, SVN 1.6 गहराई एक निर्देशिका

svn up --set-depth exclude dir2 

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

टीआईपी:
असल में एसवीएन 1.6 वास्तव में गहराई को कम नहीं कर सकता है जिस तरह से इसे बढ़ाया जा सकता है। आप इसे किसी भी स्तर से किसी भी उच्च स्तर तक बढ़ा सकते हैं। आप इसे केवल "बहिष्कृत" (सभी का निम्नतम स्तर) तक कम कर सकते हैं। यदि आप "इन्फिनिटी" (उच्चतम) से "फाइलों" (बीच में कहीं) से कम करना चाहते हैं, तो आपको इसे पहले "बाहर निकालना" (निर्देशिका को गायब होने के कारण) को कम करना होगा और फिर इसे "फ़ाइलों" में फिर से बढ़ा देना होगा। यह एक हैक का एक सा है, लेकिन यह सिर्फ अच्छा काम करता है।

+1

+1 लेकिन यह "उपversण 1.6" है। ऐसा कोई नहीं है चीज "सबवर्सन 6" के रूप में। –

+4

क्षमा करें; जावा के साथ बहुत लंबे समय तक काम कर रहा है मुझे लगता है -> जावा 2 जावा 1.2 है, जावा 5 वास्तव में जावा 1.5 है और इसी तरह ;-) – Mecki

+1

+1 एकाधिक निर्देशिकाओं को देकर बाहर रखा जा सकता है अंतरिक्ष अलग मूल्य। उदाहरण: svn up -set-depth dir1 dir2 dir3 – Ritesh

1

आप स्थानीय भंडार और svn: बाहरी घोषणाओं सहित trick को आजमा सकते हैं।

हालांकि, मैंने इसे स्वयं नहीं किया है।

+0

यह बहुत दिलचस्प लगता है! पहला जवाब और पहले से ही एक बहुत अच्छा (अपवॉट)। सुनिश्चित नहीं है कि यह सबसे अच्छा समाधान है और यदि यह वास्तव में मेरी समस्या का समाधान करेगा, लेकिन मुझे यह समाधान एक प्रयास देना चाहिए। क्या यह काम करना चाहिए और किसी को भी पेशकश करने के लिए और कुछ आसान नहीं है, मैं इस जवाब को स्वीकार करूंगा। यहां तक ​​कि अगर यह मेरी समस्या का समाधान नहीं करेगा, तो यह कुछ अन्य एसवीएन समस्याओं को हल कर सकता है (इसलिए यह ज्ञान किसी भी मामले में आसान है) – Mecki

+0

क्षमा करें, यह वास्तव में मेरी समस्या का समाधान नहीं कर सकता है। मैं एक स्थानीय भंडार बना सकता हूं और बस कुछ उपनिर्देशिकाओं में लिंक कर सकता हूं, इसलिए केवल वे दिखाई देते हैं ... और मैं शायद उन्हें अनलिंक कर सकता हूं (बाहरी घोषणा को हटा रहा हूं) और वे चले जाएंगे ... लेकिन मेरे पास कोई रास्ता नहीं है मुख्य निर्देशिका में fileX.txt फ़ाइलें, क्योंकि आप एकल फ़ाइलों में लिंक नहीं कर सकते हैं, केवल निर्देशिकाओं और इस निर्देशिका में लिंकिंग फाइलों और सभी उप-निर्देशिकाओं में लिंक करते हैं :( – Mecki

9

अद्यतन: मैं एसवीएन 1.6.11 चला रहा हूं और मैं निर्देशिका के बजाय svn up --set-depth empty dir का उपयोग कर डी-टेलीस्कोप करने में सक्षम था।

1

svn 1.6, --set-depth के साथ उत्तर है। उपनिर्देशिका आप अभी अपने 'असली' URL के बजाए उस को इंगित करने की जरूरत नहीं अपने भंडार में कहीं न कहीं एक खाली निर्देशिका बनाएँ, और switch:

SVN < 1.6 के साथ, आप विरल checkouts svn switch कोस से प्राप्त कर सकते हैं।

36

जो कोई भी इस बाद में भर आता है, और TortoiseSVN का उपयोग करता है, तो यहां एक ही बात करने के लिए है के लिए ...

  1. कि आप अब की जाँच चाहते हैं फ़ोल्डर पर राइट क्लिक करें (यह वह फ़ोल्डर है जिसे आप बाहर करना चाहते हैं)
  2. संदर्भ मेनू से, "TortoiseSVN> संशोधन में अपडेट करें ..."
  3. पॉप अप करने वाली विंडो में, "अपडेट गहराई" ड्रॉपडाउन बॉक्स को "बहिष्कृत करें" पर सेट करें "
  4. "ठीक" पर क्लिक करें। एसवीएन स्वचालित रूप से उस ड्राइव को आपके ड्राइव से हटा देगा।

(नोट: यह TortoiseSVN 1.7.5 के साथ किया गया था, और अन्य संस्करणों के लिए भिन्न हो सकते हैं।)

+1

+1 को छोड़कर यह मेरे लिए उपयोगी था – aolszowka

+2

यह एक जीवन बचतकर्ता है। धन्यवाद। – Emanuel

+0

इस विकल्प को # एसएसडी –

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