2012-09-13 11 views
5

मैं वर्तमान में अपनी टीम के लिए गिट रिपोजिटरी होस्टिंग सेवाओं के विकल्पों का मूल्यांकन कर रहा हूं। मैं गिटहब का उपयोग करने के लिए आंशिक हूं, लेकिन इसके कारण हो सकते हैं कि हम इसके बजाय (या इसके अलावा) एटलसियन के स्टैश का उपयोग करना चाहते हैं।माइग्रेटिंग गिट होस्ट

गिट के साथ एक भंडार और उसके इतिहास को दूसरी सेवा होस्टिंग से कॉपी करना संभव है? क्या ऐसा करने के साथ कोई गठिया है? अगर हम एक प्रदाता को नीचे जाते हैं और फैसला करते हैं कि हमें बाद में स्विच करना है तो क्या कोई ऐसी चीज है जिसे हम खो देंगे?

मुझे गिट के लिए इस बारे में सामान्य उत्तर में दिलचस्पी है, लेकिन इसमें डेटा के साथ किसी भी संभावित समस्याएं हैं (आवश्यक रूप से केवल स्रोत संस्करण इतिहास नहीं) जो कि विशेष रूप से गिटहब के बीच माइग्रेट करने की कोशिश करके खो जाएगा। एटलसियन ढेर?

धन्यवाद,

== अद्यतन (v2) ==

बस का पालन करने के लिए, मैं का उपयोग करके Github को क्लोन मैं छिपाने की जगह से था से ऐसा सफलतापूर्वक किया और धक्का:

git clone --mirror ssh://[email protected]:8080/Stash/Project.git MyGithubProject 
cd MyGithubProject 
git remote set-url origin [email protected]:MyGithubOrg/MyGithubProject.git 
git push --mirror origin 

और यह शाखाओं सहित सभी अपेक्षित इतिहास को बरकरार रखा।

+1

जब आप एक Git भंडार आप सब कुछ प्राप्त क्लोन - कि Git की बात है - आप के रूप में आप –

+0

तरह यह रूप में कई बार स्थानांतरित करने के लिए सक्षम होना चाहिए लेकिन मैं एक नया भंडार में क्लोन कर सकते हैं? गिटहब के माध्यम से देखकर, उदाहरण के लिए, मैं नहीं देख सकता कि एक नई रिपोजिटरी कैसे बनाई जाए, जिसे मैंने अपनी स्थानीय मशीन से शुरू किया था। मैं समझता हूं कि मेरे पास उन सर्वरों पर एसएसएच पहुंच है जो मैं स्थानांतरित कर सकता हूं, लेकिन स्टैश या गिटहब जैसे होस्ट सेवा का उपयोग करते समय मैं सीमाओं के बारे में विशेष रूप से चिंतित हूं। मैं बस बुनियादी कुछ गलत समझ सकता हूं। अगर चिंता मूर्खतापूर्ण है या सवाल सिर्फ समझ में नहीं आता है तो कृपया मुझे सही करें। –

+1

सभी गिट भंडार बराबर (अधिक या कम) बनाए जाते हैं। आपके बॉक्स में से एक उतना ही भंडार है जितना कि जिथब पर। तो यदि आप एक नया रिमोट के रूप में नया सेट करते हैं और अपनी शाखाओं को धक्का देते हैं, तो यह दूसरे दो के समान होता है। – Dan

उत्तर

3

जो, आपकी टिप्पणी के अनुसार, सवाल गिट के संदर्भ में ज्यादा समझ में नहीं आता है। आपके भंडार के किसी भी क्लोन में भंडार का पूरा इतिहास शामिल है। यही कारण है कि लिखा है, वहाँ तीन चीजें आप पुन: बनाने के लिए अगर आप सेवाओं बदल आवश्यकता होगी हैं: GitHub पर

  1. किसी भी git hooks सेटअप। ये भंडार (किसी भी क्लोन भंडार के लिए) के साथ संग्रहित नहीं हैं। हालांकि, ऐसा कोई कारण नहीं है कि आप संस्करण को नियंत्रित भी नहीं कर सके, इसलिए किसी भी सेवा पर उन्हें पुनर्जीवित करना आसान होगा। यह भी एक अच्छा अभ्यास है। संस्करण जिस पर आप परवाह करते हैं उसे नियंत्रित करें।

  2. उपयोगकर्ताओं को भंडार तक पहुंचने की अनुमति है। जाहिर है, किसी भी सेवा परिवर्तन का मतलब है कि आपके डेवलपर्स को उस सेवा पर खाता प्राप्त करना होगा, कंपनी रिपोजिटरी आदि को देखने की अनुमति प्राप्त होगी।

  3. व्यक्तिगत डेवलपर रिपॉजिटरीज़। आपकी कंपनी रेपो के फोर्क्स को नई सेवा पर पुनर्निर्मित करने की ज़रूरत होगी, लेकिन एक बार जब आप ऐसा कर लेंगे तो यह एक मामूली ऑपरेशन है- और -1- दिमाग में रखा गया है। जैसे ही डेविड अपने जवाब में वर्णन करता है उतना आसानी से कर सकता है।

2

मैंने अभी दो अलग-अलग रिमोट्स के साथ इसका परीक्षण किया और नया जोड़कर, पुराने को हटाने और धक्का देने के बाद, प्रतिबद्धता इतिहास खो गया नहीं था।

+0

आपने "नया" कैसे जोड़ा?मुझे लगता है कि अगर यह ऐसा कुछ है जहां मेरा सर्वर है, तो मैं माइग्रेट कर रहा हूं, यह सब एक सीधा तरीके से काम करता है, लेकिन मुझे यकीन नहीं है कि उन होस्टिंग सेवाओं में से किसी एक के साथ एक पूर्ववर्ती परियोजना का उपयोग करके एक नई परियोजना कैसे बीज करें। धन्यवाद, –

+1

नई सेवा में रेपो बनाएं, फिर उस रेपो के गिट यूआरएल को अपने कामकाजी रेपो में रिमोट के रूप में जोड़ें जहां आपको वर्तमान में अन्य सेवा का रिमोट मिला है। "git github url.git जोड़ें" - जहां url.git नया रेपो और जीथब का यूआरएल है जिसे आप रिमोट नाम दे रहे हैं। फिर आप पुराने रिमोट को "गिट हटाने मूल" के साथ हटा सकते हैं और अपनी सभी शाखाओं को धक्का दे सकते हैं। –

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