2010-04-23 14 views
7

मैं एक खुला स्रोत परियोजनामिरर Git svn को

मैं सभी एक SVN भंडार (code.google.com पर) के लिए प्रतिबद्ध दर्पण करना चाहते हैं के लिए एक प्राथमिक Git भंडार है, यह संभव है?

उत्तर

0

क्या आपने http://git-scm.com/docs/git-svn चेक किया है, मुझे नहीं पता कि यह आपकी समस्या का समाधान करेगा या नहीं, लेकिन यह गिट और svn को सिंक करने का एक तरीका है।

-CJ

4

हाँ, यह संभव है। एक भंडार में आयात करने के लिए Git's SVN features का उपयोग करें। फिर आप वहां से धक्का दे सकते हैं। आप पाएंगे कि अधिकांश भाग के लिए, हालांकि, यह गिट एसवीएन इतिहास से बेहतर ढंग से एक एसवीएन इतिहास दिखा सकता है जो एक गिट इतिहास दिखा सकता है।

3

यदि आपका गिट इतिहास रैखिक है, तो आप git-svn का उपयोग करने का प्रयास कर सकते हैं। मैं गिट में मौजूदा (खाली) एसवीएन रिपॉजिटरी को आयात करने के लिए "गिट एसवीएन क्लोन" का उपयोग करने का प्रयास करूंगा, फिर उस पर अपने मौजूदा गिट इतिहास को रीबेस करें और "git svn dcommit" पर रीबेस करें।

यदि आपका गिट इतिहास रैखिक नहीं है (शाखाएं और विलय शामिल हैं), तो आप इसे एसवीएन में उचित रूप से प्रस्तुत करने में सक्षम नहीं होंगे। उस स्थिति में, मैं दृढ़ता से सुझाव देता हूं कि आप इसके बजाय एक गिट-आधारित होस्टिंग समाधान का उपयोग करें (उदा। Github.com)।

3

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

export GIT_DIR=$GITSVN_PROXY_DIR/.git 
git pull -Xtheirs file://$GIT_PRIMARY_DIR master 
git svn dcommit 

के बाद इतिहास फिर से लिखा गया है। प्राथमिक गिट भंडार से अगले गिट खींचने पर आपको आम तौर पर मज़बूत संघर्ष मिलते हैं। यह वह जगह है जहां -Xtheirs विकल्प में शामिल है। यह एक विलय रणनीति है जो परिवर्तनों के दूरस्थ संस्करण का पक्ष लेती है। इस मामले में यह हमें संघर्षों को स्वचालित रूप से हल करने की अनुमति देता है! :)

केवल नुकसान: सुंदर एसवीएन प्रतिबद्ध संदेश मुफ्त में नहीं आते हैं। कुछ गिट हैकिंग को प्राथमिक गिट प्रतिबद्ध संदेशों से सभी जानकारी रखने के लिए आवश्यक है।

+0

क्या आप अपने अंतिम पैराग्राफ में उल्लेख किए गए गिट हैकिंग को साझा करने के इच्छुक होंगे? –

1

मुझे संदेह है कि code.google.com के साथ यह संभव है, लेकिन आप अपना स्वयं का सबवर्सन रिपॉजिटरी सेट कर सकते हैं और SubGit इंस्टॉल कर सकते हैं।

जैसे ही इंस्टॉलेशन पूरा हो जाता है, आपके पास सबवर्जन और गिट रिपॉजिटरीज़ की एक जुड़ी जोड़ी होती है। किसी भी भंडार में प्रत्येक संशोधन एक सबगिट हुक ट्रिगर करता है जो स्वचालित रूप से सभी आवश्यक परिवर्तनों को परिवर्तित करता है।

अधिक जानकारी के लिए कृपया documentation और git-svn comparison देखें।

सबगिट एक वाणिज्यिक उत्पाद है, लेकिन ओपन-सोर्स प्रोजेक्ट्स के लिए आपको एक मुफ्त लाइसेंस मिल सकता है।

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