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
















تدوينة رائعة كعادتك أخي
شكرا على المعلومات الجميلة أخي ماهو النوع نظام التحكم الذي تفضله انت ؟
و هل قمت بتنصيبه محليا في جهازك ام تستخدم أحد الخوادم على الشبكة
بالنسبة لي فبدأت باستعمال SVN منذ فترة و كنت استخدم assembla ولكنها الآن اصبحت تتطلب ان تجعل شفراتي مفتوحة المصدر أو ان ادفع لهم فوقت فترة عن استخدام انظمة تحكم اصدار
استخدم بشكل رئيسي SVN وعندي مخزن في جهازي ومخزن على استضافتي (هذا أهم سبب لتغيير استضافتي). assembla والكثير من المواقع لها نفس الشرط إما أن تدفع أو تكون مشاريعك مجانية.
تدوينة مفيدة …
كنت أستخدم نظام SVN أثناء إدارتي لمشروع MySmartBB كان يسهل العمل كثيرا .. وكان التطوير يتم بشكل منظم ..
شكرا لك ..
تدوينة ممتازة أشكرك على هذه المعلومات
لو تتكرم وتتحدث عن نظام SVN بالتفصيل .. اكون شاكر
بالتوفيق و في أمان الله
الموضوع أعجبني كثيراً لكن حبيت أنني أرجع وأرد وأشكرك كل الشكر على خالد على ما تبذله من جهود قيمه في سبيل إيجاد المعلومات القيمه للشباب العربي
فلقد كنت قد أضفت هذا الموضوع في المفضلة لكي أرجع له لاحقاً وقد قمت بمشاركته في Google Reader
وهناك أيضاً من المواضيع الأخرى التي دائماً أستفيد منها لكن يمنعني الوقت من الرد والشكر ولكن نشكرك في ظهر الغيب
بارك الله فيك ونفع بك وواصل تقدمك ففعلاً أنا لا أعرف ما هي SVN
فلو تتكرم وتتحدث بشكل مفصل عنه سأكون كذالك شاكراً ومقدراً أكثر
وبارك الله فيك ونفعك بك
الأخ عبد الملك بنفسه هنا! شرفت وآنست وإن شاء الله تدوينة SVN في طور الإعداد
شكراً أخي خالد: أؤوكد على كلامك بأن من لا يستخدم أحد أنظمة التحكم بالإصدارات فهو في طريقه إلى الضياع بين مجموعة هائلة من الملفات المصدرية التي لا يعرف أولها من آخرها….. بصراحة سمعت منذ حوالي سنتين عن هذه الأنظمة من صديق حميم و شجعني على استخدامها و عملت جاهداً لكي أدخل هذه الأنظمة إينما حللت و ارتحلت, ففي كل عمل التحق به أبدأ باستخدامها, وأقنع من حولي باستخدامها
أهلاً بالاستاذ سعيد! شكراً للمداخلة القيمة
جزاك الله كل خير
هذا المقال فعلا مفيد جداا وجعله الله فى ميزان حسناتك
تعرف أنا إستخدمت CVS هذا اليوم لأول مرة، يعني شوية غريب!، ما فهمت على كل ميزاته!
يعني جديد على الشغلة.
بجرب أشوف SVN وأحاول أشتغل عليه. الصراحة أول مرة أعرف أنه يمكن تركيبه على الجهاز وبدون سيرفر!.
CVS انتهى عهده من زمان حتى السورس فورج بدأت بالتحول إلى غيره … جرب SVN أسهل وأبسط كبداية
جربته
، فعلاً يبدو أسهل، ووجدت خادم SVN مركب على الأوبونتو إفتراضياً
.
وداعاً لفوضى حفظ النسخ الإحتياطية ^.^،
ممتاز يسرني أنك تستخدمه.
يعطيك ألف عافية أخي خالد .. كلام جميل جداً جداً
رائع ..
سأذهب الأن لقراءة المقال الخاص بـ SVN
تدوينة SVN
شكراً لك من صميم قلبي
جزاك الله خيراً
هيا بنا