2010-08-22 12 views
16

से 'गिट पुल' को कॉल करना मेरे पास गिटोलाइट का उपयोग करके एक केंद्रीय गिट रेपो सेट अप है।एक गिट पोस्ट-अपडेट हुक

मैं एक हुक स्थापित करना चाहता हूं कि जब भी कोई उपयोगकर्ता रेपो पर जाता है, तो यह कुछ स्वचालित परीक्षण के बाद कहीं और खींचता है।

अभी तक, मैं केवल इसे खींचना चाहता हूं।

हुक निर्देशिका में मैं निम्न स्क्रिप्ट के नाम के बाद अद्यतन बनाया: जब मैं ./post-update का उपयोग कर इस स्क्रिप्ट आह्वान

#!/bin/sh 
cd /home/git/www/epicac 
git pull 

, यह वास्तव में मैं क्या चाहता है।

हालांकि, जब भी मैं इसे हुक करता हूं स्वचालित रूप से लागू होता है, तो मुझे मिलता है: घातक: कोई गिट भंडार नहीं: '।'

कोई विचार यह क्यों हो रहा है?

+2

बस 'env मैं Git pull' समाधान जोड़ा। – VonC

+0

में वही समस्या है, 7 साल के बाद भी –

उत्तर

1
+2

वॉनसी ने अपने उपरोक्त उत्तर में लिंक किया। या तो अपना उत्तर या उसका स्वीकार करें ताकि यह इस प्रश्न को देखकर अन्य लोगों के लिए सहायक हो – corroded

25

आप के रूप में इस SO answer में सुझाव को चलाने के लिए विभिन्न निदान है।

विशेष रूप से, check out the the value of GIT_DIR and GIT_WORK_TREE

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


भी देखें ब्लॉग पोस्ट Using Git Inside a Git Hook:

अंततः हम में हमारे linux गुरु हो गया और उसने देखा कि पर्यावरण Git उपयोगकर्ता चलाता है जिसके तहत पूरी तरह से जब एक हुक के अंदर अलग है।
गिटोलाइट env को चीजों का एक गुच्छा करता है, लेकिन जो हमें खराब कर रहा था वह GIT_DIR की सेटिंग थी।

ENV.delete 'GIT_DIR' 
हमारे गहरे लाल रंग का लिपि में

कि 'post-receive' हुक से शुरू हो रहा है:
के बाद हम पता लगा कि, समाधान के रूप में के रूप में आसान था।


Git Tip: Auto update working tree via post-receive hook में

एक ही बात नहीं है, लेकिन इस से बाहर एक सुरुचिपूर्ण तरीके के साथ:

समाधान?
यह पता चला post-receive हुक GIT_DIR वातावरण चर repo/.git फ़ोल्डर के लिए सेट के साथ बाहर शुरू होता है, तो कोई बात नहीं इसे में क्या रास्ता आप 'सीडी' हमेशा वहाँ किसी भी निम्नलिखित Git कमांड चलाने की कोशिश करेंगे।
इस फिक्सिंग बस (सुरुचिपूर्ण env -i समाधान के लिए उलरिच पेट्री करने के लिए धन्यवाद) GIT_DIR
unsetting की बात है:

#!/bin/sh 
cd .. 
env -i git reset --hard 
7

--git-dir निर्दिष्ट करने के बारे कैसे।

#!/bin/sh 
cd /home/git/www/epicac 
git --git-dir=.git pull 
0

यह सिर्फ एक लाइन में चाल करना चाहिए:

git -C /home/git/www/epicac pull 
संबंधित मुद्दे