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

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

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

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

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

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

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

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

एससीसीएस फ़ाइलें
SCCS फ़ाइल में तीन भाग होते हैं: * डेल्टा तालिका
 * झंडे तक पहुंच और ट्रैकिंग
 * पाठ का मुख्य भाग

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

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

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

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

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

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

संपादित करें
किसी विशिष्ट फ़ाइल को संपादित करें.

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

आंशिक
नए संस्करण की जांच करें और एससीसीएस से नया संस्करण प्राप्त करें।

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

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

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

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

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

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

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

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

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

अग्रिम पठन

 * Essay from Marc Rochkind on how SCCS was invented
 * – AIX 7.3 manual page
 * – AIX 7.3 manual page
 * – AIX 7.3 manual page
 * – AIX 7.3 manual page

बाहरी संबंध

 * Schily's SCCS on Codeberg