2011-02-14 5 views
10

मैं Git उपयोग करने के लिए और अधिक प्रभावी ढंग परियोजना है जो अपने स्रोत नियंत्रण के लिए सीवीएस का उपयोग करता है पर काम कर रहा प्रबंधन करने के लिए कोशिश कर रहा हूँ, लेकिन मैं समस्या आ रही है add जो एक बहुत लंबे मार्ग वास्तव में है एक फ़ाइल आईएनजी - 276 वर्ण।msys Git और लंबे रास्तों

दुर्भाग्य से, यह फ़ाइल उपकरण मैं उपयोग कर रहा हूँ के साथ भेज दिया है कस्टम आईडीई द्वारा उत्पन्न होता है और यह उपकरण के द्वारा वहाँ होने की उम्मीद है, इसलिए नाम नहीं बदला जा सकता है या ले जाया गया।

बनाने की कोशिश करने के लिए निम्नलिखित का उपयोग करते हुए इस अर्द्ध पठनीय:

<projectpath> - पथ इस परियोजना
<hugepath> के लिए सभी घटकों को पकड़े - पहली फ़ाइल मैं
साथ समस्या आ रही है करने के लिए <projectpath> से पथ <filename> - साथ

[email protected] <projectpath> 
$ git init 
Initialized empty Git repository in <projectpath>/.git/ 

[email protected] <projectpath> (master) 
$ git add <hugepath>/<filename> 
fatal: unable to stat '<hugepath>/<filename>': No such file or directory 

[email protected] <projectpath> (master) 
$ ls -al <hugepath> 
ls: <hugepath>/<filename>: File or path name too long 
total 3 
drwxr-xr-x 3 me Administ  0 May 3 2010 . 
drwxr-xr-x 4 me Administ  4096 May 3 2010 .. 
drwxr-xr-x 2 me Administ  0 May 3 2010 CVS 

msys उपकरण यूएनसी उपसर्ग जो आम तौर पर आप wor की सुविधा देता है का उपयोग करके पथ के साथ काम फ़ाइल मैं समस्या आ रही है के नाम खिड़कियों पर लंबे समय से फाइलों के साथ k, लेकिन इस पथ सीमा के आस-पाने के लिए प्रतीत नहीं होता:

[email protected] <projectpath> (master) 
$ git add //?/<projectpath>/<hugepath>/<filepath> 
fatal: Too long path: //?/<projectpath>/<hugep (intin - the path displayed is trimmed) 

[email protected] <projectpath> (master) 
$ ls-al //?/<projectpath>/<hugepath>/ 
ls: //?/<projectpath>/<hugepath>/.: No such file or directory 
ls: //?/<projectpath>/<hugepath>/<filepath>: No such file or directory 
total 2 
drwxr-xr-x 4 me Administ  4096 May 3 2010 .. 
drwxr-xr-x 0 me Administ  0 May 3 2010 CVS 

कोई समाधान लंबे Windows पर Git का उपयोग करके पथ के साथ फ़ाइलों को ट्रैक करने के लिए आप के बारे में पता कर रहे हैं?

मैं विंडोज विस्टा बिजनेस, एसपी 1 पर 1.7.4.msysgit.0 का उपयोग कर रहा हूं।

+0

मुझे 'me @ work' पसंद है, क्या यह आपका वास्तविक उपयोगकर्ता नाम है या आपने इसे बनाया है? – trysis

+2

समस्या msysgit 1.9 में तय की गई है। "गिट पुल त्रुटि त्रुटि फ़ाइल के साथ निरस्त" गिट खींचने का मेरा जवाब देखें "http://stackoverflow.com/a/22831095/151641 – mloskot

उत्तर

0

यह विंडोज की एक सीमा है, जो वास्तव में मनमाने ढंग से लंबे फ़ाइल नामों का समर्थन करता है और जब तक मैं याद कर सकते हैं के लिए ऐसा किया है नहीं है।

मुझे लगता है कि आप //?/ का उपयोग कर रहे हैं। documentation के अनुसार आपको \\?\ का उपयोग करना चाहिए। \\?\ का उपयोग करते समय फॉरवर्ड स्लैश पीछे की ओर स्लैश में परिवर्तित नहीं हुआ है।

+1

MSysGit (और Win32 पर पोर्ट किए गए अन्य POSIX प्रोग्राम) में यूएनसी पथों तक पहुंचने का यह तरीका है – CharlesB

+0

समस्या संभवतः 'POSIX' इम्यूलेशन परत में है। यदि यह एक उचित मूल विंडोज पोर्ट था तो आप ठीक होंगे। –

11

सीमा 25 9 वर्ण है, इसलिए आप बहुत दूर नहीं हैं। यदि <hugepath>/<filename> की लंबाई कम से कम 256 वर्ण है, तो आप "subst" चाल का उपयोग कर सकते हैं:

subst P: <projectpath> 
फिर mysysgit साथ

:

एक विकल्प एक Windows कमांड शेल से subst उपयोग करने के लिए है

cd /p 
<git commands> 

या कि अगर काम नहीं करता है, एक विंडोज विस्टा/7/2008 आदेश खोल (RunAs व्यवस्थापक) से आप एक कठिन लिंक बना सकते हैं:

mklink /D C:\p <projectpath> 
mysysgit साथ

तब:

C: 
cd \p 
<git commands> 
+0

सब कमांड पूरी तरह से काम किया। – summerian

10

Cygwin, और इसलिए इसकी Git पैकेज, पारदर्शी रूप से इस तरह के लंबे रास्तों का समर्थन है, स्वचालित रूप से UNC पथ के लिए उन्हें मैप करके करता है।

+1

msysgit के साथ एक ही समस्या थी। साइगविन की गिट बचाई गई। –

0

एक गिट विकल्प है जो आपको लंबे पथ को संभालने की अनुमति देता है: core.longpaths। यह गिट 1.9.0 के बाद उपलब्ध है।