Git
Git की ओर पलायन
खोज…
एटलसियन रूपांतरण उपयोगिता का उपयोग करके एसवीएन से गिट में माइग्रेट करें
एटलसियन रूपांतरण उपयोगिता यहां डाउनलोड करें । इस उपयोगिता के लिए जावा की आवश्यकता होती है, इसलिए कृपया सुनिश्चित करें कि आपके द्वारा रूपांतरण करने की योजना बनाने वाली मशीन पर जावा रनटाइम एनवायरनमेंट JRE स्थापित है।
यदि आपकी मशीन रूपांतरण पूरा करने के लिए आवश्यक किसी भी प्रोग्राम को याद नहीं कर रही है, तो java -jar svn-migration-scripts.jar verify
लिए कमांड java -jar svn-migration-scripts.jar verify
। विशेष रूप से, यह कमांड Git, तोड़फोड़ और git-svn
उपयोगिताओं के लिए जाँच करता है। यह भी पुष्टि करता है कि आप केस-संवेदी फ़ाइल सिस्टम पर माइग्रेशन कर रहे हैं। रिपॉजिटरी को दूषित करने से बचने के लिए केस-संवेदी फ़ाइल सिस्टम पर Git को माइग्रेशन किया जाना चाहिए।
अगला, आपको एक लेखक फ़ाइल बनाने की आवश्यकता है। उपविजेता के उपयोगकर्ता नाम से ही सबवर्सन ट्रैक बदलता है। Git, हालांकि, उपयोगकर्ता को अलग करने के लिए जानकारी के दो टुकड़ों का उपयोग करता है: एक वास्तविक नाम और एक ईमेल पता। निम्न आदेश एक पाठ फ़ाइल को उनके गिट समकक्षों के लिए तोड़फोड़ उपयोगकर्ता नाम मैपिंग उत्पन्न करेगा:
java -jar svn-migration-scripts.jar authors <svn-repo> authors.txt
जहाँ <svn-repo>
आप को परिवर्तित करने की इच्छा रखने वाले तोड़फोड़ भंडार का URL है। इस कमांड को चलाने के बाद, योगदानकर्ताओं की पहचान की जानकारी authors.txt
में authors.txt
। ईमेल पते फॉर्म के होंगे <username>@mycompany.com
। लेखकों की फ़ाइल में, आपको प्रत्येक व्यक्ति के डिफ़ॉल्ट नाम को मैन्युअल रूप से बदलना होगा (जो डिफ़ॉल्ट रूप से उनका उपयोगकर्ता नाम बन गया है) उनके वास्तविक नामों के लिए। आगे बढ़ने से पहले शुद्धता के लिए सभी ईमेल पतों की भी जांच कर लें।
निम्नलिखित कमांड एक gn एक के रूप में एक svn रेपो क्लोन करेगा:
git svn clone --stdlayout --authors-file=authors.txt <svn-repo> <git-repo-name>
जहाँ <svn-repo>
एक ही रिपॉजिटरी URL है जिसका उपयोग ऊपर किया गया है और <git-repo-name>
वर्तमान निर्देशिका में फ़ोल्डर नाम है जिसमें रिपॉजिटरी को क्लोन किया जा सकता है। इस आदेश का उपयोग करने से पहले कुछ विचार हैं:
- ऊपर से
--stdlayout
ध्वज Git को बताता है कि आपtrunk
,branches
औरtags
फ़ोल्डर के साथ एक मानक लेआउट का उपयोग कर रहे हैं। गैर-मानक लेआउट वाले सबवर्सन रिपॉजिटरी के लिए आपकोtrunk
फ़ोल्डर, किसी भी / सभीbranch
फ़ोल्डर औरtags
फ़ोल्डर के स्थानों को निर्दिष्ट करने की आवश्यकता होती है। यह इस उदाहरण का अनुसरण करके किया जा सकता है:git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo> <git-repo-name>
- इस कमांड को आपके रेपो के आकार के आधार पर पूरा करने में कई घंटे लग सकते हैं।
- बड़ी रिपॉजिटरी के लिए रूपांतरण का समय घटाने के लिए, नेटवर्क ओवरहेड रिपॉजिटरी को होस्ट करने वाले सर्वर पर सीधे नेटवर्क ओवरहेड को खत्म करने के लिए रूपांतरण को चलाया जा सकता है।
git svn clone
टैग्स (और tags/
साथ उपसर्गित रिमोट ब्रांचों) सहित रिमोट शाखाओं के रूप में तोड़फोड़ शाखाओं (और ट्रंक) को आयात करता है। इन्हें वास्तविक शाखाओं और टैग में परिवर्तित करने के लिए, एक लिनक्स मशीन पर निम्न कमांड को उनके द्वारा दिए गए क्रम में चलाएं। उन्हें चलाने के बाद, git branch -a
को सही ब्रांच नाम दिखाना चाहिए, और git tag -l
को रिपॉजिटरी टैग दिखाना चाहिए।
git for-each-ref refs/remotes/origin/tags | cut -d / -f 5- | grep -v @ | while read tagname; do git tag $tagname origin/tags/$tagname; git branch -r -d origin/tags/$tagname; done
git for-each-ref refs/remotes | cut -d / -f 4- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/origin/$branchname"; git branch -r -d "origin/$branchname"; done
Svn से Git में रूपांतरण अब पूरा हो गया है! बस अपने स्थानीय रेपो को एक सर्वर पर push
और आप Gn का उपयोग करने के साथ-साथ svn से पूरी तरह से संरक्षित संस्करण इतिहास रखने में योगदान देना जारी रख सकते हैं।
SubGit
सबजीट का उपयोग एसवीएन रिपॉजिटरी के एक बार के आयात को करने के लिए किया जा सकता है।
$ subgit import --non-interactive --svn-url http://svn.my.co/repos/myproject myproject.git
SVN से Git में svn2git का उपयोग करके माइग्रेट करें
svn2git git-svn के माध्यम से git के देशी SVN सपोर्ट के आसपास एक रूबी रैपर है, जो इतिहास (incl। ट्रंक, टैग्स और ब्रांच हिस्ट्री) को ध्यान में रखते हुए Subversion से Git तक माइग्रेटिंग प्रोजेक्ट्स की मदद करता है।
उदाहरण
मानक लेआउट के साथ एक svn रिपॉजिटरी माइग्रेट करने के लिए (यानी। शाखाएं, टैग और भंडार के मूल स्तर पर ट्रंक:
$ svn2git http://svn.example.com/path/to/repo
एक svn रिपॉजिटरी को स्थानांतरित करने के लिए जो मानक लेआउट में नहीं है:
$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir
यदि आप शाखाएँ, (या नहीं है) माइग्रेट नहीं करना चाहते हैं, तो टैग या ट्रंक आप विकल्पों का उपयोग कर सकते हैं - --notrunk
, --nobranches
, और --notags
।
उदाहरण के लिए, $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches
केवल ट्रंक इतिहास माइग्रेट करेगा।
अपनी नई रिपॉजिटरी द्वारा आवश्यक स्थान को कम करने के लिए आप किसी भी निर्देशिका या फ़ाइलों को एक बार बाहर निकालना चाहते हैं, जबकि आपके पास होना चाहिए (जैसे। निर्देशिका या अभिलेखागार का निर्माण)।
$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'
प्रवास के बाद का अनुकूलन
यदि आपके पास पहले से ही अपने नए बनाए गए गिट रिपॉजिटरी में कुछ हजार कमिट्स (या अधिक) हैं, तो आप रिमोट पर अपनी रिपॉजिटरी को पुश करने से पहले इस्तेमाल किए गए स्थान को कम करना चाह सकते हैं। यह निम्नलिखित कमांड का उपयोग करके किया जा सकता है:
$ git gc --aggressive
नोट: पिछली कमांड बड़े रिपॉजिटरी (कमिट के हजार और इतिहास के सैकड़ों मेगाबाइट) पर कई घंटों तक ले सकती है।
टीम फाउंडेशन संस्करण नियंत्रण (TFVC) से Git में माइग्रेट करें
आप Git-TF नामक एक ओपन सोर्स टूल का उपयोग करके टीम फाउंडेशन संस्करण नियंत्रण से माइग्रेट कर सकते हैं। माइग्रेशन आपके मौजूदा इतिहास को tits checkins को git commits में परिवर्तित करके स्थानांतरित करेगा।
Git-TF का उपयोग करके अपने समाधान को Git में रखने के लिए इन चरणों का पालन करें:
Git-TF डाउनलोड करें
आप Codeplex से Git-TF को डाउनलोड (और इंस्टॉल) कर सकते हैं: Git-TF @ Codeplex
अपने TFVC समाधान क्लोन करें
लॉन्च पॉवरशेल (जीत) और कमांड टाइप करें
git-tf clone http://my.tfs.server.address:port/tfs/mycollection '$/myproject/mybranch/mysolution' --deep
--Deep स्विच की-वर्ड है जिस पर ध्यान दें क्योंकि यह आपके चेक-हिस्ट्री को कॉपी करने के लिए Git-Tf बताता है। अब आपके पास उस फ़ोल्डर में एक स्थानीय गिट रिपॉजिटरी है जिसमें से आपने अपना क्लोई कमांड कहा है।
साफ - सफाई
- .Gitignore फ़ाइल जोड़ें। यदि आप विज़ुअल स्टूडियो का उपयोग कर रहे हैं, तो संपादक आपके लिए यह कर सकता है, अन्यथा आप इसे मैन्युअल रूप से जीथब / gitignore से पूरी फ़ाइल डाउनलोड करके कर सकते हैं।
- RemoveTFS स्रोत नियंत्रण बाइंडिंग को समाधान से हटा दें (सभी * .vssscc फ़ाइलों को हटा दें)। आप GlobalSection (TeamFoundationVersionControl) ...... EndClobalSection को हटाकर अपनी समाधान फ़ाइल को भी संशोधित कर सकते हैं
प्रतिबद्ध और पुश
अपने स्थानीय रिपॉजिटरी को अपने रिमोट के लिए प्रतिबद्ध और धक्का देकर अपने रूपांतरण को पूरा करें।
git add .
git commit -a -m "Coverted solution source control from TFVC to Git"
git remote add origin https://my.remote/project/repo.git
git push origin master
मर्क्यूरियल को Git में ले जाना
Git
में एक Mercurial
Repo आयात करने के लिए निम्नलिखित विधियों का उपयोग किया जा सकता है:
- तेजी से निर्यात का उपयोग करना:
cd
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
git checkout HEAD
Hg-Git का उपयोग करना: यहां एक बहुत विस्तृत जवाब: https://stackoverflow.com/a/31827990/5283213
का उपयोग करते हुए GitHub के आयातक : पर (विस्तृत) निर्देशों का पालन करें GitHub ।