2013-01-23 44 views
7

मैं कुछ बदलावों को धक्का देने की कोशिश कर रहा हूं, लेकिन git push लटकता है। जब मैं git push चलाता हूं, तो मुझे कोई आउटपुट दिखाई नहीं देता है, और कुछ भी नहीं हो रहा है। top में कोई गतिविधि नहीं है, और कुछ भी होने का कोई संकेत नहीं है।गिट पुश (डंब) https पर है, HTTP/1.1 100 जारी रखें

मैं गिट होस्टिंग सेवा को नियंत्रित नहीं करता हूं। मैं एक HTTPS यूआरएल का उपयोग कर रहा हूँ। मेरा मानना ​​है कि होस्टिंग सेवा गूंगा HTTPS का उपयोग कर रही है, न कि गिट के "स्मार्ट-HTTP" प्रोटोकॉल। क्लाइंट साइड पर, मैं मैक ओएस एक्स का उपयोग करता हूं, और मुझे होमब्री के माध्यम से गिट 1.8.1.1 इंस्टॉल किया गया है (लेकिन एक्सकोड के कमांड लाइन टूल में शामिल गिट के संस्करण का उपयोग करने से कोई फर्क नहीं पड़ता)। लॉग आउट करना और वापस लॉग इन करना प्रतीत नहीं होता है। मैं एक अलग लिनक्स बॉक्स से इस होस्टिंग सेवा/भंडार को खींच और धक्का दे सकता हूं।

नीचे कुछ डिबगिंग आउटपुट कि git push फांसी से पता चलता बाद ग्राहक एक PROPFIND अनुरोध जारी करता है, सर्वर से एक HTTP/1.1 100 Continue प्रतिक्रिया मिलती है, और फिर कुछ नहीं होता है: यह सिर्फ अटक है।

मैं यह कैसे काम कर सकता हूं? क्या कोई समस्या निवारण चरण है जिसे मैं कोशिश कर सकता हूं?

$ GIT_CURL_VERBOSE=1 git push -v 
Pushing to https://secure2.svnrepository.com/redacted/redacted/ 
* About to connect() to secure2.svnrepository.com port 443 (#0) 
* Trying 67.228.18.88... 
* Connected to secure2.svnrepository.com (67.228.18.88) port 443 (#0) 
* Connected to secure2.svnrepository.com (67.228.18.88) port 443 (#0) 
* SSL connection using DHE-RSA-AES256-SHA 
* Server certificate: 
* subject: C=US; OU=Domain Control Validated; CN=secure2.svnrepository.com 
* start date: 2012-01-09 16:16:59 GMT 
* expire date: 2015-02-09 02:52:45 GMT 
* subjectAltName: secure2.svnrepository.com matched 
* issuer: O=AlphaSSL; CN=AlphaSSL CA - G2 
* SSL certificate verify ok. 
> GET /redacted/redacted/info/refs?service=git-receive-pack HTTP/1.1 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Accept-Encoding: gzip 
Pragma: no-cache 

< HTTP/1.1 401 Authorization Required 
< Date: Wed, 23 Jan 2013 03:29:36 GMT 
< Server: Apache/2.2.3 (Red Hat) 
< WWW-Authenticate: Basic realm="redacted" 
< Content-Length: 493 
< Content-Type: text/html; charset=iso-8859-1 
< 
* Ignoring the response-body 
* Connection #0 to host secure2.svnrepository.com left intact 
* Issue another request to this URL: 'https://secure2.svnrepository.com/redacted/redacted/info/refs?service=git-receive-pack' 
* Re-using existing connection! (#0) with host (nil) 
* Connected to (nil) (67.228.18.88) port 443 (#0) 
* Server auth using Basic with user 'redacted' 
> GET /redacted/redacted/info/refs?service=git-receive-pack HTTP/1.1 
Authorization: Basic redacted= 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Accept-Encoding: gzip 
Pragma: no-cache 

< HTTP/1.1 200 OK 
< Date: Wed, 23 Jan 2013 03:29:36 GMT 
< Server: Apache/2.2.3 (Red Hat) 
< Last-Modified: Wed, 23 Jan 2013 03:00:40 GMT 
< ETag: "143802e-3b-e6374600" 
< Accept-Ranges: bytes 
< Content-Length: 59 
< Content-Type: text/plain; charset=UTF-8 
< 
* Connection #0 to host (nil) left intact 
* Re-using existing connection! (#0) with host (nil) 
* Connected to (nil) (67.228.18.88) port 443 (#0) 
* Server auth using Basic with user 'redacted' 
> GET /redacted/redacted/HEAD HTTP/1.1 
Authorization: Basic redacted= 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Accept-Encoding: gzip 
Pragma: no-cache 

< HTTP/1.1 200 OK 
< Date: Wed, 23 Jan 2013 03:29:36 GMT 
< Server: Apache/2.2.3 (Red Hat) 
< Last-Modified: Wed, 16 Jan 2013 21:05:31 GMT 
< ETag: "d1802c-17-3d0d7cc0" 
< Accept-Ranges: bytes 
< Content-Length: 23 
< Content-Type: text/plain; charset=UTF-8 
< 
* Connection #0 to host (nil) left intact 
* About to connect() to secure2.svnrepository.com port 443 (#0) 
* Trying 67.228.18.88... 
* Connected to secure2.svnrepository.com (67.228.18.88) port 443 (#0) 
* Connected to secure2.svnrepository.com (67.228.18.88) port 443 (#0) 
* SSL connection using DHE-RSA-AES256-SHA 
* Server certificate: 
* subject: C=US; OU=Domain Control Validated; CN=secure2.svnrepository.com 
* start date: 2012-01-09 16:16:59 GMT 
* expire date: 2015-02-09 02:52:45 GMT 
* subjectAltName: secure2.svnrepository.com matched 
* issuer: O=AlphaSSL; CN=AlphaSSL CA - G2 
* SSL certificate verify ok. 
> PROPFIND /redacted/redacted/ HTTP/1.1 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Depth: 0 
Content-Type: text/xml 
Content-Length: 181 
Expect: 100-continue 

< HTTP/1.1 100 Continue 
* We are completely uploaded and fine 
< HTTP/1.1 401 Authorization Required 
< Date: Wed, 23 Jan 2013 03:29:37 GMT 
< Server: Apache/2.2.3 (Red Hat) 
< WWW-Authenticate: Basic realm="redacted" 
< Content-Length: 493 
< Content-Type: text/html; charset=iso-8859-1 
* the ioctl callback returned 0 
< 
* Ignoring the response-body 
* Connection #0 to host secure2.svnrepository.com left intact 
* Issue another request to this URL: 'https://secure2.svnrepository.com/redacted/redacted/' 
* Re-using existing connection! (#0) with host (nil) 
* Connected to (nil) (67.228.18.88) port 443 (#0) 
* Server auth using Basic with user 'redacted' 
> PROPFIND /redacted/redacted/ HTTP/1.1 
Authorization: Basic redacted= 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Depth: 0 
Content-Type: text/xml 
Content-Length: 181 
Expect: 100-continue 

< HTTP/1.1 100 Continue 

मैं अपने मैक ओएस एक्स मशीन पर strace की जरूरत नहीं है, और मैं समझ नहीं dtruss उपयोग करने के लिए कैसे क्या प्रणाली कॉल उस पर व्यतीत कर रहा है देखने के लिए क्योंकि dtruss मुझे आवश्यकता है जड़ होने के लिए, और उसके बाद गिट पुश अलग-अलग काम करेगा।

अद्यतन: मैंने इसे लिनक्स मशीन पर 1.8.1.4 के साथ और स्ट्रेस के साथ पुन: उत्पन्न किया है। रनिंग strace निम्नलिखित की तरह कुछ पता चलता इससे पहले कि यह लटकी हुई है:

sendto(4, <redacted>..., 314, 0, NULL, 0) = 314 
recvfrom(4, "\27\3\1\0000", 5, 0, NULL, NULL) = 5 
recvfrom(4, "E\202\271\21\236p\200\346\374\3641\355\t\275\rLi\202T)\326\271l/\351\f\357\2769Jb\22"..., 48, 0, NULL, NULL) = 48 
select(5, [4], [4], [], {0, 729000}) = 1 (out [4], left {0, 728997}) 
poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=4, events=POLLOUT|POLLWRNORM}], 2, 0) = 1 ([{fd=4, revents=POLLOUT|POLLWRNORM}]) 
select(5, [4], [], [], {0, 729000}) = 0 (Timeout) 
poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) 
...last 2 lines repeat infinitely... 

तो यह सर्वर से कुछ प्राप्त करने की उम्मीद फांसी जा रहा है।

इसके अलावा, मैंने पुराने लिनक्स बॉक्स पर गिट 1.7.4.4 पर GIT_CURL_VERBOSE=1 git push -v के साथ एक समान ट्रेस की कोशिश की, और यह उसी उपसर्ग के साथ शुरू होता है और फिर वहां से जारी रहता है।

$ grep '^> [A-Z]' git-1.8.1.1-trace.stderr 
> GET /redacted/redacted/info/refs?service=git-receive-pack HTTP/1.1 
> GET /redacted/redacted/info/refs?service=git-receive-pack HTTP/1.1 
> GET /redacted/redacted/HEAD HTTP/1.1 
> PROPFIND /redacted/redacted/ HTTP/1.1 
> PROPFIND /redacted/redacted/ HTTP/1.1 

पुराने मशीन पर बड़े Git, जहां यह सब काम कर रहा है के साथ: नए Git के साथ टूटी हुई मशीन पर

$ grep '^> [A-Z]' git-1.7.4.4-trace.stderr 
> GET /g_wagner/c79-s13/info/refs?service=git-receive-pack HTTP/1.1 
> GET /g_wagner/c79-s13/info/refs?service=git-receive-pack HTTP/1.1 
> GET /g_wagner/c79-s13/HEAD HTTP/1.1 
> PROPFIND /g_wagner/c79-s13/ HTTP/1.1 
> PROPFIND /g_wagner/c79-s13/ HTTP/1.1 
> HEAD /g_wagner/c79-s13/info/refs HTTP/1.1 
> HEAD /g_wagner/c79-s13/objects/info/packs HTTP/1.1 
> MKCOL /g_wagner/c79-s13/info/ HTTP/1.1 
> LOCK /g_wagner/c79-s13/info/refs HTTP/1.1 
> GET /g_wagner/c79-s13/objects/info/packs HTTP/1.1 
... 
> UNLOCK /g_wagner/c79-s13/info/refs HTTP/1.1 

दोनों मशीनों पर पूरा पता लगाने को देखते हुए, मैं नहीं कर सकता समस्याग्रस्त PROPFIND अनुरोध (दूसरा PROPFIND) में क्या भेजा गया है में कोई अंतर देखें: User-Agent: शीर्षलेख को छोड़कर दोनों अनुरोध समान दिखते हैं।

+0

' cjc343

+0

धन्यवाद, @ cjc343। आगे की समस्या निवारण के तरीके पर कोई सुझाव? मैं प्रमाणीकरण के लिए '~/.netrc' का उपयोग कर रहा हूं, और मैंने पुष्टि की है कि मेरा' ~/.netrc' किसी अन्य (लिनक्स) मशीन पर इसके मूल्य के समान है जहां मुझे कोई समस्या नहीं है। इसके अलावा मैं इस मशीन से सफलतापूर्वक खींचने में सक्षम हूं, जिसके लिए प्रमाणीकरण प्रमाण-पत्रों की भी आवश्यकता होगी - इसलिए यह सब बहुत परेशान है। –

+0

यह निश्चित रूप से अजीब है ... दुर्भाग्य से मैं http/s पर गिट से बहुत परिचित नहीं हूं क्योंकि मैंने हमेशा प्रमाणीकरण के लिए एसएसएच का उपयोग किया है। जब तक कि पुल अनुमतियों को गलती से नहीं छोड़ा जाता है, तब तक यह कोई समझ नहीं आता है कि आप धक्का नहीं दे सकते हैं, और अधिकांश संभावनाओं को फेंक देते हैं, जैसे '.netrc 'के लिए अनुमतियां खुली हैं या रिमोट में शामिल उपयोगकर्ता नाम (जो मुझे लगता है कि दिखाएगा अगर यह मामला था) ऊपर, खिड़की से बाहर। यदि आप एक रिमोट जोड़ते हैं जिसमें उपयोगकर्ता नाम शामिल है, तो क्या आपको दबाए जाने पर गिट आपको पासवर्ड के लिए संकेत देता है (इसे चाहिए)? उम्मीद है कि किसी और के पास गलत क्या हो रहा है इसका बेहतर विचार है ... – cjc343

उत्तर

2

मुझे एक ही लक्षण के साथ समस्या है (प्रक्रिया HTTP/1.1 100 Continue पर लटकती है)।

मुझे एक प्रतिबद्धता मिली है जो मेरे लिए इस मुद्दे को हल करती है: http-push.c: make CURLOPT_IOCTLDATA a usable pointer, यह जीआईटी रिलीज v2.0.3 में उपलब्ध है।

स्पष्ट रूप से उपयोगकर्ता को सर्वर पर सही ढंग से प्रमाणीकृत नहीं किया जा रहा है, यहां तक ​​कि यह संचार से ऐसा लगता है।

समस्या अजीब है, क्योंकि आपके लिए यह एक मशीन पर दिखाई देती है लेकिन एक ही जीआईटी संस्करणों के साथ किसी अन्य पर स्थापित नहीं होती है, मेरे लिए जीआईटी ने सिर्फ एक महीने की अवधि के भीतर काम करना बंद कर दिया है और मैं वास्तव में यह नहीं कह सकता कि कारण क्या था।

वैकल्पिक रूप से यदि यह संभव है, तो जीआईटी सेवा प्रदाता का उपयोग करें जो अन्य प्रोटोकॉल की अनुमति देता है: एसएसएच या एचटीटीपीएस, ये बहुत बेहतर डीबग किए गए हैं।


खिड़कियां उपयोगकर्ताओं के लिए, यहाँ git-http-push 2.1.0-rc2 निर्माण (msysGit project instructions के आधार पर)

पर मेरी ले है अपने msysGit स्थापना करने के लिए backport करने के लिए, इसे अनज़िप और msysGit स्थापना फ़ोल्डर में कॉपी/ऊपर लिख libexec\git-core\git-http-push.exe

इस मुद्दे की रिपोर्ट here है।

अद्यतन

नवीनतम msysGit (Git-1.9.4-preview20140815) बैकपोर्टेड बग सुधार शामिल हैं।