2010-01-14 20 views
6

मैं एक परियोजना पर नज़र रखने के Git का उपयोग कर रहा है, और अगर यह संभव है, मैं चीजों को स्थापित करने के लिए इतना Git मेरे सारे कोड मचान हैंडल करना चाहते हैं, मैं परीक्षण के लिए एक स्थानीय भंडार हो सकता है, और फिर साथ सर्वर में परिवर्तन धक्का उन्हें जीने के लिए गिट। हालांकि, मानक git push कॉल का उपयोग करने की कोशिश में, मैं सिर्फ ऊपर असंगत शाखाओं और परस्पर विरोधी इतिहास के एक भयानक गंदगी के साथ खत्म। गिट का उपयोग कर स्टेजिंग का प्रबंधन करने का कोई तरीका है?क्या मैं दूरस्थ सर्वर को अद्यतित रखने के लिए गिट का उपयोग कर सकता हूं?

उत्तर

9

आप इस blog post में मंचन के लिए इस्तेमाल किया Git रेपो का एक उदाहरण:

IDE => local Git repository => remote bare Git repository 
            => Git repository with the live web application 

यह नंगे रेपो तरफ एक के बाद अद्यतन हुक आदेश को लाइव पर रेपो के अपडेट लागू करने में शामिल है, वेब सर्वर पक्ष।

अंतिम चरण नंगे भंडार पर "पोस्ट-अपडेट" हुक स्क्रिप्ट को परिभाषित करना है, जिसे नंगे भंडार को डेटा प्राप्त होता है।
"पोस्ट-अपडेट" हुक को सक्षम करने के लिए, हमें गिट संस्करण के आधार पर hooks/post-update निष्पादन योग्य या hooks/post-update.samplehooks/post-update का नाम बदलना होगा।
इस स्क्रिप्ट में, हम बस को लाइव आवेदन के फ़ोल्डर में बदलने के लिए, और पुल अभियान शुरू:

#!/bin/sh 
cd $HOME/example.org 
unset GIT_DIR 
git pull bare master 

exec git-update-server-info 

कारण एक नंगे दूरस्थ रेपो होती है क्योंकि यह करने के लिए "हतोत्साहित" है एक कामकाजी निर्देशिका के साथ एक रेपो में एक धक्का करो।

+0

नंगे रेपो का क्या फायदा है? अंदरूनी सूत्र के रूप में इसे एक काम करने वाले पेड़ में धक्का देने के लिए निराश किया गया है, इसलिए आपने इस मध्य चरण को जोड़कर जटिलता हासिल नहीं की है। मैंने इनकी कोशिश नहीं की है और गिट को अच्छी तरह से नहीं जानते हैं, इसलिए यदि आप अधिक विस्तृत करेंगे तो – SamGoody

+0

@ सैमगुडी: वास्तव में, मैं लाइव वेब साइट परिनियोजन के लिए * तीसरे * रेपो का उपयोग नहीं करूंगा है, लेकिन दूसरा एक * जरूरतों आदेश * सुनिश्चित करें कि कोई स्थानीय संशोधन आप इसे करने के लिए नए प्रतिबद्ध धक्का * के साथ हस्तक्षेप करने के लिए एक नंगे होने की *। http://stackoverflow.com/questions/5490434/git-live-server-best-practices/5491039#5491039 देखें। पोस्ट-प्राप्त हुक एक गिट आर्काइव (निकाला जाने वाला एक टैर) के साथ संयुक्त होता है। – VonC

+0

यह खड़ा के रूप में काम करते हैं कभी कभी लाइव सर्वर पर किया जाता है, और फिर विकास कंप्यूटरों के लिए पीछे की ओर विलय कर दिया। (यह देखते हुए कि हमारा सेटअप असामान्य है, यह हमारी आवश्यकताओं के लिए सही है।) हमें लाइव सर्वर की आवश्यकता है ताकि परिवर्तन प्राप्त करने और धक्का देने की क्षमता हो। आदर्श रूप में, जब इसे धक्का दिया जाता है, तो परिवर्तनों को विलय किया जाना चाहिए [या किसी त्रुटि को लॉग इन किया जाना चाहिए]। गिट संग्रह उपयुक्त नहीं होगा। यह समाधान होगा, लेकिन सीधे क्यों नहीं धक्का? – SamGoody

0

हालांकि गिट एक वितरित संस्करण नियंत्रण प्रणाली है, हालांकि आमतौर पर केंद्रीय भंडार होना एक अच्छा विचार है (--bare एक हो सकता है)। यह चीजों को सरल बना देगा।

+0

हां, लेकिन यह एक स्टेजिंग शाखा और एक उत्पादन शाखा और एक या अधिक विकास शाखाओं के प्रबंधन के साथ कैसे मदद करता है? – Thilo

+0

मैं एक केंद्रीय भंडार होना चाहिए, तो यह दोनों स्थानीय और लाइव सर्वर पर क्लोन, और उसके बाद में SSH और मैनुअल अद्यतन करने के लिए खींचती है? यह समझ में आता है, लेकिन ऐसा लगता है कि एक और अधिक सुरुचिपूर्ण समाधान होना चाहिए। – futuraprime

+0

लाइव सर्वर पर एक नंगे केंद्रीय भंडार पर्याप्त होगा। चूंकि आप विरोधाभासी इतिहास प्राप्त कर रहे हैं, मुझे लगता है कि आप उत्पादन साइट में कुछ बदलाव करते हैं। यदि ऐसा करना आपके लिए सुविधाजनक लगता है, तो मैन्युअल खींचें ठीक होनी चाहिए। यदि आप इस तरह के परिवर्तनों के बिना जा सकते हैं, तो वॉनसी द्वारा सुझाए गए पोस्ट-अपडेट हुक का उपयोग करें। –

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

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