2010-05-02 37 views
35

मैंने सामान्य trunk, branches, और tags निर्देशिकाओं के बिना सबवर्सन रिपॉजिटरी बनाने की गलती की। यही है, प्रोजेक्ट की रूट निर्देशिका भंडार की मूल निर्देशिका में है। अब मैं एक फीचर शाखा बनाना चाहता हूं, लेकिन इसे रखने के लिए कोई अच्छी जगह नहीं है। मैं क्या करना चाहता हूं //trunk पर अपनी संपत्तियों और इतिहास को संरक्षित करना है। मेरा भाग्य साथ नहीं दे रहा?क्या स्थानांतरित करने/ट्रंक करने का कोई साफ तरीका है?

उत्तर

33

यह करने के लिए स्वच्छ जिस तरह से पूरी भंडार

svnadmin dump 

का उपयोग कर फिर जड़ में ट्रंक निर्देशिका के साथ एक नया भंडार बनाने के बाहर डंप, और

svnadmin load --parent-dir trunk साथ डंप फिर से लोड करने svnadmin उपयोग कर रहा है

यदि आप एक एसवीएन चाल करते हैं तो यह गड़बड़ हो जाएगा यदि आप कभी भी चाल से पहले एक संशोधन में वापस अपडेट करते हैं, क्योंकि फाइलें उनके पिछले स्थान पर वापस चली जाएंगी, जो संभवतः आप नहीं हैं चाहते हैं।

+0

-1 ऐसी लंबाई तक जाने की कोई ज़रूरत नहीं है: बस पूरे पेड़ को ले जाएं। – sleske

+2

@sleske - मैंने पहले इस समस्या को ठीक से संभाला है - एक एसवीएन चाल करने की समस्याओं के बारे में मेरा नोट देखें। ऐसा करने का यह सही तरीका है। –

+0

मुझे यह कोशिश करने का मौका नहीं मिला है, लेकिन ऐसा लगता है कि मैं जिस समाधान की तलाश में हूं। – Metaphile

1

क्या आप सिर्फ ट्रंक डीआईआर नहीं बना सकते हैं और सब कुछ ट्रंक से ले जा सकते हैं?

1

जैसा कि अन्य उत्तरों बताते हैं, ट्रंक निर्देशिका में केवल एक svn mv करना यह करेगा। अपनी कार्य प्रतिलिपि को अपडेट करने के लिए, svn switch कमांड देखें।

+0

यह एम लगता है सबसे ज्यादा एके, मेरी इच्छा है कि मैं^3 + वोट दे सकता हूं। मुझे अनिश्चितता है कि कमांड लाइन कमांड कवर के तहत क्या हुआ लेकिन टोर्टोइज एसवीएन के साथ मैंने "ट्रंक" निर्देशिका बनाने के लिए रेपो-ब्राउजर का इस्तेमाल किया और फिर टूलटिप के रूप में दिखाई देने वाले "ट्रंक पर ले जाएं" के साथ ट्रंक निर्देशिका में वर्जन की गई सामग्री को ड्रैग-एंड-गिरा दिया । सभी लॉग बनाए रखा गया था। मैं svn स्विच का उपयोग करने में असफल रहा, मैंने बस .svn मेटाडाटा निर्देशिका हटा दी और फिर से जांच की, लेकिन मुझे यकीन है कि svn स्विच अधिक समझ में आएगा। –

1

कोई भी trunk फ़ोल्डर बनाएं और रूट की सभी सामग्री को उस पर ले जाएं। आप इसे एक्सप्लोरर या रेपो-ब्राउजर से कर सकते हैं, इतिहास जारी रहेगा।

2

आपको /trunk बनाने की आवश्यकता है और ट्रंक के अंदर रूट की सभी सामग्री का एक svn move करें और फिर प्रतिबद्ध करें।

उसके बाद आप अपनी कार्य प्रति /trunk पर लेंगे।

2

'ट्रंक' निर्देशिका बनाने का सबसे आसान तरीका होगा, फिर बाकी सब कुछ इसमें ले जाएं। आपको मैन्युअल रूप से किसी भी गुण की प्रतिलिपि बनाना होगा, लेकिन यह एक बड़ा सौदा नहीं होना चाहिए। इतिहास प्रति फ़ाइल है, इसलिए यह रहना चाहिए।

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

+0

विलय के मामले में समस्याओं पर विचार करने के लिए +1 – sleske

+1

यह सबसे आसान तरीका है, लेकिन आपको सावधान रहना होगा कि यदि आप कभी भी आगे बढ़ने से पहले किसी संशोधन में अपडेट करते हैं तो अनपेक्षित चीजें होती हैं (आपकी कार्यशील प्रति स्वयं ही हटा दी जाएगी;)) –

+0

सहमत हुए। यह 'svnadmin' का उपयोग करने के लिए थोड़ा सा ट्रिकियर है लेकिन परिणाम बेहतर हैं, और मर्ज मुद्दे भद्दा विधि से भी बदतर नहीं हैं। मैंने आपका जवाब वोट दिया। –

-2

मैंने यह कैसे किया इसके त्वरित उदाहरण।

मैं file:///svn/myRepo/trunk

cd/ 
svnadmin dump /svn/myRepo > my.dump 
killall svnserve 
sudo rm -r -f /svn/myRepo 
svnadmin create /svn/myRepo 
svnserve -d -r /svn 
svn mkdir file:///svn/myRepo/trunk -m "Created trunk dir" 
svnadmin load /svn/myRepo --parent-dir trunk < my.dump 
1

कुछ पकड़ लिया है या विचार-विमर्श किया तरीकों में से कुछ के साथ सीमाएं हैं करने के लिए file:///svn/myRepo स्थानांतरित करने के लिए करना चाहता था। नीचे दिया गया पोस्ट एक और दृष्टिकोण पर चर्चा करता है, जिसमें रेपो को डंप करना और फ़ाइल पथ संपादित करना शामिल है। इसका लाभ यह है कि फ़ाइलों को स्थानांतरित किया जाएगा भी ठीक से संशोधित किया जाएगा।

http://dotslashstar.blogspot.com/2011/06/svn-hack-insert-missing-trunk-root.html

26

therefromhere's answer है, जो ठीक काम किया करते थे, लेकिन पैरामीटर, अर्थात सहित आदेशों जोड़ना चाहते थेSVN सर्वर के कमांड लाइन पर निष्पादित के रूप में:

  1. Dump एक फ़ाइल में अपने मौजूदा भंडार:

    svnadmin dump /path/to/myrepo/ > /some/dir/myproject.svndump 
    
  2. Create एक नया भंडार:

    svnadmin create /path/to/mynewrepo/ 
    
  3. Addtrunk/ फ़ोल्डर और commit यह, काम कर प्रतिलिपि निर्देशिका में:

    mkdir trunk; svn add trunk; svn commit trunk -m "Add: trunk folder" 
    
  4. Load का उपयोग कर नए भंडार में डंपफाइल trunk रूप parent-dir:

    svnadmin load --parent-dir trunk /path/to/mynewrepo/ < /some/dir/myproject.svndump 
    
+3

निर्देशों में याद करना आसान है, लेकिन यह * सर्वर * पर चलाना चाहिए, कामकाजी प्रति नहीं। अन्यथा आपको "फ़ाइल नहीं खोल सका"/path/to/myrepo/format 'प्राप्त होगा: ऐसी कोई फ़ाइल या निर्देशिका नहीं। " – DavGarcia

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

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