2010-02-25 14 views
34

संबंधित प्रश्न: Moving repository trunk to another’s branch (with history)SVN अन्य भंडार में एक निर्देशिका के लिए कदम (इतिहास के साथ)


मुझे पता है कि एक इतिहास के साथ एक पूरा SVN भंडार डंप और उपयोगकर्ता परिभाषित (उप) में लोड कर सकते हैं का उपयोग कर लक्ष्य भंडार की सूची:

// in source repo 
> svnadmin dump . > mydumpfilename 

// in destination repo (backslashes because I'm using Windows) 
> svnadmin load . < mydumpfilename --parent-dir some\sub\directory 

लेकिन इस लक्ष्य भंडार की उप-निर्देशिका में पूर्ण भंडार आयात करेगा। मैं जो चाहता हूं वह स्रोत भंडार में उप-निर्देशिका को परिभाषित करना है जिसे निर्यात किया जाना चाहिए। कुछ svnadmin dump . --source-path old\sub\dir > mydumpfilename की तरह।

मैं इसे कैसे प्राप्त कर सकता हूं? TortoiseSVN ऐसा कर सकते हैं, तो कृपया ऐसा कहते;)


समाधान: इस दूसरों की मदद करेगा

// execute in destination repo 
svndumpfilter include source\sub\dir < mydumpfilename | svnadmin load . --parent-dir destination\sub\dir 

आशा है, भी: टिम Henigan के जवाब के लिए धन्यवाद, यहाँ यह करने के लिए सही रास्ता है ...

+0

मुझे लगता है कि आप मैन्युअल रूप से प्रतिलिपि बनाने और पुन: लागू करने के अलावा, ऐसा नहीं कर सकते हैं, क्योंकि सबवर्सन संशोधन रिपोजिटरी चौड़े हैं, इसलिए इतिहास के साथ एक ही निर्देशिका को स्थानांतरित करना वास्तव में इस मामले में लागू नहीं होता है। यानी एकल फाइलों को संशोधित नहीं किया गया है लेकिन पूरे भंडार को संशोधित किया गया है और पूरे भंडार के अंतर – Zenon

+0

संग्रहित हैं, धन्यवाद। – richo

+2

वास्तव में यह कहानी का केवल आधा है। आपको स्रोत भंडार में निर्देशिका को भी हटा देना है, इसके अलावा, 'svndumpfilter स्रोत \ sub \ dir' को छोड़कर इसे पुनर्निर्माण करके, http://stackoverflow.com/questions/205296/delete-file-contents-from- svn-history – Tino

उत्तर

20

svndumpfilter और Repository Maintenance पर यह अनुभाग देखें।

एक बार जब आप पूरे पुराने भंडार के लिए डंपफाइल कर लेंगे, तो आप केवल उस भाग को निकालने के लिए svndumpfilter का उपयोग कर सकते हैं।

मुझे TortoiseSVN के साथ ऐसा करने के तरीके से अवगत नहीं है।

+0

बहुत अच्छा समाधान देखें, पूरी तरह से काम करता है। आपका बहुत बहुत धन्यवाद! – AndiDog

+0

और यदि आप उलझन में हैं कि यह आपकी स्थानीय मशीन पर क्यों काम नहीं कर रहा है, तो ऐसा इसलिए है क्योंकि वास्तविक भंडार स्रोत पर 'svndump' चलाना चाहिए। इसके बजाय 'svnrdump' का उपयोग करें - http://stackoverflow.com/questions/8866035/unable-to-do-an-svn-dump-error-e720002-and-format-errors – drzaus

0

पार्टी के लिए थोड़ा देर हो चुकी है, लेकिन ... यदि आपने टोर्टोइज एसवीएन का उपयोग करके दोनों रिपॉजिटरीज़ की स्थानीय प्रतियां खींची हैं, तो आप वास्तव में निर्देशिका (या फ़ाइल पर राइट-क्लिक करके इतिहास के साथ एक से दूसरी निर्देशिका में एक निर्देशिका की प्रतिलिपि बना सकते हैं)) Repo1 से और इसे Repo2 पर खींच रहा है। "यहाँ SVN निर्यात संस्करणीकृत आइटम"

enter image description here

(रिकर्सिवली) के इतिहास के साथ कॉपी करेंगे: जब आप माउस छोड़ दें आप विकल्पों की यह सूची मिल जाएगा।

+0

मुझे इतिहास नहीं मिल रहा है, न ही यह रेपो में फाइलें जोड़ रहा है - मुझे क्या याद आ रही है? – drzaus

+0

@drzaus: स्थानीय रूप से आइटम को स्थानांतरित करने के बाद, आपको उन्हें रेपो में प्रतिबद्ध करने की आवश्यकता है। जब तक आप ऐसा नहीं करते, एसवीएन नए रेपो में आइटम या इतिहास पंजीकृत नहीं करेगा। – noisiveRevision

+0

बस यह सुनिश्चित करने के लिए कि मैं समझता हूं - निर्यात करने के बाद, मुझे बस उन सभी अनवरोधित फ़ाइलों को मैन्युअल रूप से जोड़ना होगा जिन्हें मैंने अभी निर्यात किया था, और फिर उन्हें करने के बाद एसवीएन ने अपना इतिहास शामिल कर लिया होगा? – drzaus

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