तोड़फोड़ लोड "इस तरह के कोई संशोधन" के साथ विफल रहता है


18

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

<<< Started new transaction, based on original revision 19190
     * editing path : branches/features/DynamicSource ... done.
     * editing path : branches/features/DynamicSource/src/build.properties ... done.
     * editing path : branches/features/DynamicSource/src/client/default.htm ...done.
     * editing path : branches/features/DynamicSource/src/client/js/AdHocController.js ... done.
     * editing path : branches/features/DynamicSource/src/client/js/Report.js ... done.
svnadmin: E160006: No such revision 19098
     * adding path : branches/features/DynamicSource/src/client/js/Enums.js ...

ठीक है, तो मैं डंप फ़ाइल की जांच के लिए संशोधन 19,190 पर जाने के लिए और सभी के 19098. सबसे पहले, संशोधन 19,098 करता डंप फ़ाइल में मौजूद हैं और एक समस्या के बिना आयात किया गया था। संशोधन 19190 एक मर्ज है। 19190 के भीतर, यहाँ अंतिम फ़ाइल की जानकारी है, जो इस समस्या का कारण बनती है:

Node-copyfrom-rev: 19100
Node-copyfrom-path: trunk/src/client/js/Enums.js
Text-copy-source-md5: 2db7f8d9c0ba4750d88ce0722731aad6
Node-path: branches/features/DynamicSource/src/client/js/Enums.js
Node-action: add
Text-copy-source-sha1: 8f930509f8dbc17c5e82cd40aa5a76454d3d812c
Node-kind: file
Content-length: 0

भ्रामक रूप से, 19100 में संशोधन इस फ़िल्टर्ड फ़ाइल में मौजूद नहीं है। लेकिन त्रुटि 19100 का नहीं, यह 19098 का ​​जिक्र है!

इस फ़ाइल को लोड करने के लिए मैं क्या करूं?

धन्यवाद!


यदि कुछ जटिल ("डंप और फ़िल्टर" जिसके बाद "आयात") विफल हो जाता है, तो पहले कुछ सरल करने का प्रयास करें ("डंप", फिर "आयात")। मैंने केवल एक पूरे रेपो को स्थानांतरित किया, और यह आसान-पेसी हो गया।
डिर्क एडल्डबुलेटेल

धन्यवाद, डिर्क। हमें वास्तव में इस रेपो को विभाजित करना है, हालांकि।
हरलान

हो सकता है कि "डंप, इम्पोर्ट। हैंड-कम, डंप दोबारा। इम्पोर्ट 2 डंप।" ?
डिर्क एडल्डबुलेटेल

जब तक मैं कुछ याद कर रहा हूँ, मुझे नहीं लगता कि SVN इस तरह से काम करता है। आपको डंप फ़ाइल और svndumpfilter का उपयोग कम करना होगा। और हम इतिहास को जितना संभव हो सके रखना चाहते हैं।
हरलान

3
क्यों नहीं git या भाड़े के लिए पलायन, और एक ही चरण में विरासत SVN से छुटकारा पाने के लिए?
वॉनब्रांड

जवाबों:


1

मैंने कई बार इस तरह का विभाजन किया है। मुझे लगता है कि यह सब इस बात पर निर्भर करता है कि आप फ़िल्टर का उपयोग कैसे करते हैं और बाद में डंप फ़ाइल पर क्या प्रसंस्करण करते हैं। व्यक्तिगत रूप से, मुझे भी प्रोजेक्ट पथ के बगल में svn उपयोगकर्ता को बदलना पड़ा, और फिर से संशोधन करना पड़ा। बस आप देख सकते हैं कि क्या किया जा सकता है, यहाँ मेरी स्क्रिप्ट का प्रासंगिक हिस्सा है।

grp=$cust_group
usr=$cust_customer
svndumpfilter include $grp/$usr --drop-empty-revs --renumber-revs  <$repo_dump > $repo_dump.$usr
sed -e "s/Node-path: $grp\/$usr/Node-path: /" <$repo_dump.$usr >$repo_dump.$usr.fixed1
sed -e "s/Node-copyfrom-path: $grp\/$usr/Node-copyfrom-path: /" <$repo_dump.$usr.fixed1 >$repo_dump.$usr.fixed2
sed -e "/Node-path: /{ N; N; N; N; N; N; s/Node-path: \nNode-action: add\nNode-kind: dir\nProp-content-length: 10\nContent-length: 10\n\nPROPS-END//}" <$repo_dump.$usr.fixed2 >$repo_dump.$usr.fixed3
sed -e "/svn:author/{ N; N; s/svn:author\n.*\n$svn_usr_from/svn:author\nV $svn_usr_len\n$svn_usr_to/}" <$repo_dump.$usr.fixed3 >$repo_dump.$usr.fixed4
svnadmin load $repo_dir/$cust_group/$cust_customer --ignore-uuid < $repo_dump.$usr.fixed4

chown svn:svn -R $repo_dir/$cust_group/$cust_customer
#chown apache $repo_dir/$cust_group/$cust_customer/db/txn-current
#chown apache $repo_dir/$cust_group/$cust_customer/db/current
# apache is in svn group so the above 2 are not needed
chmod -R g+rw $repo_dir/$cust_group/$cust_customer

वहाँ क्या होता है कि पहले, मैं फ़िल्टर करता हूं कि मुझे क्या चाहिए, मैं स्पष्ट कारणों के लिए खाली संशोधनों को छोड़ देता हूं और मैं उन्हें पुनः प्राप्त करता हूं। यह अच्छा आदेश दिया संशोधन देता है। फिर मैं उस परियोजना का रूट पथ छोड़ता हूं जो मेरे मामले में समूह / ग्राहक के रूप में था क्योंकि नए रेपो में जिसका कोई अर्थ नहीं है (इसके बजाय रेपो स्वयं समूह / डिस्क पर ग्राहक है) - यह पहले 2 सेड का है

निम्नलिखित, मैं गैर-नामित निर्देशिकाओं के आयात को हटाता हूं, जिसके परिणामस्वरूप समूह डीआईआर के लिए उपरोक्त 2 सेड्स और फिर समूह / ग्राहक डीआईआर जोड़ने के लिए एक है।

अंत में, मैंने लेखक को इसे एक नए में बदलने के लिए sed किया। यह थोड़ा मुश्किल भी था क्योंकि इसमें संपत्ति की परिभाषा की लंबाई को अद्यतन करने की आवश्यकता थी।

फिर मैं इसे लोड करता हूं और फाइलसिस्टम अनुमतियों को ठीक करता हूं। अपाचे के लिए 2 टिप्पणी वाले चाउन पर ध्यान दें, कुछ मामलों में आपको इसकी आवश्यकता होगी। मैंने आखिरकार svn समूह में अपाचे को जोड़ना समाप्त कर दिया।

अब, मेरे एसवीएन रेपो में मेरा विलय नहीं हुआ था, इसलिए मुझे विभाजन के लिए उनसे कभी नहीं निपटना पड़ा। आपके मामले में, मुझे लगता है कि क्या होता है स्रोत पुनरीक्षण पथ आयात नहीं किया जाता है और यही कारण है कि यह इसे नहीं पाता है, भले ही त्रुटि पुनरीक्षण पर शिकायत हो)। Svn आयात फ़ाइल में अंगूठे का नियम यह है कि जो कुछ भी एक बिंदु पर संदर्भित किया गया है, उसे संदर्भित होने से पहले ही आयात किया जाना चाहिए। तो हो सकता है कि आपने कुछ ऐसा फ़िल्टर किया हो, जो आपको नहीं चाहिए, भले ही आप इसे चाहते हों, या डंप फ़ाइल को सही ढंग से अपडेट न किया हो, जो आपके द्वारा किए गए अन्य परिवर्तनों को प्रतिबिंबित करने के लिए।

यदि आप मर्ज किए गए स्रोत पथ सहित अपने मूल रेपो की प्रासंगिक संरचना प्रदान करते हैं, साथ ही मापदंडों के साथ आपकी कॉल, मैं आपको वह करने में सक्षम हो सकता हूं जो आपने याद किया। मेरा पैसा मर्ज के स्रोत पर है।


1

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.