جدول المحتويات
- الحياة بلا تحكم في الإصدار
- أنواع الأنظمة
- Git
- GitHub
- الخاتمة
1 - الحياة بلا تحكم في الإصدار
1.1 سيناريو الكارثة اليومية
تخيّل هذا الموقف المألوف:
- تعمل على مشروع تطوير برمجي
- تخطر لك فكرة لامعة لميزة جديدة
- تقضي ساعات في تطويرها
- تجري اختبارات معمَّقة
- تنشرها بنجاح
- تمر أسابيع...
- تطوّر ميزات جديدة
- فجأة يظهر خطأ حرج
- تريد العودة إلى الإصدار السابق
- لكن يستحيل إيجاد النسخة القديمة العاملة
- النتيجة: ضياع وقت، وتوتر، وإحباط
1.2 لماذا نستخدم تحكماً في الإصدار
سيناريو الكارثة أعلاه يوضح تماماً لماذا نحتاج إلى نظام تحكم في الإصدار. هذه المزايا الرئيسية:
1.2.1 تتبّع كامل
- سجل مفصَّل: كل تعديل يُسجَّل مع بيانات وصفية (مؤلف، تاريخ، وصف)
- عودة إلى الوراء ممكنة: إمكانية الرجوع إلى أي إصدار سابق
- فهم التطوّر: تصوّر واضح لتطوّر المشروع
1.2.2 تعاون فعّال
- عمل متوازٍ: يمكن لعدة مطوّرين العمل في الوقت نفسه
- دمج ذكي: يمكن دمج التعديلات تلقائياً
- حل التعارضات: أدوات لإدارة التعديلات المتناقضة
1.2.3 أمن ونسخ احتياطي
- نسخ احتياطي تلقائي: كل إصدار محفوظ
- بلا فقدان بيانات: الإصدارات القديمة تبقى متاحة دائماً
- استعادة سهلة: عودة سريعة إلى إصدار مستقر عند مشكلة
1.2.4 إنتاجية محسَّنة
- اختبارات بلا مخاطرة: إمكانية التجريب بلا خوف
- نشر متحكَّم فيه: إدارة إصدارات الإنتاج
- توثيق مضمَّن: السجل يخدم كوثائق
2 - أنواع الأنظمة
توجد ثلاثة أنواع رئيسية لأنظمة التحكم في الإصدار، لكل منها مزايا وعيوب:
2.1 نظام محلي (LVCS)
- قاعدة بيانات بسيطة على جهازك المحلي
- سجل التعديلات مخزَّن محلياً
- بلا تعاون ممكن
- خطر فقدان بيانات
2.2 نظام مركزي (CVCS)
- خادم مركزي يخزّن السجل
- يسترجع المطوّرون الإصدار الأخير فقط
- تعاون ممكن لكنه محدود
- نقطة فشل وحيدة
2.3 نظام موزَّع (DVCS)
- لكل مطوّر نسخة كاملة
- عمل ممكن دون اتصال
- تعاون متقدم
- توافر وأمن مرتفعان
2.4 مقارنة الأنظمة
هذا جدول مقارن للأنظمة المختلفة:
| الخاصية | LVCS | CVCS | DVCS |
|---|
| التعاون | لا | نعم | ممتاز |
| العمل دون اتصال | نعم | لا | نعم |
| الأمن | ضعيف | متوسط | مرتفع |
| التعقيد | بسيط | متوسط | مرتفع |
| مثال | RCS | SVN | Git |
2.5 أدوات وأمثلة حسب نوع النظام
| النوع | الأدوات | الخصائص | يستخدمه |
|---|
| LVCS | • RCS • SCCS • Source Integrity | • تخزين محلي فقط • قاعدة بيانات بسيطة • لا شبكة مطلوبة | • مطوّرون منفردون • مشاريع صغيرة • أنظمة مضمَّنة |
| CVCS | • SVN (Subversion) • CVS • Perforce • ClearCase | • خادم مركزي • أرقام إصدارات متسلسلة • يتطلّب اتصالاً | • شركات تقليدية • مشاريع قديمة • فرق محلية |
| DVCS | • Git • Mercurial • Bazaar • Fossil | • نسخ كاملة • فروع خفيفة • دمج متقدم | • شركات ناشئة • مصدر مفتوح • فرق موزَّعة |
ملاحظة تاريخية: يعكس تطوّر أنظمة التحكم في الإصدار تطوّر ممارسات التطوير، من أنظمة بسيطة محلية إلى حلول موزَّعة تناسب العمل التعاوني الحديث.
ملاحظة مهمة: اليوم أصبح Git المعيار الذي لا غنى عنه في صناعة تطوير البرمجيات. سواء للمشاريع الشخصية أو الشركات الناشئة أو المؤسسات الكبرى، يستخدم Git أكثر من 90% من المطوّرين في العالم. سيطرته بلغت حدّاً يجعل إتقان Git مهارة أساسية لكل محترف تطوير.
3 - git
Git: المعيار الجديد للصناعة
فرض Git نفسه نظام التحكم في الإصدار المهيمن، فاستبدل تدريجياً SVN (Subversion) في معظم المنظمات:
تبنٍّ واسع
- شركات التقنية: أكثر من 90% من العمالقة مثل Google و Microsoft و Amazon يستخدمون Git
- المصدر المفتوح: يستضيف GitHub أكثر من 200 مليون مستودع Git
- هجرة تدريجية: كثير من الشركات تهجر SVN لصالح Git
لماذا يستبدل Git نظام SVN؟
| الجانب | Git | SVN |
|---|
| الأداء | سريع جداً (عمليات محلية) | أبطأ (يعتمد على الخادم) |
| التعاون | فروع خفيفة ودمج ذكي | فروع معقَّدة وتعارضات متكررة |
| التوافر | عمل دون اتصال ممكن | يتطلّب اتصال خادم |
| الأمن | سجل موزَّع ومؤمَّن | نقطة فشل وحيدة |
الأثر على الصناعة
- معيار فعلي: أصبح Git مهارة أساسية للمطوّرين
- منظومة غنية: تقدّم GitLab و GitHub و Bitbucket حلولاً كاملة
- DevOps و CI/CD: يندمج Git بسلاسة في خطوط الأنابيب الحديثة
4 - Github
GitHub: منصة التعاون بامتياز
GitHub أشبه بشبكة اجتماعية للشفرة! تخيّل أن جوليان ومارك يعملان معاً على مشروع:
مثال ملموس
يطوّر جوليان ومارك تطبيقاً للهواتف:
- يعمل جوليان على شاشة تسجيل الدخول
- يهتم مارك بالقائمة الرئيسية
- يمكن لكل منهما رؤية عمل الآخر
- يمكنهما التعليق واقتراح تحسينات
المزايا للفرق
- الرؤية: الجميع يرى من يفعل ماذا
- التعاون: سهولة مشاركة الشفرة ومناقشتها
- التنظيم: المشاريع مرتَّبة وموثَّقة جيداً
- الأمن: التعديلات متتبَّعة
أكثر من مستضيف بسيط
يقدّم GitHub أيضاً:
- مساحة للتوثيق
- أدوات إدارة مشاريع
- نظام متابعة مشكلات
- وظائف مراجعة شفرة
باختصار: GitHub مساحة عمل افتراضية حيث يمكن للمطوّرين التعاون بسهولة، ومشاركة شفرتهم، وتتبع تطوّر مشاريعهم.
5 - الخاتمة
الخاتمة: Git و GitHub — تمييز مهم
في ختام هذا الفصل عن أنظمة التحكم في الإصدار، من الحاسم توضيح خلط شائع:
Git ≠ GitHub
Git هو:
- نظام تحكم في الإصدار موزَّع
- أداة سطر أوامر
- برمجية حرة أنشأها لينوس تورفالدس
- مستقل عن أي خدمة استضافة
GitHub هو:
- منصة استضافة شفرة
- خدمة ويب مملوكة (تابعة لمايكروسوفت)
- واجهة ويب لإدارة مستودعات Git
- واحدة من خدمات كثيرة قائمة على Git (مثل GitLab و Bitbucket)
تشبيه: Git كتقنية البريد (SMTP)، بينما GitHub كـ Gmail — خدمة من بين أخرى تستخدم هذه التقنية.
هذا التمييز أساسي لأن:
- يمكن استخدام Git بلا GitHub
- منصات أخرى تقدّم خدمات مشابهة
- مهارات Git قابلة للنقل إلى أي منصة
يبقى إتقان Git، بمعزل عن المنصة المختارة، مهارة أساسية لكل مطوّر حديث.