मैं RoR एप्लिकेशन को लागू करने के लिए कैपिस्ट्रानो का उपयोग कर रहा हूं। कोडबेस एक गिट रिपॉजिटरी में है, और शाखा का व्यापक रूप से विकास में उपयोग किया जाता है। Capistrano deploy.rb
यह सेटिंग्स के लिए फ़ाइल का उपयोग करता है , उनमें से एक को तैनात करने के लिए शाखा है।
मेरी समस्या यह है: मान लें कि मैं मास्टर से एक नई शाखा ए बनाता हूं । तैनाती फ़ाइल मास्टर शाखा को संदर्भित करेगी । मैं इसे संपादित करता हूं, इसलिए A को पर्यावरण के परीक्षण के लिए तैनात किया जा सकता है। मैं फीचर पर काम करना समाप्त करता हूं, और शाखा ए को मास्टर में विलय करता हूं । चूंकि से फाइल एक नवसिखुआ है, यह में विलय कर दिया और अब हो जाता है में मास्टर शाखा संदर्भ एक । फिर से संपादित करने का समय।deploy.rb
deploy.rb
यह प्रतीत होता है कि अनावश्यक मैन्युअल संपादन का एक बहुत कुछ है - पैरामीटर को हमेशा वर्तमान शाखा नाम से मेल खाना चाहिए। उसके शीर्ष पर, हर बार सेटिंग्स को संपादित करना भूल जाना आसान है।
इस प्रक्रिया को स्वचालित करने का सबसे अच्छा तरीका क्या होगा?
संपादित करें: पता चला है कोई पहले से ही वास्तव में किया था कि मैं क्या जरूरत है :
आज सुबह मेरे पास एक स्टेजिंग सर्वर के लिए एक git रिपॉजिटरी की एक शाखा को तैनात करने का अवसर था, लेकिन यह कैसे पता नहीं था। कैपिस्ट्रानो स्रोत कोड के माध्यम से एक त्वरित खोज से पता चला कि मैं
:branch "branch_name"
अपनी तैनाती स्क्रिप्ट में सेट का उपयोग कर सकता हूं। मैंने इसे आजमाया और यह काम आया। फिर मुझे लगा कि मुझे अपनी सभी शाखाओं में समान परिवर्तन करने की आवश्यकता होगी। बेशक, मैं एक आलसी आदमी हूं और सोचता हूं कि क्या बेहतर तरीका नहीं था।यदि आप git से परिचित नहीं हैं, तो git ब्रांच कमांड का आउटपुट एक सूची के साथ शाखाओं की सूची है, जो आपके स्थानीय मशीन पर वर्तमान में जाँच की गई है। उदाहरण के लिए:
> git branch * drupal_authentication fragment_caching master
इसलिए, मुझे लगा कि क्या होगा अगर मैंने अभी आउटपुट को पार्स किया है और वर्तमान के रूप में चिह्नित शाखा के लिए खोज की है:
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
अब मैं अपनी स्थानीय मशीन पर एकल, साझा, परिनियोजित स्क्रिप्ट से जो भी शाखा चालू कर सकता हूं, उसे तैनात करने में सक्षम हूं।