Git - git पुल के साथ पश्च-प्राप्त हुक "एक मान्य गिट निर्देशिका खोजने में विफल"


17

यह बहुत ही अजीब है, लेकिन जब एक गिट रिपॉजिटरी की स्थापना की जाती है और इसके साथ एक पोस्ट-प्राप्त हुक बनाया जाता है:

echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"

हुक वास्तव में चलता है, लेकिन यह कभी भी गिट पुल को ठीक से चलाने का प्रबंधन नहीं करता है:

6bfa32c..71c3d2a  master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--

तो मैं अब अपने आप से पूछ रहा हूं, हुक को पोस्ट-प्राप्त के साथ क्लोन अपडेट करना कैसे संभव है?

इस स्थिति में उपयोगकर्ता जो प्रक्रियाएँ चला रहा है, वही है, और उपयोगकर्ता फ़ोल्डर के अंदर उसका सब कुछ है इसलिए मुझे वास्तव में समझ में नहीं आता है ... क्योंकि अगर मैं मैन्युअल रूप से जाता हूं

cd ~/websites/testing
git pull

यह बिना किसी समस्या के काम करता है ...

उस पर कोई मदद बहुत सराहना की जाएगी

बहुत बहुत धन्यवाद

जवाबों:


25

जबकि हुक चल रहा है, GIT_DIRऔर (यदि वर्कट्री स्पष्ट रूप से परिभाषित की गई थी) GIT_WORK_TREEसेट हैं। इसका मतलब है कि आपका पुल उस निर्देशिका में दूसरे रिपॉजिटरी के साथ नहीं चलेगा जिसे आपने बदला है।

कोशिश करो git --git-dir ~/websites/testing/.git --work-tree ~/websites/testing pull; या इसके साथ git के रेपो-स्थानीय वातावरण को अनसेट करें:

unset $(git rev-parse --local-env-vars)

आदमी 1 git में इन पर्यावरण चर पर अधिक जानकारी ।


1
उस टोबू के लिए बहुत बहुत धन्यवाद, यह वास्तव में काम करता है, मैं इसके बारे में अधिक जानकारी भी जांचूंगा। चीयर्स
ज़ोना

6

एक बात जो मैंने अनुभव की वह यह थी कि post-updateहुक का उपयोग करते हुए '--गित-दिर' ने बहुत अच्छा काम किया, लेकिन गिट को अभी भी एक लापता काम करने वाले पेड़ ('वर्क-ट्री' का उपयोग करने के बावजूद) के बारे में शिकायत थी

संक्षेप में, यह काम नहीं किया:

git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull

जबकि यह काम किया:

cd /path/to/websites/testing
git --git-dir /path/to/websites/testing/.git pull


1

क्या यह काम नहीं करता है?

cd /home/smb/websites/testing
env -i git pull

संपादित

फिर भी बेहतर

cd /home/smb/websites/testing
unset GIT_DIR
git pull

0

क्या आपने ~ के बजाय पूर्ण पथ के साथ प्रयास किया है?

cd /home/smb/websites/testing
git pull

0

स्क्रिप्ट शायद साथ है /bin/sh, जो समझ में नहीं आता है ~~इसके बजाय पूर्ण पथ के साथ प्रयास करें ।


0

पहला अनुशंसित उत्तर सही है - जब हुक चल रहा है GIT_DIR आदि सेट हैं। हालाँकि, यदि आप स्क्रिप्ट को किसी अन्य रिपॉजिटरी में उपयोग करने में सक्षम होना चाहते हैं तो वह विधि त्रुटिपूर्ण है क्योंकि यह GIT_DIR को रीसेट करने वाले हार्ड-कोड है। जैसा कि उन्होंने निहित किया है, दूसरा तरीका यह है कि env का उपयोग करके वैरिएबल को हटा दिया जाए: env -i git reset --hard स्पष्ट रूप से आप जो कमांड चलाते हैं वह आपके ऊपर है - यह सिर्फ 'एनवी-आई' बिट है जो महत्वपूर्ण बिट है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.