2009-04-14 18 views
40

मुझे पता है कि आप गिट svn init का उपयोग करके गिट के साथ एक svn repo को ट्रैक कर सकते हैं, हालांकि यह है कि आप एक नया नया रेपो बनाना चाहते हैं।मौजूदा गिट रेपो में svn repo जोड़ें?

मेरी स्थिति यह है कि मेरे पास वर्तमान में पहले से ही एक मौजूदा गिट रेपो है और मैं अपने वर्तमान गिट रेपो में एक दूरस्थ शाखा बनाकर एक एसवीएन रेपो के ट्रंक को ट्रैक करना चाहता हूं।

कोई सुझाव?

+0

मुझे लगता है कि इस सवाल का जवाब यहाँ भी वैध है: http: #gack के लिए //stackoverflow.com/a/1430782/1046584 –

उत्तर

22

कल रात खोज के बाद, मैं अंत में इस सवाल का जवाब मिल गया है:

http://i-nz.net/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/

ऐसा लगता है वास्तव में में जाने के लिए और मैन्युअल रूप से एक SVN शाखा जोड़ने के लिए .git/config फाइल को संपादित करने के लिए है कि आप एक मौजूदा गिट रेपो के लिए। तो इन निर्देशों के अनुसार मुझे प्रत्येक शाखा के लिए एक प्रविष्टि जोड़नी होगी।

+1

मुझे यह एक उपयोगी पाया गया: * http://blog.tfd.co.uk/2008/11/21/adding-a-branch-to-git/ –

+0

यह गिट v1.8.3 से काम करना बंद कर सकता था। 2, देखें http://stackoverflow.com/questions/19712735/git-svn-cannot-setup-tracking-Information-starting-point-is-not-a-branch –

+0

यह गिट v1.8.3.2 के रूप में काम करना बंद कर दिया , अद्यतन समाधान के लिए http://stackoverflow.com/a/38706530/3303668 उत्तर देखें – Elmer

2

यह वास्तव में क्या गिट svn init करता है - अन्य गिट svn कमांड बस चीजों को एक साथ मर्ज करते हैं, आदि। आप svn init और/या गिट svn क्लोन के साथ क्लोन किए गए एसवीएन रेपो के लेआउट को कॉपी कर सकते हैं, और आपको चाहिए बस एक स्थानीय शाखा, या लाने, और इतने पर खींचने में सक्षम हो। गिट svn के लिए मैन पेज के साथ कुछ समय लें और आपको कुछ मिलकर कुछ परेशानी नहीं होनी चाहिए; यदि आप करते हैं, तो # freenode पर एक अच्छा संसाधन है। तो, यह बहुत अधिक परेशानी के बिना संभव होना चाहिए, लेकिन मुझे नहीं पता कि यह सब कैसे करें।

+1

+1। यह अतीत में मेरे लिए एक महान संसाधन रहा है। – Abizern

+0

+1 यह कहने के लिए +1 है कि 'git svn init' क्या करता है। –

12

1) .git/config में नई शाखा को परिभाषित करें:

[svn-remote "release-branch"] 
     url = svn+ssh://[email protected]/source/branches/mono-2-2/mcs 
     fetch = :refs/remotes/git-svn-release-branch 

2) आयात SVN शाखा। जब SVN में शाखा हुई तो SVN_BRANCHED_REVISION संशोधन है।

[~]$ git svn fetch release-branch -r SVN_BRANCHED_REVISION 

3) दूरस्थ शाखा के लिए एक स्थानीय Git शाखा हुक:

[~]$ git branch --track release git-svn-release-branch 

5) चेकआउट और

[~]$ git checkout release 
[~]$ git svn rebase 
+0

क्या होता है यदि आप अपनी एसवीएन ट्रैकिंग शाखा को गिट के रिमोट रेपो में दबाते हैं? क्या एक और क्लोन भी .git/config फ़ाइल में ऊपर हो जाएगा? – maxmelbin

+3

ऐसा लगता है कि इस उत्तर की प्रतिलिपि बनाई गई थी और इसे http://ivanz.com/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/ से चिपकाया गया था –

3

अद्यतन आप ऐसा करके SVN_BRANCHED_REVISION पा सकते हैं:

$ svn log --stop-on-copy PATH_TO_BRANCH 
1

वें के लिए जवाब प्रश्न है (https://stackoverflow.com/a/840411 और https://stackoverflow.com/a/7592152) अब गिट v1.8.3.2 (https://stackoverflow.com/a/19833311) के रूप में काम नहीं करते हैं। आप इस के बजाय कर सकते हैं:

1) .git/config में नई शाखा को परिभाषित करें:

[svn-remote "release-branch"] 
    url = svn+ssh://[email protected]/source/branches/mono-2-2/mcs 
    fetch = :refs/remotes/git-svn-release-branch 

2) आयात SVN शाखा। जब SVN में शाखा हुई तो SVN_BRANCHED_REVISION संशोधन है।

$ git svn fetch release-branch -r SVN_BRANCHED_REVISION 

3) शाखा बनाएँ और दूरस्थ शाखा के लिए एक स्थानीय Git शाखा हुक:

$ git checkout -b release refs/remotes/git-svn-release-branch 

5) अद्यतन

$ git svn rebase 
संबंधित मुद्दे