نظام التحكم في شفرة المصدر
نظام التحكم في شفرة المصدر ( SCCS ) هو نظام للتحكم في الإصدارات مصمم لتتبع التغييرات في شفرة المصدر وملفات النصوص الأخرى أثناء تطوير برنامج ما. يتيح هذا النظام للمستخدم استرجاع أي من الإصدارات السابقة لشفرة المصدر الأصلية والتغييرات المخزنة فيها. طُوّر هذا النظام في الأصل في مختبرات بيل بدءًا من أواخر عام 1972 على يد مارك روشكيند لجهاز كمبيوتر IBM System/370 يعمل بنظام التشغيل OS/360 . [ 1 ]
من السمات المميزة لنظام SCCS سلسلة sccsid المضمنة في شفرة المصدر، والتي يتم تحديثها تلقائيًا بواسطة SCCS مع كل مراجعة. [ 2 ] يوضح هذا المثال استخدامها في لغة البرمجة C :
static char sccsid [] = "@(#)ls.c 8.1 (Berkeley) 6/11/93" ;تحتوي هذه السلسلة على اسم الملف وتاريخه، وقد تحتوي أيضًا على تعليق. بعد عملية التجميع، يمكن العثور على هذه السلسلة في الملفات الثنائية وملفات الكائنات بالبحث عن النمط @(#)، ويمكن استخدامها لتحديد ملفات الشيفرة المصدرية المستخدمة أثناء التجميع. whatيتوفر أمر لأتمتة هذا البحث عن سلاسل الإصدارات. [ 3 ]
تاريخ
في عام 1972، قام مارك روشكيند بتطوير نظام SCCS بلغة SNOBOL4 في مختبرات بيل لجهاز كمبيوتر IBM System/370 الذي يعمل بنظام التشغيل OS/360 MVT . [ 1 ] أعاد كتابة نظام SCCS بلغة البرمجة C لاستخدامه تحت نظام UNIX ، الذي كان يعمل آنذاك على جهاز PDP-11 ، في عام 1973.
كان الإصدار الرابع من SCCS، الذي صدر في 18 فبراير 1977، أول إصدار متاح للجمهور. [ 4 ] وكان متوفرًا مع إصدار Programmer's Workbench (PWB) من نظام التشغيل . وكان الإصدار الرابع من SCCS أول إصدار يستخدم تنسيق ملف سجل نصي؛ بينما استخدمت الإصدارات السابقة تنسيقات ملفات سجل ثنائية. لم يعد مارك روشكيند يكتب أو يُحدّث الإصدار الرابع. لاحقًا، أُدرج SCCS في توزيعات AT&T التجارية لنظامي التشغيل System III و System V. ولم يكن مرخصًا مع 32V ، سلف نظام BSD . [ 5 ] أصبحت مجموعة أوامر SCCS الآن جزءًا من مواصفات UNIX الموحدة .
كان نظام SCCS هو نظام التحكم في الإصدارات السائد في أنظمة يونكس حتى انتشرت أنظمة التحكم في الإصدارات اللاحقة، ولا سيما RCS ثم CVS . واليوم، تُعتبر هذه الأنظمة القديمة قديمة، خاصةً في مجتمع المصادر المفتوحة الذي تبنى إلى حد كبير أنظمة التحكم في الإصدارات الموزعة . ومع ذلك، لا يزال تنسيق ملف SCCS مستخدمًا داخليًا في بعض برامج التحكم في الإصدارات الأحدث، بما في ذلك BitKeeper و TeamWare . يُعدّ الأخير واجهة أمامية لـ SCCS. تم تطوير Sablime [ 6 ] من نسخة مُعدّلة من SCCS [ 7 ]، ولكنه يستخدم تنسيق ملف سجل غير متوافق مع SCCS. يستخدم تنسيق ملف SCCS تقنية تخزين تُسمى دلتا المتداخلة (أو النسيج [ 8 ] ). يعتبر العديد من مطوري أنظمة التحكم في الإصدارات هذه التقنية أساسية لتقنيات الدمج والترقيم المتقدمة [ 9 ] ، مثل دمج "Precise Codeville" ("pcdv").
باستثناء تصحيح مشاكل عام 2000 في عام 1999، لم يشهد إصدار SCCS الخاص بمورّدي أنظمة يونكس المختلفة أي تطوير فعلي. [ 10 ] في عام 2006، أصدرت شركة صن مايكروسيستمز (التي أصبحت اليوم جزءًا من أوراكل ) إصدارها من SCCS لنظام سولاريس كمصدر مفتوح بموجب ترخيص CDDL، وذلك في إطار جهودها لجعل سولاريس مفتوح المصدر. [ 11 ]
خلفية
نظام التحكم في شفرة المصدر (SCCS) هو نظام للتحكم في تغييرات الملفات وسجل التغييرات. عادةً ما تتم ترقية البرامج إلى إصدار جديد عن طريق إصلاح الأخطاء، وتحسين الخوارزميات، وإضافة وظائف إضافية. [ 12 ] يؤدي تغيير البرامج إلى مشاكل تتطلب التحكم في الإصدارات لحلها. [ 1 ]
- تشغل شفرة المصدر مساحة كبيرة جدًا لأنها تتكرر في كل إصدار.
- من الصعب الحصول على معلومات حول متى وأين حدثت التغييرات.
- من الصعب العثور على النسخة المحددة التي يواجه العميل مشاكل معها.
تم تصميم نظام SCCS لحل هذه المشكلات. كان لدى SCCS من AT&T خمسة إصدارات رئيسية لنظام التشغيل IBM OS وخمسة إصدارات رئيسية لنظام UNIX [ 13 ]. ومن بين التطبيقات المحددة التي تستخدم SCCS: جهاز PDP 11 تحت نظام Unix وجهاز IBM 370 تحت نظام التشغيل. [ 1 ]
تعبير
يتكون نظام SCCS من جزأين: أوامر SCCS وملفات SCCS. [ 14 ] يمكن تنفيذ جميع العمليات الأساسية (مثل الإنشاء والحذف والتعديل) باستخدام أوامر SCCS. [ 14 ] تحتوي ملفات SCCS على بادئة تنسيق فريدة s.، يتم التحكم بها بواسطة أوامر SCCS. [ 2 ]
ملفات SCCS
يتكون ملف SCCS من ثلاثة أجزاء: [ 15 ]
- جدول دلتا
- الوصول إلى علامات التتبع وتتبعها
- نص النص
جدول دلتا
في نظام SCCS، يُعتبر التغيير (دلتا) مراجعة واحدة في ملف SCCS. تُخزّن التغييرات في جدول التغييرات، لذا يحتوي كل ملف SCCS على سجل خاص به للتغييرات. [ 15 ]
التحكم في علامات التتبع وتتبعها في ملفات SCCS
يتم تتبع كل عملية في كل ملف من ملفات SCCS بواسطة علامات. وظائفها كما يلي: [ 15 ]
- تحديد صلاحيات تحرير جميع ملفات SCCS.
- التحكم في كل إصدار من كل ملف من ملفات SCCS.
- السماح بالتحرير التعاوني لكل ملف من ملفات SCCS.
- تغييرات الإشارة المتبادلة لكل ملف من ملفات SCCS.
جسم
يستخدم نظام SCCS ثلاثة أنواع من سجلات التحكم لتتبع عمليات الإضافة والحذف التي تُطبق في مختلف مراحل التغيير. وهي سجل التحكم الخاص بالإضافة، وسجل التحكم الخاص بالحذف، وسجل التحكم الخاص بالنهاية. عندما يُجري المستخدم أي تغيير على جزء من النص، يُضاف سجل تحكم يُحيط بهذا التغيير. تُخزن سجلات التحكم في متن النص مع سجلات النص الأصلية. [ 1 ]
أوامر SCCS الأساسية
يوفر نظام SCCS مجموعة من الأوامر على شكل استدعاءات ماكرو تُنفذ أو تُهيئ وظائف إدارة شفرة المصدر باستخدام صيغة بسيطة، مثل create و get و edit و prt. [ 16 ] [ 17 ] كما يوفر إمكانية الوصول إلى سجل مراجعات الملفات الخاضعة للإدارة. تُنفذ هذه الأوامر كوسيطات فعلية لبرنامج التشغيل sccs .
يخلق
يستخدم الأمر sccs create نص ملف المصدر لإنشاء ملف سجل جديد. على سبيل المثال:
$ sccs create program.c program.c: 1.1 87 linesتتضمن المخرجات الاسم والإصدار وعدد الأسطر.
الأمر عبارة عن ماكرو يتم توسيعه إلى admin لإنشاء ملف السجل الجديد متبوعًا بـ get لاسترداد الملف.
يحرر
$ sccs edit program.c 1.1 new delta 1.2 87 linesقم بتحرير ملف معين.
الأمر عبارة عن ماكرو يتم توسيعه للحصول على -e .
ديلجيت
$ sccs delget program.c التعليقات؟ الدالة الرئيسية مُحسّنة 1.2 10 مُضافة 0 محذوفة 87 لم تتغير 1.2 97 سطرًاقم بالتحقق من الإصدار الجديد واحصل على الإصدار الجديد من sccs.
الأمر عبارة عن ماكرو يتوسع إلى delta للتحقق من ملف الإصدار الجديد متبوعًا بـ get لاسترداد الملف.
يحصل
$ sccs get program.c 1.1 87 linesتتمثل المخرجات في الإصدار والأسطر التي تريد الحصول عليها من ملف معين.
الجزء
$ sccs prt program.c يُنتج هذا الأمر تقريرًا عن تغييرات شفرة المصدر.
التطبيقات
إصدار UNIX SCCS
تتضمن معظم إصدارات يونكس نسخة من SCCS، والتي غالباً ما تكون غير مطورة بشكل فعال. [ 18 ]
شوكة يورغ شيلينغ
قام الراحل يورغ شيلينغ (الذي طلب إصدار SCCS في بدايات مشروع OpenSolaris ) [ 19 ] بتطوير نسخة معدلة من SCCS [ 20 ] [ 21 ] مبنية على شفرة المصدر الخاصة بـ OpenSolaris. وقد حظيت هذه النسخة بتحسينات كبيرة في الميزات، لكنها لا تزال متوافقة مع إصدارات SCCS الأصلية إلا عند استخدام وضع "مشروع جديد". [ 22 ]
مشروع الإرث
يتضمن مشروع Heirloom نسخة من SCCS مشتقة من شفرة المصدر OpenSolaris [ 23 ] وتم صيانتها بين ديسمبر 2006 وأبريل 2007. [ 24 ]
أداة تحويل GNU
يقدم مشروع GNU برنامج GNU CSSC المتوافق مع SCCS ("التحكم في المصدر الغبي المتوافق")، والذي يستخدم أحيانًا لتحويل أرشيفات SCCS إلى أنظمة أحدث مثل CVS أو Subversion ؛ [ 25 ] إنه ليس تطبيقًا كاملاً [ 26 ] لـ SCCS ولا يُنصح باستخدامه في المشاريع الجديدة، ولكنه مخصص في الغالب للتحويل إلى نظام تحكم في الإصدارات حديث.
أنظمة التحكم في الإصدارات الأخرى
منذ تسعينيات القرن الماضي، طُوِّرت العديد من أنظمة التحكم في الإصدارات الجديدة واكتسبت شعبية واسعة، وهي مصممة لإدارة المشاريع التي تحتوي على عدد كبير من الملفات، وتوفر وظائف متقدمة مثل التشغيل متعدد المستخدمين، والتحكم في الوصول، والبناء التلقائي، ودعم الشبكة، وإدارة الإصدارات، والتحكم الموزع في الإصدارات . يستخدم كل من Bitkeeper و TeamWare تنسيق ملفات SCCS داخليًا، ويمكن اعتبارهما خلفاء لـ SCCS. [ 27 ] [ 28 ]
في أنظمة BSD، يُستبدل مُعرّف التحكم في مراجعة شفرة المصدر (SCCSID) بمعرّف التحكم في مراجعة شفرة المصدر (RCSID) الذي يبدأ وينتهي بالرمز $ ؛ والأداة المُقابلة هي ident . [ 29 ] يُستخدم هذا النظام في الأصل بواسطة RCS ويُضاف تلقائيًا عند استخراج الشفرة. مُعرّفات التحكم في مراجعة شفرة المصدر الناتجة موثقة في أدلة أسلوب NetBSD [ 30 ] و FreeBSD [ 31 ] لقواعد الشفرة الخاصة بهما. يُعرّف NetBSD الكلمة المفتاحية المُخصصة $NetBSD: ...$ ، بينما يُعرّف FreeBSD الكلمة المفتاحية $FreeBSD: ...$ ووحدة ماكرو مُعاد تسميتها إلى __FBSDID .
يمكن لنظام التحكم في الإصدارات SRC أيضًا استخدام تنسيق ملف SCCS داخليًا (أو تنسيق RCS )، ويهدف إلى توفير واجهة مستخدم أفضل لـ SCCS مع الاستمرار في إدارة المشاريع ذات الملف الواحد فقط. [ 32 ]
مراجع
- ١ ٢ ٣ ٤ ٥ روشكيند، مارك ج. (ديسمبر ١٩٧٥)، "نظام التحكم في شفرة المصدر" (ملف PDF) ، معاملات IEEE في هندسة البرمجيات ، المجلد SE-1، العدد ٤، الصفحات ٣٦٤-٣٧٠ ، Bibcode : 1975ITSEn...1..364R ، doi : 10.1109/tse.1975.6312866 ، S2CID 10006076 ، مؤرشف من النسخة الأصلية (PDF) بتاريخ ٢٠١١-٠٥-٢٥ ، تم استرجاعه بتاريخ ٢٠٠٥-٠٧-٠٨
- 1 2 أوراكل. "الفصل 5 نظام التحكم في شفرة المصدر SCCS" . دليل أدوات البرمجة .
- ↑ "ماذا" . معهد مهندسي الكهرباء والإلكترونيات ومجموعة أوبن. بدون تاريخ . تم الاسترجاع في 28 نوفمبر 2022 .
- ↑ https://sccs.sourceforge.net/PWB.html إعلان AT&T لـ SCCSv4
- ↑ SCCS what(1) manpage from 4BSD, 1980, on the website of The Unix Heritage Society Archived 2005-08-31 at the Wayback Machine .
- ↑ "صفحة ويب سابليم" . ألكاتيل-لوسنت . مؤرشفة من الأصل بتاريخ 22-07-2016.
- ↑ إستوبلييه، جاكي، ديفيد ليبلانغ، أندريه فان دير هوك ، ريدار كونرادي، جيفري كليم، والتر تيشي، ودارسي ويبورغ-ويبر. "تأثير أبحاث هندسة البرمجيات على ممارسة إدارة تكوين البرمجيات." معاملات ACM في هندسة البرمجيات والمنهجية (TOSEM) 14 (أكتوبر 2005): 383-430.
- ↑ هدسون، جريج (3 أكتوبر 2002)، ملاحظات حول الاحتفاظ بسجلات إصدارات الملفات ، ملاحظات شخصية غير منشورة
- ↑ إستوبلييه، جاكي، ديفيد ليبلانغ، أندريه فان دير هوك ، ريدار كونرادي، جيفري كليم، والتر تيشي، ودارسي ويبورغ-ويبر. "تأثير أبحاث هندسة البرمجيات على ممارسة إدارة تكوين البرمجيات." معاملات ACM في هندسة البرمجيات والمنهجية (TOSEM) 14 (أكتوبر 2005): ص 398.
- ↑ ما هو نظام التشغيل SCCS ، نظام التشغيل GNU
- ↑ ستيفن لاو، صن مايكروسيستمز (19 ديسمبر 2006). "SCCS/make source available" . مؤرشف من الأصل في 25 أبريل 2012. تم الاطلاع عليه في 14 نوفمبر 2011 .
- ↑ اختيار تنظيم المنزل ProQuest 215925387
- ↑ تطور نظام التحكم في شفرة المصدر. آلان إل. جلاسر، نُشر في مجلة سيجميتريكس، نوفمبر 1978 عندما كان نظام التحكم في شفرة المصدر على نظام يونكس الإصدار 4
- 1 2 "SCCS" . www-h.eng.cam.ac.uk . تم الاطلاع عليه بتاريخ 12-09-2016 .
- 1 2 3 IBM (7 يونيو 2018). "مفاهيم البرمجة العامة: كتابة البرامج وتصحيح أخطائها" . مركز معارف IBM .
- ↑ مقدمة لنظام التحكم في شفرة المصدر، إريك ألمان، مشروع إنجريس، جامعة كاليفورنيا في بيركلي
- ↑ دليل أدوات برمجة نظام التحكم في شفرة المصدر
- ↑ كويكي، هيديكي، وهوي-تشو تشو. "VRCS: دمج التحكم في الإصدارات وإدارة الوحدات باستخدام رسومات ثلاثية الأبعاد تفاعلية." وقائع ندوة IEEE حول اللغات المرئية، 1997. IEEE، 1997.
- ↑ "os.solaris.opensolaris.rfe - ردًا على: star - msg#00001 - مناقشة حديثة على OSDir.com" . osdir.com . تم الاطلاع عليه بتاريخ 10 سبتمبر 2016 .
- ↑ موقع يورغ شيلينغ لتطوير SCCS
- ↑ "مجموعة من الأدوات التي كتبها أو أدارها سابقًا يورغ شيلينغ" . كودبيرغ . 22 أكتوبر 2022. تم الاطلاع عليه في 28 نوفمبر 2022.
تولى تطويرها مجموعة من المتطوعين الذين يرغبون في الحفاظ على المشروع حيويًا وفعالًا
. - ↑ موقع Schily SCCS الإلكتروني : "هل سيظل الإصدار القادم من SCCSv6 متوافقًا مع POSIX ومع تطبيقات SCCS التاريخية؟"
- ↑ غونار ريتر (20 يونيو 2010). "أدوات تطوير التراث" . تم الاطلاع عليه في 4 نوفمبر 2011 .
- ↑ https://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ انظر سجل CVS
- ↑ أداة تحويل SCCS2SVN، مؤرشفة بتاريخ 22-12-2009 على موقع Wayback Machine ، وهي تعمل مع كل من SCCS وCSSC
- ↑ قائمة قيود GNU CSSC في وثائقها
- ↑ "revtool" . وثائق BitKeeper .
- ↑ "مقدمة إلى برنامج Sun WorkShop TeamWare" . docs.oracle.com . تم الاطلاع عليه بتاريخ 10 سبتمبر 2016 .
- ↑ – دليل الأوامر العامة لنظام NetBSD
- ↑ "src/share/misc/style revision 1.64" . مستودع NetBSD CVS.
- ↑ – دليل مطوري نواة FreeBSD
- ↑ "صفحة الموارد للمصدر 1.29" . 21 يناير 2022. تم الاطلاع عليها في 28 نوفمبر 2022 .
للمزيد من القراءة
- مقال بقلم مارك روشكيند حول كيفية اختراع نظام SCCS
- – مرجع الصدفة والأدوات المساعدة، مواصفات يونكس الموحدة ، الإصدار 5 من مجموعة Open Group
- – دليل الأوامر العامة لنظام FreeBSD
- – دليل مرجعي لأوامر المستخدم لنظام التشغيل Solaris 11.4
- – صفحة دليل نظام التشغيل AIX 7.3
- دليل أوامر مستخدم HP -UX 11i
- دليل أوامر المستخدم لنظام IRIX 6.5
روابط خارجية
- برنامج عام 1972
- أنظمة التحكم في الإصدارات
- برنامج مجاني للتحكم في الإصدارات
- برامج أرشفة يونكس وأدوات الضغط ذات الصلة
- أدوات يونكس SUS2008
- برامج الاستضافة الذاتية
- برنامج يستخدم رخصة التطوير والتوزيع المشتركة
