2011-12-27 2 views
13

मैं, SVN में कुछ फ़ाइलों को संपादित इस तरह:एसवीएन: प्रतिबद्धता पर एक संशोधित फ़ाइल को कैसे अनदेखा करें?

$svn st 
M a 
M b 
... 

अब, मैं SVN करने के लिए अपने परिवर्तनों को प्रतिबद्ध करने के लिए चाहते हैं, किसी कारण से, मैं नहीं चाहता कि फ़ाइल b प्रतिबद्ध करने के लिए चाहते हैं, तो किसी भी त्वरित तरीका है या संशोधित फ़ाइल b को अनदेखा करने के लिए आदेश?


अंत में, मैं @yzucker समाधान 1, सीपी, रिवर्ट और प्रतिबद्धता का उपयोग करता हूं। Changelists बहुत भारी है, आप सभी को धन्यवाद।

उत्तर

7

हां, कुछ परेशानियों के साथ कई फाइलों को प्रतिबद्ध करने से समस्या को नजरअंदाज कर दिया गया।

समाधान 1: कॉपी, वापस लौटने और प्रतिबद्ध

$cp b /tmp/ 
$svn revert b 
$svn commit -m 'commit message' 
$mv /tmp/b ./ 

समाधान 2: कॉपी, प्रतिबद्ध, ख के प्रभाव रिवर्स recommit ख

$cp b /tmp/ 
$svn commit -m 'commit message' 
$svn merge -c -{new revision} b 
$svn commit b -m 'revert message for b' 
$cp /tmp/b ./b 

दूसरा दृष्टिकोण कम वरीय है के बाद से आपका परिचय svn में टूटा कोड।

+1

अच्छा विचार, यह सबवर्सन की एक विशेषता होनी चाहिए। एक ध्वज होना चाहिए (इसे '-X' पर कॉल करें) जो फ़ाइलों को प्रतिबद्ध होने से बाहर कर देगा। – mliebelt

3

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

svn co a -m "Only commit a" 

जो तब ख को बाहर निकाल देगा प्रतिबद्ध करने के लिए चाहते हैं शामिल हो सकते हैं। अंत में उदाहरणों के साथ documentation of the command देखें।

एक अन्य विकल्प changelists उपयोग करने के लिए हो सकता है, लेकिन यह अधिक भारी है ...

+1

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

+0

यदि फ़ाइलों को स्पष्ट रूप से बहिष्कृत करने के लिए फ़ाइलों को परिभाषित करने के लिए चेंजलिस्ट होंगे, तो यह एक विकल्प हो सकता है। लेकिन अक्सर, आपके पास कई फाइलें बदली जाती हैं (चेंजलिस्ट में नहीं), और केवल केवल 1 * नहीं * प्रतिबद्ध करना चाहते हैं ... – mliebelt

2

फ़ाइल b पहले से ही भंडार में जोड़ दिया गया है, यह इसे अब और अनदेखी करने के लिए संभव नहीं है। आपको इस फ़ाइल को हटाना, प्रतिबद्ध करना, पुन: बनाना और इस तरह की संपत्ति को अनदेखा करना होगा:

svn propset svn:ignore b . 

अंतिम बिंदु वर्तमान फ़ोल्डर का अर्थ है।

आप, केवल इस लिए प्रतिबद्ध में फ़ाइलों की अनदेखी स्पष्ट रूप में उनके नाम लिखें प्रतिबद्ध आदेश चाहते हैं

svn co a c d 

कहाँ a, c, d फ़ाइलें आप प्रतिबद्ध करने के लिए चाहते हैं कर रहे हैं।

+0

क्या अंतिम आदेश 'svn ci a c d' होना चाहिए? यह एक समाधान है, धन्यवाद। – fannheyward

15

आप के रूप में इस छोटे से उदाहरण सत्र में दिखाया गया है नए Subverion ग्राहकों की Changelist फ़ीचर का उपयोग कर सकते हैं:

$ svn st 
M  a 
M  b 

$ svn cl task1 a 
$ svn cl task2 b 

$ svn st 
--- Changelist 'task1': 
M  a 
--- Changelist 'task2': 
M  b 

$ svn ci --cl task1 -m "checking in only task 1 stuff" 
Sending  a 
Committed revision 11. 
+0

svn संस्करण क्या है? –

2

खिड़कियों पर आप जीयूआई ग्राहक TortoiseSVN उपयोग कर सकते हैं और बस केवल जरूरत चेक बॉक्स का चयन करें।