مدونة الويب 2.0

  • الرئيسية
  • تعريف بالمدونة
  • المصادر
  • تواصل معي
  • أخبار المدونة
  • أفكار
  • إضافات
  • برمجة
  • تصميم
  • تطوير
  • فعاليات
  • كتب
  • لقاءات
  • مدونات عربية
  • مشاريع
  • مهمات
  • مواقع

لماذا يجب أن تستخدم نظام التحكم بالإصدارات

January 15, 2009 - الخميس 19 محرم 1430 التصنيف: برمجة

بسم الله الرحمن الرحيم،

نظام التحكم بالإصدارات هو نظام يستخدم بشكل كبير في الشركات وبين فرق العمل للحفاظ على التنظيم في العمل، ولاستخدامها في دمج العمل اليومي للفريق بكل سهولة.

دعوني أتحدث عن نظام التحكم بالإصدارات بشكل عام من خلال ميزاته (مع أنه ليس موضوع هذه التدوينة ولكن لابد من هذه المقدمة):

  • دمج النسخ، تخيل أنك تعمل مع فريق مكون من عشرة أشخاص، في نهاية اليوم يجب أن يتم جمع العمل وهذه المهمة اليدوية المرهقة قد تستغرق الكثير من الوقت. الآن تخيل لو كان العدد 100 مثلاً! ستحتاج الشركة لفريق آخر مهمته فقط دمج أعمال المبرمجين مع بعضها. نظام التحكم بالنسخ يسمح لكل مستخدم (أو فريق) بأن ينشىء فرعه الخاص من الشيفرة المصدرية ويقوم بالتعديلات والإضافات ثم يعيد دمج هذا الفرع مع النسخة الرئيسية (branch merging).
  • التضاربات، فمثلاً لو كنت تعدل على ملف وقام شخص آخر بالتعديل على الأشياء التي كنت تعدل عليها، ماذا سيحدث؟ سيقوم أحدهم بحفظ التعديلات الخاصة به وستفقد تعديلات الشخص الآخر، هذا الأمر يتكرر بشكل كبير في الشركات حتى المنظمة منها. نظام التحكم بالإصدارات ينبه المبرمج عندما يريد حفظ التعديلات (commit) بأن هناك شخص آخر قام بالتعديل على هذه الملفات ولذلك يجب أن تشاهد هذه التعديلات التي أجراها الشخص الآخر قبل أن تقوم بتعديلاتك. أمر منطقي أليس كذلك؟
  • الإصدارات، هل تريد فعلاً أن تقوم بتطوير برنامج وبأن تصدر منه عدة إصدارات (الإصدار 1، الإصدار 1.1)، مع هذا النظام يمكنك ذلك بكل سهولة حيث تنشىء فرع (branch) من المصدر الأساسي وتسميه برقم النسخة التي تريدها (مثلاً 1.1) وبعد الانتهاء منها تحفظ التعديلات التي أجريتها على النسخة الرئيسية، وبعد أن تاخذ قسط من الراحة تعود لتنشىء فرع جديد تسميه (1.2) وتقوم بالتطويرات والتعديلات وهكذا.

الآن السؤال الذي يسأل كثيراً، أنا مبرمج أعمل لوحدي فهل أحتاج لمثل هذا النظام؟

الجواب بالتأكيد نعم وإليك قصة صغيرة توضح أهميته للعمل المفرد، افترض أن عميلاً أخبرك بأن تجري تعديلات على موقع أو تطبيق، في البداية قمت بإدخال الشيفرة المصدرية الحالية (التي لم تبدأ بتعديلها) في نظام التحكم بالنسخ. أمضيت بضعة أيام في التعديلات والتطويرات وفي أحد الأيام يتصل بك العميل للقيام بتعديل ضروري جداً ويخبرك بأن تترك كل شيء لتقوم بذلك. أخذ منك هذا التعديل الطارىء يومان من التعب المتواصل وانتهيت منه، الآن عدت إلى ماكنت تقوم به من التعديلات والتطويرات التي لم تنتهي منها بعد ولكن كيف ستقوم بتطبيق التعديلات الطارئة التي قمت بها خلال اليومين الماضيين؟ بواسطة نظام التحكم بالإصدارات الأمر بسيط.

عندما بدأت، قمت بعمل فرع من النسخة الرئيسية الغير معدلة واسميته (التعديلات الكثيرة مثلاً)، وعندما بدأت بالتعديلات الطارئة قمت بعمل فرع آخر اسميته (التعديلات الطارئة)، في نهاية التعديلات الطارئة تقوم بكل بساطة بدمج فرع التعديلات الطارئة مع المجرى الرئيسي وبعد نهاية التعديلات الكثيرة تقوم أيضاً بدمجهم مع المجرى الرئيسي لتحصل على نسخة فيها التعديلات الكثيرة + الطارئة.

لا ننسى أيضاً أنه باستخدام نظام التحكم بالإصدارات يمكنك التراجع عن أي تعديل مهما طالت المدة، فمثلاً لو اكتشفت أنك كنت تقوم بعمل خاطىء تقوم بالتراجع حتى تعود لأقرب نسخة لاتحوي تلك التعديلات.

أشهر أنظمة التحكم بالإصدارات هي:

  • CVS يصلح للعمل الفردي والجماعي ولكنه صعب الاستخدام واصبح قديماً.
  • SVN ممتاز للعمل الفردي والفرق الصغيرة
  • Git طورها بالأساس لينوس (مبرمج نواة اللينوكس)، وهو مناسب لفرق العمل الكبيرة والموزعة على عدة أماكن ولعدة مهام، فنظام الفروع فيه مرن وسهل للغاية.
شارك هذه التدوينة:
إضافة 'لماذا يجب أن تستخدم نظام التحكم بالإصدارات' إلى Del.icio.usإضافة 'لماذا يجب أن تستخدم نظام التحكم بالإصدارات' إلى diggإضافة 'لماذا يجب أن تستخدم نظام التحكم بالإصدارات' إلى Technoratiإضافة 'لماذا يجب أن تستخدم نظام التحكم بالإصدارات' إلى Stumble Uponإضافة 'لماذا يجب أن تستخدم نظام التحكم بالإصدارات' إلى Google Bookmarksإضافة 'لماذا يجب أن تستخدم نظام التحكم بالإصدارات' إلى FaceBookإضافة 'لماذا يجب أن تستخدم نظام التحكم بالإصدارات' إلى MySpaceإضافة 'لماذا يجب أن تستخدم نظام التحكم بالإصدارات' إلى Twitterإضافة 'لماذا يجب أن تستخدم نظام التحكم بالإصدارات' إلى FriendFeed
الوسوم: تكتيك, نصائح
أرسل هذه التدوينة لصديق أرسل هذه التدوينة لصديق
طباعة هذه التدوينة طباعة هذه التدوينة

    إقرأ أيضاً:

    • مستقبل الدروبال
    • هل استخدم دروبال 7 أم 6؟
    • تنقيح الكود باستخدام PDT + Xdebug
    • نصائح php الجزء الثاني
    • كيف تحسن مستوى فريقك البرمجي

16 تعليق في “لماذا يجب أن تستخدم نظام التحكم بالإصدارات”

  1. علي اللواتي: January 15, 2009 - الخميس 19 محرم 1430 في 12:21 م

    تدوينة رائعة كعادتك أخي

    شكرا على المعلومات الجميلة أخي ماهو النوع نظام التحكم الذي تفضله انت ؟

    و هل قمت بتنصيبه محليا في جهازك ام تستخدم أحد الخوادم على الشبكة

    بالنسبة لي فبدأت باستعمال SVN منذ فترة و كنت استخدم assembla ولكنها الآن اصبحت تتطلب ان تجعل شفراتي مفتوحة المصدر أو ان ادفع لهم فوقت فترة عن استخدام انظمة تحكم اصدار


  2. خالد: January 15, 2009 - الخميس 19 محرم 1430 في 1:24 م

    استخدم بشكل رئيسي SVN وعندي مخزن في جهازي ومخزن على استضافتي (هذا أهم سبب لتغيير استضافتي). assembla والكثير من المواقع لها نفس الشرط إما أن تدفع أو تكون مشاريعك مجانية.


  3. المُعاصر: January 15, 2009 - الخميس 19 محرم 1430 في 3:48 م

    تدوينة مفيدة …

    كنت أستخدم نظام SVN أثناء إدارتي لمشروع MySmartBB كان يسهل العمل كثيرا .. وكان التطوير يتم بشكل منظم ..

    شكرا لك ..


  4. Adil: January 16, 2009 - الجمعة 20 محرم 1430 في 11:13 ص

    تدوينة ممتازة أشكرك على هذه المعلومات
    لو تتكرم وتتحدث عن نظام SVN بالتفصيل .. اكون شاكر
    بالتوفيق و في أمان الله


  5. عبدالملك الثاري: January 16, 2009 - الجمعة 20 محرم 1430 في 3:29 م

    الموضوع أعجبني كثيراً لكن حبيت أنني أرجع وأرد وأشكرك كل الشكر على خالد على ما تبذله من جهود قيمه في سبيل إيجاد المعلومات القيمه للشباب العربي

    فلقد كنت قد أضفت هذا الموضوع في المفضلة لكي أرجع له لاحقاً وقد قمت بمشاركته في Google Reader

    وهناك أيضاً من المواضيع الأخرى التي دائماً أستفيد منها لكن يمنعني الوقت من الرد والشكر ولكن نشكرك في ظهر الغيب

    بارك الله فيك ونفع بك وواصل تقدمك ففعلاً أنا لا أعرف ما هي SVN

    فلو تتكرم وتتحدث بشكل مفصل عنه سأكون كذالك شاكراً ومقدراً أكثر :)

    وبارك الله فيك ونفعك بك


  6. خالد: January 16, 2009 - الجمعة 20 محرم 1430 في 4:18 م

    الأخ عبد الملك بنفسه هنا! شرفت وآنست وإن شاء الله تدوينة SVN في طور الإعداد


  7. Saeed: February 7, 2009 - السبت 12 صفر 1430 في 5:11 م

    شكراً أخي خالد: أؤوكد على كلامك بأن من لا يستخدم أحد أنظمة التحكم بالإصدارات فهو في طريقه إلى الضياع بين مجموعة هائلة من الملفات المصدرية التي لا يعرف أولها من آخرها….. بصراحة سمعت منذ حوالي سنتين عن هذه الأنظمة من صديق حميم و شجعني على استخدامها و عملت جاهداً لكي أدخل هذه الأنظمة إينما حللت و ارتحلت, ففي كل عمل التحق به أبدأ باستخدامها, وأقنع من حولي باستخدامها


  8. خالد: February 7, 2009 - السبت 12 صفر 1430 في 8:26 م

    أهلاً بالاستاذ سعيد! شكراً للمداخلة القيمة


  9. melzaiady: February 13, 2009 - الجمعة 18 صفر 1430 في 7:40 ص

    جزاك الله كل خير
    هذا المقال فعلا مفيد جداا وجعله الله فى ميزان حسناتك


  10. عمر الدليمي: July 20, 2009 - الاثنين 29 رجب 1430 في 9:41 م

    تعرف أنا إستخدمت CVS هذا اليوم لأول مرة، يعني شوية غريب!، ما فهمت على كل ميزاته! :D يعني جديد على الشغلة.
    بجرب أشوف SVN وأحاول أشتغل عليه. الصراحة أول مرة أعرف أنه يمكن تركيبه على الجهاز وبدون سيرفر!.


  11. خالد: July 21, 2009 - الثلاثاء 30 رجب 1430 في 6:49 ص

    CVS انتهى عهده من زمان حتى السورس فورج بدأت بالتحول إلى غيره … جرب SVN أسهل وأبسط كبداية


  12. عمر الدليمي: July 24, 2009 - الجمعة 03 شعبان 1430 في 5:49 م

    جربته :) ، فعلاً يبدو أسهل، ووجدت خادم SVN مركب على الأوبونتو إفتراضياً :) .
    وداعاً لفوضى حفظ النسخ الإحتياطية ^.^،


  13. خالد: July 24, 2009 - الجمعة 03 شعبان 1430 في 6:15 م

    ممتاز يسرني أنك تستخدمه.


  14. حسين الحداد: February 16, 2010 - الثلاثاء 03 ربيع الأول 1431 في 9:40 م

    يعطيك ألف عافية أخي خالد .. كلام جميل جداً جداً


  15. محمد جبلي: March 7, 2010 - الأحد 23 ربيع الأول 1431 في 9:38 م

    رائع ..

    سأذهب الأن لقراءة المقال الخاص بـ SVN
    تدوينة SVN
    شكراً لك من صميم قلبي

    جزاك الله خيراً


  16. خالد: March 7, 2010 - الأحد 23 ربيع الأول 1431 في 11:28 م

    هيا بنا :)


شاركنا برأيك؟

الرجاء الكتابة باللغة العربية الفصحى، وإذا كنت تريد كتابة سؤال حاول البحث في غوغل أولاً فغالباً ستجد عنده الخبر اليقين.

  • الأكثر قراءة
  • الأحدث
  • الأرشيف
  • أفضل الأدوات لرفع الملفات
  • تعلم الكيك وتطوير المواقع بالبيت
  • مقدمة في CakePHP
  • تنظيم الوقت البرمجي
  • أفكار ومواقع ويب 2 شهيرة
  • لماذا غوغل شريرة!
  • الخطوط العربية
  • هل تريد أن تكسب 1000 دولار؟
  • مواقع عربية بالدروبال
  • تصميم قاعدة البيانات
    1. كتب مطلوبة
    2. إصلاح علة أمنية في دروبال 7.3 و 7.4
    3. حل المشكلة أم الترقيع؟
    4. مراجعة كتاب 50 Tips and Tricks for MongoDB Developers
    5. تعريب الوحدات الإضافية
    6. البرامج العربية
    7. تعريب الدروبال 7 – العد التنازلي للنواة
    8. تعريب الدروبال 7 – اليوم الثالث
    9. تعريب الدروبال 7 – اليوم الثاني
    10. تعريب الدروبال 7 – اليوم اﻷول
    11. تعريب الدروبال 7
    1. يونيو 2011
    2. مايو 2011
    3. أبريل 2011
    4. مارس 2011
    5. فبراير 2011
    6. يناير 2011
    7. ديسمبر 2010
    8. نوفمبر 2010
    9. أكتوبر 2010
    10. أغسطس 2010
    11. مارس 2010
    12. فبراير 2010
    13. يناير 2010
    14. ديسمبر 2009
    15. سبتمبر 2009
    16. أغسطس 2009
    17. يوليو 2009
    18. يونيو 2009
    19. مايو 2009
    20. مارس 2009
    21. فبراير 2009
    22. يناير 2009
    23. ديسمبر 2008
    24. نوفمبر 2008
    25. أكتوبر 2008
    26. سبتمبر 2008
    27. أغسطس 2008
    28. يوليو 2008
    29. يونيو 2008
    • اشترك بآخر الأخبار RSS

      Feeds Counter

      أو

    • أشارك بتعريب دروبال 7

    • أراجع كتب Oreilly

      I review for the O'Reilly Blogger Review Program
    • أفضل هدية تقدمها لي

    • تقنية الطماطم

      I Use the Pomodoro Technique
    • عشرون عام لمشروع اللينكس

      I'll be celebrating 20 years of Linux with
The Linux Foundation!
    • وسوم

      Ajax css IDE jQuery php SEO TinyMCE أخبار المدونة أذكار أطر العمل أفكار أمازون إدارة المحتوى إدارة محتوى إضافات استبيان الأجاكس الأمان الاختبارات الآلية الكيك اللغة العربية برمجة تحديثات تحميل تدوينات رمضان تصميم تطوير تعريب تعلم الكيك وتطوير المواقع بالبيت تكتيك تنظيم الوقت جوائز حديث دروبال دعاية فايرفوكس فرص عمل كتب مسابقات مشاريع مهمات مواقع نصائح هندسة برمجيات وورد بريس

    حول المدونة

    • 2008-2012 مدونة الويب 2.0.
    • يمكنك نقل المحتويات أو اقتباس أي جزء منها ويفضل ذكر المصدر.
    • من الممكن أن تساعدك خريطة الموقع.

    عروض العمل

    • يمكنك أن تناقشني حول عروض العمل للمدونات أو لمواقع الويب 2.0.
    • أيضاً يمكنك استشارتي في وضع التفاصيل لمدونة أو لفكرة مشروع جديد.
    • سيرتي الذاتية على My Linkedin Profile

    تواصل معي

    • خالد الحوراني مطور ويب 2.0
    • تابع أخباري على My Twitter account
    • أو راسلني فوراً

    Switch to our mobile site