Git: रिपॉजिटरी से ऑटो पुल?


90

क्या git को सेट करने का कोई तरीका है कि वह रिमोट रेपो से अपडेट के लिए सुने और जब भी कुछ बदलेगा? उपयोग का मामला यह है कि मैं git का उपयोग करके एक वेब ऐप को तैनात करना चाहता हूं (इसलिए मुझे तैनात एप्लिकेशन का संस्करण नियंत्रण प्राप्त होता है), लेकिन वेब सर्वर पर Github पर "केंद्रीय" git रेपो डालना चाहते हैं (Github का इंटरफ़ेस अभी-अभी बहुत अच्छा है) ।

किसी को भी इस काम मिल गया है? हेरोकू यह कैसे करता है? मेरा Google-फ़्यू मुझे कोई प्रासंगिक परिणाम देने में विफल हो रहा है।

जवाबों:


48

Git में "हुक" हैं, जो क्रियाएं अन्य कार्यों के बाद निष्पादित की जा सकती हैं। जो आप ढूंढ रहे हैं वह "पोस्ट-प्राप्त हुक" है। गिटब एडमिन में, आप एक पोस्ट-प्राप्त url सेट कर सकते हैं जो हिट होगा (एक पेलोड युक्त डेटा के बारे में जो अभी-अभी धक्का दिया गया था) हर बार कोई आपके रेपो को धक्का देता है।

इसके लायक क्या है, मुझे नहीं लगता कि ऑटो-पुल एक अच्छा विचार है - क्या होगा अगर कुछ गलत आपकी शाखा में धकेल दिया गया था? मैं capistranoइस तरह की चीजों के लिए एक उपकरण (या समतुल्य) का उपयोग करता हूं ।


10
मेरे नियोजित उपयोग के मामले में एक अलग रेपो / शाखा देव के लिए "परीक्षण और खिलवाड़ करना" चरण के लिए था, और एक विशेष "पुश टू प्रोडक्शन" रेपो है जिसे मैं केवल एक बार धक्का देता हूं मुझे यकीन है कि सब कुछ काम करता है। मैं मूल रूप से rsync के साथ करने के लिए Git का उपयोग कर रहा हूं, सिवाय इसके कि यह सभी संस्करणों का एक लॉग रखता है जो तैनात हो जाते हैं, और मैं आसानी से पिछले संस्करण में वापस रोल कर पाऊंगा। Capistrano की तरह कुछ और कट्टर पर लाभ यह है कि मैं (अब के रूप में) एक बहुत ही महत्वपूर्ण परियोजना के लिए एक नया उपकरण नहीं सीखना होगा।
Li Haoyi

webhook प्रमाणीकरण अतिरिक्त सुरक्षा मुद्दों और जटिलता को जोड़ता है, इसलिए पुल-आधारित समाधान अभी भी उनके फायदे हैं। आकस्मिक तैनाती से बचने के लिए टैग के साथ रिलीज़ संस्करण नियंत्रण किया जा सकता है।
lz96

21

यूनिक्स-पसंद पर आप अपनी मशीन पर "गिट पुल" (हर दिन या हर हफ्ते या जो भी) कॉल करते हैं क्रॉन जॉब बना सकते हैं। खिड़कियों पर आप एक ही काम करने के लिए कार्य अनुसूचक या "एटी" कमांड का उपयोग कर सकते हैं।


3
Git का उपयोग करने का एक उचित तरीका नहीं है।
deepdive

26
@deepdive क्यों नहीं? कल्पना कीजिए कि आपके घर में थोड़ा रैस्पररी पाई है और कोई स्थिर आईपी उपलब्ध नहीं है। फिर आपके पास क्रोन या रनवे जॉब चलाने का और कौन सा विकल्प है?
कासर

2
यह एक अच्छा विचार नहीं है। वह चाहता है कि धकेलने के तुरंत बाद बदलाव लागू किए जाएं।
बोइ_चोस

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

3
क्रॉन टैब को बदले बिना ऐसा करने का एक त्वरित तरीका while true; do git pull; sleep 10; done:। यह git pullहर 10 सेकंड में करेगा ...
JakeD

3

जेनकिंस या बांस जैसे निरंतर एकीकरण कार्यक्रम हैं, जो कमिट का पता लगा सकते हैं और निर्माण, परीक्षण, पैकेज और तैनाती जैसे कार्यों को ट्रिगर कर सकते हैं। वे वही करते हैं जो आप चाहते हैं, लेकिन वे निर्भरता के साथ भारी होते हैं, कॉन्फ़िगर करना मुश्किल होता है और अंत में वे गिट रिपॉजिटरी के खिलाफ समय-समय पर जांच का उपयोग कर सकते हैं, जिसका एक ही प्रभाव होगा जैसे हर मिनट क्रोन द्वारा गिट पुल को कॉल करना।


0

मुझे पता है कि यह सवाल थोड़ा पुराना है, लेकिन आप एक वेबहुक और php का उपयोग करके अपने प्रोजेक्ट को ऑटोप्ले करने के लिए विंडोज़ लॉग और गिट का उपयोग कर सकते हैं (यह मानते हुए कि आपके प्रोजेक्ट में एक वेबसर्वर शामिल है। यहां देखें मेरा gist: https://gist.githb.com/ upggr / a6d92e2808e9628ebe0d01fd93569f4a

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