2010-03-08 15 views
10

यहां मैं जो करने की कोशिश कर रहा हूं:स्वचालित रूप से गिट पुश के साथ रिमोट सर्वर पर खींच रहा है?

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

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

मैं सादगी के लिए PHP का उपयोग किया गया था, लेकिन बस स्वाभाविक रूप से, क्योंकि अनुमतियों के काम नहीं करता है git pull की तरह कुछ कर रही। क्या यह एक बुरा विचार है या क्या मैं ऐसा करना चाहता हूं जो मैं करना चाहता हूं? यह एक आम सेट अप की तरह लगता है, लेकिन मुझे यकीन नहीं था।

धन्यवाद।

उत्तर

2

यदि यह धक्का को स्क्रिप्ट चलाने के लिए आसान है, आप सेटअप हुक पुश करने के लिए कर सकते हैं:

    एक नंगे (खाली worktree) अपने वेब सर्वर
  • पर रेपो अपने नंगे रेपो से करने के लिए GitHub से
  • अपने "लाइव" रेपो के लिए अपने वेब सर्वर पर

फिर आप कर सकते हैं कि आपके "लाइव" ही अद्यतन करने के लिए रेपो पर एक हुक के साथ (एक "Git मर्ज" के माध्यम से (एक worktree अपने वेब साइट का प्रतिनिधित्व करने के साथ), वाई के लिए अपने नंगे रेपो की सामग्री विलय हमारे "लाइव" रेपो), जब भी आपका नंगे रेपो कुछ भी धक्का देता है। (एक निश्चित शाखा मुझे लगता है के लिए) अपने GitHub रेपो के लिए किसी भी धक्का अपने "लाइव" वेब सर्वर रेपो पर एक ताज़ा ट्रिगर किया जाएगा:

आप प्रभाव आप चाहते हैं मिलता है।

1

मैं कुछ है कि लगभग ठीक इस तरह से काम करता है, सिवाय इसके कि "दूरस्थ" रेपो कि धक्का प्राप्त करता रेपो कि बाद में खींचती है के रूप में एक ही मशीन पर है बनाया है। यह सच है (और महत्वपूर्ण) कि उपयोगकर्ताओं के एक ही सेट में दोनों रिपॉजिटरीज़ पर अनुमतियां हैं। (लेकिन यह ठीक होना चाहिए; आप नहीं चाहते हैं कि यादृच्छिक लोग आपके रेपो को दबा रहे हों।) किसी भी मामले में मुझे बस गिट पोस्ट-अपडेट हुक कॉल एक शेल स्क्रिप्ट है जो मेरे लिए खींचती है। एक मुश्किल बात यह है कि आपको पर्यावरण को साफ करना है (मैंने env -i का उपयोग किया है, या आप गिट से संबंधित चर को अनसेट कर सकते हैं), अन्यथा पुल भ्रमित हो जाता है।

0

यहां एक वेबहूक है जो शायद आपकी मदद कर सकता है। मुझे लगता है कि यह वही करता है जो आप खोज रहे हैं: Remote Server WebHook