نظام التحكم في الإصدار "سهل مثل الأبواب" أو كيفية تعلم كيفية استخدام git في بضع ساعات. الخلق في الدليل المحدد. يحتفظ GIT بنسخة كاملة من المستودع محليًا. التخريب يحتفظ بتاريخ التغييرات على الخادم

💖 أحببته؟شارك الرابط مع أصدقائك

دعونا نفهم ذلك ، " ما هو نظام التحكم في الإصدار(VCS) ، ولماذا هو مهم جدًا. أيضا ، دعونا نلقي نظرة مقارنة أنظمة التحكم في الإصدار.

نظام التحكم في الإصدار (VCS)هو نظام يسمح لك بكتابة التغييرات على ملف (أو مجموعة ملفات) بمرور الوقت ويسمح لك بالعودة إلى إصدار معين لاحقًا. يمكن استخدام نظام التحكم في الإصدار لأي نوع من الملفات: إما رمز مصدر البرنامج ، والصور ، وتخطيطات الصفحة ، وما إلى ذلك.

نظام التحكم في النسخ الموزعة

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

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

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

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

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

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

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

مثال على نظام التحكم في الإصدار المحلي هو - RCS.

نظام التحكم المركزي في الإصدار SVN (Subversion) و CVS و Perforce

عند التفاعل مع مطورين آخرين ، لم يعد استخدام نظام التحكم في الإصدار المحلي مناسبًا. لهذا الغرض ، نوع جديد SLEنظام مركزي للتحكم في الإصدار (TsSKV). تحتوي هذه الأنظمة على خادم واحد يحتوي على جميع إصدارات الملفات ، ويتلقى العملاء هذه الملفات. أمثلة على CKVs هي نظام التحكم في إصدار SVN (التخريب), CVSو بحكم الضرورة.

سنقدم دراسة حالة توضح الأدوات المتاحة لهذا التكامل والاستخدامات والفوائد والقيود المحتملة لهذا التكامل وما يمكن تحسينه في الأداة المستخدمة. أنظمة التحكم في الإصدار.

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


كل المطورين TsSKVسيكون قادرًا (إلى حد ما) على معرفة ما يفعله المطورون الآخرون. يتمتع المسؤولون بالسيطرة الكاملة على المشروع: لديهم القدرة على التحكم في من وماذا يمكن أن يفعل.

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

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

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

نظام التحكم في الإصدار اللامركزي Git ، Mercurial ، Bazaar ، Darcs

لحل مشكلة شبكات SVN المركزية ، استخدم نوعًا مختلفًا SLE. VCS اللامركزية (DSV)- يقوم العملاء بنسخ المستودع بالكامل ، بدلاً من مجرد تنزيل لقطة من جميع الملفات (حالة الملفات في وقت معين). في هذه الحالة ، إذا فشل الخادم ، فيمكن نسخ مستودع العميل إلى خادم آخر يعمل ، لأن هذا المستودع هو نسخة احتياطية كاملة لجميع البيانات.

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

هناك العديد من أنظمة التحكم في إصدار الملفات. أيهما أفضل؟ ماذا تختار - GIT أو التخريب؟

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

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

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

لا يستخدم المبرمجون أنظمة التحكم في الإصدار فقط. في الواقع ، ستكون مفيدة لأي شخص يرغب في العودة ومشاهدة المزيد إذا لزم الأمر. نسخه اوليالمستند أو الملف الذي تم تعديله. بشكل أساسي ، يعد Dropbox الشهير نظام تحكم في إصدار الملفات.

في هذه المقالة ، سأدرج الاختلافات الرئيسية بين نظام التحكم إصدارات GITمن التخريب الأكثر تحفظًا والأكثر دراية.

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

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

يحتفظ GIT بنسخة كاملة من المستودع محليًا. التخريب يحتفظ بتاريخ التغييرات على الخادم

باستخدام Subversion ، يتم تخزين المستودع على الخادم — يتم الاحتفاظ فقط بأحدث إصدارات الملفات على الكمبيوتر. GIT يحفظ على جهاز الكمبيوتر الخاص بك النسخة الكاملةالتاريخ الكامل للتغييرات.

يغير هذا الاختلاف بشكل أساسي إمكانيات العمل مع المستندات.

يمكن استخدامه لكليهما التطبيقات الموجودة، والتطبيقات التي بدأ تطويرها. تحديث: يسمح للمطورين بالوصول إلى المستودع للتنزيل احدث اصدارللتطبيق الجاري تطويره ، كما هو موضح في الشكل 3 في العنصر المميز رقم 1 وفي الشكل 4 في رقم العنصر المميز.




يتم تنفيذ هذا الإجراء باستخدام الأمر release lock ، كما هو موضح في الشكل 4 تحت رقم البند المميز 6. إظهار المحفوظات: يسمح للمطورين بالتحقق من محفوظات التغيير لملف أو مجلد. يُظهر هذا السجل التغييرات التي تم إجراؤها بمرور الوقت ، ويظهر المؤلف والرسالة النصية التي أرسلها المؤلف في الالتزام والتاريخ ومعرف المراجعة الرقمي. لكل عنصر مدرج ، يمكنك الاطلاع على معلومات أكثر تفصيلاً حول هذا التعديل ، والتي ستعرض التغييرات الخطية التي تم تغييرها ، وفقًا للشكل 4 في العنصر المميز رقم 5.

لا تحتاج إلى الوصول إلى الخادم لحفظ الملف المعدل في نظام التحكم في الإصدار

يتيح لك نظام التحكم في الإصدار مقارنة التغييرات التي تم حفظها فيه واستعادتها فقط. يتطلب التخريب الوصول إلى الخادم عبر الشبكة من أجل حفظ (تثبيت) الملف المعدل في المستودع. يمكن لـ GIT حفظ نسخة جديدة من الملف في أي وقت.

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

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

من خلال وجود الملفات محليًا ، يكون GIT أسرع

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

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

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

يخزن GIT لقطات من الملفات في شكل مضغوط. التخريب يخزن التغييرات في الملفات

هذا فرق أساسي للمستخدم - لأن النتيجة التي تم الحصول عليها متطابقة.

يضمن GIT سلامة الملف

لجميع الملفات المخزنة في التحكم في الإصدار ، تستخدم GIT تجزئة SHA1. في الممارسة العملية ، هذا يلغي إمكانية تغيير الملف دون أن يلاحظه نظام التحكم في الإصدار.

قم بفك ضغط الملف الذي تم تنزيله والتغيير إلى الدليل الناتج عن طريق الكتابة. يمكنك الآن تجميع الحزمة وتثبيتها عن طريق إدخال الأمرين التاليين. سيؤدي هذا إلى إنشاء دليل جديد في دليلك الحالي حيث يمكنك إعادة ترجمة الحزمة وإعادة التثبيت احدث اصداركما فعلت أعلاه. هذا سوف يكتب نسخة قديمةبإصدار جديد.

يمكننا المضي قدمًا وإضافة هذه المعلومات عن طريق الكتابة. يمكننا رؤية جميع عناصر التكوين التي تم تحديدها عن طريق الكتابة. كما ترى ، هذا له تنسيق مختلف قليلاً. يتم تخزين المعلومات في ملف التكوين ، والذي يمكنك تحريره يدويًا باستخدام محرر النصبالطريقة الآتية.

من الصعب جدًا فقدان البيانات مع الجهاز الهضمي

نظرًا لأن جميع التغييرات يتم حفظها فعليًا على جهازك ، وكل تغييرات GIT في الممارسة تضيف فقط إلى المستودع ، فمن الصعب جدًا أن تفقد شيئًا ما. إذا قمت بحفظ الملف المعدل في المستودع ، فيمكن دائمًا استعادته إلى الوضع الحالي. وإذا قمت بحفظ المستودع في خادم بعيد باستخدام الأمر git push ، فإن احتمال فقد الملف يميل إلى الصفر.

بصراحة ، لقد أحببت حقًا الجهاز الهضمي. يؤدي استخدام هذا النظام إلى إزالة بعض القيود التي يصعب تنفيذها باستخدام Subversion. على سبيل المثال ، من الممكن تخزين مستودع واحد على خوادم مختلفة ، ولكن يصعب تنفيذه ، وهذه وظيفة قياسية في GIT. من ناحية أخرى ، قد يكون استخدام Subverison أسهل في بعض المواقف. وأي نظام للتحكم في الإصدار يعد تحسنا كبيرا جدا مقارنة بغيابه.



أخبر الأصدقاء