ماذا يعني ال Version Control System) VCS)
هو نظام يقوم بعملية إدارة التغيرات التي يقوم بها أعضاء فريق العمل على ملفات مشروع ما.
عندما تعمل مع مجموعة أشخاص ضمن فريق عمل، قد تصاب بالإحباط من استمرار تبادل ملفات المشروع بين أعضاء الفريق عن طريق إما البريد الالكتروني أوعن طريق مواقع رفع الملفات أو غيرها من الطرق.
يأتي هذا النظام كطريقة ممتازة لحل مشكلة مشاركة الملفات بين العاملين على المشروع حيث تتجلى أهميته في امكانية وجود عدد لانهائي من المبرمجين مثلا ًعلى نفس المشروع من غير الإضطرار إلى إرسال الملفات فيما بينهم واستقبالها بالطريقة التقليدية.
ما فائدته؟
١- القدرة على عمل نسخة احتياطية للمشروع واستعادة الملفات كما كانت قبل إجراء التغيرات في أي تاريخ سابق.
٢- اذا قمت بعمل تغييرات ثم اكتشفت انها قد احدثت بعض المشاكل، تستطيع بكل سهولة الرجوع الى آخر نسخة كانت تعمل جيدا من المشروع.
٣- القدرة على التزامن، بحيث يستطيع فريق العمل مشاركة الملفات فيما بينهم ليكون لدى كل مبرمج آخر نسخة حديثة من المشروع.
٤- القدرة على تعقب التغيرات أولاً بأول، بحيث يكتب كل مبرمج ملاحظة أو رسالة عن التغيير الذي قام به ويتم تخزين هذه الملاحظة بالنظام، وبذلك يكون من السهل أن يرى كل عضو من أعضاء الفريق كيف ينمو المشروع مع مرور الوقت وماهية التغييرات التي أجراها كل واحد منهم ولماذا أجراها وما هو تاريخ إجراءها .
ماهي أنواعه؟
(أنظمة مركزية ) Centralized Systems -1
سمي هذا النظام بالنظام المركزي والذي يحتفظ بشجرة المشروع كاملة وذلك لأن أعضاء الفريق يقومون بإيداع كل تغيراتهم في مكان مركزي واحد فقط.
( أنظمة موزعة ) Distributed Systems -2
هذا النظام يعني أن كل مبرمج مثلاً لديه مستودعه الخاص، بحيث يقوم مثلاً قائد الفريق بتقسيم المشروع الى أقسام معينة، وكل مبرمج يأخذ قسم ويقوم بعمله وتجربته بشكل منعزل عن الأقسام الاخرى ثم بعد ذلك يتم دمج النسخ جميعها مع بعضها البعض.
: يعتبر هذا النوع هو الأفضل وذلك لعدة مميزات
§ كل مبرمج لديه مستودعه “المحلي”، بحيث يستطيع عمل التغيرات ثم التراجع عنها في اي وقت على نسخته الخاصة به.
§ يعتبر هذا النظام سريع، حيث لا يتطلب الاتصال بالانترنت، إلا عندما يحتاج الشخص مشاركة التغيرات التي قام بها.
§ أصبح دمج أو جمع التغيرات التي قام بها أعضاء الفريق وتجنب التكرار في الملفات اكثر سهولة من ذي قبل.
§ يعتبر هذا النظام سهل، حيث لا يتطلب إضافة مستخدم جديد في كل مرة ، ولكن ما يجب فعله هنا هو نسخ رابط المشروع للحصول على شجرة المشروع كاملة على الجهاز.
مصطلحات متداولة:
Repository –
هو المستودع الذي يحتفظ بشجرة المشروع كاملة
Pull or Check out -
سحب نسخة من المشروع من المستودع المتواجد على السيرفر
Push or Check In -
وضع نسخة من المشروع الذي يعمل عليه المبرمج في المستودع المتواجد على السيرفر
Commit -
بعد إجراء تعديلات على ملف (ملفات) معينة يجب القيام بهذ الأمر لحفظ هذه التعديلات داخل المستودع
بعد كل تنفيذ لهذا الامر سوف تنشأ نسخة جديدة من ملفات المشروع بالتعديلات الجديدة، وكل نسخة تكون مرتبطة بإسم الشخص الذي عملها وتاريخ عملها
Update -
للحصول على آخر التعديلات التي قام بها أعضاء فريقك ووضعها داخل نسختك المحلية
Merge –
دمج كل التغييرات التي أجراها فريق العمل على نسخهم المختلفة للمشروع لتصبح نسخة واحدة تجمع كل عمل أعضاء الفريق
أمثلة:
· Subversion (SVN)
يعتبر من أشهر الأمثلة على الأنظمة (المركزية) ويكثر استخدامه في المشاريع المفتوحة المصدر
يتوفر لهذا النظام واجهة رسومية جيدة وبديهية من أجل استعراض و تحرير ملفاتك يطلق عليها Tortoise SVN.
· Git
وهو مثال على الأنظمة (الموزعة) ولقد بدأنا نلاحظ سرعة انتشار استخدامه في مجتمع مطوري الويب الآن لسرعته وفعاليته.
· Mercurial
هو مثال آخر على الأنظمة (الموزعة) ، ويعتبر هذا النظام هو المفضل لدي شخصياً ولدى الكثير من المبرمجين، فهو سريع جداً بالإضافة الى ذلك فهو سهل الاستخدام.
يتوفر كذلك لهذا النظام واجهة رسومية سهلة الاستخدام يطلق عليها TortoiseHg
بما أني مبرمجة على بيئة.NET وأستخدم برنامج ال Visual Studio لبرمجة التطبيقات المختلفة, فاني استخدم أيضاً أداة أخرىVisualHG وهي خاصة لإعطاء دعم لنظام Mercurial داخل برنامج ال Visual Studio.
هو نظام يقوم بعملية إدارة التغيرات التي يقوم بها أعضاء فريق العمل على ملفات مشروع ما.
عندما تعمل مع مجموعة أشخاص ضمن فريق عمل، قد تصاب بالإحباط من استمرار تبادل ملفات المشروع بين أعضاء الفريق عن طريق إما البريد الالكتروني أوعن طريق مواقع رفع الملفات أو غيرها من الطرق.
يأتي هذا النظام كطريقة ممتازة لحل مشكلة مشاركة الملفات بين العاملين على المشروع حيث تتجلى أهميته في امكانية وجود عدد لانهائي من المبرمجين مثلا ًعلى نفس المشروع من غير الإضطرار إلى إرسال الملفات فيما بينهم واستقبالها بالطريقة التقليدية.
ما فائدته؟
١- القدرة على عمل نسخة احتياطية للمشروع واستعادة الملفات كما كانت قبل إجراء التغيرات في أي تاريخ سابق.
٢- اذا قمت بعمل تغييرات ثم اكتشفت انها قد احدثت بعض المشاكل، تستطيع بكل سهولة الرجوع الى آخر نسخة كانت تعمل جيدا من المشروع.
٣- القدرة على التزامن، بحيث يستطيع فريق العمل مشاركة الملفات فيما بينهم ليكون لدى كل مبرمج آخر نسخة حديثة من المشروع.
٤- القدرة على تعقب التغيرات أولاً بأول، بحيث يكتب كل مبرمج ملاحظة أو رسالة عن التغيير الذي قام به ويتم تخزين هذه الملاحظة بالنظام، وبذلك يكون من السهل أن يرى كل عضو من أعضاء الفريق كيف ينمو المشروع مع مرور الوقت وماهية التغييرات التي أجراها كل واحد منهم ولماذا أجراها وما هو تاريخ إجراءها .
ماهي أنواعه؟
(أنظمة مركزية ) Centralized Systems -1
سمي هذا النظام بالنظام المركزي والذي يحتفظ بشجرة المشروع كاملة وذلك لأن أعضاء الفريق يقومون بإيداع كل تغيراتهم في مكان مركزي واحد فقط.
( أنظمة موزعة ) Distributed Systems -2
هذا النظام يعني أن كل مبرمج مثلاً لديه مستودعه الخاص، بحيث يقوم مثلاً قائد الفريق بتقسيم المشروع الى أقسام معينة، وكل مبرمج يأخذ قسم ويقوم بعمله وتجربته بشكل منعزل عن الأقسام الاخرى ثم بعد ذلك يتم دمج النسخ جميعها مع بعضها البعض.
: يعتبر هذا النوع هو الأفضل وذلك لعدة مميزات
§ كل مبرمج لديه مستودعه “المحلي”، بحيث يستطيع عمل التغيرات ثم التراجع عنها في اي وقت على نسخته الخاصة به.
§ يعتبر هذا النظام سريع، حيث لا يتطلب الاتصال بالانترنت، إلا عندما يحتاج الشخص مشاركة التغيرات التي قام بها.
§ أصبح دمج أو جمع التغيرات التي قام بها أعضاء الفريق وتجنب التكرار في الملفات اكثر سهولة من ذي قبل.
§ يعتبر هذا النظام سهل، حيث لا يتطلب إضافة مستخدم جديد في كل مرة ، ولكن ما يجب فعله هنا هو نسخ رابط المشروع للحصول على شجرة المشروع كاملة على الجهاز.
مصطلحات متداولة:
Repository –
هو المستودع الذي يحتفظ بشجرة المشروع كاملة
Pull or Check out -
سحب نسخة من المشروع من المستودع المتواجد على السيرفر
Push or Check In -
وضع نسخة من المشروع الذي يعمل عليه المبرمج في المستودع المتواجد على السيرفر
Commit -
بعد إجراء تعديلات على ملف (ملفات) معينة يجب القيام بهذ الأمر لحفظ هذه التعديلات داخل المستودع
بعد كل تنفيذ لهذا الامر سوف تنشأ نسخة جديدة من ملفات المشروع بالتعديلات الجديدة، وكل نسخة تكون مرتبطة بإسم الشخص الذي عملها وتاريخ عملها
Update -
للحصول على آخر التعديلات التي قام بها أعضاء فريقك ووضعها داخل نسختك المحلية
Merge –
دمج كل التغييرات التي أجراها فريق العمل على نسخهم المختلفة للمشروع لتصبح نسخة واحدة تجمع كل عمل أعضاء الفريق
أمثلة:
· Subversion (SVN)
يعتبر من أشهر الأمثلة على الأنظمة (المركزية) ويكثر استخدامه في المشاريع المفتوحة المصدر
يتوفر لهذا النظام واجهة رسومية جيدة وبديهية من أجل استعراض و تحرير ملفاتك يطلق عليها Tortoise SVN.
· Git
وهو مثال على الأنظمة (الموزعة) ولقد بدأنا نلاحظ سرعة انتشار استخدامه في مجتمع مطوري الويب الآن لسرعته وفعاليته.
· Mercurial
هو مثال آخر على الأنظمة (الموزعة) ، ويعتبر هذا النظام هو المفضل لدي شخصياً ولدى الكثير من المبرمجين، فهو سريع جداً بالإضافة الى ذلك فهو سهل الاستخدام.
يتوفر كذلك لهذا النظام واجهة رسومية سهلة الاستخدام يطلق عليها TortoiseHg
بما أني مبرمجة على بيئة.NET وأستخدم برنامج ال Visual Studio لبرمجة التطبيقات المختلفة, فاني استخدم أيضاً أداة أخرىVisualHG وهي خاصة لإعطاء دعم لنظام Mercurial داخل برنامج ال Visual Studio.
0 التعليق:
إرسال تعليق