2008-11-03 13 views
11

मेरे पास नीचे की तरह एक एसवीएन रिपोजिटरी संरचना है। हम विभिन्न रिलीज रखरखाव शाखाओं के लिए शाखाओं के तहत कई स्तरों का उपयोग कर रहे हैं, साथ ही फीचर शाखाओं के लिए एक निर्देशिका।मैं git-svn का उपयोग कर गिट में विभिन्न निर्देशिकाओं में रूट की गई svn शाखाओं को कैसे आयात करूं?

गिट-एसवीएन इनिट एक-शाखाओं के तर्क के साथ काम करता प्रतीत होता है, यानी ऐसा लगता है कि सभी शाखाएं एक ही स्थान पर होंगी।

trunk 
branches 
    1.1 
    1.2.1 
    1.2.2 
    1.2 
    1.2.1 
    1.2.2 
    1.2.3 
    features 
    feature1 
    feature2 

इस पर विचार करने के तरीके पर कोई विचार?

धन्यवाद

+0

शायद यह 2008 से बदल गया है, लेकिन आजकल "आप एक से अधिक' '- टैग्स 'और/या' --branches'' विकल्पों को निर्दिष्ट कर सकते हैं, यदि आपका सबवर्जन रिपोजिटरी कई पथों के तहत टैग या शाखाओं को रखता है । " ('मैन गिट svn शाखा'' से उद्धृत) – steffen

उत्तर

13

अपने कॉन्फ़िग फ़ाइल में, की तरह कुछ करने के लिए SVN-रिमोट अनुभाग सेट:

[svn-remote "svn"] 
    url = svn://svnserver/repo 
    fetch = trunk:refs/remotes/trunk 
    branches = branches/*/*:refs/remotes/* 
    tags = tags/*:refs/remotes/tags/* 

इससे आप नेस्टेड शाखाओं हड़पने देना चाहिए।

+0

यह पूरी तरह से मेरी समस्या हल करता है। मैं थोड़ी देर के लिए इसका इस्तेमाल कर रहा हूं। इसके बाद गिट और/या एसवीएन के बाद के संस्करणों की आवश्यकता थी, खेद है कि मैं विवरण नहीं जानता लेकिन वर्तमान में गिट 1.6.2.5 और svn 1.5.1 का उपयोग कर रहा हूं और यह इसके साथ ठीक काम करता है। – CaptainPicard

+0

मैं यह कॉन्फ़िगरेशन कहां रखूं? –

+0

~/myrepo/.git/config :) –

0

यह शाखा उप निर्देशिकाओं से प्रत्येक के लिए एक git रेपो बनाने के लिए संभव होगा?

+0

और फिर, क्या, उन सभी को एक साथ मिलाएं और तथ्य के बाद उचित शाखाएं/टैग बनाएं? एक आसान समाधान होना चाहिए –

+0

सबसे आसान समाधान आपकी शाखा निर्देशिकाओं को एक निर्देशिका में फ़्लैट करना होगा, जो न केवल 'गिट' खुश होगा बल्कि आपके रेपो को 'svn' सम्मेलनों के साथ भी लाएगा। मुझे यकीन नहीं है कि आपके मामले में कितना व्यावहारिक है। –

1

सम्मेलन के अनुसार, सबवर्जन शाखाएं सबवर्सन रिपोजिटरी में एक 'शाखा' पथ में रहते हैं, इसलिए मुझे आश्चर्य नहीं है कि git-svn यह धारणा बनाता है।

  1. सबवर्सन फ़्लैट branches पथ, एक नामकरण परंपरा का उपयोग कर अद्वितीय पहचान रखने के लिए और मौजूदा संरचना के विचार:

    मैं निम्नलिखित सुझाव देंगे (ध्यान दें, तो आप इस आपरेशन में कुछ इतिहास खो सकते हैं) ।

  2. प्रदर्शन git-svn
  3. अपने अभ्यासों के अनुरूप git भंडार में चीजें ले जाएं।

losing history के खतरे को कितनी अच्छी तरह git-svn भिन्न रास्तों से कॉपी प्रक्रियाएं इस प्रकार पर निर्भर करता है। मैंने हाल ही में उपversण भंडार (1.4-आईएसएच) माइग्रेट करने में इस समस्या में भाग लिया है।

+0

क्या आपका मतलब है कि मेरे कंप्यूटर पर svn सर्वर (जो मैं नहीं कर सकता) पर svn शाखाएं flatten? –

0

आप प्रत्येक शाखा, या संभवतः शाखाओं की निर्देशिकाओं में से प्रत्येक के लिए git svn रिमोट जोड़ सकते हैं। प्रारंभिक git svn fetch हमेशा के लिए ले जाएगा, लेकिन जो मैं समझता हूं उससे इसे काम करना चाहिए।

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

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