एसवीएन प्रतिबद्ध विशिष्ट फाइलें


219

क्या केवल विशिष्ट फ़ाइलों की सूची बनाने का कोई तरीका है (उन फ़ाइलों की सूची में से केवल एक जिसे SVN प्रतिबद्ध करना चाहता है)।

मैं मैक ओएस एक्स पर टर्मिनल के तहत काम कर रहा हूं, बिना किसी यूआई के।

जवाबों:


331

ज़रूर। बस फाइलों को सूचीबद्ध करें:

$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png

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

$ svn ci -m "No longer sets printer on fire" printer-driver/*.c

आप एक फ़ाइल से प्रतिबद्ध करने के लिए svn कमांड को फाइलों की सूची पढ़ सकते हैं:

$ svn ci -m "Now works" --targets fix4711.txt

1
इसलिए, मूल रूप से, मुझे स्पष्ट रूप से फ़ाइलों का नाम देना चाहिए? मैं सिर्फ यह नहीं कह सकता कि इस विशेष फ़ाइल को मत छुओ?
0100110010101

16
आप कर सकते हैं: svn सेंट | कट -c 9-> target.txt, फिर विशेष फ़ाइल को निकालने के लिए target.txt फ़ाइल को संपादित करें और फाइलर को निर्दिष्ट करने के लिए --targets पैरामीटर का उपयोग करें।
लगाम

17
मुझे लगता है कि मेरी नई चुनौती एक बग बनाना है जो प्रिंटर को आग लगा देता है।
जेम्स वेबस्टर

3
यह दयनीय और हास्यास्पद एक जैसा है। कोई मंचन क्षेत्र नहीं। svn addरिपॉजिटरी में फाइल जोड़ने के लिए उपयोग किया जाता है।
कांडिंस्की

68

चैंजिस्ट का इस्तेमाल करें। फ़ाइलों को निर्दिष्ट करने का लाभ यह है कि आप जो कुछ भी चाहते हैं, उसकी कल्पना कर सकते हैं और पुष्टि कर सकते हैं कि वास्तव में आप कमिटेड हैं।

$ svn changelist fix-issue-237 foo.c 
Path 'foo.c' is now a member of changelist 'fix-issue-237'.

किया, svn अब चीजों को आपके लिए अलग रखता है। यह तब मदद करता है जब आप कई बदलावों की बाजीगरी करते हैं

$ svn status
A       bar.c
A       baz.c

--- Changelist 'fix-issue-237':
A       foo.c

अंत में, इसे बताएं कि आप क्या बदलना चाहते हैं।

$ svn commit --changelist fix-issue-237 -m "Issue 237"

बिंदु उत्तर के लिए +1। चेंजेलिस्ट वास्तव में जाने का रास्ता हैं!
मिरो मार्कार्वेंस

1
यदि आप एक चेंजलिस्ट के लिए नई निर्देशिकाओं को जोड़ना चाहते हैं, तो पहले svn add का उपयोग करना न भूलें, फिर उपयोग करेंsvn changelist fix-issue-237 --recursive path/to/directory
Fabian Schmengler

वास्तव में चेंजलगिस्ट का उपयोग नई निर्देशिकाओं के साथ नहीं किया जा सकता है .... "तोड़फोड़ वर्तमान में निर्देशिकाओं के साथ
चेंजलगिस्ट

1
@fschmengler: SVN एक भयानक उपकरण है। मैं बस यह चाहता था कि यह सबसे खराब काम है। Git पर स्विच करें। : P
jcwenger

10
मैंने कई साल पहले Git पर स्विच किया और कभी पीछे मुड़कर नहीं देखा। एक ग्राहक के लिए फिर से svn का उपयोग करने के लिए मजबूर किया गया था, ऐसा महसूस होता है कि दोनों पैरों में गेंद और चेन के साथ चल रहा है
फेबियन शेंगलर

38

आप मूल रूप से उन फ़ाइलों को डालते हैं जिन्हें आप कमांड लाइन पर रखना चाहते हैं

svn ci file1 file2 dir1/file3

1
इसलिए, मूल रूप से, मुझे स्पष्ट रूप से फ़ाइलों का नाम देना चाहिए? मैं सिर्फ यह नहीं कह सकता कि इस विशेष फ़ाइल को मत छुओ?
0100110010101

2
अगर तर्कों के बिना चलाया जाता है तो svn सभी बदली हुई फाइलों को हटा देता है, अगर किसी फाइल के साथ चलाया जाता है तो इस फाइल को तर्क के रूप में चलाया जाता है, अगर निर्देशिका के साथ चलाया जाए तो निर्देशिका में सभी परिवर्तित फाइलें शुरू हो जाती हैं
Wienczny

22

मेरी तोड़फोड़ की स्थिति के कारण, मुझे रचनात्मक होना पड़ा। svn stदिखाया M, Aऔर ~स्थितियां। मैं केवल इतना चाहता था Mऔर A...

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt

यह कमांड कहती है svn stकि स्पेस लाइमाइटर का उपयोग करते हुए Mया Aउसके साथ शुरू होने वाली सभी लाइनों का आउटपुट खोजें , फिर कॉलम्स 8 को अंत तक प्राप्त करें। डंप करें कि टारगेट में। टेक्सट और ओवरराइट करें।

फिर target.txt को संशोधित करें और फ़ाइल सूची को आगे बढ़ाएं। फिर प्रतिबद्ध करने के लिए नीचे चलाएं:

svn ci -m "My commit message" --targets targets.txt

शायद सबसे आम उपयोग मामला नहीं है, लेकिन उम्मीद है कि यह किसी की मदद करता है।


2
आप grep -v '^~'जो चाहते हैं उसे ब्लैकलिस्ट करने के लिए भी इस्तेमाल कर सकते हैं।
मार्टिन कोंकनी

10

फ़ाइलों को स्पष्ट रूप से के रूप में द्वारा दिखाए गए लिस्टिंग इसके अलावा खोलना और Wienczny , आप सेटअप परिवर्तन सूचियों कर सकते हैं और इन चेक इन। ये आपको एक ही काम करने वाले कॉपी में परिवर्तन के निराशाजनक सेट का प्रबंधन करने की अनुमति देते हैं।

आप उनके बारे में उत्कृष्ट एसवीएन पुस्तक के ऑनलाइन संस्करण में पढ़ सकते हैं ।


7

इस स्क्रिप्ट की कोशिश करो ..

#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`; 
     do LIST="${LIST} $f $NULL on"; 
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`

1

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

मैं इस युक्ति का कोई नकारात्मक पहलू नहीं जानता।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.