हम एकाधिक सर्वरों पर कोड कैसे दबा सकते हैं? हमारे पास कई सर्वर हैं जिनके पास कोड की एक ही प्रति होना आवश्यक है। व्यक्तिगत सर्वर को धक्का देना मुश्किल है। मुझे पता है कि Mercurial हुक है लेकिन उनमें से कोई भी एक उचित समाधान देता है।Mercurial द्वारा एकाधिक सर्वरों को कोड कैसे धक्का दें?
उत्तर
:
[paths]
default = http://server1
server2 = http://server2
और फिर एक है। ,
[paths]
server2=http://server2
server3=http://server3
[hooks]
changegroup.server2 = hg push -f server2
changegroup.server3 = hg push -f server3
आपको एक ही ईवेंट के लिए कई हुक हो सकता है इतना है कि एक मुद्दा नहीं होना चाहिए:
तो अपने केंद्रीय सर्वर निम्नलिखित hgrc होगा।
परिवर्तन हुक पर परिवर्तन समूह हुक का लाभ यह है कि यह बहुत कम बार चलाया जाता है।
आपकी .hg/hgrc
फ़ाइल में आपके पास [paths]
निर्देश होना चाहिए, जिसमें आपका डिफ़ॉल्ट स्थान शामिल है। की तरह कुछ जोड़ने के बारे में क्या: यदि आप एक changegroup हुक बनाने के अपने केंद्रीय सर्वर में
hg push default
hg push server2
हाँ यह समस्या है। मुझे यह समाधान पता है, जो मैं चाहता हूं वह एक हुक या ट्रिगर है जो सर्वर 1 के लिए सफल धक्का पर, सर्वर 2 पर धक्का स्वचालित रूप से शुरू किया जाता है। उपरोक्त समाधान हमेशा एक सर्वर को धक्का देने के लिए भूलने का मौका है। वैसे, एक त्वरित उत्तर के लिए धन्यवाद। – Akshay
मुझे स्वचालित पुश चेन समस्या का सामना करना पड़ा है। क्या यह हल करता है या नहीं? –
मुझे लगता है कि सर्वरों में से एक मास्टर रेपो है, शेष तैनाती हैं। ऐसी स्थिति में, मैं सिर्फ मास्टर के साथ बातचीत करता हूं और तैयारी को क्रॉन तक छोड़ देता हूं:
cat >$HOME/bin/dist <<'EOM'
#!/bin/sh
cd ${1:?}
tip=$(hg tip --template '{node}')
for r in $remotes; do
hg push -r $tip $r
done
EOM
chmod +x $HOME/bin/dist
(crontab -l; echo '*/5 * * * * $HOME/bin/dist /var/repos/master') | crontab -
हुह .. क्या होगा यदि एक से अधिक प्रतिबद्धताओं को 5 मिलियन से भी कम समय में धक्का दिया गया हो? :-)। इस मामले में एक "परिवर्तन समूह" हुक सेट करना बेहतर है। साथ ही जब कोई परिवर्तन एक शाखा बना रहा है, तो -फ विकल्प (बल) के साथ धक्का देना आवश्यक होगा। मेरी सलाह, यदि आप एक हुक के बजाय क्रॉन का उपयोग करना चाहते हैं, तो इसे दूरस्थ मशीनों पर सेट करना होगा जो नियमित रूप से परिवर्तन खींचेंगे: इस तरह, एक से अधिक परिवर्तनों को खींच लिया जा सकता है (ताकि आप हर घंटे भी खींच सकें उदाहरण), और खींचने के लिए -f विकल्प की आवश्यकता नहीं है। बस मेरे 0.02 €। चीयर्स, क्रिस्टोफ़े। –
का समाधान ठीक काम करता है। 'पुश' 'टिप' और उसके सभी पूर्वजों को धक्का देता है, इसलिए उन्हें सबकुछ मिल जाएगा। हालांकि, बहुत सारे अनावश्यक कोड हैं, आप इसे सीखने के लिए टेम्पलेट का उपयोग करने के बजाय 'टिप' नाम का उपयोग कर सकते हैं (-r नाम सिर्फ ठीक है), और आप -r param को सभी को एक साथ छोड़ सकते हैं और बस 'पुश' कर सकते हैं टिप करने के लिए डिफ़ॉल्ट। आप शायद पुश-एफ चाहते हैं, हालांकि आपको किसी बिंदु पर नई शाखाएं और नए सिर धक्का देने की आवश्यकता हो सकती है और आप नहीं चाहते कि स्क्रिप्ट विफल हो। –
@ ry4an: आप 'tip' नाम का उपयोग नहीं कर सकते हैं, क्योंकि स्क्रिप्ट सर्वर 1 से सर्वर 3 तक पहुंचने से पहले यह एक अलग परिवर्तन को इंगित कर सकता है।यही कारण है कि आप केवल '-r' नहीं छोड़ सकते हैं: यदि आप चाहते हैं कि सभी दर्पणों को प्रत्येक धक्का के बाद एक ही टिप हो, तो आपको पूरी स्क्रिप्ट के लिए एक ही संशोधन के साथ चिपकने की आवश्यकता है। हालांकि, '-f' टिप्पणी मान्य है। –
- 1. एकाधिक एसवीएन सर्वरों में कोड रखना
- 2. एकाधिक सर्वरों पर तैनाती
- 3. एकाधिक सर्वरों के बीच संचार
- 4. गिट: केवल विशिष्ट टैग को धक्का दें
- 5. गिट पुश, सभी स्थानीय कामों को धक्का न दें
- 6. इतिहास के बिना नई शाखा को कैसे धक्का दें
- 7. एकाधिक सर्वरों पर जावा धागे वितरित करना?
- 8. मेरे कोड को लाइसेंस कैसे दें?
- 9. इस पायथन कोड को कैसे गति दें?
- 10. स्वत: धक्का कैसे कॉन्फ़िगर करें?
- 11. एकाधिक सर्वरों पर पोस्टग्रेस सर्वर स्केल करना
- 12. Mercurial: डिफ़ॉल्ट शाखा में कैसे धक्का देना है?
- 13. जावा: एकाधिक सर्वरों में धागे सिंक्रनाइज़ करना
- 14. एकाधिक सर्वरों पर बड़ी मात्रा में छवियों को स्टोर करें
- 15. एकाधिक ऐप सर्वरों पर Lucene.net अनुक्रमणिका को सिंक करना
- 16. एकाधिक सर्वरों पर सिंगल एसएसएल प्रमाण
- 17. गिट फोर्स वर्तमान कार्यशील निर्देशिका को धक्का दें
- 18. Mercurial
- 19. एकाधिक स्रोत कोड भंडार
- 20. Mercurial
- 21. एवीप्लेयर को SSL द्वारा सुरक्षित प्लेलिस्ट पुनर्प्राप्त करने दें कैसे?
- 22. Mercurial
- 23. क्षैतिज सर्वरों पर socket.io उपयोगकर्ताओं को गिनती
- 24. सी # - ओपनफाइलडियलॉग में एकाधिक फ़ाइल प्रकारों को कैसे अनुमति दें?
- 25. ASP.NET में एकाधिक प्रमाणीकरण विधियों को कैसे अनुमति दें?
- 26. Mercurial
- 27. Mercurial और कोड समीक्षा; अच्छा वर्कफ़्लो?
- 28. Mercurial में धक्का देने के लिए डिफ़ॉल्ट शाखा को कैसे बदलें?
- 29. Mercurial
- 30. सी ++ कोड में पुनरावृत्ति को हटा दें?
यह सबसे अच्छा समाधान है क्योंकि यह केवल तभी ट्रिगर किया जाएगा जब सर्वर 1 पर पुश सफल हो। यदि आप ब्रांची इतिहास के साथ काम कर रहे हैं तो आपको शायद उन परिवर्तन समूह हुक लाइनों में 'पुश-एफ' की आवश्यकता होगी। –
जोड़ा गया -f विकल्प –
कोड को इसके लिए काम करने की आवश्यकता है। Mercurial आपको [प्रति घटना कई क्रियाएं करने की सुविधा देता है] (http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html) ** अंत में एक एक्सटेंशन जोड़कर ** हुक का नाम आप हुक का नाम देकर एक हुक का नाम बढ़ाते हैं, उसके बाद पूर्ण स्टॉप ("।" वर्ण) के बाद, आपके चयन के कुछ और पाठ होते हैं। उदाहरण के लिए, जब ईवेंट घटना होती है तो Mercurial commit.foo और commit.बार दोनों चलाएगा। –