2008-12-06 11 views
41

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसमें ट्रंक/शाखा/टैग निर्देशिका संरचना नहीं है - यानी। सब कुछ svn repo की जड़ में है।एसवीएन मौजूदा भंडार पर ट्रंक निर्देशिका बना रहा है

मैं एक ट्रंक निर्देशिका और रूट निर्देशिका में बनाना चाहता हूं, और मूल निर्देशिका में सबकुछ नई ट्रंक निर्देशिका में ले जाना चाहता हूं।

ऐसा करने का सबसे अच्छा तरीका क्या है?

पहली बात मैं माना

svn mkdir trunk 
(for each file or directory that is not called trunk:) 
svn mv FILEorDIR trunk/ 

था लेकिन इस प्रभावी ढंग से हर फ़ाइल को हटा देता है और उसे फिर से कहते हैं। क्या कोई बेहतर तरीका है?

धन्यवाद।

उत्तर

9

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

ऐसा करने के बाद, आप svn switch का उपयोग कर नए स्थान पर मौजूदा चेकआउट को इंगित कर सकते हैं।

+0

आप SVN स्विच के लिए सटीक आदेश दे सकते हैं: परीक्षण और त्रुटि के घंटे के बाद, यह एक सरल था? साथ ही, काम करने की प्रतिलिपि में नवीनतम संशोधन में अपडेट न करने के लिए स्विच को मजबूर करने का कोई तरीका है जहां यह चलाया जाता है? –

+0

@ विजय देव: मैं पूर्ण विवरण के लिए ['svn switch' दस्तावेज़] (http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.switch.html) की अनुशंसा करता हूं। –

0

आप svnadmin टूल में देखना चाहते हैं।

ईमानदारी से कहूं तो मैंने पहले इस प्रयास नहीं किया है, और आप शायद कोई है जो से जवाब मिल जाएगा, लेकिन आप कुछ इस तरह से काम कर सकते हैं:

आप एक नया भंडार init करने के लिए, उस में एक 'ट्रंक' निर्देशिका बनाने, तो सक्षम होना चाहिए अपने पिछले भंडार को 'ट्रंक' में डंप करें।

3

यदि आप एसवीएन के लिए ग्रहण आईडीई और उपclipse का उपयोग कर रहे हैं तो आप आगे बढ़ सकते हैं और एसवीएन में फ़ोल्डर्स बना सकते हैं और सभी फाइलों/डीआईआर को रूट से ट्रंक निर्देशिका में ले जा सकते हैं और फिर प्रोजेक्टनाम/ट्रंक को वर्कस्पेस ग्रहण करने के लिए चेकआउट कर सकते हैं ..

+1

इसके अतिरिक्त, यदि आप एक स्वच्छ भंडार की प्रतिलिपि बनाने का इरादा रखते हैं (जिसकी कोई परियोजना जांच नहीं है, इसलिए इसमें ट्रंक/शाखा/टैग संरचना नहीं है), ग्रहण में आप ट्रंक/शाखा/टैग संरचना बना सकते हैं रेपो> नई> परियोजना संरचना ...> मोनोलिथिक के साथ। उसके बाद, स्रोत रेपो से सभी तत्वों को कॉपी/पेस्ट करें। – Saran

1

यहां यूनिक्स टर्मिनल में svn रूट में ट्रंक फ़ोल्डर बनाने के लिए svn + ssh विधि का उपयोग करने का तरीका दें।

svn mkdir svn+ssh://[email protected]/projectname/trunk -m "Create the trunk folder" 
13

मैं बिल्कुल वैसा ही समस्या थी और कई अलग अलग पृष्ठों के माध्यम से देखने के बाद इसे हल (यह एक शामिल है): जब आप SVN में प्रोजेक्ट बनाते हैं "ProjectName" रूट "पहचानकर्ता" है। यहाँ मेरी समाधान है:

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

समाधान के साथ पर ...

//REPO_URL = The URL for the repo on the SVN server. 
//In my case it was https://IP_ADDRESS:PORT/svn/my_repo 

//Make the trunk dir in the root of your SVN repo 
svn mkdir REPO_URL/trunk -m "making trunk dir" 

//Move everything from your root dir to your new trunk dir 
svn move REPO_URL/A_FOLDER REPO_URL/trunk/A_FOLDER -m "moving folders to trunk" 
svn move REPO_URL/ANOTHER_FOLDER REPO_URL/trunk/ANOTHER_FOLDER -m "blah" 
svn move REPO_URL/A_FILE.TXT REPO_URL/trunk/A_FILE.TXT -m "moving files to trunk" 
//Keep going until you've moved everything from your root dir to the trunk dir... 

तो अब, अपने SVN सर्वर पर, सब कुछ ट्रंक फ़ोल्डर में है। मिठाई!

लेकिन मेरा रेपो 60 जीबी और रिमोट सर्वर पर है। मैं फिर से यह जांच नहीं करना चाहूंगा। svn switch आपको अपनी मौजूदा कामकाजी प्रति को नए trunk डीआईआर पर इंगित करने देगा ताकि आप अपनी प्रतिलिपि के साथ काम करना जारी रख सकें। अपनी कार्यशील प्रतिलिपि के रूट फ़ोल्डर में जाएं और svn switch REPO_URL/trunk --ignore-ancestry चलाएं। यह At revision X कहां कहना चाहिए जहां X आपकी सभी फ़ाइलों को रूट निर्देशिका से ट्रंक निर्देशिका में स्थानांतरित करने के बाद संशोधन है। बस! शायद अच्छे उपाय के लिए एक एसवीएन अपडेट करें :)

+1

चयनित एक से बेहतर उत्तर की तरह लगता है –

0

पुरानी पोस्ट, लेकिन मेरे पास भी मेरे सभी रिपोज़ रूट में थे, न कि ट्रंक में। यह एक सरल git svn clone कमांड की कोशिश करते समय एक समस्या प्रस्तुत की।

git svn clone --username byname http://www.MySVNserver.com:81/repos/project1 --no-metadata --trunk=.

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