2009-07-22 21 views
7

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

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

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

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

हालांकि, मुझे आश्चर्य है कि यह जाने का सही तरीका है या नहीं। क्या किसी को पता है कि उपversण में एकाधिक रिलीज शाखाओं का प्रबंधन करना संभव है? निश्चित रूप से उन सुविधाओं को प्रबंधित करना संभव होना चाहिए जो विलय करने की क्षमता के समझौता किए बिना देरी हो जाएं।

है वहाँ किसी को भी परिदृश्य मैं प्रस्तुत किया है, जिसे आप साझा करने के लिए तैयार हो जाएगा के विषय में किसी भी अनुभव है? मैं सिर्फ यह जानना चाहता हूं कि कैसे मैं अपने कार्यस्थल पर रिलीज के तरीके को बेहतर तरीके से प्रबंधित कर सकता हूं, इसलिए यह फिर से नहीं होता है।

+0

"प्रत्येक परियोजना ट्रंक के ब्रांच से" का क्या मतलब है? क्या आपका मतलब है कि आप फीचर शाखाओं का उपयोग करते हैं? –

+0

@wcoenen मुझे यकीन नहीं है कि इसे कैसे समझाया जाए। मैं अपने प्रश्न को बाद में एक आरेख के साथ अद्यतन करने जा रहा हूं कि चीजों को स्पष्ट करने की उम्मीद में हम चीजें कैसे करते हैं। दुर्भाग्य से, जो लड़का हमारी शाखाओं की प्रक्रियाओं के बारे में सबसे ज्यादा जानता है वह सोमवार तक दूर है। – mezoid

उत्तर

9

ईमानदार होने के लिए, मुझे पूरा यकीन नहीं है कि आपका सिस्टम विवरण से कैसे काम कर रहा है। हालांकि, मुझे अतीत में कई लाइव संस्करणों के साथ परियोजनाओं का प्रबंधन करना पड़ा है। जिस तरह से हमने यह किया था:

  1. कुछ भी जारी नहीं किया जाता है जो पहले ट्रंक में नहीं है।
  2. प्रत्येक संस्करण को अपनी संस्करण शाखा मिलती है।
  3. एक संस्करण शाखा को अद्यतन करने का एकमात्र तरीका ट्रंक से विलय करना है।

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

महत्वपूर्ण बात यह है कि आप एक पूरी तरह से एकीकृत शाखा है जिसे आप चुन सकते हैं - यह मेरी ट्रंक की परिभाषा है।

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

मेरा उत्तर here भी देखें।

1

यह कछुआ उत्कृष्ट नहीं है। जटिल विलय और शाखा परिदृश्यों को करने के लिए आपको अपने संस्करण नियंत्रण करने के लिए clearcase config spec जैसे कुछ चाहिए।

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

0

मुझे लगता है कि आप ट्रैकिंग विलय चाहते हैं, या तो svnmerge.py के माध्यम से, या निर्मित मर्ज सबवर्सन 1.5 से नज़र रखने के माध्यम से। यह आपको कुछ परिवर्तनों को शाखा में विलय करने से रोकने की अनुमति देता है, जो तब उन सुविधाओं से संबंधित सभी परिवर्तनों के लिए किया जा सकता है जिन्हें आप केवल अगली रिलीज में शामिल करना चाहते हैं।

0

आप लगभग हमेशा देरी वाली शाखा में दूसरे में उपस्थित होने के लिए परिवर्तन चाहते हैं। तो दूसरी रिलीज शाखा पहली रिलीज शाखा से की जानी चाहिए, और पहले से परिवर्तनों को समय-समय पर विलय किया जाना चाहिए। आदर्श रूप से वही लोग जिन्होंने उन्हें पहले स्थान पर बनाया था।

स्पप्लाडर (?) ब्रांचिंग इस मामले में अच्छा काम करेगी - बस ट्रंक छोड़ दें और चढ़ाई करें।

0

मेरी कंपनी के समान समस्याएं हैं।

हमारे पास एक परियोजना में देरी हुई थी - हम इसे कई महीनों तक 2.0 कहेंगे। इस बीच, हमारे पास मौजूदा शाखा पर उत्पादन के मुद्दे थे - चलिए 1.5 को कॉल करें - जो अधिक रिलीज की आवश्यकता है। हम ट्रंक का उपयोग नहीं कर सके, क्योंकि इसमें बाधाएं थीं, इसलिए हमने शाखाओं से शाखा बनाना शुरू कर दिया। हमारी रिलीज 1.6 1.5 से ब्रांच, ट्रंक नहीं। नामकरण सम्मेलन के अलावा 1.6 रिलीज वास्तव में 1.5.1 से अधिक कुछ भी नहीं है। चूंकि यह एसओपी नहीं है, इसलिए हम जो भी कर रहे हैं उसे दस्तावेज करने के लिए हम बहुत सावधान रहे हैं।

और मैं आगे मर्ज बिंदु है, जहाँ हम अंत में 1.6 शाखा और 2.0 को एक साथ लाने के लिए नहीं देख रहा हूँ। हम ट्रंक या 2.0 पर 1.6 पर परिवर्तनों को मर्ज करने में असमर्थ हैं, क्योंकि यह 2.0 समस्याओं पर क्यूए को और भी बदतर बना देता है। हम सबवर्सन 1.4.6 चला रहे हैं, इसलिए सॉफ़्टवेयर से कोई मदद नहीं - यह सभी मैन्युअल विलय हो जाएगा।

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