2008-11-04 20 views
21

कमांड लाइन के माध्यम से, मैं आमतौर पर ऐसा करता हूं:एसवीएन में, मैं निर्देशिका की उपनिर्देशिका को दूसरी निर्देशिका में कैसे कॉपी करूं?

cp -rRp /path/to/a\_folder/. /path/to/another\_folder 

यह सिर्फ a_folder से another_folder के नीचे की सामग्री कॉपी करता है। एसवीएन में मुझे एक ही काम करने की ज़रूरत है, लेकिन इसे समझ नहीं सकता है। मैं हमेशा इसके साथ समाप्त होता हूं:

/path/to/another\_folder/a\_folder 

एसवीएन तब भी फेंकता है जब मैं इसे आज़माता हूं:

svn copy file:///path/to/a\_folder/* file:///path/to/another\_folder 

यह कहता है कि यह अस्तित्व में नहीं है।

संपादित करें:

यह शायद मदद करेगा। मेरी प्रोजेक्ट के लिए निर्देशिका संरचना इस तरह दिखती है:

my_project 
    /branches 
    /tags 
    /trunk 
    /vendor 
    /1.1 

मुझे 1.1 फ़ोल्डर की प्रतिलिपि बनाने के बिना ट्रंक में विक्रेता के तहत 1.1 की सामग्री प्राप्त करने की आवश्यकता है।

उत्तर

8

क्या आपने svn विलय का उपयोग करने पर विचार किया है?

इस तरह एक रेपो को देखते हुए: इन आदेशों

trunk/a_folder/foo 
trunk/a_folder/bar 
trunk/new_folder/baz 

उपयोग foo और बार निर्देशिका विलय करने के लिए:

cd trunk/new_folder 
svn merge -r1:HEAD http://svn/repo/trunk/a_folder . 
1

तुम बहुत, बहुत करीब:

svn copy -m"Copy Directory" file:///path/to/a_folder file:///path/to/another_folder 

पहले तर्क से /* को छोड़ दें।

19

आप निश्चित रूप से पता चला है के रूप में, एक लक्ष्य निर्देशिका पहले से मौजूद है नकल काम करेंगे नहीं:

svn cp svn://my_project/vendor/1.1 svn://my_project/trunk

क्योंकि ट्रंक पहले से मौजूद है, तो आप को रखना होगा:

का उपयोग मर्ज करने के दुर्भाग्यपूर्ण संपत्ति में 1.5 से पहले विवर्तन में विक्रेता 1.1 टैग का इतिहास रखने की दुर्भाग्यपूर्ण संपत्ति है जो मर्ज ट्रैकिंग पेश करती है। आपको परवाह नहीं है

 
svn co svn://my_project/trunk trunk-wc 
svn merge svn://my_project/trunk svn://my_project/vendor/1.1 trunk-wc 

इस मर्ज है पढ़ने के लिए सबसे अच्छा तरीका है:: सबसे पहले, trunkvendor/1.1 के समान बनाने के लिए के लिए आवश्यक परिवर्तन का निर्धारण तो (दिए गए काम कर प्रतिलिपि करने के लिए उन परिवर्तनों को लागू भी इस मामले में मर्ज सही समाधान होगा ट्रंक का, इस मामले में)।

मुझे यह इंगित करना चाहिए कि यह विलय प्रभावी रूप से पहले से ट्रंक में कुछ भी उड़ा देगा। इसलिए, यदि आपके पास पहले से ही ट्रंक पर स्थानीय (गैर-विक्रेता) संशोधन हैं, तो आप केवल 1 के बीच के परिवर्तनों को लागू करना चाहते हैं।1 और पिछले विक्रेता ड्रॉप: ट्रंक मौजूद है, लेकिन आपके पास दो विकल्प मिल गया है खाली है

 
svn co svn://my_project/trunk trunk-wc 
svn merge svn://my_project/vendor/1.0 svn://my_prjoect/vendor/1.1 trunk-wc 

हैं: ट्रंक बदल सकते हैं या एक छोटे से खोल पाश लिखें:

ट्रंक की जगह इस तरह दिखता है:

 
svn rm svn://my_project/trunk 
svn cp svn://my_project/vendor/1.1 svn://my_project/trunk 

इस्तेमाल खोल (बैश):

012,
 
svn co svn://my_project/trunk trunk 
svn co svn://my_project/vendor/1.1 1.1 
(cd 1.1 
    for x in * ; do 
    svn cp $x ../trunk 
    done 
) 
svn ci trunk 
3

मुझे लगता है कि आप जो चाहते हैं वह यह है कि ट्रंक की सामग्री /tags/version-1.0/ फ़ोल्डर में समाप्त होती है, बिना अतिरिक्त /trunk फ़ोल्डर होता है। यानी यह बुरा है: /tags/version-1.0/trunk/stuff। यह अच्छा है: /tags/version-1.0/stuff

इस प्राप्त करने के लिए मैं एक 2 चरण वाली प्रक्रिया कार्य करें:

svn copy http://localhost/MyProject/trunk http://localhost/MyProject/tags/ 

# now I have /MyProject/tags/trunk 

svn rename http://localhost/MyProject/tags/trunk http://localhost/MyProject/tags/version-1.0 
5

यह लिंक एक समाधान बताते हैं।

http://svn.haxx.se/users/archive-2004-12/1537.shtml

मूल रूप से क्या यह कहते हैं कि यदि गंतव्य फ़ोल्डर रेपो में मौजूदा नहीं है, आप गंतव्य फ़ोल्डर में अपने स्रोत फ़ोल्डर की contencts मिल जाएगा है।

उदाहरण के नीचे देखें। फ़ोल्डर 07-03-2012 आपके रेपो में मौजूद नहीं है। एक बार जब आप नीचे दिए गए आदेश को निष्पादित कर लेंगे, तो आपको 07-03-2012 में HEAD फ़ोल्डर की सामग्री मिल जाएगी।

svn cp <URL>/HEAD/ <URL>/branches/07-03-2012 -m "test" 
संबंधित मुद्दे

 संबंधित मुद्दे