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