2011-01-14 14 views
5

हमने हाल ही में हमारे एसवीएन सर्वर को एक डेटा सेंटर से दूसरे डेटा में ले जाया है, और सर्वर का आईपी बदल गया है। मैंने अपनी वास्तविक कार्य प्रतिलिपि अपडेट करने के लिए svn switch --relocate old_url new_url का उपयोग किया, और यह खुश था।एक एसवीएन भंडार के बाद git-svn स्थानांतरित हो गया है?

हालांकि, मैं अपने अधिकांश काम को भंडार के स्थानीय गिट संस्करण (गिट-एसवीएन का उपयोग करके) में करता हूं। SVN सर्वर जाने के बाद, मैं .git/config में रेपो के लिए URL अद्यतन, लेकिन जब मैं dcommit इस्तेमाल करने की कोशिश, मैं इस त्रुटि मिलती है:

Unable to determine upstream SVN information from HEAD history. 
Perhaps the repository is empty. at /home/me/libexec/git-core/git-svn line 520. 

मैं क्या याद आ रही है?

उत्तर

4

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

here वर्णित कामकाज हैं जो दिखते हैं कि उन्हें काम करना चाहिए, लेकिन वे बिल्कुल सरल नहीं हैं और मैंने उनमें से किसी को भी कोशिश नहीं की है।

+0

धन्यवाद। मुझे डर था कि यह मामला होगा, लेकिन मैं अपना काम खोने के बारे में ज्यादा चिंतित नहीं हूं। एसवीएन सामान को दोबारा आयात करने के बाद मैं हमेशा अपनी शाखाओं में खींच सकता हूं। – codekoala

+1

मैंने [GitSvnSwitch] (https://git.wiki.kernel.org/index.php/GitSvnSwitch) पर दिए गए लिंक में वर्णित कार्यवाही की कोशिश की है और यह मेरे लिए काम करता है। – ldav1s

+0

हां, मेरे '.git/config' में उसी' url' और 'rewriteRoot' का उपयोग करके भी मेरे लिए चाल है! बहुत खुबस! – codekoala

0

दोनों रिपोज़ क्लोन करके, उन्हें विलय करके, गिट-एसवीएन मेटाडेटा का पुनर्निर्माण करके गिट-एसवीएन के साथ ऐसा करना संभव है।

मेरा उत्तर here देखें।