2012-10-17 8 views
5

में एक एसवीएन रेपो सेट करने का प्रयास कर रहे हैं हम अपने सामान्य svn की बजाय एक भंडार प्रणाली के रूप में गिट का उपयोग करके परीक्षण कर रहे हैं। एक svn भंडार है जिसे हमें हमेशा चाहिए। Svn में हम svn propset के साथ svn: externals के रूप में इस संग्रह को लिंक करते हैं। यह सुनिश्चित करता है कि वास्तव में उस विशेष, भारी उपयोग, भंडार की केवल एक वैश्विक प्रति है।गिट

अब हमारे पास गिट रिपॉजिटरीज़ हैं, मैं एसवीएन रिपोजिटरी को अनिवार्य रूप से उसी तरह से लिंक करना चाहता हूं जैसा कि कोई भी svn: externals के साथ कर सकता है। मैं कुछ ऐसा करने में सफल रहा हूं। मैं गिट करने के लिए नया हूँ, कृपया किसी अज्ञानता से क्षमा करें।

शुद्ध Git रेपो में (मैं git clone [email protected]:mygitrepo के माध्यम से क्लोन है) मैं प्रयोग किया है:

git svn clone svn+ssh://[email protected]/path/to/mysvnrepo mysvnrepo 

अन्य SVN भंडार की एक प्रति प्राप्त करने के लिए। यह बहुत अच्छा काम करता है, मैं mysvnrepo निर्देशिका में git svn rebase के माध्यम से एसवीएन रेपो में नए संशोधन प्राप्त कर सकता हूं और git svn dcommit के माध्यम से परिवर्तन कर सकता हूं।

मुख्य Git भंडार मैं प्रयोग किया जाता करने के लिए इस गठबंधन करने के लिए:

git add mysvnrepo 
git commit mysvnrepo 
git push 

अगर मैं अब, Git रेपो कहीं और (फिर git clone [email protected]:mygitrepo के साथ) क्लोन, जबकि मैं के साथ mysvnrepo निर्देशिका मिल मुद्दा मैं कर रहा हूँ है सभी फाइलें, मैं एसवीएन रेपो से बातचीत नहीं कर सकता। मुझे त्रुटि मिलती है: "गिट svn rebase के बाद" काम करने वाले पेड़ इतिहास से अपस्ट्रीम एसवीएन जानकारी निर्धारित करने में असमर्थ "। संभावित रूप से संबंधित, mysvnrepo निर्देशिका में कोई .git फ़ोल्डर नहीं है जब मैं इसे कहीं और क्लोन करता हूं (यह वह जगह है जहां svn जानकारी मूल रेपो में संग्रहीत होती है)।

मैंने इस समस्या को थोड़ा सा खोजा है, लेकिन इसके सभी संदर्भों को एसवीएन रेपो को पहले स्थान पर काम करने में समस्याएं आ रही हैं, जबकि मेरी समस्या यह किसी अन्य उपयोगकर्ता के लिए काम करने जा रही है।

शायद मेरी समस्या यह है कि कैसे svn repo को गिट रेपो में जोड़ने/प्रतिबद्ध/धक्का देना है? यानी है: git add mysvnrepo; git commit mysvnrepot; git push; ऐसा करने का सही तरीका?

संपादित करें: अधिक संदर्भ प्रदान करने

+0

आप भंडार को कैसे क्लोन करते हैं? 'गिट क्लोन 'का उपयोग करके या एसवीएन से इसे जांचकर ...? – siegi

+0

क्या आपका मतलब है कि गिट रिपोजिटरी मैं काम कर रहा हूं? मूल गिट भंडार दोनों के लिए और दूसरे उपयोगकर्ता के लिए मैं 'गिट क्लोन [email protected] का उपयोग करता हूं: mygitrepo' –

उत्तर

2

ऐसा लगता है कि ऐसा करने के लिए कोशिश कर रहे हैं आप svn:externals के साथ होता है, दूसरे के अंदर एक Git भंडार में शामिल है क्या लग रहा है सुधार हुआ है। ऐसा लगता है कि शामिल भंडार git svn के साथ बनाया गया था; इसका वास्तव में कोई प्रभाव नहीं होगा कि आप उस भंडार को दूसरे के अंदर कैसे शामिल करते हैं।

आपको उस गिट रिपोजिटरी को बनाना होगा जिसे आप कहीं अन्य सार्वजनिक रूप से उपलब्ध करना चाहते हैं। इसके बाद आप इसे या तो git submodule या git subtree का उपयोग कर शामिल कर सकते हैं। न तो svn:externals की तरह काम करें; हालांकि, git subtree गिट रिपोजिटरी के अन्य उपयोगकर्ताओं के लिए अधिक शुरुआती दोस्ताना हो सकता है।

आप किस भाषा का उपयोग कर रहे हैं और आपका सॉफ़्टवेयर क्या है, इस पर निर्भर करते हुए, आप भारी उपयोग की गई भंडार के लिए एक अलग गिट भंडार बनाने पर विचार कर सकते हैं, और इसे अपनी खुद की स्टैंडअलोन लाइब्रेरी, जार फ़ाइल, या आपके पास क्या बना सकते हैं ।

उपरोक्त केवल तभी काम करता है यदि आप पूरी तरह से गिट पर स्विच करने की योजना बना रहे हैं। यदि आपकी कुछ टीम थोड़ी देर के लिए एसवीएन में काम करने जा रही है, तो git substree या git submodule आपके लिए काम नहीं करेगा।

इसके बजाय, के साथ svn: externals को अनुकरण करने के लिए this question पर एक नज़र डालें।

गिट उपयोग के लिए सभी को सेट अप करने के लिए, git svn मैन पेज में "मूल उदाहरण" के तहत अंतिम उदाहरण का पालन करें। पूर्ण करने के बजाय प्रत्येक व्यक्ति git clone पर स्थानीय रूप से कुछ आदेश चला सकता है।

+0

मुद्दा यह है कि मैं चाहता हूं कि लोग गिट रिपोजिटरी से' git 'का उपयोग करके svn भंडार में वापस आ सकें svn dcommit'। एक ही उद्देश्य के लिए एक वैश्विक गिट भंडार बनाना काम करेगा, लेकिन यह svn भंडार से अलग होगा; यह अवांछनीय है। एक समाधान यह है कि प्रत्येक व्यक्ति मैन्युअल रूप से एसवीएन क्लोन को एसवीएन क्लोनेट कर देता है, फिर उन्हें प्रतिबद्ध करने में सक्षम होना चाहिए (जैसे मैं इसे क्लोन कर सकता हूं) –

+0

मैंने अपने सेटअप को अपडेट किया है कि आप उस सेटअप में क्या कर सकते हैं इसके बारे में कुछ विवरण शामिल करें । एसवीएन से एसवीएन के साथ गिट करने के लिए धीमी/आंशिक माइग्रेशन: बाहरी थोड़ा अजीब है। उम्मीद है कि यह आपको या आपकी टीम को डरा नहीं देगा; एक बार जब आप इसका इस्तेमाल करते हैं तो गिट वास्तव में अद्भुत होता है। – jbowes

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

  • कोई संबंधित समस्या नहीं^_^