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

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

इतिहास
1972 में, मार्क रोचकाइंड ने विभिन्न प्रकार के कार्यों के साथ ओएस/360 मल्टीप्रोग्रामिंग चलाने वाले आईबीएम सिस्टम/370 कंप्यूटर के लिए बेल लैब्स में एसएनओबीओएल में एससीसीएस विकसित किया था। उन्होंने यूनिक्स के अनुसार उपयोग के लिए सी प्रोग्रामिंग लैंग्वेज में एससीसीएस को फिर से लिखा था, फिर 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