सबजीत (मृत्यु की ब्लू स्क्रीन)
subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
यह सब है।
+ SVN से अपडेट करने के लिए, पहले कमांड द्वारा बनाया गया Git रिपॉजिटरी।
subgit import directory/path/Local.git.Repo
मैंने एक विशाल भंडार के लिए तुरंत Git में प्रवास करने का एक तरीका इस्तेमाल किया।
बेशक आपको कुछ तैयारी की आवश्यकता है।
लेकिन आप विकास प्रक्रिया को बिल्कुल भी नहीं रोक सकते।
यहाँ मेरा रास्ता है।
मेरा समाधान इस तरह दिखता है:
- SVN को Git रिपॉजिटरी में माइग्रेट करें
- टीम के स्विच करने से ठीक पहले Git रिपॉजिटरी को अपडेट करें ।
बड़े SVN रिपॉजिटरी के लिए माइग्रेशन में बहुत समय लगता है।
लेकिन केवल कुछ सेकंड में पूर्ण प्रवास का अद्यतन।
बेशक मैं सबजीत , मामा का उपयोग कर रहा हूं । git-svn मुझे मौत का ब्लू स्क्रीन बनाता है । बस लगातार। और git-svn मुझे Git के " फ़ाइलनाम बहुत लंबे " घातक त्रुटि के साथ बोर कर रहा है ।
कदम
1. सबजीत को डाउनलोड करें
2. माइग्रेट और अद्यतन कमांड तैयार करें।
मान लें कि हम इसे विंडोज के लिए करते हैं (यह लिनक्स में पोर्ट करने के लिए मामूली है)।
सबजीट की इंस्टॉलेशन बिन डायरेक्टरी (सबजिट-2.XX \ bin) में, दो .bat फाइलें बनाएं।
माइग्रेशन के लिए फ़ाइल / कमांड की सामग्री:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
"स्टार्ट" कमांड यहां (विंडोज) वैकल्पिक है। यह शुरू होने पर त्रुटियों को देखने की अनुमति देगा और सबजीट के पूरा होने के बाद खोले गए एक खोल को छोड़ देगा।
आप यहाँ git-svn के समान अतिरिक्त पैरामीटर जोड़ सकते हैं । मैं SVN लेखकों के ईमेल पते के डोमेन को ठीक करने के लिए केवल --default-domain myCompanyDomain.com का उपयोग कर रहा हूं ।
मेरे पास मानक एसवीएन रिपॉजिटरी की संरचना (ट्रंक / शाखाएं / टैग) हैं और हमें "लेखक मैपिंग" से कोई परेशानी नहीं है। इसलिए मैं और कुछ नहीं कर रहा हूं।
(यदि आप शाखाओं की तरह टैगों को माइग्रेट करना चाहते हैं या आपके SVN के पास कई शाखाएँ / टैग फ़ोल्डर हैं जिन्हें आप अधिक वर्बोज़ सबगिट दृष्टिकोण का उपयोग करने के लिए विचार कर सकते हैं )
टिप 1 : उपयोग करें - न्यूनतम संशोधन YourSvnRevNumber यह देखने के लिए कि चीजें कैसे उबलती हैं (कुछ प्रकार की डिबगिंग)। विशेष रूप से उपयोगी हल लेखक नाम या ईमेल देखने के लिए है।
या माइग्रेशन हिस्ट्री की गहराई को सीमित करने के लिए।
टिप 2 : माइग्रेशन बाधित हो सकता है ( Ctrl+ C) और अगले अद्यतन कमांड / फ़ाइल को चलाकर बहाल किया जा सकता है ।
मैं बड़ी रिपॉजिटरी के लिए ऐसा करने की सलाह नहीं देता। मुझे "मेमोरी ऑफ़ जावा + विंडोज अपवाद" मिला है।
टिप 3 : अपने परिणाम की प्रतिलिपि बनाने के लिए बेहतर है नंगे भंडार।
अद्यतन करने के लिए फ़ाइल / कमांड की सामग्री:
start subgit import directory/path/Local.git.Repo
आप इसे किसी भी समय चला सकते हैं, जब आप अपने गिट रिपॉजिटरी में अंतिम टीम के कमिट्स प्राप्त करना चाहते हैं।
चेतावनी! अपने नंगे भंडार (उदाहरण के लिए शाखाओं का निर्माण) को स्पर्श न करें।
आप अगली घातक त्रुटि लेंगे:
अपरिवर्तनीय त्रुटि: सिंक से बाहर हैं और समन्वयित नहीं किया जा सकता है ... तोड़फोड़ संशोधन को Git के लिए संशोधित करता है ...
3. पहला कमांड / फ़ाइल चलाएँ। यह एक बड़ा भंडार के लिए एक loooong समय लगेगा। मेरे विनम्र भंडार के लिए 30 घंटे।
यह सब है।
आप दूसरी फ़ाइल / कमांड चलाकर किसी भी समय किसी भी समय SVN से अपने Git रिपॉजिटरी को अपडेट कर सकते हैं। और अपनी विकास टीम को Git में स्विच करने से पहले।
यह सिर्फ कुछ सेकंड लगेगा।
एक और उपयोगी कार्य है।
अपने स्थानीय Git रिपॉजिटरी को दूरस्थ Git रिपॉजिटरी में पुश करें
क्या यह आपका मामला है? आगे बढ़ते हैं।
- अपने रिमोट को कॉन्फ़िगर करें
Daud:
$ git remote add origin url://your/repo.git
- एक दूरस्थ रिपॉजिटरी में अपने विशाल स्थानीय गिट भंडार के प्रारंभिक भेजने के लिए तैयार करें
डिफ़ॉल्ट रूप से आपका गिट बड़ा हिस्सा नहीं भेज सकता है।
घातक: दूरस्थ अंत अप्रत्याशित रूप से लटका हुआ है
चलो इसके लिए चलते हैं:
git config --global http.postBuffer 1073741824
524288000 - 500 एमबी 1073741824 - 1 जीबी, आदि।
अपनी स्थानीय प्रमाणपत्र समस्याओं को ठीक करें । यदि आपका गिट-सर्वर टूटे हुए प्रमाण पत्र का उपयोग करता है।
मेरे पास सर्टिफिकेट है ।
इसके अलावा आपके Git सर्वर में अनुरोध राशि सीमाएँ हो सकती हैं जिन्हें ठीक करने की आवश्यकता है ।
- टीम के दूरस्थ गिट रिपॉजिटरी में सभी प्रवास पुश करें ।
स्थानीय Git के साथ चलाएं:
git push origin --mirror
(पुराने पुश संस्करणों के लिए git पुश ओरिजिन '*: *' )
यदि आपको निम्न मिलता है: त्रुटि: git को स्पेंट नहीं कर सकता: ऐसी कोई फ़ाइल या निर्देशिका नहीं ... मेरे लिए मेरे रिपॉजिटरी का पूर्ण मनोरंजन इस त्रुटि (30 घंटे) को हल करता है। आप अगले आदेशों की कोशिश कर सकते हैं
git push origin --all
git push origin --tags
या Git को पुन: स्थापित करने का प्रयास करें ( मेरे लिए बेकार )। या आप सभी टैग से शाखाएँ बना सकते हैं और उन्हें धक्का दे सकते हैं। या, या, या ...