2013-10-27 7 views
9

मैं अपना व्यक्तिगत सर्वर मेरा प्राथमिक गिट रिमोट होने का प्रयास कर रहा हूं और स्वचालित रूप से गिटूब को दर्पण करता हूं। मुझे this article मिला जो इसे अधिकतर post-receive स्क्रिप्ट के साथ काम करता है जो git push --mirror (अनिवार्य रूप से) करता है।github.com (auth विफलताओं) के लिए एक स्वयं-होस्टेड गिट भंडार मिररिंग

मेरा दृष्टिकोण अलग है कि मैं एक तैनाती कुंजी बनाने और सुरक्षित करने से बचाना चाहता हूं और फिर इसे प्रत्येक संग्रह पर कॉन्फ़िगर करना चाहता हूं।

मेरी पोस्ट-प्राप्त स्क्रिप्ट टिप्पणियों में चिह्नित के रूप में नीचे दिए गए अधिकांश प्रकारों के साथ सही ढंग से काम करती है, सिवाय इसके कि जब मैं उपरोक्त ब्लॉग आलेख में पूर्ण नोहुप + स्टडीओ रीडायरेक्शन + पृष्ठभूमििंग करता हूं, प्रमाणीकरण काम करना बंद कर देता है।

GITHUB_USERNAME=focusaurus 
BARE_PATH=$(pwd -P) 
REPO_NAME=$(basename "${BARE_PATH}") 
REPO_URL="ssh://[email protected]/${GITHUB_USERNAME}/${REPO_NAME}" 
echo "About to mirror to ${REPO_URL}" 

#hmm, this works 
#git push --mirror "${REPO_URL}" 

#this works, too 
#nohup git push --mirror "${REPO_URL}" 

#and this also works OK 
nohup git push --mirror "${REPO_URL}" & 

#but this fails with 
#Permission denied (publickey). 
#fatal: The remote end hung up unexpectedly 
#Somehow ssh agent forwarding must get screwed up? Help me, Internet. 
#nohup git push --mirror "${REPO_URL}" &>>/tmp/mirror_to_github.log & 

#this is the one used in the blog post above but it also fails 
# nohup git push --mirror "${REPO_URL}" &>/dev/null & 

मेरे पास एसएसएच एजेंट अग्रेषण है जो मुझे विश्वास है कि कामकाजी संस्करण कैसे काम करते हैं। तो मेरा सवाल यह है कि उन अंतिम 2 भिन्नताओं प्रमाणीकरण त्रुटियों के साथ क्यों विफल हो जाते हैं?

+0

क्या आप वाकई इन परिवर्तनों के कारण विफलता के कारण हैं, और कुछ और नहीं? –

+0

हां। मैंने उपरोक्त उन सभी स्वादों का परीक्षण किया है और टिप्पणियों के अनुसार, जिन्हें "ठीक काम करता है" के रूप में चिह्नित किया गया है, भरोसेमंद काम करते हैं, और उसके बाद बस स्टडीओ को कैसे संभाला जाता है, यह लगातार विफलता का कारण बनता है। –

+0

तो ऐसा लगता है कि समस्या मेरे एसएसएच विन्यास में कुछ हो सकती है। जांच। –

उत्तर

1

शायद आप गलत क्या हो रहा है यह जानने के लिए एसएसएच पर वर्बोज़ ध्वज सेट करने का प्रयास कर सकते हैं।

आप GIT_SSH पर्यावरण चर का उपयोग कर सकते हैं ताकि कमांड को एसएसएच कनेक्शन खोलने के लिए उपयोग किया जा सके। आदमी पृष्ठ से:

GIT_SSH 
     If this environment variable is set then git fetch and git push 
     will use this command instead of ssh when they need to connect to a 
     remote system. The $GIT_SSH command will be given exactly two 
     arguments: the [email protected] (or just host) from the URL and the 
     shell command to execute on that remote system. 

     To pass options to the program that you want to list in GIT_SSH you 
     will need to wrap the program and options into a shell script, then 
     set GIT_SSH to refer to the shell script. 

तो /tmp/verb-ssh में एक स्क्रिप्ट है कि लगता है कि:

#!/bin/bash 
/usr/bin/ssh -vvv "[email protected]" 

और फिर वातावरण चर GIT_SSH=/tmp/verb-ssh की स्थापना कुछ उपयोगी डिबगिंग जानकारी प्रदान करना चाहिए।

+0

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

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