2008-12-03 16 views
38

मैं कई परियोजनाओं के साथ एक एसवीएन भंडार के साथ काम कर रहा हूं। मुझे कुछ रिपोजिटरी में अलग-अलग रिपॉजिटरीज़ में से कुछ परियोजनाओं को स्थानांतरित करने की जरूरत है, प्रत्येक परियोजना के लिए, इतिहास को बनाए रखना।मैं एक परियोजना को एक एसवीएन भंडार से कैसे डंप कर सकता हूं जिसमें कई परियोजनाएं हैं?

मैं पूरे भंडार और svnadmin load को किसी अन्य भंडार में डंप करने के लिए svnadmin dump का उपयोग करने में सक्षम हूं, लेकिन मुझे मूल भंडार से केवल एक प्रोजेक्ट डंप करने का कोई तरीका नहीं मिल रहा है, इसलिए मैं इसे नए में लोड कर सकता हूं । क्या यह संभव है? यदि हां, तो कैसे?

+1

मैं एक पिटफॉल साझा करना चाहता हूं जिसमें मैंने भाग लिया: सबफ़ोल्डर के लिए फ़िल्टरिंग, मूल फ़ोल्डर के निर्माण को भी फ़िल्टर करता है। तो किसी को मैन्युअल रूप से लक्ष्य भंडार में मूल फ़ोल्डर बनाना होगा। –

उत्तर

58

आप इसे करने के लिए svndumpfilter उपयोगिता का उपयोग कर सकते हैं। एसवीएन बुक में ऐसा करने के लिए good explanation है।

उदाहरण के लिए, एक ही रास्ता होगा:


$ svnadmin dump /path/to/repo 
    | svndumpfilter include /proj > dump-file 
$ svnadmin create /new/proj/repo 
$ svnadmin load --ignore-uuid /new/proj/repo < dump-file 
$ svn rm file:///path/to/repo/proj 
+0

धन्यवाद एवी, मैंने सिर्फ दस्तावेज़ पढ़ा है और ऐसा लगता है कि मुझे इसकी आवश्यकता है। –

+1

आप dnfile को svnadmin लोड कमांड में इनपुट करना भूल गए हैं। – wimh

+0

धन्यवाद, Wimmel। मैं वास्तव में भूल नहीं था; मैं कम से कम संकेत से बचने के लिए भूल गया। अब तय – Avi

0

बस एक छोटा सा अतिरिक्त जवाब और @Kit टिप्पणी @Avi करने के लिए।

यदि आप svndumpfilter का उपयोग करते हैं, तो आप रिपोजिटरी (source) लोड करने के लिए आवश्यक प्रतिबद्धता खो सकते हैं।

मेरे मामले में:

cat dump | svndumpfilter --drop-empty-revs --renumber-revs include trunk/project > project.dump 
svnadmin load --ignore-uuid /opt/svn/newlocation < project.dump 
<<< Started new transaction, based on original revision 1 
svnadmin: File not found: transaction '0-0', path 'trunk/project' 

समाधान पहले एक ऊपरी निर्देशिका trunk प्रतिबद्ध करने के लिए किया गया था।

+1

यह समाधान संशोधन को पुनर्निर्मित करता है। जब आप संशोधन को पुनर्निर्मित नहीं करना चाहते हैं तो बस -drop-blank-revs और --renumber-revs का उपयोग न करें। – Prikkeldraad