2011-12-15 12 views
8

मैं कई लोगों के साथ विकास कर रहा हूं।svn कमांड लाइन प्रतिबद्ध पर कुछ फ़ाइलों को बाहर निकालें (svn नहीं: अनदेखा करें)

मैं दूरस्थ भंडार की जांच करता हूं, 3 फ़ाइल प्राप्त करता हूं। संपादित करने के बाद, चलाएँ:

svn status 

इससे पता चलता है:

M file_1 
M file_2 
M file_3 

अब, मैं केवल दो फ़ाइल के लिए प्रतिबद्ध हैं: file_1, file_2, लेकिन नहीं file_3।

यह कैसे करें?

मैं न 'का उपयोग करने के

svn revert file_3 

से पहले प्रतिबद्ध चाहते हैं।

समझाएं: मैं साझा की गई परियोजना के लिए file_1, file_2 संपादित करता हूं, फ़ाइल_3 केवल मेरी स्थानीय मशीन पर चलने के लिए।

उत्तर

7

कैसे के बारे में:

$ svn commit file_1 file_2 
+0

आपका जवाब –

+9

ठीक है के लिए धन्यवाद, इसलिए यदि मैं 100 फ़ाइलें मिल गया है मैं प्रतिबद्ध करने के लिए करना चाहते हैं और केवल एक ही बाहर करना चाहते हैं। क्या उधर रास्ता है? – hacklikecrack

+1

बस खोल का उपयोग करें, जैसे एसवीएन सभी संशोधित फ़ाइलों और grep -v को एकल को सूचीबद्ध करने दें। – zoul

10

zoul के जवाब पर विस्तार .. विकसित करने के लिए आपकी फाइलों की सूची का उपयोग करें:

svn stat | grep -v ignore.file | perl -ne 'chop; s/^.\s+//; print "$_ "' 
,210

या यदि आप रिक्त स्थान के साथ फ़ाइल नाम है का उपयोग करें:

svn stat | grep -v ignore.file | perl -ne 'chop; s/^.\s+//; print "\"$_\" "' 
+0

एसवीएन स्टेट, हमें दिखाएं कि हमें कौन सी फाइलें करनी हैं और हमें सिर्फ लोगों को चुनने की जरूरत है। –

+0

वास्तव में इस प्रश्न का एक उपयोगी उत्तर प्रदान करने के लिए धन्यवाद। – pamphlet

0

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

# get list of changed files into targets 
[XML]$svnStatus = svn st -q --xml C:\SourceCode\Monad 
# select the nodes that aren't in a changelist 
$fileList = $svnStatus.SelectNodes('/status/target/entry[wc-status/@item != "unversioned"]') | Foreach-Object {$_.path}; 
# create a temp file of targets 
$fileListPath = [IO.Path]::GetTempFileName(); 
$fileList | out-file $fileListPath -Encoding ASCII 
# do the commit 
svn commit --targets $fileListPath -m "Publish $version" --keep-changelists 
# remove the temp file 
Remove-Item $filelistPath 
3

एक पंक्ति:

svn ci $(svn stat | grep -v exclude.file) 
+0

मैं इसे svn ci $ में बदल दूंगा (svn stat | grep -v ^? | Grep -v बहिष्कृत करें।फ़ाइल), बस उन फ़ाइलों को फ़िल्टर करने के लिए जो भंडार में नहीं हैं, जैसे स्रोतों से बनी द्विआधारी। अन्यथा, svn उनके बारे में शिकायत करेगा और कुछ भी नहीं करेगा, svn के समान त्रुटि संदेशों के साथ: E200009: 'a.file' संस्करण नियंत्रण में नहीं है – dmityugov

0

मैं युक्त एक स्क्रिप्ट बनाने समापन निम्नलिखित:

svn ci $(svn diff --summarize | \ 
    grep -v exclude.file1 | \ 
    grep -v exclude.file2 | \ 
    ... 
    grep -v exclude.fileN \ 
) 

मुझे यकीन है कि किसी को इस बनाकर यह और भी अधिक लचीला बनाने सकता हूँ स्क्रिप्ट एक फ़ाइल पढ़ती है जिसमें प्रतिबद्धताओं से बाहर रखने के लिए फ़ाइलों की एक सूची होगी।

0

शायद आप इस आदेश का उपयोग कर सकते हैं।

svn ci `svn st | grep -e "^[A|M]" | grep -v "test.js" | grep -ve "conf\.js$" | awk '{print $2}' | tr "\\n" " "` 
संबंधित मुद्दे