2011-07-09 2 views
10

साथ मिरर को पुन: सक्षम। जो हमेशा ठीक काम करता है। हालांकि, वर्चुअल सर्वर के क्रैश के कारण और बैकअप नहीं होने के कारण मुझे फिर से दर्पण सेट करना होगा। भंडार मैं ट्रैक करने की जरूरत लगभग 1200 से बड़ा करता है और (है, जो Git दर्पण के लिए मुख्य कारण है यह इतना तेज है के रूप में रेपो की एक प्रति चेकआउट करने के लिए) फ़ाइलों का एक बहुत कुछ शामिल है।कुछ समय अब ​​मैं एक Git संग्रह का सववर्सन रिपॉजिटरी मिरर किया गया है के लिए Git-svn

क्या मैं अब क्या करने की जरूरत मेरी हाल में क्लोन Git दर्पण मेकअप सबवर्सन भंडार फिर से ट्रैक करते हैं। मैं नई दूरस्थ रेफरी जोड़ने कोई समस्या नहीं मिल गया है, लेकिन यह पता लगाने की कैसे SVN फिर Git शाखा में करता है खींचने के लिए सक्षम होने के लिए नहीं कर पा रहे।

एक त्रुटि मैं प्राप्त करने के लिए लग रहे हैं Unable to determine upstream SVN information from working tree history है।

मैं कैसे पुन: सक्षम एक मौजूदा Git शाखा केवल पीछे एक जोड़े सबवर्सन रिपोजिटरी से करता है कि पर एक सबवर्सन भंडार मिरर कर सकते हैं?

+0

जहाँ तक मुझे पता है, वहाँ है कि करने के लिए कोई आसान तरीका है।(और यदि कोई जटिल तरीका है, तो मुझे इसके बारे में पता नहीं है।) – svick

उत्तर

11

इसे फिर से काम करने का सबसे आसान तरीका मूल से .git/svn निर्देशिका पर प्रतिलिपि बनाना है, क्योंकि यह अतिरिक्त एसवीएन मेटाडेटा ट्रैक किया जाता है (यह मानते हुए कि गिट-एसवीएन कॉन्फ़िगरेशन समान है)।

हालांकि, बाद से आप इसे इस कोशिश की जरूरत नहीं है:

  1. किसी अन्य मापदंडों आप से पहले इस्तेमाल के साथ git svn init http://hostname/svn/repository (? शायद -s)

  2. git checkout नवीनतम SVN से करते हैं।

  3. को पुन: बनाएं git-svn रेफरी: git update-ref refs/remotes/git-svn HEAD (या यदि आप -s इस्तेमाल किया, इस refs/remotes/trunk बजाय होना चाहिए)

  4. svn के बाद से वर्तमान प्रतिबद्ध से नवीनतम लायें: git svn fetch --parent। इसे आपके पूरे इतिहास के लिए गिट-एसवीएन मेटाडेटा का पुनर्निर्माण करना चाहिए।

+0

धन्यवाद, यह चाल है! मैं अभी तक बक्षीस का पुरस्कार नहीं दे सकता (इसे 9 घंटे के लिए इंतजार करना होगा) – Htbaa

+0

मुझे 'गिट चेकआउट' मार्ग को काफी समझ में नहीं आता है। मुझे चेकआउट क्या करना चाहिए? –

+0

एक संभावित उम्मीदवार 'मास्टर' है, जब तक कि आप 'मास्टर' पर काम नहीं कर रहे हैं क्योंकि आपको गिट-एसवीएन से नवीनतम मिला है। मूल रूप से आप 'गिट लॉग' में देखे गए अंतिम प्रतिबद्धता को 'चेकआउट' करना चाहते हैं जिसमें प्रतिबद्ध संदेश में एसवीएन जानकारी है, ताकि गिट-एसवीएन इसे छोड़कर उठा सके। – dahlbyk

0

मैं http://trac.parrot.org/parrot/wiki/git-svn-tutorial पर एक और तरीका मिल गया:

आप फिर से पॉप्युलेट करने के लिए SVN मेटाडाटा है कि जल्दी से किया जा सकता है चाहते हैं GitHub क्लोन

को Git-SVN मेटाडाटा जोड़ा जा रहा है लीह के रेपो ऑफ गहुब के अप-टू-डेट क्लोन को लेकर को अपने .git/config

[svn-remote "svn"] 
     url = https://svn.parrot.org/parrot 
     fetch = trunk:refs/remotes/trunk 

फिर खोजने के लिए इस आदेश चला "शीर्ष प्रतिबद्ध"

git show origin/upstream | head -n 1 

और कहा कि एक फ़ाइल .git/refs/रिमोट/ट्रंक में हैश प्रतिबद्ध डाल (जाहिर की जगह उपरोक्त आदेश से एक के साथ है)

echo c85aaa38b99cedb087e5f6fb69ce6d4a6ac57a0b > .git/refs/remotes/trunk 

और अंत में

git svn fetch