2012-03-28 21 views
9

मुझे निम्न समस्या है। मैं अद्यतन किया है एक निश्चित निर्देशिका में सीडी के लिए 'के बाद प्राप्त होता है' और फिर तो जैसे यह तैनात करने के लिए में रेपो खींच:गिट पोस्ट-सही ढंग से काम नहीं कर रहा है

#!/bin/bash 
cd /var/www/site 
git pull origin master 

हालांकि मैं जब भी मैं अपने स्थानीय मशीन पर 'Git धक्का मूल मास्टर' होते हैं निम्नलिखित:

Counting objects: 5, done. 
Delta compression using up to 2 threads. 
(etc..) 
remote: fatal: Not a git repository: '.' 

अभी तक यह शानदार ढंग से काम करता है जब मैं मैन्युअल /var/www/site को सीडी और git pull origin master है।

उत्तर

14

सेट नहीं GIT_DIR उपयोग के रूप में

#!/bin/bash 
cd /var/www/site || exit 
unset GIT_DIR 
git pull origin master 
exec git-update-server-info 

निम्नलिखित आप के बारे में GIT_DIR अधिक जानकारी देख सकते हैं। Git Loves the Environment

+0

शानदार रहा, बस क्या जरूरत है। क्या आप समझते हैं कि यह क्यों किया जाना चाहिए? – andy

+2

'GIT_DIR' कुछ हद तक पर्यावरण चरों में से एक है जिसे आप विभिन्न गिट कमांड के लिए सेट कर सकते हैं। पोस्ट-प्राप्त हुक में, '$ GIT_DIR' हमेशा (?)' .' पर सेट होता है। यदि आप कहीं और 'सीडी' हैं, तो 'गिट पुल' अभी भी '$ GIT_DIR'' पर सेट है और 'रे' में रेपो ढूंढने की अपेक्षा करता है, लेकिन आप चले गए हैं और यह वहां नहीं है। इसे साफ़ करने से गिट आपके "सामान्य" व्यवहार ('./। Git' में देखकर, उस स्थान पर' cd'-ed) पर वापस जाता है। – torek

2

एक और विकल्प यह है कि आप कमांड में कार्य निर्देशिका और गिट निर्देशिका का उल्लेख कर सकते हैं।

git --work-tree=/home/user/repos/my_app --git-dir=/home/user/repos/my_app/.git <command> 

उदाहरण के लिए:

git --work-tree=/home/user/repos/my_app --git-dir=/home/user/repos/my_app/.git status 
संबंधित मुद्दे