إدارة المراجعة الموزعة
تقوم إدارة المراجعة الموزعة (بالإنجليزية: Distributed revision control واختصاراً DRCS) أو إدارة الإصدار الموزعة أو نظام إدارة الإصدارات المركزية (DVCS)بالاحتفاظ بتاريخ كل مراجعات برمجية حاسوب ويسمح للعديد من المطورين بالعمل في مشروع واحد بدون أن يكونوا متصلين بالضرورة علي شبكة مشتركة.
الموزعة في مقابل المركزية
تستخدم إدارة المراجعة الموزعة (DRCS)أسلوب النظير للنظير علي العكس من أسلوب العميل-الخادم الذي تتبعه النظم المركزية.[1] فبدلا من وجود مستودع مركزي واحد يقوم فيه العملاء بالعمل المتزامن، فإن نسخة عمل كل نظير في قاعدة الأكواد هي مستودع في حد ذاته. تُجري إدارة المراجعة الموزعة المزامنة عن طريق تبادل patche (يونكس) (مجموعات التغير) من نظير إلي نظير. ينتج عن ذلك بعض الاختلافات الهامة عن النظام المركزي:
- لا توجد نسخة مرجعية أساسية من قاعدة الأكواد بشكل افتراضي ولكن توجد نسخ عمل فقط.
- تكون العمليات المشتركة (مثل التسجيلات، والاطلاع علي التاريخ، وعكس التغييرات) سريعة لأنه لا توجد حاجة للاتصال بخادم مركزي..[2]
بدلا من ذلك فإن الاتصال ضروري فقط عند دفع أو جذب التغييرات من وإلي النظراء الآخرين.
- تعمل كل نسخة عمل بكفاءة باعتبارها نسخة احتياطية بعيدة لقاعدة الأكواد وتاريخها المتغير مما يعتبر حماية طبيعية ضد فقدان البيانات.[2]
هناك اختلافات أخرى كالآتي:
- قد توجد العديد من المستودعات المركزية.
- يتم دمج الأكواد من المستودعات المختلفة بناءً علي شبكة الثقة، أي الميزة أو الصفة التاريخية للتغيرات.
- الضباط هم أعضاء المشروع ممن لديهم سلطة فعالة لتقرير أي الفروع سيتم دمجها
- الشبكة ليست مشتركة في معظم العمليات.
- توجد مجموعة منفصلة من العمليات المتزامنة متاحة للتسجيل أو تلقي التغييرات من مستودعات بعيدة.
يُشير أنصار نظام إدارة الإصدارات المركزية (DVCS) إلي عدة مزايا لإدارة الإصدار الموزع أفضل من النموذج المركزي:
- السماح للمستخدمين بالعمل بإنتاجية حتي وإن لم يرتبطوا عن طريق شبكة.
- يجعل معظم العمليات أكثر سرعة نظرا لعدم وجود شبكة.
- يسمح بالمشاركة في المشروعات بدون طلب الإذن من سلطات المشروع وبالتالي تعزيز ثقافة حكم بالاستحقاق[بحاجة لمصدر] بدلا من طلب الحصول علي حالة "الملتزم"
- السماح بالعمل الخاص حتي يستطيع المستخدمين استخدام نظام إدارة المراجعة حتي مع المسودات الأولية التي لا يريدون نشرها.
- تجنب الاعتماد علي آلة واحدة كنقطة فشل واحدة
- السماح بالإدارة المركزية للإصدار الجديد للمشروع
يصف جول سبولسكي مؤلف تطوير البرمجيات إدارة الإصدار الموزعة بأنها قد تكون أكبر تقدم في تكنولوجيا تطوير البرمجيات علي مدي العشر سنوات الأخيرة.[3]
من أحد عيوب نظام إدارة الإصدارات المركزية (DVCS) أن الاستنساخ الأولي للمستودع أبطأ مقارنة بالمراجعة المركزية لأن كل الفروع وتاريخ المراجعة يتم نسخها. قد يرتبط ذلك كله معا إذا كانت سرعة الدخول منخفضة والمشروع كبير بما فيه الكفاية. على سبيل المثال إذا كان حجم المستودع المستنسخ باستخدام الأمر "جت" (كافة التواريخ والفروع والإشارات وغيرها) لنواة لينكس يكون تقيبا حجم الرأس HEAD الغير مضغوط المُراجع في حين أن المراجعة المناظرة لفرع واحد في المراجعة المركزية قد تكون ذات حجم مضغوط لمحتويات الرأس HEAD (لكن بدون أي تاريخ أو قروع أو إشارات وغيرها) هناك مشكلة أخرى في نظام إدارة الإصدارات المركزية (DVCS) وهي غياب آلية الإقفال التي تعتبر جزء من معظم نظم إدارة الإصدارات ولا زالت تلعب دورا هاما في حالة الملفات الغير قابلة للدمج مثل أصول الرسومات.
النظم
النظم المفتوحة
يتسم النظام المفتوح لإدارة المراجعة الموزعة بدعمه للفروع المستقلة واعتماده الكبير علي عمليات الدمج. وتتضمن خصائصه العامة ما يلي:
- كل نسخة عاملة هي شعبة أو تفريع فعال
- يُطبق النظام كل فرع كنسخة عاملة مع تنفيذ بعض الدمج عن طريق تبادل عادي للـ patch من فرع إلي فرع.
- تشعب الكود يحدث بسهولة أكبر عند الرغبة لأن كل نسخة عاملة شعبة محتملة (وبالمثل فإن الشعب غير المرغوب فيها يكون إصلاحها أسهل لأنه بما أن النزاع يمكن حله فإن إعادة دمج الكود سهلة).
- قد يكون من الممكن التنقل بين التغيرات المفردة واختيارها من بين النظراء.
- يستطيع النظراء الجدد المشاركة بحرية بدون طلب الدخول إلي الخادم.
من أوائل النظم المفتوحة نظام (بت كيبر) المستخدم في تطوير نواة لينكس. عندما قرر صناع (بت كيبر) في عام 2005 قصره علي الترخيص, بحث مطورو لينكس عن استبدال مجاني. تتضمن النظم المفتوحة الشائعة للاستخدام المجاني في عام 2010 ما يلي:
- بازار الذي تم استخدامه منذ 2008 بواسطة أوبونتو[4] وماي إس كيو إل وبواسطة خدمات استضافة المشروعات بما في ذلك لونشباد وسورس فورج.نت,[5]
- داركس
- جت والذي صنعه لينوس تورفالدس بعد انفصاله عن BitKeeper ومونوتون بهدف تحقيق أداء عالي للغاية وهو يستخدم حاليا في نواة لينكس والبيئة المكتبية جنوم وفري دسكتوب.أورج, وبيرل ودراجون فلاي بي إس دي، وإكليبس, كما تدرس كدي,[6] الآن استخدامها وكذلك خدمات استضافة المشروعات التي تتضمن (جثب) و(جيتوريوس).
- ميركوريال والذي تم وضعه بعد BitKeeper ويهدف إلي تحقيق الأداء وإمكانية التوسع، ويستخدمه حالياً مشروع موزيلا ونت بينز وبيثون، ونظام تشغيل سيمبيان وإليومس وأوبن جا دي كا، وكذلك غيرها من المصادر المفتوحة في مشروعات أوراكل, وخدمات استضافة المشروعات مثل بت باكيت ومدونة جوجل وسورس فورج.نت
- مونوتون
للحصول علي قائمة كاملة ـ أنظر مقارنة بين برمجيات إدارة المراجعة
النظم المستنسخة
النظام المستنسخ لإدارة المراجعة الموزعة يعتمد علي قاعدة بيانات مستنسخة. يكون الدخول مماثل للالتزام بالتوزيع. يخلق الالتزام الناجح خط أساسي واحد مما يقلل الحاجة إلي عمليات الدمج. مثال لنظام توزيع مستنسخ هو كود كو أوب Code Co-op
نموذج العمل
يكون النموذج الموزع أفضل بشكل عام بالنسبة للمشروعات الكبري التي بها مطورين مستقلين جزئياً مثل مشروع نواة لينكس لأن المطورين يمكنهم العمل مستقلين وتسليم تغييراتهم للدمج (أو الرفض). في النموذج المركزي يجب علي المطورين ترتيب عملهم بالتسلسل أو قد يواجهون مشكلات في الإصدارات المختلفة.
التاريخ
أول جيل نظام إدارة الإصدارات المركزية (DVCS) يتضمن جنو أرك ومونوتون. وبدأ الجيل الثاني بوصول (داركس) يتبعه استضافة نظم أخرى منها ميركوريال وجت التي تعتبر بديل لـ BitKeeper عندما لم يعد بالإمكان استخدامه مجانا بواسطة مشروع نواة لينكس وناشره. يتبعه بفترة قصيرة نظام بازار (GNU Bazaar). قبل ذلك كان يتم استخدام نظم إدارة الإصدارات المركزية (DVCS) المغلقة مثل Sun WorkShop TeamWare التي ألهمت BitKeeper والتي كانت تستخدم علي نطاق واسع في المشروعات.
المستقبل
بدأت بعض النظم المركزية الداخلية في اكتساب خصائص موزعة فمثلا أباتشي سبفيرجن قادر علي أداء عمليات عديدة بدون شبكة.[7] وقد يصبح الأمر أكثر صعوبة في الفصل بين النظم الموزعة داخليا والنظم المركزية هناك العديد من الأدوات التي تعتمد علي إدارة الإصدارات مثل برنامج ويكي ونظام الملفات ومحرر نصوص. وبعضها بدأ استخدام خصائص نظام إدارة الإصدارات المركزية (DVCS) لتتكامل مع خصائصه مثل نظم جازيست ويكي وإيكي ويكي.
المراجع
- Wheeler, David. "Comments on Open Source Software / Free Software (OSS/FS) Software Configuration Management (SCM) Systems". مؤرشف من الأصل في 26 نوفمبر 2018. اطلع عليه بتاريخ May 8, 2007. الوسيط
|CitationClass=
تم تجاهله (مساعدة) - O'Sullivan, Bryan. "Distributed revision control with Mercurial". مؤرشف من الأصل في 20 فبراير 2009. اطلع عليه بتاريخ 13 يوليو 2007. الوسيط
|CitationClass=
تم تجاهله (مساعدة) - Spolsky, Joel (2010-03-17). "Distributed Version Control is here to stay, baby". Joel on Software. مؤرشف من الأصل في 27 نوفمبر 2016. اطلع عليه بتاريخ 18 يونيو 2010. الوسيط
|CitationClass=
تم تجاهله (مساعدة) - "Ubuntu in Launchpad". Canonical Ltd. مؤرشف من الأصل في 19 مايو 2019. اطلع عليه بتاريخ 21 أكتوبر 2008. الوسيط
|CitationClass=
تم تجاهله (مساعدة) - Arnö, Kaj (2008-06-19). "Version Control: Thanks, BitKeeper - Welcome, Bazaar". مؤرشف من الأصل في 15 نوفمبر 2010. اطلع عليه بتاريخ 19 يونيو 2008. الوسيط
|CitationClass=
تم تجاهله (مساعدة) - "Getting Started/Sources/Amarok Git Tutorial". KDE TechBase. كدي. August 25, 2009. مؤرشف من الأصل في 08 نوفمبر 2018. اطلع عليه بتاريخ October 9, 2009.
Amarok is now developed in a Git repository instead of SVN. This was done to help get into place all the needed infrastructure to convert all of KDE, including documentation.
الوسيط|CitationClass=
تم تجاهله (مساعدة); تحقق من التاريخ في:|تاريخ أرشيف=
(مساعدة) - Subversion for CVS Users :: OSDir.com :: Open Source, Linux News & Software نسخة محفوظة 23 أغسطس 2016 على موقع واي باك مشين.
روابط خارجية
- Essay on various revision control systems, especially the section "Centralized vs. Decentralized SCM"
- Linus Torvalds email describing git (DVCS) to KDE developers
- Video of a talk Linus Torvalds gave about Git على يوتيوب
- Bryan O'Sullivan video on Mercurial
- Ben Collins-Sussman (one of Subversion's authors) article on "The Risks of Distributed Version Control"
- Distributed Version Control Systems - Why and How[وصلة مكسورة] by Ian Clatworthy, Bazaar/Canonical
- Software Development and Version Control systems plus handouts. Emphasis on Distributed Version Control Systems (DVCS) by Jari Aalto
- Introduction to distributed version control systems - IBM Developer Works article
- بوابة علم الحاسوب