मैं अपनी एसवीएन कार्यशील निर्देशिका में अपने सभी परिवर्तन कैसे निकाल सकता हूं?


195

मेरे पास एक SVN वर्किंग डायरेक्टरी है। मैंने उस निर्देशिका में कुछ बदलाव किए, और यह दिखाता है svn status। लेकिन क्या मेरे लिए कोई रास्ता है जिससे मैं अपने सभी परिवर्तनों को वहाँ से हटा सकूँ और कमांड लाइन का उपयोग करके ट्रंक से सब कुछ प्राप्त कर सकूँ?

जवाबों:


274
svn revert -R .
svn up

यह वर्तमान निर्देशिका और इसके अंतर्गत आने वाली सभी चीजों को पुन: वापस कर देगा और फिर नवीनतम संस्करण में अपडेट कर देगा।


2
ध्यान दें कि यह एक्सटर्नल के साथ काम नहीं करता है (उन्हें नजरअंदाज किया जाता है, प्रतीत होता है)।
सीआईसी

86

मैंने इस समाधान के साथ अन्य लोगों के उत्तरों के संयोजन का उपयोग किया:

सामान्य स्थानीय SVN परिवर्तन वापस करें

svn revert -R .

किसी भी अन्य परिवर्तन को निकालें और रिक्त स्थान, आदि के साथ फ़ाइलों / फ़ोल्डरों को हटाने का समर्थन करता है।

svn status --no-ignore | grep -E '(^\?)|(^\I)' | sed -e 's/^. *//' | sed -e 's/\(.*\)/"\1"/' | xargs rm -rf

एसवीएन से नवीनतम फाइलें प्राप्त करना न भूलें

svn update --force

बहुत बहुत धन्यवाद Shaize, यह सबसे सुरुचिपूर्ण sed है, ... पाइप मैंने अब तक इसके लिए देखा है :) विशेष रूप से इग्नोर के बारे में भी ध्यान रखना।
धमकाने

एक जादू की तरह काम करता है। धन्यवाद!
Niilo Keinänen

28
svn revert -R .
svn cleanup . --remove-unversioned

यह * .class फाइल्स आदि को नहीं हटाता है
Trismegistos

2
अगर आप भी नजरअंदाज कर दी गई फ़ाइलों को हटाना चाहते हैंsvn cleanup . --remove-ignored
Kip

14

यदि आपके पास कोई परिवर्तन नहीं है, तो आप हमेशा पूरी तरह से और / या आलसी हो सकते हैं और करते हैं ...

rm -rf *
svn update

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

अधिक सही समाधान वापस आदेश का उपयोग करने के लिए है:

svn revert -R .

-R वर्तमान काम कर रहे निर्देशिका में और उसके नीचे सब कुछ वापस करने और वापस करने के लिए तोड़फोड़ का कारण बनता है।


मैं अक्सर इस ट्रिक का उपयोग करता था, लेकिन एसवीएन 1.7 के साथ, जहां मेटाडेटा केवल डब्ल्यूसी रूट में संग्रहीत किया जाता है, अब यह साफ समाधान नहीं है। उदाहरण के लिए, हटाई गई फ़ाइलें हटा दी जाती हैं।
बार्ट वैन ह्युकेलोम

8
svn nuke-from-space
जेसन स्वेट

9

यहां कोई भी जवाब नहीं था जो मैं चाहता था। यहाँ मैं क्या लेकर आया हूँ:

# Recursively revert any locally-changed files
svn revert -R .

# Delete any other files in the sandbox (including ignored files),
# being careful to handle files with spaces in the name
svn status --no-ignore | grep '^\?' | \
    perl -ne 'print "$1\n" if $_ =~ /^\S+\s+(.*)$/' | \
    tr '\n' '\0' | xargs -0 rm -rf

लिनक्स पर परीक्षण किया गया; साइग्विन में काम कर सकते हैं, लेकिन मैं (जीएनयू-विशिष्ट विस्तार) पर भरोसा करता हूं जो व्हाट्सएप के '\0'बजाय xargs को विभाजित करने की अनुमति देता है ।

उपरोक्त कमांड का लाभ यह है कि सैंडबॉक्स को रीसेट करने के लिए किसी भी नेटवर्क गतिविधि की आवश्यकता नहीं है। आपको वही मिलता है जो आपके पास पहले था, और आप अपने सभी परिवर्तनों को खो देते हैं । (अस्वीकरण से पहले कोई मुझे इस कोड को उनके काम को नष्ट करने के लिए दोषी ठहराता है) ;-)

मैं एक निरंतर एकीकरण प्रणाली पर इस स्क्रिप्ट का उपयोग करता हूं जहां मैं यह सुनिश्चित करना चाहता हूं कि कुछ परीक्षणों को चलाने के बाद एक साफ निर्माण किया जाता है।

संपादित करें : मुझे यकीन नहीं है कि यह तोड़फोड़ के सभी संस्करणों के साथ काम करता है। यह स्पष्ट नहीं है कि क्या svn statusकमांड को हमेशा लगातार स्वरूपित किया जाता है। अपने स्वयं के जोखिम पर उपयोग करें, जैसे कि कोई भी आदेश जो इस तरह के कंबल का उपयोग करता है rm


7

svn वापस आपके द्वारा किए गए किसी भी स्थानीय परिवर्तन को पूर्ववत कर देगा


5

सभी स्थानीय परिवर्तनों को वापस करने के लिए आप निम्न कमांड का उपयोग कर सकते हैं:

svn st -q | awk '{print $2;}' | xargs svn revert

मैं त्रुटि संदेश "पर्याप्त नहीं तर्क" SVN पूर्ववत करने के लिए मिलता है
परिपत्र

4
svn status | grep '^M' | sed -e 's/^.//' | xargs rm

svn update

किसी भी फाइल को हटा देगा जिसे संशोधित किया गया है। मुझे याद है कि जब फाइलों और निर्देशिकाओं को जोड़ा जा सकता है, तो उल्टा होने की समस्या होती है।



0

यदि आप खिड़कियों पर हैं, तो लूप के लिए निम्नलिखित आपके कार्यक्षेत्र में किए गए सभी अपरिवर्तित परिवर्तनों को वापस कर देगा:

for /F "tokens=1,*" %%d in ('svn st') do (
  svn revert "%%e"
)

यदि आप सभी असम्बद्ध परिवर्तनों और सभी असंबद्ध वस्तुओं को हटाना चाहते हैं, तो इसके लिए 2 छोरों की आवश्यकता होगी:

for /F "tokens=1,*" %%d in ('svn st') do (
  svn revert "%%e"
)
for /F "tokens=1,*" %%d in ('svn st') do (
  svn rm --force "%%e"
)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.