2010-03-29 31 views
6

मेरे पास एक बुरी तरह से संरचित svn repo में एक शाखा है जिसे बाहर निकाला जाना चाहिए और एक और svn भंडार में स्थानांतरित करने की आवश्यकता है। (मैं इसे साफ करने की कोशिश कर रहा हूं)।एक svn repo से दूसरे संरक्षित इतिहास में कोडबेस कैसे माइग्रेट करें?

यदि मैं svn log करता हूं और कॉपी/नाम पर रोकता हूं तो मैं उन सभी 3427 कामों को देख सकता हूं जिनकी मुझे परवाह है। क्या संशोधनों को डंप करने का कोई तरीका है, कुछ प्रमुख लिपियों को लिखने से कम?

मैं this question में सलाह का पालन करता हूं लेकिन यह शाखा पूरी जगह ले जाया गया है और मैं भी चालों को संरक्षित करना चाहता हूं।

+3

मैंने समान प्रश्न पूछे हैं और 'svndumpfilter' हमेशा मानक उत्तर था। क्या आप वाकई इसे अपने लिए कटौती नहीं करेंगे? –

+0

वैसे मैं svndumpfilter का उपयोग कर सकता हूं, लेकिन मुझे लगता है कि मुझे डंप में बिंदुओं पर कम से कम 9 पथ नाम करना होगा। मुझे पता नहीं था कि कोई स्वचालित समाधान था या नहीं। (रेपो गिट-एसवीएन का उपयोग करने के लिए भी गड़बड़ है)। – chotchki

+0

क्यों संशोधनों को आयात नहीं करते हैं, और उन्हें उपversण में पुनर्नामित करते हैं? इतिहास को फिर से लिखने की कोई ज़रूरत नहीं है? –

उत्तर

2

मुझे लगता है कि इस @ZacThompson (और @Pekka) क्या मतलब है के समान हो सकता है: मुझे लगता है कि svndumpfilter अपने दोस्त है।

आपके प्रश्न से मुझे लगता है कि आपके पास यह विचार है कि इसका क्या मतलब है लेकिन पूरे स्थान पर शाखा की प्रतिलिपि/स्थानांतरण के साथ संघर्ष? कि का उत्तर में पहले उल्लेख किया SVN Documentation पाया जा सकता है, मेरा मानना ​​है कि:

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

अर्थ: svndumpfilterसभी पथ शाखा कभी में रहते थे शामिल किया है। या क्या मैं कुछ न कुछ भूल रहा हूं?

एक और संभावना svndumpfilter2 हो सकती है जो आपके द्वारा लिखे गए थ्रेड में @compie द्वारा उल्लिखित है, हालांकि मुझे विश्वास है कि यह भी आवश्यक नहीं है (और मुझे @compie या svndumpfilter2 में से कोई भी नहीं पता)।

+0

मुझे svndumpfilter2 के बारे में पता नहीं था, लेकिन ऐसा लगता है कि मैं क्या देख रहा हूं। मैं इसे आजमा रहा हूं और देखता हूं कि यह कैसे काम करता है। – chotchki

+0

मैंने अभी तक अपना माइग्रेशन प्रयास पूरा नहीं किया है (विशाल रिपो 30k + प्रतिबद्ध) लेकिन यह विधि आशाजनक लगती है। – chotchki

-2

आपको रिपॉजिटरी निर्देशिका बैकअप के लिए हॉटकॉपी का उपयोग करने की आवश्यकता है। फिर यह भंडार को बहाल करने का मामला होना चाहिए।

+1

मुझे लगता है कि वह एक रेपो से एक बहुत ही जटिल संरचना (इसके अंदर कई चालों के साथ) को अलग करने के बारे में बात कर रहा है जिसमें बहुत कुछ शामिल है। –

+0

आप इसके लिए हॉटकॉपी का उपयोग नहीं कर सकते हैं, जिसका उपयोग केवल भंडारों की पूरी प्रतियां बनाने के लिए किया जा सकता है –

1

आप के कुछ संयोजन का उपयोग करना चाहते जाएगा:

  1. svnadmin डंप
  2. svndumpfilter
  3. svnadmin लोड

आप पूरे शाखा क्या करना चाहते हैं, तो आप भी आवश्यकता नहीं होती है svndumpfilter। लेकिन अगर आप कार्य करें:

http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.filtering

0

एक और समाधान है जो बहुत आसान है और हल करता है "चाल को संरक्षित करें" समस्या। कृपया अपाचे सबवर्जन एफएक्यू एंट्री "How do I completely remove a file from the repository's history?" का अंतिम पैराग्राफ देखें। समाधान svndumpfilter पर भरोसा नहीं करता है।

आप निम्न चरणों का पालन कर सकते हैं:

  1. कॉन्फ़िगर को path-based authorization नियमके रास्ते फ़ाइल या फ़ोल्डर आप रिपोजिटरी से निकालना चाहते हैं करने के लिए एक USERNAME खाते के लिए पढ़ने की पहुँच से इनकार इतिहास।

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

  2. एक खाली भंडार बनाएँ,

  3. खाता USERNAME के तहत लक्ष्य भंडार को svnsync उपकरण के साथ स्रोत भंडार की प्रतिकृति बनाएँ। svnsync के साथ भंडार सिंक्रनाइज़ेशन के विवरण के लिए कृपया एसवीएनबुक अध्याय "Repository Replication" देखें।

svndumpfilter के विपरीत, svnsync स्वचालित रूप से svn copy संचालन सामान्य जोड़ में एक अपठनीय स्रोत पथ है, जो उपयोगी है अगर इतिहास कॉपी प्रक्रियाएं शामिल है और अभी भी फ़िल्टर किए जाने की आवश्यकता के साथ अनुवाद करता है। :)