نظام الإصدارات المتزامنة
نظام الإصدارات المتزامنة ( CVS ، أو نظام التحكم في الإصدارات المتزامنة ) هو نظام للتحكم في الإصدارات طُوِّر في الأصل بواسطة ديك غرون في يوليو 1986. [ 4 ] وهو مبني على نظام تحكم في الإصدارات أقدم يُسمى نظام التحكم في المراجعات (RCS)، مع إضافة دعم لتتبع التغييرات على مستوى المستودع، ونموذج العميل والخادم. تعمل خوادم CVS عادةً على أنظمة يونكس ، بينما يمكن أن تكون أجهزة العميل على أي نظام تشغيل .
تصميم
يعمل نظام CVS كواجهة أمامية لنظام التحكم في المراجعات (RCS)، وهو نظام تحكم في الإصدارات أقدم يدير الملفات الفردية وليس المشاريع بأكملها. ويُوسّع CVS نطاق RCS بإضافة دعم لتتبع التغييرات على مستوى المستودع، ونموذج العميل والخادم. [ 5 ] يتم تتبع الملفات باستخدام نفس تنسيق سجل التغييرات كما في RCS، مع وجود دليل مخفي يحتوي على ملف سجل تغييرات مطابق لكل ملف في المستودع.
يستخدم نظام CVS ضغط دلتا لتخزين نسخ مختلفة من الملف نفسه بكفاءة. يُناسب هذا الأسلوب ملفات النصوص الكبيرة ذات التغييرات الطفيفة بين النسخ، كما هو الحال عادةً مع ملفات الشيفرة المصدرية. أما عند ضبط CVS لتخزين ملف بصيغة ثنائية، فإنه يحتفظ بكل نسخة على حدة على الخادم. يُستخدم هذا الأسلوب عادةً مع الملفات غير النصية، مثل الصور التنفيذية، حيث يصعب إنشاء دلتا مضغوطة بين النسخ.
يستبعد نظام CVS الروابط الرمزية لأنها قد تشكل خطرًا أمنيًا عند تخزينها في نظام التحكم بالإصدارات. على سبيل المثال، قد يُخزَّن رابط رمزي لملف حساس في المستودع، مما يجعل الوصول إلى هذا الملف ممكنًا حتى في حال عدم إضافته إلى نظام التحكم بالإصدارات. وبدلًا من الروابط الرمزية، يمكن إضافة البرامج النصية التي تتطلب صلاحيات معينة وتدخلًا مباشرًا لتنفيذها إلى نظام CVS.
عملية
يُصنّف نظام CVS كل مشروع (مجموعة من الملفات المترابطة) يُديره كوحدة نمطية . ويخزن خادم CVS هذه الوحدات النمطية في مستودعه . ويحصل المبرمجون على نسخ من هذه الوحدات النمطية عن طريق استخراجها . وتُستخدم الملفات المستخرجة كنسخة عمل ، أو بيئة تجريبية ، أو مساحة عمل . وتنعكس التغييرات التي تُجرى على نسخة العمل في المستودع عن طريق حفظها . أما التحديث فيعني الحصول على التغييرات الموجودة في المستودع أو دمجها مع نسخة العمل.
يستخدم نظام CVS بنية خادم-عميل : حيث يخزن الخادم الإصدار (أو الإصدارات) الحالي للمشروع وسجله ، ويتصل العملاء بالخادم لاستخراج نسخة كاملة من المشروع، والعمل عليها، ثم إيداع تعديلاتهم لاحقًا. تتيح خوادم CVS إمكانية "الوصول للقراءة المجهولة" [ 6 ] ، حيث يمكن للعملاء استخراج الإصدارات ومقارنتها باستخدام كلمة مرور فارغة أو كلمة مرور بسيطة منشورة (مثل "anoncvs")؛ ولا يتطلب إيداع التغييرات سوى حساب شخصي وكلمة مرور في هذه الحالات. يمكن لعدة مطورين العمل على نفس المشروع في وقت واحد، حيث يقوم كل منهم بتحرير الملفات ضمن "نسخة العمل" الخاصة به من المشروع، وإرسال (أو إيداع ) تعديلاته إلى الخادم. ولتجنب التعارضات، لا يقبل الخادم إلا التغييرات التي أُجريت على أحدث إصدار من الملف. لذا، يُتوقع من المطورين تحديث نسخة العمل الخاصة بهم باستمرار من خلال دمج تعديلات الآخرين بشكل منتظم. تُعالج هذه المهمة في الغالب تلقائيًا بواسطة عميل CVS، ولا تتطلب تدخلًا يدويًا إلا عند حدوث تعارض في التحرير بين تعديل مُسجّل في النظام والنسخة المحلية غير المُسجّلة من الملف. كما يمكن للعملاء استخدام أمر "التحديث" لتحديث نسخهم المحلية بأحدث نسخة على الخادم. ويمكنهم أيضًا مقارنة الإصدارات، أو طلب سجل كامل للتغييرات، أو استخراج لقطة تاريخية للمشروع (على سبيل المثال، بناءً على تاريخ مُحدد). في حال نجاح عملية التسجيل، يتم زيادة أرقام إصدارات جميع الملفات المعنية تلقائيًا، ويكتب الخادم سطر وصف يُحدده المستخدم، بالإضافة إلى التاريخ واسم المؤلف في ملفات السجل . كما يمكن لـ CVS تشغيل برامج نصية خارجية لمعالجة السجلات يُحددها المستخدم بعد كل عملية إيداع. تُثبّت هذه البرامج النصية من خلال إدخال في ملف CVS loginfo، والذي يمكنه إرسال إشعار عبر البريد الإلكتروني أو تحويل بيانات السجل إلى تنسيق ويب.
يُمكن لنظام إدارة الإصدارات (CVS) أيضًا إدارة "فروع" مختلفة للمشروع. على سبيل المثال، قد يُشكّل إصدارٌ مُصدَرٌ من مشروع البرنامج فرعًا يُستخدم لإصلاح الأخطاء، بينما يُمكن لإصدارٍ قيد التطوير الحالي، والذي يتضمن تغييراتٍ جوهرية وميزاتٍ جديدة، أن يُشكّل فرعًا منفصلاً. يفترض نظام إدارة الإصدارات أن معظم العمل يتم على الفرع الرئيسي (Trunk)، وأن الفروع يجب أن تكون قصيرة الأجل أو تاريخية. عند استخدامه وفقًا للتصميم، يسهل إدارة الفروع وتكون عملياتها فعّالة وسريعة. [ 7 ] [ 8 ]
سهولة الحمل
يقوم مطورو برنامج الخادم بكتابته لنظام يونكس ، على الرغم من أن خادم CVSNT يدعم أيضًا إصدارات مختلفة من مايكروسوفت ويندوز ، في حين أن عملاء CVS قد يعملون على أي نظام تشغيل رئيسي .
تاريخ
استذكر غرون: [ 9 ]
أنشأتُ نظام CVS لأتمكن من التعاون مع طالبَيّ، إريك بالبيرغن ومارتن واج، في مشروع مُجمِّع لغة C الخاص بمجموعة أدوات مُجمِّع أمستردام (ACK ). كانت جداولنا الزمنية مُختلفة تمامًا (أحد الطالبين كان يعمل بانتظام من التاسعة صباحًا حتى الخامسة مساءً، والآخر كان يعمل بشكل غير مُنتظم، ولم أكن أستطيع العمل على المشروع إلا في المساء). استمر مشروعهم من يوليو 1984 إلى أغسطس 1985. أُطلق على نظام CVS في البداية اسم cmt، وذلك لسببٍ واضح، وهو أنه سمح لنا بإضافة الإصدارات بشكلٍ مُستقل.
أصدر غرون الكود علنًا في 23 يونيو 1986. [ 10 ]
بدأ تطوير الكود الذي تطور لاحقًا إلى الإصدار الحالي من نظام التحكم في الإصدارات (CVS) على يد برايان برلينر في أبريل 1989، مع مساهمات لاحقة من جيف بولك والعديد من المساهمين الآخرين. كتب برايان برلينر ورقة بحثية يُعرّف فيها بتحسيناته لبرنامج CVS، والتي تصف كيفية توسيع الأداة واستخدامها داخليًا من قِبل بريزما، وهي شركة تطوير خارجية تعمل على نواة نظام التشغيل SunOS، وتم إصدارها لصالح المجتمع بموجب رخصة جنو العمومية (GPL). [ 11 ] في 19 نوفمبر 1990، تم تقديم الإصدار 1.0 من CVS إلى مؤسسة البرمجيات الحرة لتطويره وتوزيعه. [ 12 ]
تم إصدار أحدث نسخة في 8 مايو 2008. [ 13 ]
التبني والخلفاء
في عالم البرمجيات مفتوحة المصدر، لطالما كان نظام التحكم في الإصدارات المتزامنة (CVS) الأداة المفضلة للتحكم في الإصدارات. وهذا صحيح. فنظام CVS نفسه برنامج مجاني، وطريقة عمله غير المقيدة ودعمه للعمل عبر الشبكات - مما يسمح لعشرات المبرمجين المنتشرين جغرافيًا بمشاركة أعمالهم - تتناسب تمامًا مع الطبيعة التعاونية لعالم البرمجيات مفتوحة المصدر. وقد أصبح نظام CVS ونموذج تطويره شبه الفوضوي من الركائز الأساسية للبرمجيات مفتوحة المصدر. [ 14 ]
بمرور الوقت، ابتكر المطورون أنظمة جديدة للتحكم في الإصدارات تعتمد على نظام CVS لإضافة ميزات جديدة، وتغيير نموذج التشغيل، وتحسين إنتاجية المطورين. تشمل مشاريع استبدال CVS كلاً من CVSNT و Subversion . [ 15 ] [ 16 ]
انظر أيضاً
ملحوظات
- ↑ تم إصدار النسخة المستقرة من نظام إدارة الإصدارات CVS 1.11.23!
- ↑ تم إصدار الإصدار 1.12.13 من ميزات CVS! * تحديث أمني *
- ↑ "نظام الإصدارات المتزامنة - ملخص" .
- ↑ "CVS - نظام الإصدارات المتزامنة الإصدار 1.12.12.1: نظرة عامة" . مؤرشف من الأصل بتاريخ 15 أبريل 2012. تم الاطلاع عليه بتاريخ 9 ديسمبر 2011 .
- ↑ ستوباك، جاكوب (30 نوفمبر 2019). "تطور البنية الداخلية لنظام التحكم في الإصدارات (VCS)" . تم الاطلاع عليه بتاريخ 22 سبتمبر 2020 .
- ↑ تشارلز د. كرانور؛ ثيو دي رادت (1999). "فتح مستودع المصادر باستخدام نظام التحكم في الإصدارات المجهول، مؤتمر USENIX 1999" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 9 أكتوبر 2022.
- ↑ كولينز-سوسمان، بن؛ جريج وارد (سبتمبر 2004). "مستخدمو Subversion: ردًا على: الأداء (Subversion مقابل CVS)" . subversion-users . تم الاسترجاع في 7 يوليو 2010 .
- ↑ ويست، أدريان (يوليو 2004). "إصلاح أداء علامات الفروع في CVS" . مؤرشف من الأصل في 3 أغسطس 2009. تم الاطلاع عليه في 7 يوليو 2010 .
- ↑ "نظام الإصدارات المتزامنة CVS" . dickgrune.com .
- ↑ ديك غرون (3 يوليو 1986). "CVS، واجهة أمامية لـ RCS (cvs)" . مجموعة الأخبار : mod.sources . يوزنت: 122@mirror.UUCP . تم الاطلاع عليه في 14 سبتمبر 2016 .
- ↑ "CVS II: موازاة تطوير البرمجيات - برلينر (مؤشر الأبحاث)" . مؤرشف من الأصل في 9 سبتمبر 2004.
- ↑ " [ cvs ] محتويات /ccvs/NEWS" . cvs.savannah.gnu.org .
- ↑ "نظام الإصدارات المتزامنة - أخبار: تم إصدار الإصدار المستقر 1.11.23 من نظام الإصدارات المتزامنة! [ سافانا ] " . savannah.nongnu.org .
- ↑ بن كولينز-سوسمان، التحكم في الإصدارات باستخدام Subversion لـ Subversion 1.1، 2005
- ↑ "أسئلة وأجوبة حول مشروع التخريب: لماذا يوجد هذا المشروع؟" . موقع التخريب . تم الاطلاع عليه بتاريخ 21 سبتمبر 2009 .
- ↑ "تبديد مزاعم التخريب والتضليل" . بن كولينز-سوسمان. مؤرشف من الأصل في 18 يوليو 2011. تم الاطلاع عليه في 30 يونيو 2010 .
مراجع
- ديفيد توماس ؛ أندرو هانت (2003). التحكم العملي في الإصدارات باستخدام CVS . المبرمجون العمليون. ISBN 0-9745140-0-4.
- جينيفر فيسبيرمان (2006). أساسيات نظام إدارة المعلومات الصحية ( الطبعة الثانية). أورايلي. رقم ISBN 0-596-52703-9.
- لكل سيدركفيست؛ وآخرون . (2002). إدارة الإصدار مع CVS . نظرية الشبكة. رقم ISBN 0-9541617-1-8أُرشف من المصدر الأصلي بتاريخ 2014-08-05 . تم الاطلاع عليه بتاريخ 2009-11-25 .
- بير سيدركفيست وآخرون (2005). إدارة الإصدارات باستخدام CVS لإصدار CVS 1.12.13 (ملف PDF) . مؤسسة البرمجيات الحرة . تاريخ الاسترجاع: 26 أبريل 2025 .
- كارل فرانز فوغل؛ موشيه بار (2003). تطوير البرمجيات مفتوحة المصدر باستخدام نظام التحكم في الإصدارات (CVS) . دار باراغليف للنشر. رقم ISBN 1-932111-81-6أُرشف من المصدر الأصلي بتاريخ 16 يوليو 2014. تم الاطلاع عليه بتاريخ 5 فبراير 2002 .
روابط خارجية
- نظام الإصدارات المتزامنة
- برنامج عام 1990
- برنامج مجاني مكتوب بلغة C
- برنامج مجاني للتحكم في الإصدارات
- برنامج يستخدم رخصة جنو العمومية العامة
- برامج أرشفة يونكس وأدوات الضغط ذات الصلة
