2012-07-06 12 views
7

git svn clone -s https://svn.example.com/repo/ कर जबकि मैं निम्नलिखित उत्पादन प्राप्त किया:Git-SVN क्लोन विफल रहता है "घातक: कोई मान्य वस्तु का नाम"

r3073 = a6132f3a937b632015e66d694250da9f606b8333 (refs/remotes/trunk) 
Found possible branch point: https://svn.example.com/repo/trunk => https://svn.example.com/repo/branches/v1.3, 3073 
W: Refspec glob conflict (ref: refs/remotes/trunk): 
expected path: repo/branches/trunk 
    real path: repo/trunk 
Continuing ahead with repo/trunk 
W: Refspec glob conflict (ref: refs/remotes/trunk): 
expected path: repo/branches/trunk 
    real path: repo/trunk 
Continuing ahead with repo/trunk 
W: Refspec glob conflict (ref: refs/remotes/trunk): 
expected path: repo/branches/trunk 
    real path: repo/trunk 
Continuing ahead with repo/trunk 
W: Refspec glob conflict (ref: refs/remotes/trunk): 
expected path: repo/branches/trunk 
    real path: repo/trunk 
Continuing ahead with repo/trunk 
fatal: Not a valid object name refs/remotes/tags/Sync Controllers 
cat-file commit refs/remotes/tags/Sync Controllers: command returned error: 128 

git branch -a चल देता है:

remotes/tags/Sync%20Controllers 
remotes/tags/v1.1 
remotes/trunk 
remotes/v1.2 

मुझे लगता है कि समस्या यह है कि है "रिमोट/टैग/सिंक कंट्रोलर"! = "रिमोट/टैग/सिंक% 20 कंट्रोलर"।

+0

साथ ही देखें: https://bugs.launchpad.net/ubuntu/+source/git/+bug/786942 – kenorb

+0

संबंधित: http://stackoverflow.com/questions/7584605/git-svn-dcommit- विफल रहता है-क्योंकि-रिपॉजिटरी-नाम-युक्त-ए-स्पेस वहां पैच उपलब्ध है। – kenorb

उत्तर

12

एसवीएन पर टैग में एक जगह है, लेकिन गिट में टैग में यह स्थान %20 (यूआरएल एन्कोडेड) में परिवर्तित हो गया था। हल करने के लिए यह सिर्फ मैन्युअल रूप से शब्दशः नाम के साथ एक नया टैग को जोड़ने:

cd .git/refs/remotes/tags/ 
mv Sync%20Controllers Sync\ Controllers 

फिर git svn clone आदेश चला।

(आम तौर पर आप git tag OLDTAG NEWTAG के साथ ऐसा होता है लेकिन Git मुझ में एक स्थान के साथ एक टैग परिभाषित करने की अनुमति नहीं थी। टैग फ़ाइलें बस पाठ प्रासंगिक प्रतिबद्ध के हैश युक्त फ़ाइलें हैं।)

+2

मैंने उस समाधान को आजमाया, मुझे निम्न त्रुटि मिलती है: 'घातक: संदर्भ में अमान्य प्रारूप है: 'रेफ/रिमोट/टैग/स्पेस के साथ'। इसे कैसे हल करें? –

+0

(मैं गिट संस्करण 1.8.3.msysgit.0 का उपयोग कर रहा हूं) –

+0

यह मेरे लिए फाइल नाम में '~' चरित्र वाले टैग के साथ काम करता है। धन्यवाद। – Flimzy

3

कई गिट-एसवीएन अनुवाद समस्याओं से बचने के लिए आप गिट-एसवीएन सर्वर-साइड विकल्प, SubGit का उपयोग कर सकते हैं।

मैं एक सबगिट डेवलपर हूं और कह सकता हूं कि हमने ऊपर वर्णित चरित्र अनुवाद मुद्दों को हल करने के लिए बहुत कुछ किया है; इस विशेष मामले टैग में refs/tags/Sync+Controllers टैग में अनुवाद किया जाएगा।

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

+0

क्या मुझे सर्वर पर सबगिट इंस्टॉल करना है या यह आवश्यक नहीं है? अगर मेरे पास मेरे svn repo में व्यवस्थापक पहुंच नहीं है तो क्या होगा? – kenorb

+0

सबगिट 2.0 के साथ आपको अपने भंडार में व्यवस्थापक पहुंच नहीं है। आपको पूर्ण फीचर्ड लेखकों मैपिंग प्राप्त करने के लिए प्री-रेप्रप्रॉप-चेंज हुक को सक्षम करने की आवश्यकता होगी, लेकिन संभावना है कि यह पहले से ही सक्षम है। अधिक जानकारी के लिए http://subgit.com/eap/ देखें। –

0

मुझे विश्वास है कि रिक्त स्थान के साथ समस्या गिट> = 1.8.0 में देखें (देखें: #786942)।

तो आपको इसे अपग्रेड करना चाहिए।

मैंने इसका परीक्षण किया है और ऐसा लगता है कि यह गिट के हाल के संस्करण में काम करता है।

देखें GitHub होम पेज: https://github.com/git/git

+3

मैं 1.8.5.2 का उपयोग कर रहा हूं और इस समस्या में भाग गया – krinker

+0

और क्या आपको लगता है कि यह आपकी शाखा/टैग नाम आदि में रिक्त स्थान या कुछ विशेष पात्रों से संबंधित है? – kenorb

+0

मैंने इस समस्या को गिट = 1.8.3.1, svn = 1.7.14 और svn2git = 2.3.2 एसवीएन शाखा नामों में रिक्त स्थान से संबंधित भी देखा है। – jplandrain

1

मैं आज इस मुद्दे में भाग है, और, मैं सिर्फ रन पुनः चलाने

git branch -r -d partialPayment%202.4 

और git इस शाखा है जो एक गति में यह महत्वपूर्ण नहीं है शामिल माना svn fetch यह वर्तमान शाखा छोड़ दिया और अगले एक को पकड़ना जारी रखें।

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