सोर्स कोड कंट्रोल सिस्टम

सोर्स कोड कंट्रोल सिस्टम (एससीसीएस) संस्करण नियंत्रण सिस्टम है जिसे सॉफ्टवेयर के विकास के समय सोर्स कोड और अन्य टेक्स्ट फ़ाइलों में परिवर्तनों को ट्रैक करने के लिए डिज़ाइन किया गया है। यह उपयोगकर्ता को मूल सोर्स कोड के किसी भी पिछले संस्करण और संग्रहीत परिवर्तनों को पुनः प्राप्त करने की अनुमति देता है। इसे मूल रूप से 1972 के अंत में बेल लैब्स में मार्क रोशकिंड द्वारा ओएस/360 पर चलने वाले आईबीएम सिस्टम/370 कंप्यूटर के लिए विकसित किया गया था। एससीसीएस की विशिष्ट विशेषता एससीसीएसआईडी स्ट्रिंग है जो सोर्स कोड में एम्बेडेड है, और प्रत्येक संशोधन के लिए एससीसीएस द्वारा स्वचालित रूप से अपडेट की जाती है। यह उदाहरण C (प्रोग्रामिंग भाषा) में इसके उपयोग को दर्शाता है: इस स्ट्रिंग (कंप्यूटर विज्ञान) में फ़ाइल का नाम, दिनांक और टिप्पणी भी हो सकती है। संकलन के पश्चात्, क्रम की तलाश करके स्ट्रिंग को बाइनरी और ऑब्जेक्ट फ़ाइलों में पाया जा सकता है  और इसका उपयोग यह निर्धारित करने के लिए किया जा सकता है कि संकलन के समय कौन सी सोर्स कोड फ़ाइलों का उपयोग किया गया था।   संस्करण स्ट्रिंग्स के लिए इस खोज को स्वचालित करने के लिए e> कमांड उपलब्ध है।

इतिहास
1972 में, मार्क रोचकाइंड ने विभिन्न प्रकार के कार्यों के साथ ओएस/360 मल्टीप्रोग्रामिंग चलाने वाले आईबीएम सिस्टम/370 कंप्यूटर के लिए बेल लैब्स में एसएनओबीओएल में एससीसीएस विकसित किया था। उन्होंने यूनिक्स के अनुसार उपयोग के लिए C प्रोग्रामिंग भाषा में एससीसीएस को फिर से लिखा था, फिर 1973 में पीडीपी-11 पर चलाया गया था।

पहला सार्वजनिक रूप से प्रारंभ किया गया संस्करण 18 फरवरी 1977 से एससीसीएस संस्करण 4 था। यह ऑपरेटिंग सिस्टम के पीडब्लूबी/यूनिक्स|प्रोग्रामर वर्कबेंच (पीडब्लूबी) संस्करण के साथ उपलब्ध था। एससीसीएस का रिलीज़ 4 पहला संस्करण था जिसमें टेक्स्ट-आधारित इतिहास फ़ाइल स्वरूप का उपयोग किया गया था, पहले के संस्करणों में बाइनरी इतिहास फ़ाइल स्वरूपों का उपयोग किया गया था। रिलीज़ 4 अब मार्क रोशकाइंड द्वारा लिखा या अनुरक्षित नहीं किया गया था। इसके पश्चात्, एससीसीएस को AT&T के वाणिज्यिक यूनिक्स सिस्टम III और यूनिक्स सिस्टम V वितरण में सम्मिलित किया गया था। इसे बर्कले सॉफ्टवेयर वितरण के पूर्वज यूनिक्स/32V के साथ लाइसेंस प्राप्त नहीं था। एससीसीएस कमांड सेट अब सिंगल यूनिक्स विशिष्टता का भाग है।

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

1999 में वर्ष 2000 की समस्याओं को ठीक करने के अतिरिक्त, विभिन्न यूनिक्स विक्रेता-विशिष्ट एससीसीएस संस्करणों पर कोई सक्रिय विकास नहीं हुआ है। 2006 में, सन माइक्रोसिस्टम्स (आज ओरेकल कॉर्पोरेशन का भाग) ने सोलारिस को ओपन-सोर्स करने के अपने प्रयासों के भाग के रूप में सामान्य विकास एवं वितरण लाइसेंस के अनुसार ओपन-सोर्स सॉफ्टवेयर या ओपन-सोर्स के रूप में एससीसीएस का अपना सोलारिस (ऑपरेटिंग सिस्टम) संस्करण प्रारंभ किया था।

पृष्ठभूमि
सोर्स कोड कंट्रोल सिस्टम (एससीसीएस) फ़ाइल और इतिहास परिवर्तनों को नियंत्रित करने के लिए सिस्टम है। सॉफ़्टवेयर सामान्यतः बग्स को ठीक करके, एल्गोरिदम को अनुकूलित करके और अतिरिक्त फ़ंक्शन जोड़कर नए संस्करण में अपग्रेड किया जाता है। सॉफ़्टवेयर बदलने से समस्याएँ उत्पन्न होती हैं जिन्हें हल करने के लिए संस्करण नियंत्रण की आवश्यकता होती है। इन समस्याओं को हल करने के लिए एससीसीएस का निर्माण किया गया था। इस प्रकार एटी एंड टी के एससीसीएस में आईबीएम ओएस के लिए पांच प्रमुख संस्करण और यूनिक्स के लिए पांच प्रमुख संस्करण थे एससीसीएस का उपयोग करने वाले दो विशिष्ट कार्यान्वयन हैं: इस प्रकार यूनिक्स के अनुसार पीडीपी 11 और ओएस के अनुसार आईबीएम 370 का उपयोग किया जाता है।
 * सोर्स कोड बहुत अधिक स्थान लेता है क्योंकि यह प्रत्येक संस्करण में दोहराया जाता है।
 * परिवर्तन कब और कहाँ हुए, इसकी जानकारी प्राप्त करना कठिन है।
 * स्पष्ट संस्करण खोजना जिसमें क्लाइंट-सर्वर मॉडल में समस्याएँ हैं, कठिन है।

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

एससीसीएस फ़ाइलें
एससीसीएस फ़ाइल में तीन भाग होते हैं:


 * डेल्टा तालिका
 * फ्लैग तक पहुंच और ट्रैकिंग
 * टेक्स्ट का मुख्य भाग

डेल्टा तालिका
एससीसीएस में, डेल्टा एससीसीएस फ़ाइल में एकल संशोधन है। डेल्टा को डेल्टा तालिका में संग्रहीत किया जाता है, इसलिए प्रत्येक एससीसीएस फ़ाइल में परिवर्तनों का अपना अभिलेख होता है।

एससीसीएस फाइलों में फ्लैग का नियंत्रण और ट्रैकिंग
प्रत्येक एससीसीएस फ़ाइल के प्रत्येक ऑपरेशन को फ्लैग द्वारा ट्रैक किया जाता है। उनके कार्य इस प्रकार हैं:
 * प्रत्येक एससीसीएस फ़ाइल के संपादन के लिए अनुमतियाँ सेट करना।
 * प्रत्येक एससीसीएस फ़ाइल की प्रत्येक रिलीज़ को नियंत्रित करें।
 * प्रत्येक एससीसीएस फ़ाइल के सहयोगात्मक संपादन की अनुमति।
 * प्रत्येक एससीसीएस फ़ाइल के पारस्परिक-संदर्भित परिवर्तन।

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

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

क्रिएट
एससीसीएस कमांड क्रिएट नई इतिहास फ़ाइल बनाने के लिए सोर्स फ़ाइल के टेक्स्ट का उपयोग करता है। उदाहरण के लिए: आउटपुट नाम, संस्करण और पंक्तियाँ हैं।

कमांड मैक्रो है जो नई इतिहास फ़ाइल बनाने के लिए व्यवस्थापक तक विस्तारित होता है और उसके पश्चात् फ़ाइल को पुनः प्राप्त करता है।

एडिट
किसी विशिष्ट फ़ाइल को एडिट करें.

कमांड मैक्रो है जो -ई प्राप्त करने के लिए विस्तारित होता है।

डेल्गेट
नए संस्करण की जांच करें और एससीसीएस से नया संस्करण प्राप्त करें।

कमांड मैक्रो है जो नए संस्करण फ़ाइल की जांच करने के लिए डेल्टा तक विस्तारित होता है और उसके पश्चात् फ़ाइल को पुनः प्राप्त करता है।

गेट
आउटपुट संस्करण और पंक्तियाँ हैं जिन्हें आप विशिष्ट फ़ाइल से प्राप्त करना चाहते हैं।

पीआरटी
यह कमांड सोर्स कोड परिवर्तनों की सूची तैयार करता है।

यूनिक्स एससीसीएस संस्करण
अधिकांश यूनिक्स संस्करणों में एससीसीएस का संस्करण सम्मिलित होता है, जो, चूँकि, अब अधिकांशतः सक्रिय रूप से विकसित नहीं होता है।

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

हेयरलूम प्रोजेक्ट
हिरलूम प्रोजेक्ट में ओपनसोलारिस सोर्स कोड से प्राप्त एससीसीएस का संस्करण सम्मिलित है और दिसंबर 2006 और अप्रैल 2007 के बीच बनाए रखा गया था।

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

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

बीएसडी सिस्टम पर, एससीसीएसआईडी को प्रारंभ और अंत में आरसीएसआईडी से बदल दिया जाता है $; संबंधित उपकरण है ident. यह सिस्टम मूल रूप से रिवीजन कंट्रोल सिस्टम द्वारा उपयोग किया जाता है और चेकआउट पर स्वचालित रूप से जोड़ा जाता है। परिणामी सोर्स कोड संशोधन नियंत्रण पहचानकर्ता नेटबीएसडी में प्रलेखित हैं और फ्रीबीएसडी अपने स्वयं के कोड बेस के लिए स्टाइल गाइड नेटबीएसडी कस्टम कीवर्ड $NetBSD: ...$ को परिभाषित करता है जबकि फ्रीबीएसडी परिभाषित करता है इस प्रकार $FreeBSD: ...$ और मैक्रो का नाम बदल दिया गया __FBSDID.था

एसआरसी संस्करण नियंत्रण सिस्टम आंतरिक रूप से एससीसीएस फ़ाइल प्रारूप (या संशोधन नियंत्रण सिस्टम) का भी उपयोग कर सकती है और इसका उद्देश्य केवल एकल-फ़ाइल परियोजनाओं का प्रबंधन करते हुए एससीसीएस के लिए उत्तम उपयोगकर्ता इंटरफ़ेस प्रदान करना है। ==संदर्भ                                                                                                                                                                                                                                                                                                                                  ==

अग्रिम पठन

 * Essay from Marc Rochkind on how एससीसीएस was invented
 * – AIX 7.3 manual page
 * – AIX 7.3 manual page
 * – AIX 7.3 manual page
 * – AIX 7.3 manual page

बाहरी संबंध

 * Schily's एससीसीएस on Codeberg