2012-07-24 17 views
23

मैं त्रुटि मिलती है:Git - दूरस्थ: त्रुटि: हुक/उत्तर प्राप्त नहीं चल सकता: ऐसा कोई फ़ाइल या निर्देशिका

remote: error: cannot run hooks/post-receive: No such file or directory 

जब दूरदराज के पुश करने के लिए कोशिश कर रहा। बाद receivce फ़ाइल सही स्थान (testnew.git/हुक) में मौजूद है और शामिल हैं:

#!/bin/bash2 
export GIT_DIR=/var/www/testnew/testnew/.git/ 
export GIT_WORK_TREE=/var/www/testnew/testnew/ 
cd /var/www/testnew/testnew/ 

echo "here we go..." 
git fetch 
git merge origin/master 
git submodule update --init --recursive 

मैं पर अनुमतियों को स्थापित करने की कोशिश की है का उपयोग कर के बाद प्राप्त होता है:

chmod a+x post-receive 

लेकिन यह एक ही देता है त्रुटि। 755 को अनुमति सेट करने से त्रुटि को हटा दिया जाता है, लेकिन स्क्रिप्ट नहीं चलती है।

+1

क्या होता है जब आप सीधे अपने खोल हुक/पोस्ट-प्राप्त से भागते हैं? मेरा अनुमान है कि/bin/bash2 मौजूद नहीं है, कम से कम यह एक सामान्य दुभाषिया नहीं है,/bin/bash पर्याप्त होना चाहिए – jolivier

उत्तर

27

ऐसा होगा यदि hooks/post-receive फ़ाइल मौजूद है, निष्पादन योग्य चिह्नित है, लेकिन इसे निष्पादित नहीं किया जा सकता है। इसे निष्पादित नहीं किया जा सकता है, क्योंकि दुभाषिया, /bin/bash2, या तो मौजूद नहीं है या निष्पादन योग्य नहीं है।

/bin/bash2 को मौजूद बैश के नाम से बदलें और सर्वर पर निष्पादन योग्य है।

(त्रुटि इस तरह दिखने का कारण है कि ऑपरेटिंग सिस्टम केवल त्रुटि स्थिति देता है, "ऐसी कोई फ़ाइल या निर्देशिका नहीं है, लेकिन यह रिपोर्ट नहीं करता कि कौन सी फ़ाइल मौजूद नहीं है। और कोड जो इसे निष्पादित करने का प्रयास करता है यह नहीं पता कि सिस्टम पहले से ही hooks/post-receive पढ़ रहा है और /bin/bash2 की तलाश में था। यह सब जानता है कि यह hooks/post-receive चलाने की कोशिश की गई है, इसलिए यह प्रिंट करता है)।

+0

यह समस्या थी।/Bin/bash पर स्विचिंग ठीक काम किया। धन्यवाद। – BobFlemming

7

इसके अलावा अगर आप अपने खोल में echo $SHELL चलाने के लिए आप इस मामले (अनुमोदित उत्तर के आधार पर) में एक अपेक्षित परिणाम देखना चाहिए, थे (भविष्य में संदर्भ और प्रलेखन इस प्रश्न पर के लिए) आप /bin/bash के रूप में उम्मीद करेंगे अपनी परिणाम। लेकिन एक और संभावित समस्या एक अदृश्य कैरिज रिटर्न हो सकती है।

hooks/post-receive चलाने की कोशिश करें अगर आप अभी भी समस्या आ रही है, तो आप इस तरह एक प्रतिक्रिया मिल सकता है:

-bash: hooks/post-receive: /bin/bash^M: bad interpreter: No such file or directory 

कुंजी यहाँ ^M है कि सबूत है कि आप एक अप्रत्याशित गाड़ी लाभ मिल रहा है वास्तव में कर रहे हैं, अन्यथा अगर यह काम करता है तो आपको शायद एक लटकती प्रतिक्रिया मिल जाएगी।

इसे ठीक करें और इसे आपकी समस्या को ठीक करना चाहिए। तरीका है कि, dos2unix उपयोग करते हैं, उदाहरण के लिए करना है:

dos2unix .htaccess 
+2

यदि आप सब्लिमे टेक्स्ट का उपयोग कर रहे हैं, तो इस उत्तर को जोड़कर, आपको देखें -> लाइन एंडिंग्स -> यूनिक्स। यूनिक्स का चयन करें और फिर फ़ाइल को फिर से सहेजें। – kloddant

+0

इस उत्तर में जोड़ें, वर्तमान निर्देशिका में सभी फ़ाइलों के लिए लाइन-एंडलिंग को कन्वर्ट करने के लिए 'find ./ -type f -exec dos2unix {} \;' का उपयोग करें। – naXa

0

यह द्वारा मुझे git init पहले क्या करना भूल कारण होता था।

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