2010-08-09 20 views
13

पर गिट रिपॉजिटरी को क्लोन करने के लिए गिट-एसवीएन के साथ आसान गिट रिपोजिटरी निर्यात करना आसान है। हालांकि, मुझे इसे दूसरी तरफ करने की ज़रूरत है। मेरे पास एक गिट रिपोजिटरी है जो चारों ओर झूठ बोल रही है और सभी प्रतिबद्ध जानकारी रखने के दौरान इसे खाली (आयात, ट्रंक, शाखाओं और टैग फ़ोल्डर्स को छोड़कर) आयात करना चाहता हूं।एसवीएन

मैं एसवीएन रेपो के एक गिट-एसवीएन-क्लोन को सीरेट करता हूं, गिट मास्टर को खींचता हूं और डिक्यूटेड करता हूं। हालांकि मेरे पास svn में एकमात्र प्रतिबद्धता है, तो यह है कि "गिट से विलय"

मैंने दूसरी तरफ भी कोशिश की: गिट रिपोजिटॉय को क्लोन किया और गिट एसवीएन इनिट कहा जाता है लेकिन गिट कहता है "अपस्ट्रीम एसवीएन जानकारी को निर्धारित करने में असमर्थ सिर इतिहास। "

क्या यह किसी भी तरह से गिट से एक svn भंडार बनाने के लिए संभव है?

चीयर्स, माइकल

उत्तर

6

जब अन्य रेपो Git से मास्टर शाखा खींच किसी मर्ज के लिए प्रतिबद्ध बनाता है, कोई आम इतिहास है क्योंकि वहाँ।

आप का उपयोग करना चाहिए git pull --rebase (जो आईडी के लिए प्रतिबद्ध है, यह करता पुन रूप में बदल जाएगा) के बजाय, तो dcommit


आप निम्न को भी आज़मा सकता है: (

SVN के साथ प्रारंभिक संस्करण चेक इन बस उन शाखाओं, टैग, ट्रंक फ़ोल्डर्स और काम करना) पहले, फिर एक गिट एसवीएन क्लोन बनाएं (git svn -s clone svn://…)

फिर निम्न आदेश जारी करें:

# create a ref to your "svn" commit 
git checkout -b svn 
# get all your "git" commits 
git fetch $your_remote_git_repo 
# create a ref to your "git" commit 
git branch master FETCH_HEAD 
# rebase the rest your git commits 
git rebase svn master 
# commit to svn! 
git svn dcommit 

संपादित चेरी ले ही जरूरी हो गया था क्योंकि मेरे शीघ्रता से बनाए Git भंडार केवल खाली करता

+0

मैं Git पुल --rebase साथ यह कोशिश की, लेकिन यह SVN नदी के ऊपर जानकारी नष्ट कर देता है: # Git SVN क्लोन -s # सीडी परियोजना # Git खींच --rebase Git: परियोजना # Git SVN असमर्थ dcommit के लिए सिर इतिहास से अपस्ट्रीम एसवीएन जानकारी निर्धारित करें। शायद भंडार खाली है। at/usr/lib/git-core/git-svn line 517. –

+0

svn पहले – knittl

+0

के साथ एक डमी प्रतिबद्ध बनाने का प्रयास करें मुझे यकीन नहीं है कि मैं समझ गया कि आपका क्या मतलब है: git svn clone के बाद मैंने svn में एक परीक्षण प्रतिबद्ध बनाया । गिट पुल के बाद --rebase मैं अभी भी svn fetch गिट सकता है, लेकिन dcommit नहीं। मैं सिर्फ इतिहास को अनदेखा करते हुए svn में आयात करने के बारे में सोचता हूं। –

12

यहाँ पड़ा है SVN के माध्यम से एक Git रेपो प्रकाशित करने के लिए मेरी नुस्खा:

svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \ 
    -m "Standard layout for $project" 
git svn init -s http://host/path/to/repo/ 
git svn fetch 
git rebase trunk master 
git svn dcommit 

सबवर्सन जीता प्रतिबद्ध समय या लेखक की रक्षा नहीं करते हैं। यदि आप शाखाओं का इस्तेमाल करते हैं तो भगवान आपकी मदद करते हैं।

+0

'रीबेज' करने के बाद, गिट रिपोर्ट करता है कि दो प्रतिनिधि अब बुरी तरह से अलग हो गए हैं। उसे सुधारने के लिए क्या करना चाहिए? –