2011-03-31 17 views
5

रूप में किसी मौजूदा Git रेपो में एक SVN रेपो आयात कर रहा है मैं वर्तमान में गूगल कोड पर एक परियोजना है कि मैं Github पर एक परियोजना में शामिल करना चाहते हैं मिल गया है।एक शाखा

मुद्दा यह है कि SVN परियोजना अनिवार्य रूप से सिर्फ GitHub पर बड़ी परियोजना के एक फ़ोल्डर है है, इसलिए मुझे नहीं लगता कि मैं सिर्फ Git-svn इस के लिए उपयोग कर सकते हैं करते हैं।

मुझे लगता है मैं इस परियोजना को क्लोन करने के लिए Git SVN उपयोग कर सकते हैं यह सोचते कर रहा हूँ, लेकिन फिर मुझे यकीन है कि ठीक से मौजूदा Git परियोजना पर SVN परियोजना भ्रष्टाचार के लिए कैसे नहीं हूँ।

वांछित परिणाम (मास्टर पर इसे भ्रष्टाचार नहीं) एक Git शाखा में SVN इतिहास पाने के लिए किया जाएगा।

SVN करने के लिए वापस dcommit करने में सक्षम होने के नाते (है कि अगर मदद करता है) वास्तव में आवश्यक नहीं है।

हल

मैं just_doug के सुझाव का उपयोग कर समाप्त हो गया है, लेकिन कुछ मामूली संशोधनों के साथ:

1: मैं एक दूरस्थ रेफरी

2 के रूप में GoogleCode जोड़ने के लिए http://ivanz.com/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/ से सुझावों का उपयोग किया: मैं रिमोट ब्रांच के लिए मास्टर की एक नई शाखा बनाएं, मैं चाहता था कि

3: मैंने

का उपयोग किया

Git मर्ज -s हमारा GoogleCode-दूरस्थ --no-प्रतिबद्ध

विलय करने के लिए दो

4: मैं तो

Git-पढ़ने के लिए पेड़ इस्तेमाल किया - उपसर्ग = फ़ोल्डर 1/फ़ोल्डर 2/ -u googlecode-remote

मर्ज इतिहास में पढ़ने के लिए और वांछित सबफ़ोल्डर

उम्मीद है कि यह एक ऐसी ही स्थिति में किसी को मदद करता है करने के लिए rebase;)

उत्तर

2

मैं इसे पहले उपयोग नहीं किया है, लेकिन यह लगता है कि आप the subtree merge strategy चाहते हैं। This article में इसका उपयोग करने के तरीके के बारे में कुछ और जानकारी है।

असल में, आप रिमोट के रूप में एसवीएन रिपोजिटरी जोड़ते हैं, फिर git read-tree कमांड को अपने शुद्ध गिट भंडार की उपनिर्देशिका के रूप में "भ्रष्टाचार" के लिए उपयोग करें। आप कैसे इतिहास दिखाना चाहते हैं पर निर्भर करता है, आप कर सकते हैं या तो git merge -s subtree अपने शुद्ध Git शाखा में विलय करने के लिए (Git-SVN संरक्षित करता है) या आप दूसरी कड़ी में चरणों का पालन करें और --squash और --no-commit झंडे जोड़ सकते हैं और शुद्ध-गिट शाखा में एक ही प्रतिबद्धता के रूप में विलय दिखाएं।

निर्देश मानते हैं कि रिमोट भी एक गिट रेपो है। यदि स्थानीय रेपो गिट-एसवीएन के बजाय गिट के साथ बनाया गया था, तो सुनिश्चित नहीं है कि यह कितना अच्छा होगा। यह एक प्रकार का क्लज है, लेकिन here are some scripts एक मध्यवर्ती भंडार बनाने के लिए जो कि गिट में एक एसवीएन रेपो को प्रतिबिंबित करता है। इस तरह, आप svn repo का गिट-एसवीएन दर्पण बना सकते हैं, और इसे रिमोट के रूप में जोड़ सकते हैं और ऊपर दिए गए निर्देशों को वर्णित के रूप में कार्य करना चाहिए।

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