अपने वेब होस्ट पर "गिट पुश" अपडेट फाइल कैसे बनाएं?


13

मेरे पास कुछ साइटें हैं जो सभी साझा होस्टिंग के तहत एक ही वेब होस्टिंग सेवा पर होस्ट की जाती हैं। मेरा वेब होस्ट Git का समर्थन करता है और मेरे पास इसके लिए SSH पहुंच है, और मेरे पास मेरे लैपटॉप पर Git सेटअप भी है।

मैं इसे बनाना चाहता हूं ताकि जब मैं "git पुश ओरिजिन मास्टर" करूं, तो यह अपने वेब सर्वर पर फ़ाइलों को स्वचालित रूप से अपडेट कर देगा, और पिछले कमिट की फाइलों का बैकअप भी सेव कर लेगा, ताकि मैं चाहूं तो आसानी से रोलबैक कर सकूं। क्या यह संभव है?


जिज्ञासु- आपका होस्टिंग प्रदाता कौन है?
उपयोगकर्ता

और आप "पिछली समितियों की फ़ाइलों का बैकअप" क्यों चाहते हैं? आप बस पिछली प्रतिबद्ध को धक्का दे सकते हैं, यदि आप वापस रोल करना चाहते हैं (यह मानते हुए कि आप हमेशा जानते हैं कि आपने आखिरी धक्का क्या दिया है - लेकिन आपको यह जानना चाहिए कि वैसे भी)।
सलेस्के

जवाबों:


12

यह एक वेब साइट का प्रबंधन करने के लिए गिट का उपयोग करने से संक्षेप में प्रस्तुत किया गया है

इस प्रक्रिया की कुंजी सर्वर साइड हुक 'पोस्ट-रिसीव' है ( कस्टमाइज़िंग गिट पर गिट हुक - गिट हुक और गिटकुक्स मैन पेज पर अधिक )। सर्वर के सभी डेटा प्राप्त करने के बाद यह हुक चलता है।

एक बार जब सर्वर डेटा प्राप्त करता है, तो यह चलता है git checkout -f -f विकल्प स्थानीय अंतर होने पर भी सिर को चेकआउट के लिए मजबूर करेगा।

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

hooks/निर्देशिका के रूप में post-receiveऔर निष्पादन योग्य है कि रखो । बेशक, वह रास्ता बदल जाता है जहां आपके पास आपकी वेबसर्वर की फाइलें हैं ( GIT_WORK_TREEपर्यावरण चर सेट करता है ताकि आपको सर्वर पर डॉट फाइलें और जिट सेटिंग्स को हथकंडा करने की आवश्यकता न हो)।

वापस रोल करने के लिए, प्रत्येक को प्रत्येक रिलीज़ को टैग करना चाहिए (यह पोस्ट-कमिट हुक के हिस्से के रूप में भी किया जा सकता है)। रिलीज को टैग करके कोई भी व्यक्ति आसानी से रोलबैक के लिए स्पॉट की पहचान कर सकता है, हालांकि उस सर्वर में लॉगिंग और उस टैग की जांच करना शामिल है।


यह ध्यान दिया जाना चाहिए कि इसका मतलब है कि आप एक परिनियोजन उपकरण के रूप में गिट का उपयोग कर रहे हैं, जो कि ऐसा कुछ है जो वास्तव में इसका उद्देश्य नहीं है। यह काम कर सकता है, लेकिन कई सीमाएँ हैं (संपूर्ण रेपो डाउनलोड करने की आवश्यकता है, स्क्रिप्ट को लागू करने का कोई तरीका नहीं है या फ़ाइल अनुमतियों का प्रबंधन नहीं है, सामान को अनपैक करने का कोई तरीका नहीं है ...)। उचित तैनाती उपकरण का उपयोग करना बेहतर है।
सलेस्के

@ स्लेसके आप post-receiveहुक में वह सब कर सकते हैं , जो वास्तव में सिर्फ एक स्क्रिप्ट है, जहां आप जो चाहें डाल सकते हैं।
मारियो

@Mario: हाँ, आप कर सकते हैं - जिसका अर्थ है कि आप एक पोस्ट-प्राप्त हुक के रूप में प्रभावी रूप से अपने स्वयं के परिनियोजन समाधान को लागू कर रहे हैं। मौजूदा समाधान का उपयोग करने के लिए अभी भी लाभ हैं, लेकिन कभी-कभी रोल-आपका अपना सबसे अच्छा हो सकता है ...
sleske

तुम भी एक मध्यवर्ती फ़ोल्डर में चेकआउट कर सकते हैं और वेब फ़ोल्डर से मध्यवर्ती फ़ोल्डर के लिंक हैं। अपने वेब फ़ोल्डर में .गित फाइलें होने से बचने के लिए।
बेंट

0

जिस रिपॉजिटरी पर आप जोर दे रहे हैं, उसके काम करने वाले पेड़ को अपडेट करने का सबसे आसान तरीका है git config receive.denyCurrentBranch updateInstead , रिसीवर की तरफ। Https://git-scm.com/docs/git-config/#git-config-receivedenyChBBch देखें

पोस्ट कमिट हुक के साथ रयान का जवाब बेहतर है कि यह कुछ अलग स्थान की जाँच करने की अनुमति देता है (आप संभवतः अपने वेब फ़ोल्डर में .git नहीं चाहते हैं)। लेकिन इस स्तर पर, कुछ मौजूदा परिनियोजन टूल का उपयोग करना एक अच्छा विचार हो सकता है, जैसा कि sleske ने टिप्पणियों में कहा है।

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