2012-10-14 3 views
19

मेरे द्वारा बनाए गए एक बहुत ही सरल पूर्व प्रतिबद्ध स्क्रिप्ट: -Git पूर्व प्रतिबद्ध मैक के लिए GitHub में असफल होने के हुक (कमांड लाइन पर काम करता है)

#!/usr/bin/env sh 

# Run tests 
npm test 
if [ $? -ne 0 ]; then 
    echo "Tests failed. Aborting.." 
    exit 1 
fi 

exit 0 

जब मैं कमांड लाइन पर git commit चलाने (असफल परीक्षणों के साथ), मुझे Tests failed. Aborting.. संदेश के साथ अपेक्षित निकास 1 मिलता है।

हालांकि, अगर मैं मैक के लिए GitHub का उपयोग हालांकि मैं:

.git/hooks/pre-commit: line 5: npm: command not found 
Tests failed. Aborting.. 
(256) 

मैं करने के लिए npm निष्पादन वातावरण है कि मैक के लिए GitHub उपयोग कर रहा है के लिए उपलब्ध नहीं होने के अपने अनुमान लगा रहा हूँ नीचे, लेकिन मैं किया गया है इसे ठीक करने के तरीके को हल करने के लिए अपने बालों को फाड़ना।

उत्तर

22

हल हुआ। निष्पादन के बिंदु पर दोनों /usr/local/bin और /usr/local/sbinPATH को जोड़कर

PATH=$PATH:/usr/local/bin:/usr/local/sbin 

अर्थात: विश्व स्तर पर स्थापित नोड मॉड्यूल /usr/local/bin के तहत अंत के रूप में मैं बस मेरी पूर्व प्रतिबद्ध की शुरुआत में निम्नलिखित जोड़ने की जरूरत है।

1

$ PATH चर जो जीआईआई वातावरण में उपलब्ध है जैसे कि गितब डेस्कटॉप और सॉर्सेट्री टर्मिनल में उपलब्ध एक से अलग है। डिफ़ॉल्ट रूप से जीयूआई वातावरण में उपलब्ध $ PATH आपके नोड मॉड्यूल नहीं ढूंढ सकता है। जैसा कि पिछले जवाब में कहा गया था, आप यह सुनिश्चित कर सकते हैं कि/usr/स्थानीय/बिन

PATH=$PATH:/usr/local/bin:/usr/local/sbin 

जोड़ने मेरे मामले इस काम नहीं किया में से रास्ते में है, क्योंकि मैं Node Version Manager का उपयोग कर रहा है, जो नोड के विभिन्न संस्करणों को संग्रहीत करता है और यह नोड संस्करणों को अपग्रेड और स्विच करना आसान बनाता है। यह नोड के प्रत्येक संस्करण के लिए एक अलग फ़ाइल में आपके node_modules स्टोर करता है। यहाँ कोड मैं इस समस्या को हल प्राप्त करने के लिए प्रयोग किया जाता है: NVM के लिए

#!/usr/bin/env bash 

PATH="/usr/local/bin:$PATH" 

if [ -f $HOME/.nvm/nvm.sh ] 
then 
    . $HOME/.nvm/nvm.sh 
    PATH="$HOME/.nvm/versions/node/$(nvm current)/bin:$PATH" 
fi 

यह जाँच करता है, और यह है, यह भार मौजूद है और नोड का वर्तमान में उपयोग किया संस्करण के लिए नोड मॉड्यूल के लिए पथ को खोजने के लिए इसे इस्तेमाल करता है। यदि आप नोड मॉड्यूल तक पहुंचने का प्रयास कर रहे हैं और किसी विशेष चीज़ को पाने की आवश्यकता नहीं है तो आप sbin folder जोड़ना छोड़ सकते हैं, उदा। /usr/local/sbin

+0

"आप यह सुनिश्चित कर सकते हैं कि/usr/local/bin जोड़कर पथ में है" - कहां जोड़कर? प्री-स्क्रिप्ट स्क्रिप्ट में – sompylasar

+0

@ सोम्प्लासर, मैंने उदाहरण पोस्ट किया। मैंने प्रश्न में स्क्रिप्ट को संशोधित किया और इसे मेरे उत्तर में पोस्ट किया। यह पीवीएच को संशोधित करता है कि एनवीएम उपलब्ध है या नहीं – RustyToms

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