2008-10-10 11 views
60

चेतावनी का एक शब्द: मैं सामान्य रूप सेपर n00b हूं। मेरी टीम svn में फीचर शाखाओं का उपयोग करती है, और मैं किसी विशेष सुविधा शाखा पर अपने काम को ट्रैक करने के लिए git-svn का उपयोग करना चाहता हूं। मैं रेपो सेट अप करने के लिए Andy Delcambre's post का पालन कर रहा हूं (लेकिन लगभग gitsvn शाखा को चुनने के लिए मैंने हाल ही में रिमोट रिपोजिटरी के रूप में बदल दिया है; समस्या यह है कि वह शाखा नहीं है जिसकी मुझे परवाह है। मैं कैसे नियंत्रित करूं कि कौन सी शाखा git-svn उपयोग करती है? या मैं इस पूरी तरह से गलत आ रहा हूँ?मैं गिट-एसवीएन को रिमोट रिपोजिटरी के रूप में एक विशेष एसवीएन शाखा का उपयोग कैसे करूं?

अद्यतन: मैं -T, -b, और -t विकल्प (मेरे मामले में, क्योंकि svn रेपो कई परियोजनाओं है, लेकिन मैं git रेपो केवल परियोजना मैं पर काम कर रहा हूँ शामिल करना चाहते हैं) का उपयोग किया था।

उत्तर

60

इस आसान reference for svn branches in git के लिए बार्ट के ब्लॉग पर मुचस ग्रेसीस। जाहिर है सब मैं जरूरत जब git शाखा का निर्माण, उदाहरण के लिए,

git checkout -b git-topic-branch-foo foo 

जहां foo दूरस्थ शाखा का नाम है एक दूरस्थ शाखा निर्दिष्ट करने के लिए किया गया था।

+8

यदि आपने पहले से ही अपनी गिट शाखा बनाई है, तो आप इसे svn शाखा पर रीबेज करने के लिए 'गीट रीबेस' का भी उपयोग कर सकते हैं। – rampion

+0

http://www.jukie.net/~bart/blog/svn-branches-in-git त्रुटि 500 ​​लौटाता है। क्या ब्लॉग स्थानांतरित हो गया है या कुछ? – Henry

+0

धन्यवाद, यह गैर-अलग राज्य में शाखा की जांच करने के लिए गिट प्राप्त करने का एकमात्र तरीका प्रतीत होता है। –

1

मैं गिट-एसवीएन का उपयोग करता हूं लेकिन मैंने उन सुविधाओं का उपयोग नहीं किया है जो एसवीएन शाखाओं के साथ अंतःक्रिया करते हैं। ऐसा कहकर, मैंने देखा कि आपके द्वारा अनुसरण किए जाने वाले ट्यूटोरियल में svn init git करने के लिए -T, -b, -t विकल्प का उपयोग नहीं किया गया था। ये विकल्प गिट-एसवीएन बताते हैं कि अपस्ट्रीम ट्रंक/शाखाओं/टैग निर्देशिकाओं का नाम क्या है, जो आपकी स्थिति में महत्वपूर्ण हो सकता है।

+0

धन्यवाद, ग्रेग। दुर्भाग्य से मेरे लिए, यह मेरे सेटअप और ब्लॉग में से एक के बीच का अंतर है। –

30

आप इसे भी देख सकते हैं: git-svn is a gateway drug - robby on rails

मैं जब मुझे यकीन है कि अपने स्थानीय शाखा सही दूरस्थ SVN शाखा की ओर इशारा करते था बनाने के लिए आवश्यक कुछ इस तरह इस्तेमाल किया:

git branch -r 

दूरस्थ शाखा का नाम मैं ट्रैकिंग होना चाहते हैं पाने के लिए। तब

git reset --hard remotes/svn-branch-name 

स्पष्ट रूप से एक अलग दूरदराज के शाखा को इंगित करने के लिए अपने स्थानीय शाखा बदलने के लिए।

+2

+1 - हर्ड चीज़ - बस मैं क्या कर रहा था :) –

+1

यह स्थानीय शाखा को रिमोट svn शाखा की वर्तमान स्थिति में अपडेट करने के लिए मजबूर करने के लिए एक मैन्युअल प्रक्रिया है। जैसा कि मैंने इसे पढ़ा है, वह गिट की रिमोट ट्रैकिंग फीचर्स और एसवीएन में एक विशिष्ट शाखा को स्वचालित रूप से रिमोट ट्रैक करने के लिए गिट को कॉन्फ़िगर करने के साथ अधिक है। –

9

मुझे पहले 'गिट svn fetch' चलाने की आवश्यकता थी, क्योंकि जिस शाखा को मैं जोड़ना चाहता था उसके गिट क्लाइंट के बाद बनाया गया था।

+0

धन्यवाद, इस टिप के लिए, और एक नोट के रूप में, यदि आपको लगता है कि आप 'git svn fetch' चलाने के बाद, git/svn/refs/remotes में रिमोट देख सकते हैं, और यदि कोई नया है, तो उसे वहां दिखाना चाहिए । –

+0

.git में देखने के बारे में सावधान, वहां सामान बदल सकते हैं। विशेष रूप से, रेफरी को कभी-कभी पैक-रेफ में पैक किया जा सकता है, खासकर अगर वे ज्यादा नहीं बदलते हैं, और ढीले दिखाई नहीं देंगे, भले ही वे मौजूद हों। गिट शो-रेफ यह बेहतर करता है, और (शायद) गिट शाखा -r बेहतर – ComputerDruid

+1

यदि आप चेकआउट-बी गिट-विषय-शाखा-नाम रिमोट-शाखा-नाम 'चलाते हैं और' घातक: गिट चेकआउट: पथ अपडेट करना स्विचिंग शाखाओं के साथ असंगत है। फिर 'गिट शाखा -आर' चलाएं, और यदि आपको शाखा नहीं दिखाई देती है, तो वह तब होता है जब 'गीट svn fetch' की आवश्यकता होती है। ('गिट एसवीएन रीबेज' नई शाखा नहीं खींच पाएगा, लेकिन 'गीट एसवीएन fetch' होगा) –

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