تطلب المشاريع المعقدة وكثيرة المتطلبات تطويرها من قبل فريق لزيادة القدرة على الإنتاج وسرعة التطوير وكذلك تبادل الخبرات وعمل الأفراد على إنجاح المشروع وخصوصا في أطر البرمجة الحديثة مثل إطار سكروم الذي سبق وأن تحدثنا عنه مسبقا , وكما أن هناك أهمية لإدارة المطورين فإن من المهم إدارة نظام التطوير التي يسير عليها المطورين وإلا تحولت زيادة عدد المطورين إلى إضاعة القوة الإنتاجية وتراكم الأخطاء , يأتي حل من أهم الحلول وهو (SubVersion (SVN ليعمل على تغطية النقاط التالية أثناء التطوير
1- تخزين جميع العمليات على ملفات المشروع وإمكانية إسترجاع أي عملية سابقة
2- النسخ الإحتياطية والإسترجاع
3- إغلاق ملفات معينة ومنع التغيير عليها
4- إعطاء صلاحيات على المشروع (قراءة – كتابة ..)
5- مزامنة المشروع مع اخر التحديثات لجميع الفريق
6- مقارنة التغييرات الحاصلة على الملفات وإمكانية دمجها أو إسترجاعها
7- تعريف كل مطور قام بالتغيير بالتوقيت وما قام بعمله تحديدا
8- عمل إدارة لأرقام النسخ وما تحويه من إضافات وتعديلات
ما هو ال SVN
هو برنامج مفتوح المصدر يقوم بحفظ أرشيف لجميع التغيرات على ملفات المشروع الأصلية وهو يوافق نظام Concurrent Versions System (CSV الذي يعمل بنظام الخادم \العميل بحيث يخزن ملفات المشروع على الخادم ويقوم كل مطور (عميل) بالتعامل مع المخزن على حده وتنفيذ الأوامر التي سيتم توضيحها بعد قليل.
فكرة العمل
تقم الفكرة العامة على وجود خادم يحتوي على مخزن (Repository) يحتفظ ببنية ملفات المشروع (المجلدات والملفات) , ويمكن للمطور من الكتابة على ملفات المخزن وبالتالي يمكن للمطورين الأخرين قراءة هذه الملفات , ولكن ما يختلف هو أن هذا المخزن يتذكر جميع العمليات (حذف , إضافة , تعديل , تغيير ترتيب , مسميات ) بحيث يمكن المطور من النظر إلى هذه التغييرات وامكانية العودة إلى أي تغيير منها
أهم الأدوات المستعملة في SVN
- الموقع الرسمى لـ SVN يمكنك من خلاله تحميل السورس كود و ادوات اخرى.
- TortoiseSVN: من أفضل الـ Clients التى تعمل على نظام ويندوز و الذى يندمج بشكل ممتاز مع Windows Explorer مجانى
- SmartSVN: من أقوى البرامج التى تستخدم فى التعامل مع SVN، البرنامج مصنوع بلغة الجافا و يعمل على العديد من انظمة التشغيل. غير مجانى
- VisualSVN: هذا البرنامج هو plugin لمحرر Visual Studio حيث يستخدم TortoiseSVN ليقوم العمليات التى يريدها غير مجانى
- AnkhSvn: هو plugin لمحرر Visual Studio ليعطى دعم SVN بشكل Native دون الحاجه لأى أدوات خارجيه مجانى
العمليات الأساسية في SVN
- Add : وضع الملف لأول مرة في المخزن ال Repository
- Revesion: نسخة الملف (V1 , V2 …إلخ)
- Head: أخر نسخة في المخزن
- Check out: تحميل الملف من المخزن
- Check in /Commit: ويقوم برفع الملف المعدل إلى المخزن , وإعطاءة نسخة جديدة في المخزن في حال التغيير عليه ويقوم المطورون الآخرون بتحميله بإستخدام الأمر السابق Check out
- Check in Message: رسالة قصيرة يوصف فيها المطور ما قام بتعديله على الملف عند عمله ل Check in
- Changelog/History: سجل العمليات التي تمت على الملف منذ إضافته
- Update/Sync: مزامنة جميع الملفات من المخزن , وبالتالي سحب أخر نسخ للملفات من المخزن
- Revert: إلغاء النسخة المحلية للملف واستبدالها بأخر نسخة موجودة على المخزن
عمليات متقدمة
- Diff/Change/Delta: مقارنة بين ملفين , يهم في المقارنة بين نسخ الملفات
- Merge : دمج الإختلافات بين ملفات ليصبح ملف واحد يحوي كل التعديلات , ويمكن دمج ال Branch في النسخة
- Conflict: عندما يوجد تناقض بين ملفين بحيث لا يمكن إجراء تحديث وتعديل على الملف
- Resolve: يستعمل لحل التناقض بين ملفين وسحب النسخة الملائمة
- Lock: ويستعمل لإغلاق الملف من التعديل حتى يتم فك الإغلاق عنه وذلك لمنع حدوث تعارضات
- unlock: لفك إغلاق الملفات ليتمكن الاخرون من التعديل عليه
تقسيمات المخزن (Repository) الرئيسية
- Branch: أخذ نسخة من ملفات ومجلدات معينة بشكل منفصل للإستعمال الخاص (تصليح أخطاء , إختبار ..إلخ)
- trunk: ويحوي الملفات الأساسية التي يتم التطوير عليها دائما بشكل مباشر من قبل الفريق
- tag : يحتوى على معلومات هامه خاصه بالـ revisions الموجوده بـ trunk مثل الـ revision رقم 1024 هو الإصدار 1.2 و هكذا
كيفية البدء
يجب تركيب خادم الSVN على خادم ال Web مثل ال Apache وعمله كنظام ال client/server ومن ثم يصبح عنوان المخزن بعد إنشاءه
svn://ServerName/YourRepository
بحيث يتم العمليات التي ذكرناها مسبقا ومن السهل إستعمال احد البرامج التي تدعم هذه الأوامر مثل ال DreamWeaver و Zend Studio و Visual Studio.. إلخ
تجربتي مع الأداة TortoiseSVN كانت جيدة , والتطوير من خلال ال Zend Studio حيث يدعم أغلب عمليات إدارة النسخة المقدمة في الأداة , وكما أن توفر ال SVN على نظام ال Cloud يساعد الجميع من التطوير من أي مكان بحيث يمكن عمل فريق في دول مختلفه على نفس المشروع مثلا مثل ال GitHub والتي تستعمله الكثير من الشركات العالمية مثل فيسبوك ومايكروسوفت
نصيحة لا تضيع وفتك مع SVNوتوجه مباشرة الى GIT
أتفق مع Rayed Alrashed
SVN مشاكله أكثر من أن تحصر
تنزيله صعب
ملفاته كثيرة
حجمه المشروع يكبر بشكل مهول
وأسوء حاجة فيه إنه بطيء جداً