2010-10-06 18 views
5

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

ट्रंक उत्पादन सर्वर पर क्या है सभी समय किसी भी समय पर 2 शाखाएं खुली हैं 1) रखरखाव रिलीज। यह हर बुधवार 2) स्प्रिंट शाखा जारी किया जाता है। यह साप्ताहिक (बुधवार को उस सप्ताह के रखरखाव शाखा के साथ जारी किया जाता है)

रिलीज से पहले मैं उस सप्ताह की शाखाओं को ट्रंक में विलय करता हूं।

मुझे पता चला है कि जब svn विलय चल रहा है, तो यह आमतौर पर विलय होने पर समस्याओं का एक टन बनाता है। इस प्रकार हमने सप्ताह में एक बार मैन्युअल विलय मीटिंग में स्विच किया है, जो कहीं भी 10 मिनट से 1 घंटे तक ले जाता है, जहां मैं सचमुच अपने सिस्टम पर 2 निर्देशिकाएं जीतता हूं और प्रत्येक डेवलपर से पूछता हूं "क्या यह आपका परिवर्तन था? इस कोड का कौन सा संस्करण हमें चाहिए रहते हैं? "

यह प्रणाली निश्चित रूप से आदर्श नहीं है।

क्या कोई बेहतर कुछ सुझा सकता है?

+0

एचआरएम ... अच्छा, आप मैन्युअल विलय के साथ मदद करने के लिए गिट-एसवीएन का उपयोग कर सकते हैं ... –

+1

तो ummmm आपने पोस्ट नहीं पढ़ा? गिट का उपयोग नहीं कर सकते। – llaskin

+1

एसवीएन का कौन सा संस्करण आप उपयोग करते हैं? Svn (क्लाइंट और सर्वर) के नवीनतम संस्करण के साथ एक मर्ज-ट्रैकिंग सुविधा है। यह बहुत अच्छा नहीं है, लेकिन यह कुछ मुद्दों को हल करता है। – David

उत्तर

2

सबसे पहले, सोरी! मैं आपकी स्थिति को ईर्ष्या नहीं देता हूं।

मैंने फेडरल कार्ड एक्ट के लिए वेब रीडिज़ाइन करने वाले अंतरराष्ट्रीय बैंक के लिए काम किया। आपके जैसी ही स्थिति, केवल एक बड़े पैमाने पर होने की संभावना है। हमारे पास 3 लोग थे जिन्होंने बहुत ही समान कार्यक्रम पर रिलीज प्रबंधन के अलावा कुछ भी नहीं किया था। जिस चीज ने इसे सक्षम बनाया (कुछ हफ्तों में मैंने एक समय में दो सौ फाइलों के साथ काम किया) यह तथ्य था कि डेवलपर्स ट्रंक में विलय हो गए थे, फिर ट्रंक को प्रतिलिपि के रूप में उत्पादन में तैनात किया गया था .... हमने नहीं किया सीधे उत्पादन में जांचें। तो, एक रिलीज दृष्टिकोण से, आप कोरल डेवलपर्स को अपना काम चेक इन करने में मदद कर सकते हैं ("अपडेट" करने या जवाब देने के बीच क्या अंतर है "यह सही संस्करण है?" लेकिन फिर आप अंधेरे से नहीं चुन रहे हैं अपडेट लाइव होने चाहिए, जो एक बड़ी समस्या की तरह लगता है। निश्चित रूप से, डेवलपर्स थोड़ा शिकायत कर सकते हैं, लेकिन उस स्थिति में होने के कारण यह वास्तव में बहुत बुरा नहीं है। और यदि आप स्वयं को किसी भी प्रश्न का उत्तर देने के लिए उपलब्ध कराते हैं, तो यह ठीक होना चाहिए। यह देश भर में 4 स्थानों पर काम कर रहे 1,200 अजीब डेवलपर्स के लिए काम करता था।

दूसरी चीज जो आपको खरीदती है वह परीक्षण करने का समय है। यदि कोड लाइव होने से पहले विलय नहीं किया जाता है, तो बड़े सिस्टम के संदर्भ में इसका परीक्षण कैसे किया जा सकता है? मुझे यकीन है कि जवाब यह नहीं है कि इसका परीक्षण नहीं किया जा रहा है!

+0

यह मेरे प्रश्न का उत्तर नहीं था, बल्कि, यह एक अच्छा वर्णन था कि मैं ऐसा क्यों करता हूं। – llaskin

3

कथन "किसी भी समय 2 शाखाएं खुली हैं" मेरे लिए परेशानी है। कम से कम मेरी प्रैक्टिस शाखाओं में रिलीज से पहले या बग फिक्सिंग के लिए स्थिरीकरण के लिए बनाई जाती है, और वे आमतौर पर कम रहते हैं।

मेरा सवाल है - आप किस ट्रंक का उपयोग करते हैं? यह उत्पादन पर नहीं होना चाहिए, बल्कि उत्पादन को टैग किया जाना चाहिए (इसलिए जारी) संस्करण।

आपकी मर्ज समस्याएं स्वयं को प्रभावित कर रही हैं, जहां तक ​​मैं देख सकता हूं।

+0

मुझे स्पष्टीकरण दें: उत्पादन ट्रंक चला रहा है। उत्पादन सीधे नहीं बदला जाता है। बल्कि ट्रंक बदल जाता है, और फिर उत्पादन के लिए धक्का दिया जाता है। रिलीज खुद को टैग नहीं किया गया है – llaskin

+2

उत्पादन ट्रंक चला रहा है, यह मेरी पुस्तक में एक समस्या है। मेरे लिए ट्रंक खून बह रहा है, जहां विकास वास्तव में होता है, स्थिर उत्पादन वातावरण के लिए उपयुक्त नहीं है। उत्पादन को एक टैग किए गए संस्करण को फिर से चलाना चाहिए - फिर, हम यहां क्या करते हैं, कुछ असहमत हो सकते हैं। –

+0

हां, ट्रंक "खून बह रहा किनारा", जिसे "यह संकलित नहीं करता है!" यह किसने किया? " – David

1

इस परिदृश्य के लिए आदर्श शाखा रणनीति है। ट्रंक में नवीनतम विकास और प्रत्येक रिलीज के लिए इसमें से एक शाखा काट दिया और इसे एक रखरखाव रिलीज शाखा कहा। हालांकि आपके मामले में रखरखाव रिलीज ट्रंक में होता है। शाखा में नवीनतम विकास होता है।

ब्रांचिंग रणनीति को अलग रखना। वर्तमान स्थिति में सुधार के लिए यहां कुछ सुझाव दिए गए हैं।

  1. जैसा कि आप कहते हैं कि उत्पादन से जुड़े परिवर्तन पहले ट्रंक में होते हैं, मुझे लगता है कि यह न्यूनतम होगा। तो आप लगातार इन आधार पर अन्य दो खुली शाखाओं में प्रत्येक उत्पादन से संबंधित परिवर्तन को मर्ज क्यों नहीं करते हैं। मैं दिन में एक बार कहूंगा, यह अधिक बार या कम बार भी हो सकता है। आप बेहतर निर्णय लेने में सक्षम होंगे। यह डेवलपर्स को उत्पादन में होने वाले बदलावों को बेहतर बनाने, संघर्ष को कम करने के लिए बेहतर सिर भी देगा। अगर कोई संघर्ष होता है तो डेवलपर्स द्वारा खुद को शाखा में संभाला जाएगा।

  2. आप ढांचे

    • किसी तरह के साथ आ जो शाखाओं जो ट्रंक में किए गए प्रतिबद्ध की आवश्यकता कर रहे हैं परिभाषित करने में सक्षम होना चाहिए सोच सकते हैं।

    • एक पोस्ट प्रतिबद्ध हुक स्क्रिप्ट हो सकता है जो जांच करेगा कि प्रतिबद्धता ट्रंक में है या नहीं और शाखा के साथ एक एसवीएन विलय करें और देखें कि उनका संघर्ष है या नहीं।

    • यदि विलय सफल होता है, तो परिवर्तन करें। अन्यथा आपको और उस उपयुक्त डेवलपर को जानकारी दें जो इसे प्रतिबद्ध करता है (यह इस बात पर निर्भर करता है कि आप इससे कैसे निपटना चाहते हैं)।

7

आपका ट्रंक शाखा नवीनतम विकास कोड है, जो नए और untested सुविधाओं और अन्य शाखाओं से किसी भी कोड भी शामिल है के सभी को शामिल करना चाहिए। यह बहुत महत्वपूर्ण है कि सभी कोड इस शाखा में विलय हो जाएंगे।

जब आप तैयार होते हैं (या लगता है कि आप तैयार हैं) परीक्षण के लिए, स्थिर शाखा को अपनी ट्रंक शाखा से बंद करें। केवल इस बग का परीक्षण और फिक्सिंग के लिए इस शाखा का उपयोग करें। यहां अपने एप्लिकेशन में कोई नई सुविधाएं या सुधार न जोड़ें, या यह आपके मौजूदा कोड को अस्थिर कर सकता है। इस शाखा में किए गए परिवर्तनों को अपनी ट्रंक शाखा में विलय करना न भूलें।

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

trunk 
|-- stable 1.0 
    |-- release 1.0 
    |-- release 1.1 
|-- stable 2.0 
    |-- release 2.0 

इस पदानुक्रम का उपयोग करना, अपने विकास दल अपने ट्रंक शाखा में विकसित करने के लिए नि: शुल्क है, जबकि स्थिर, और रिलीज के वर्तमान और पिछले संस्करण बनाए रखने के लिए शाखाओं अनुमति देते हैं:

शाखा पदानुक्रम निम्नलिखित की तरह दिखाई देगा आपका आवेदन।

+0

ठीक है लेकिन वे एक ही शाखा में एक ही बार में 2 रिलीज पर कैसे काम करते हैं? जैसे एक ही समय में स्प्रिंट और रखरखाव रिलीज? प्रत्येक शाखा पर विभिन्न रिलीज चक्र के साथ? – llaskin

+0

@llaskin: यह आपकी स्थिति पर निर्भर करता है। आप या तो दो अलग-अलग स्थिर शाखाएं बना सकते हैं और रिलीज करने के लिए तैयार होने पर प्रत्येक स्थिर शाखा से रिलीज शाखा बना सकते हैं। वैकल्पिक रूप से, आप एक स्थिर शाखा से काम कर सकते हैं और रिलीज करने के लिए तैयार होने पर इस स्थिर शाखा से दो रिलीज शाखाएं बना सकते हैं। पसंद तुम्हारा है, बस सुनिश्चित करें कि सभी स्थिर शाखाओं को अद्यतित रखा गया है, साथ ही साथ आपकी ट्रंक शाखा भी। – Bernard

संबंधित मुद्दे