2012-05-10 14 views
7

शुरू करने से पहले, मुझे पता है कि इस तरह के बहुत सारे प्रश्न हैं, लेकिन मुझे वास्तव में एक संक्षिप्त, सुरक्षित, सर्वोत्तम अभ्यास खोजने में कठिनाई हो रही है क्योंकि उन पर प्रतिक्रिया इतनी व्यापक रूप से भिन्न रही है।आप दूरस्थ सर्वर पर स्वचालित गिट खींच कैसे करते हैं?

मैं क्या करना चाहता हूं: 1) विकास शाखा पर मेरी स्थानीय मशीन पर पूरा काम करें। 2) गिट में परिवर्तन पुश करें। एक वेबहूक यूआरएल पर गिट पोस्ट करें और स्वचालित रूप से मेरा रिमोट सर्वर विकास साइट पर बदलाव खींचता है। 3) एक बार QA'd और विकास साइट पर उचित होने की पुष्टि हो जाने के बाद, मास्टर शाखा को उत्पादन साइट पर (उसी साइट पर विकास साइट के रूप में) दबाएं।

जहां मैं हूं: मेरे पास मेरी स्थानीय मशीन और रिमोट सर्वर पर गिट स्थापित है। मैं विकास शाखा को गिट करने के लिए मोड धक्का दे सकता हूं। रिमोट सर्वर पर, मैं अपडेट खींच सकता हूं और यह एक आकर्षण की तरह काम करता है। समस्या यह है कि जब मैं अपनी स्थानीय मशीन से परिवर्तन धकेलता हूं तो रिमोट सर्वर स्वचालित रूप से अपडेट नहीं हो सकता है।

मेरे प्रश्न हैं: 1) दूरस्थ सर्वर विकास साइट निर्देशिका के लिए, क्या मुझे init या git init --bare गिट करना चाहिए? मैं सर्वर पर किए गए अपडेट होने की योजना नहीं बना रहा हूं। मैं अपनी देव टीम को स्थानीय रूप से काम करने और सर्वर पर मोड धक्का देना चाहता हूं। मेरा मानना ​​है कि मुझे गिट इनिट का उपयोग करने की आवश्यकता है क्योंकि गिट रिपोजिटरी में रिमोट उपनाम सेट अप करने के लिए काम करने वाले पेड़ की आवश्यकता है, लेकिन मैं पुष्टि करना चाहता था। 2) मुझे पूरा यकीन है कि गिट समस्या से वेबहूक पोस्ट उपयोगकर्ता विशेषाधिकारों के कारण है। मैं सुरक्षित रूप से कैसे प्राप्त कर सकता हूं? मैंने कई ट्यूटोरियल पढ़े हैं जो गिट हुक फाइलों को अपडेट करने का सुझाव देते हैं, लेकिन मुझे लगता है कि मुझे लेने की आवश्यकता के मुकाबले ज्यादा कठोर है। मैं वेबहूक को एक यूआरएल हिट करने में सक्षम होना पसंद करूंगा जो कोड के बोतलबंद को जोड़ने के बिना फ़ाइलों को सुरक्षित रूप से खींचता है (यदि यह संभव है)।

मैं प्रकृति द्वारा एक वेब डेवलपर हूं, इसलिए गिट और सिसडमिन कार्य आम तौर पर मेरे अस्तित्व का झुकाव होते हैं। दोबारा, मुझे पता है कि यह प्रश्न दूसरों के समान है, लेकिन मुझे इस मुद्दे को हल करने के लिए अभी तक एक व्यापक, संक्षिप्त, सुरक्षित और सबसे तार्किक दृष्टिकोण नहीं मिला है। मैं लगभग 16 घंटे में हूं और आधिकारिक तौर पर "प्रगति के बिना मंडलियों में जा रहा हूं" बिंदु पर आ गया है।

आपकी सभी मदद के लिए अग्रिम धन्यवाद!

+0

वाह यह असंभव तरह का इस के लिए एक सरल समाधान खोजने के लिए है पर जाने के लिए देखने के लिए। मुझे थोड़ा सा एसवीएन याद आती है ... – Jake

उत्तर

2

मेरे पास एक ही सटीक मुद्दा था, कोड और विकास कौशल में मजबूत, sysadmin कौशल में कमजोर। जब मैं कोड को धक्का देने के लिए तैयार था, तो मुझे GitHub प्रतिनिधि से पूछना था कि उनकी सुझाई गई विधि क्या थी, और उन्होंने कैपिस्ट्रानो के साथ जवाब दिया। यह एक Ruby एप्लिकेशन है जो रिमोट सर्वर पर कमांड (जैसे गिट पुल) चलाता है, साथ ही आप कल्पना कर सकते हैं कि किसी भी अन्य कमांड के साथ।

यहाँ कुछ लेख आप अधिक जानकारी प्राप्त करने पढ़ सकते हैं:

नहीं जा रहे झूठ, सीखना आईएनजी वक्र बहुत खड़ी थी, लेकिन एक बार जब आप Capistrano के साथ काम करना शुरू कर देते हैं, तो आप देखेंगे कि यह कोड को धक्का देने के लिए अच्छी तरह से काम करता है। मैं सिम्फनी में अपने अनुप्रयोगों को विकसित करता हूं और मेरे पास अपनी स्थानीय मशीन से एक कमांड में कोड, स्पष्ट कैश और स्पष्ट लॉग फ़ाइलों को खींचने के लिए मेरा कैपिस्ट्रानो सेट-अप है।

+1

यह सब कुछ मदद करता है? –

9

आप इसे गिटहब सेवा हुक के साथ आसानी से कर सकते हैं।

आपको एक और फाइल बनाने की आवश्यकता होगी जो गिट पुल करने की प्रक्रिया को संभालेगा। उस फ़ाइल को सहेजें

<?php `git pull`; 

, और अपने सर्वर पर भंडार निर्देशिका में अपलोड: एक नई फ़ाइल, कहा जाता github.php (या कुछ भी आप चाहें तो) जोड़ें, और जोड़ें। फिर, Services Hooks -> Post-Receive URL पर जाएं और उस फ़ाइल को यूआरएल कॉपी करें, और इसे "पोस्ट-प्राप्त यूआरएल" में पेस्ट करें। http://demo.test.com/myfolder/github.php

तो, जब आप पुश करते हैं, तो गिटहब स्वचालित रूप से इस यूआरएल पर जायेगा, इस प्रकार आपके सर्वर को git pull करने का कारण बन जाएगा।

अधिक विवरण में इस this tutorial

+0

यह बहुत अच्छा काम करता है। – Lokesh

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