मुझे SVN से सभी अनवील किए गए फ़ाइलों की सूची कैसे मिलेगी?


80

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

मैं उन फ़ाइलों की सूची कैसे प्राप्त कर सकता हूं जो कि तोड़फोड़ से संस्करण नियंत्रण में नहीं हैं इसलिए मुझे यकीन है कि मैंने रिपॉजिटरी में सब कुछ जोड़ दिया है?

जवाबों:


107

svn statusकमांड का उपयोग करें :

svn status | grep ^?

जिन फ़ाइलों को संस्करणबद्ध नहीं किया गया है, उन्हें संकेत दिया गया है? लाइन की शुरुआत में।

यदि आप पाते हैं कि आपके पास हमेशा कुछ विशिष्ट फाइलें हैं जिन्हें रिपॉजिटरी में नहीं जोड़ा जाना चाहिए (उदाहरण के लिए, उत्पन्न बायनेरिज़), तो आपको svn:ignoreसंपत्ति को निर्देशिका में सेट करना चाहिए ताकि ये फ़ाइलें उपयोग करते समय दिखाई न दें svn status


4
व्यक्तिगत रूप से, मैं हमेशा "svn ci" से पहले "svn diff" करता हूं, लेकिन चूंकि यह कभी-कभी धीमा होता है, मैं हमेशा "svn diff" से पहले "svn diff" करता हूं, जो कि आसान है क्योंकि तब मैं सामान जोड़ना नहीं भूलता हूं :)
ephemient

11
यदि आपके पास बहुत सी ऐसी अटूट फ़ाइलें हैं जिन्हें आप जोड़ना चाहते हैं, तो यह करें: svn st | grep ^? | awk '{print $2} | xargs svn add यह पहली बार बिना पढ़ी हुई फ़ाइलों को खोजेगी, awk लाइन में केवल दूसरी वस्तु को प्रिंट करेगा (यानी फ़ाइल पथ) और xargs इस पथ को svn का तर्क बना देगा। जोड़ते हैं।
द्वितीया_

7
जागृत कमांड के अंत में एक एकल उद्धरण गायब है। आदेश होना चाहिए:svn st | grep ^? | awk '{print $2}' | xargs svn add
jplandrain

46

अगर कुछ फ़ाइलों ignoreको उनकी स्थिति में जोड़ा गया है, तो वे दिखाई नहीं देंगे svn status। आपको ज़रूरत होगी:

svn status --no-ignore

1
द्विआधारी फ़ाइलों के लिए भी उपयोगी है जो मेरे सेटअप में डिफ़ॉल्ट रूप से svn स्थिति द्वारा नजरअंदाज किया जा रहा है। मुझे शायद कुछ सेटिंग के बारे में पता नहीं है जो ऐसा करता है, लेकिन --no- इग्नोर के उपयोग से मुझे इस परिदृश्य में मदद मिली है।
एंडी

यह स्वीकृत उत्तर होना चाहिए क्योंकि चयनित उत्तर मेरे मामले में काम नहीं कर रहा था (लिनक्स वातावरण में द्विआधारी फ़ाइलों के लिए)
असकन

15

यदि आप विंडोज पर चल रहे हैं, तो आप पॉवरशेल का उपयोग करके ग्रेग हेवगिल के उत्तर के समान कुछ कर सकते हैं ।

(svn stat) -match '^\?'

यह बहुत आसानी से बढ़ाया जा सकता है सभी unversioned और उपेक्षित फ़ाइलों को खोजने और उन्हें हटाने के लिए।

(svn stat "--no-ignore") -match '^[I?]' -replace '^.\s+','' | rm

आशा है कि किसी के लिए उपयोगी है!


1
इसे कैसे () -mathकहा जाता है?
पावेल पेट्रोव


1

आप इस आदेश का उपयोग न करने वाली फ़ाइलों के लिए सभी रास्तों को सूचीबद्ध करने के लिए कर सकते हैं:

svn status | awk '/^?/ {print $2}'

पहला भाग एक करेगा svn status, और फिर यह AWK के लिए आउटपुट को रीडायरेक्ट करेगा जो कि साधारण फ़िल्टर "पहला वर्ण होना चाहिए '?" "तो यह दूसरे पैरामीटर को प्रिंट करेगा" जो फ़ाइल पथ है "।

svn statusहमेशा नजरअंदाज की गई फाइलों को प्रिंट नहीं करेंगे । आप उस पथ का उपयोग करके एक फ़ाइल या पथ जोड़ सकते हैं

svn propset svn:ignore "PATH OR PATERN"

ऐसा लगता है कि सभी परिणाम प्राप्त करने के लिए svn status, न कि केवल गैर-संस्करणित फ़ाइलें। मेरा मानना ​​है कि कमांड svn status | awk '/^\?/ {print $2}'को बचने के लिए होना चाहिए ?, क्योंकि फ़िल्टर एक रेगेक्स एक्सप्रेशन है।
किमिकलोको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.