تاریخچه ای از سیستم های Version Control

مدیریت نسخه یا Version Control چیه؟ سیستمی هست که تغییرات فایل های پروژه شما رو ذخیره میکنه و به شما این اجازه رو میده که بعدا ورژن های قبلی رو بازیابی کنید. بنابراین اگر جایی چیزی رو خراب کردید یا فایلی رو از دست دادید، راحت میتونید همه رو بازیابی کنید. همچنین اگر در حین توسعه نیاز داشته باشید که به یک state خاص از پروژه تون برگردید، این امکان رو دارید. پس تا الان فلسفه اسم گذاری ش مشخص شد!

لوگوهای تعدادی از معروف ترین <a href=ابزارهای مدیریت نسخه“>
لوگوهای تعدادی از معروف ترین ابزارهای مدیریت نسخه

امکان نداره برنامه نویس باشید و با vcs هایی مثل git کار نکرده باشید. ورژن کنترل ها معمولا یکی از پیش نیازهای فنی برای فرصت های شغلی برنامه نویسی هستن و سوالاتش هم پایه ثابت مصاحبه ها هست.

لازمه این نکته رو بگیم که مدیریت نسخه لزوما فقط برای برنامه نویس ها و مهندسان نرم افزار نیست و توی تمام حوزه ها که نیاز به مدیریت نسخه باشه قابل استفاده هست. اما از اون جایی که کار با این ابزارها لازمه ی کار افراد حوزه کامپیوتر هست و بیشترین کاربرد رو بین افراد همین حرفه داره، مثال هایی که میزنیم و اصطلاحاتی که استفاده میکنیم همه مربوط به دنیای نرم افزار هست.

اگه ابزارهای مدیریت نسخه نبودن چی میشد؟ احتمالا تیمی از برنامه نویس ها که داشتن روی یه پروژه کار میکردن، مدام فلش مموری دستشون بود و به کامپیوتر هم میزدن و آخرین آپدیت برنامه رو از هم میگرفتن. بعد از اون طرف یه نفر داد میزد که “من دارم روی فلان قسمت کار میکنم! کسی روش کار نکنه.” آخرش هم احتمالا چند نفر توی کدها به کانفلیکت میخوردن و … . پس واضحه که مدیریت نسخه برای کار تیمی به شدت حیاتی و مهم هست!

شاید معروف ترین سیستم مدیریت نسخه حال حاضر git باشه که در سال 2005 معرفی شد. اما قبل از اون اوضاع به چه صورت بود؟

ساده ترین راهی که به ذهن همه میرسه، اینه که هر نسخه مختلف از برنامه رو توی یه دایرکتوری جدا در سیستم خودمون ذخیره کنیم. این راه خیلی ساده ست اما به شدت خطاپذیره. ممکنه به سادگی فایل های یه دایرکتوری اشتباه رو تغییر بدیم یا کپی پیست کنیم. این جاست که بازیابی فایل ها خیلی سخت میشه! برای حل این مشکل، برنامه نویس ها مدت ها پیش سیستمی رو تحت عنوان Local VCS پیاده سازی کردن که یک پایگاه داده ساده داشت که تمام تغییرات فایل ها رو ذخیره میکرد.

یکی از قدیمی ترین نمونه ها RCS (Revision Control System) هست که به زبان C نوشته شده و اولین نسخه اش سال 1982 منتشر شده. در واقع RCS جزوی از نسل اول سیستم های مدیریت نسخه هست. RCS مجموعه ای از دستورات یونیکسی هست و نحوه کارکردش هم به این صورته که یک سری patch set (که در واقع میشه تفاوت بین فایل ها) رو به صورت خاصی بر روی دیسک ذخیره میکنه و این امکان رو داره که فایل ها رو در هر حالتی که بخوایم بازیابی کنه.

اما با یه ابزار کنترل نسخه لوکال کار ما راه نمیفته. تیم نرم افزار متشکل از چند توسعه دهنده ست که میخوان روی یک پروژه همکاری کنن. این نیاز، ما رو به نسل دوم سیستم های کنترل نسخه میرسونه که اصطلاحا “متمرکز” یا Centralized VCS هستن. ابزارهایی مثل Perforce ، CVS و Subversion که به ترتیب اولین بار در سال های 1990، 1995 و 2000 معرفی شدن جزوی از این نسل هستن. در این ابزارها یک سرور مرکزی داریم که تمام فایل های نسخه بندی شده رو شامل میشه و توسعه دهنده ها بهش متصل میشن.

این روش مزایای زیادی داره. در این حالت ادمین میتونه تمام افراد رو کنترل کنه و تمام افراد هم میتونن ببینن که بقیه افراد روی پروژه چه تغییراتی ایجاد کردن. اما یه عیب بزرگ داره و اونم Single Point of Failure هست. اگر سرور بیاد پایین، اتفاقی برای هارد دیسک حاوی پایگاه داده مرکزی بیفته و … کلی دردسر برای ما ایجاد میشه.

اینجاست که سیستم های کنترل نسخه توزیع شده یا Distributed VCS ها نظیر Git ، Mercurial ، Bazaar و Darcs پا به میدون میذارن. از بین تمام ابزارهای معروف این نسل که اسم برده شد، همگی به جز Darcs که سال 2003 معرفی شد، در سال 2005 معرفی شدن و جدید هستن. نحوه کار این نسل از سیستم های مدیریت نسخه، بدین صورته که هر کاربر repository (مخزن پروژه) رو mirror میکنه. یعنی هر نسخه گرفته شده موجود در کامپیوتر هر کاربر، یه کپی از تمام فایل های پروژه به همراه تاریخچه اون پروژه ست. در این صورت فایل های موجود در کامپیوتر هر کاربر حتی میتونن نقش بکاپ رو بازی کنن و اگر هر اتفاقی برای هر سروری بیفته، از این فایل ها استفاده کنن.

این تاریخچه ای مختصر از تحول سیستم های مدیریت نسخه در 30-40 سال اخیر بود. به عنوان خاتمه بحث، میخوایم تاریخچه مختصری هم از Git بگیم. احتمالا گیت در حال حاضر محبوب ترین و مشهورترین ابزار مدیریت نسخه در دنیای نرم افزار باشه.

همون طور که میدونیم، کرنل لینوکس یکی از بزرگترین پروژه های اوپن سورس (متن باز) دنیای نرم افزاره. از سال 2002 ، پروژه کرنل لینوکس از یه نرم افزار کنترل نسخه توزیع شده به نام BitKeeper استفاده میکنه. در سال 2005 روابط بین توسعه دهندگان لینوکس و بیت کیپر تیره و تار میشه و کامیونیتی توسعه دهندگان هسته لینوکس(و به طور مشخص لینوس توروالدز)، به فکر میفتن که ابزار مدیریت نسخه مخصوص خودشون رو بر اساس تجربه ای که از کار با بیت کیپر داشتن، توسعه بدن و این جا بود که Git متولد شد! 🙂

منبع : کتاب Pro Git از Scott Chacon و Ben Straub .

ممنون از توجهتون.

مدیریت نسخه یا Version Control چیه؟ سیستمی هست که تغییرات فایل های پروژه شما رو ذخیره میکنه و به شما این اجازه رو میده که بعدا ورژن های قبلی رو بازیابی کنید. بنابراین اگر جایی چیزی رو خراب کردید یا فایلی رو از دست دادید، راحت میتونید همه رو بازیابی کنید. همچنین اگر در حین توسعه نیاز داشته باشید که به یک state خاص از پروژه تون برگردید، این امکان رو دارید. پس تا الان فلسفه اسم گذاری ش مشخص شد!

لوگوهای تعدادی از معروف ترین <a href=ابزارهای مدیریت نسخه“>
لوگوهای تعدادی از معروف ترین ابزارهای مدیریت نسخه

[ لینک منبع ]

  1. اولین نفری باشید که دیدگاه خود را ثبت می کند!
« بک اند دولوپر کیست؟
وردپرس برای طراحی سایت »