2011-10-03 10 views
17

पर प्रतिबद्ध फ़ाइलों की प्रतिलिपि बनाने के लिए मैं स्वचालित फ़ाइलों को एक निश्चित फ़ोल्डर में कॉपी करना चाहता हूं ताकि उन्हें ब्राउज़र में देखा जा सके, लेकिन मैं इसे बनाने के बिना ऐसा करना चाहता हूं एक नंगे भंडार जो मुख्य भंडार को प्रतिबिंबित करता है (जैसा कि here दिखाया गया है) और मैं इसे प्रतिबद्धता पर करना चाहता हूं।सरल गिट पोस्ट-प्रतिबद्ध हुक एक निश्चित फ़ोल्डर

क्या कोई हुक बनाने का कोई आसान तरीका है जो पढ़ता है कि कौन सी फाइलें की गई हैं और उन्हें लाइव वेबसर्वर पर अपडेट/अपडेट करता है?

उदाहरण के लिए: मेरे पास /example.com नामक एक फ़ोल्डर है और एक गिट भंडार है। मैं चाहता हूं कि जब मैं रिपॉजिटरी में index.html करता हूं, तो संबंधित index.html फ़ाइल /example.com से फ़ाइल को प्रतिबद्ध फ़ाइल

उत्तर

23

की सामग्री के साथ अद्यतन करने के लिए post-commit बनाने का एक अच्छा तरीका है git checkout -f आपके वेब सर्वर द्वारा प्रकट की गई निर्देशिका में सेट किए गए कार्य पेड़ के साथ चलाता है और आपके विकास भंडार में .git निर्देशिका पर सेट गिट निर्देशिका। उदाहरण के लिए, यदि आप एक .git/hooks/post-commit फ़ाइल ऐसा ही किया बना सकते हैं:

#!/bin/sh 
unset GIT_INDEX_FILE 
export GIT_WORK_TREE=/example.com/ 
export GIT_DIR=/home/whoever/development/web-project/.git/ 
git checkout -f 

इस से सावधान रहें, हालांकि - -f मतलब है Git हटाने या अपने सबसे हाल ही प्रतिबद्ध में /example.com/ मैच पेड़ बनाने के लिए फ़ाइलों के ऊपर लिख सकता है।

(और साथ .git/hooks/post-commit फ़ाइल निष्पादन योग्य बनाने के लिए याद रखें।)

+0

यह काम पूरी तरह से करता है। धन्यवाद – viorel

+0

विंडोज़ पर, स्क्रिप्ट पूर्ण पथ की उम्मीद कर रही है और वाक्यविन्यास क्या है? धन्यवाद! – andli

+0

@andli मैं msysgit का उपयोग कर रहा हूं, और यह उसी पथ का उपयोग करके काम करता है जिसका उपयोग आप गिट बैश विंडो में करेंगे। – Shlomo

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