2010-12-23 22 views
10

आईडी मेरी कार्यशील प्रतिलिपि में सभी फ़ाइलों को निकालना पसंद है जो svn भंडार में ज्ञात नहीं हैं।एक एसवीएन चेकआउट साफ़ करें (गैर-एसवीएन फाइलों को हटाएं)

प्रभावी रूप से जैसे कि मैंने अभी एक साफ चेकआउट बनाया होगा, लेकिन आईडी को सभी फ़ाइलों को फिर से डाउनलोड नहीं करना है।

निकटतम लगता है कि मैं इस पर आए हैं है ...

rm -rf `svn st | grep "^?" | cut -d" " -f8` 

लेकिन यह भद्दा लगता है और मैं पूरी तरह से इसके भरोसा नहीं करते क्योंकि उत्पादन में विसंगति SVN बाहर dirs को दूर कर सकता है।

"svn export" वह नहीं है जो मैं ढूंढ रहा हूं क्योंकि मैं इसे पैकेज करने के लिए स्रोत की सफाई नहीं कर रहा हूं, मैं बस क्रूर को हटाना चाहता हूं (* .pyc, * .orig, * .rej, svn-commit .tmp, * .swp)।

क्या क्लीन चेकआउट करने के अलावा ऐसा करने का कोई बेहतर तरीका है?

+0

(@rodion प्रति) [स्वचालित रूप से निकालें सबवर्सन unversioned फ़ाइलें] (के संभावित डुप्लिकेट http://stackoverflow.com/questions/239340/automatically-remove-subversion-unversioned-: यही कारण है कि हम इस एक का उपयोग है फाइलें) –

+0

[इस] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/239340/automatically-remove-subversion-unversioned-files) – rodion

उत्तर

18

है में दूसरे चर प्रिंट अधिकांश यहां पोस्ट किए गए समाधान सफेद जगहों के साथ फ़ोल्डर को संभालने में विफल रहते हैं।

svn status --no-ignore | grep '^[?I]' | sed "s/^[?I] //" | xargs -I{} rm -rf "{}" 
+0

ग्रेट दिमाग एक जैसे सोचते हैं। यह कामयाब पूरा करने के लिए यह एकदम सही कमांड लाइन है। –

-2

प्रत्येक फ़ाइल को हटाएं जिसमें केवल पढ़ने योग्य विशेषता नहीं है? सुनिश्चित करें कि आप चीजों को बाहर beforehands जाँच न करना पड़े ...

+2

बचाव के लिए thejohndonson)) और यही सवाल है - कैसे स्वचालित रूप से ऐसा करें :-)) – zerkms

+1

एसवीएन चेकआउट में सभी फ़ाइलों को केवल पढ़ने योग्य विशेषता कब लागू करता है? मैंने सोचा कि इस प्रकार का दुर्व्यवहार टीएफएस क्षेत्र था। – cdhowie

2

इस का उपयोग करें:

svn status --no-ignore | grep ^I | awk '{print $2}' | xargs rm -rf 

commandlinefu से प्राप्त।

svn st | awk '{print $2}' | xargs rm -rf 

कि सभी फ़ाइलें समन्वयित नहीं हैं निकाल देगा:

5

http://www.cuberick.com/2008/11/clean-up-your-subversion-working-copy.html

यहाँ मैं क्या कर जब मैं अपने काम के प्रति रेपो के समान होना चाहता हूँ भंडार के साथ। फिर बस हटाई गई चीज़ों को पुनर्स्थापित करने के लिए अपडेट करें और अद्यतित रहें।

svn up 

... सुनिश्चित करें कि आप कोई संपादन है या कहते हैं! सुरक्षित आदेश हो सकता है:

svn st | grep '?' | awk '{print $2}' |xargs rm -f 

... क्या नजरअंदाज कर दिया फ़ाइलों के बारे में? जैसे

svn st --no-ignore 
svn st --no-ignore | awk '{print $2}' | xargs rm -rf 
svn st --no-ignore | grep '?' | awk '{print $2}' |xargs rm -f 
+0

मुझे पूरा यकीन है कि फ़ाइल नामों में रिक्त स्थान होने पर 'awk' के साथ आपके आदेश विफल हो जाएंगे, क्योंकि' awk' केवल दूसरे "फ़ील्ड" को पकड़ लेगा, जो कि फ़ाइल/फ़ोल्डर नाम में पहला शब्द हो सकता है। फ़ाइल/फ़ोल्डर को ढूंढने में 'आरएम' असफल हो जाएगा। –

3
svn status --no-ignore | grep '^[?I]' | awk '{print $2}' | xargs rm -rf 

मुझे स्पष्ट करने दें।

SVN

--no-ignore 

द्वारा एक सरणी

svn status 

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

| grep '^[?I]' 

यह सरणी जो फ़ाइल नाम

| awk '{print $2}' 

यह

| xargs rm -rf 

चीयर्स मुद्रित filesnames के साथ फ़ाइलों को निकाल देता है, लूप

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