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

Version Control System که به اختصار VCS نامیده می شوند، سیستمی است که به برنامه نویسان و توسعه دهندگان اجازه می دهد که بدون اینکه هیچگونه نگرانی داشته باشند، تا دلشان می خواهد اشتباه کنند! زیرا آن ها خیالشان از این بابت راحت است که با استفاده از VCS ها، اشتباهاتشان قابل پیگیری، بررسی و تصحیح هستند. البته این مورد تنها یکی از کاربردهای بی نظیر سیستم های کنترل نسخه است.
این سیستم ها به توسعه دهندگان و برنامه نویسان اجازه می دهند تا پروژه های خود در نسخه های مختلفی، ذخیره ویا حتی ارائه کنند. همچنین VCS ها با فراهم کردن امکانات زیادی مثل قابلیت پیگیری تغییرات اعمالی هر یک از برنامه نویسان، ساخت شاخه هایی مختلف از پروژه، جلوگیری از تداخل کدهای برنامه نویسان و.... فرآیند توسعه پروژه ها به صورت گروهی را ساده تر می سازند.
پس VCS سیستمی است که به منظور کنترل و پیگیری تغییرات اعمال شده در پروژه های نرم افزاری مورد استفاده قرار می گیرد. اساس کار این سیستم ها بر پایه ثبت و نگهداری تاریخچه کدهایی است که در طول توسعه یک اپلیکیشن نوشته می شوند. یعنی سیستم های کنترل ورژن ماهیتی مانند دیتابیس دارند، با این تفاوت که اطلاعات درون آن شامل نسخه های گوناگون از پروژه و داده های مربوط به هر از آن ها است. این دیتابیس داده به برنامه نویسان این امکان را می دهند تا هر زمانی که بخواهند، ورژن مورد نظر از پروژه خود را ذخیره و یا فراخوانی کنند.
[note]
[/note]
آشنایی با انواع سیستم های کنترل ورژن

سیستم های کنترل ورژن به دو دسته Distributed و Centeralized تقسیم می شوند. تفاوت اصلی این دو دسته در شیوه ذخیره سازی داده ها می باشد. در ادامه به بررسی هر کدام از این سیستم ها می پردازیم :
- سیستم های کنترل ورژن متمرکز یا Centeralized : در این نوع VCS ها تمام داده ها بر روی یک سرور مرکزی ذخیره می شوند و شیوه دسترسی به اطلاعات به صورت Client / Server می باشد. یعنی اگر برنامه نویسان بخواهند تغییراتی در پروژه ایجاد کنند باید به سرور مرکزی متصل باشند، در غیر اینصورت نمی توانند به اطلاعات پروژه دست پیدا کنند.
- سیستم های کنترل ورژن توزیع شده یا Distributed : در این نوع سیستم ها، اطلاعات پروژه در دسترس هر یک از برنامه نویسان قرار می گیرد و هر وقت که بخواهند می توانند تغییرات مورد نظرشان در آن ایجاد و سپس در زمان مد نظرشان آن ها را با سرور همگان سازی کنند. مزیت این VCS ها این است که اگر سرور اصلی در دسترس نبود، همچنان برنامه نویسان می توانند تغییرات ایجاد شده را در سیستم خودشان اعمال کنند. سپس در زمانی که ارتباط با سرور برقرار شد، اطلاعات و تغییرات آن ها با سرور اصلی هنگام سازی می شود. یکی از مهمترین سیستم های کنترل ورژن توزیع شده، GIT می باشد.
چرا باید از VCS ها در پروژه های خود استفاده کنیم؟
- امکان بازیابی کدها به ورژن دلخواه
- ذخیره روند توسعه نرم افزار در ورژن های مختلف
- امکان مقایسه، بررسی و پیگیری کد ها در ورژن های مختلف
- تعیین میزان کدنویسی و مشارکت هر یک از برنامه نویسان در فرآیند توسعه نرم افزار
- مشخص بودن تغییرات اعمالی هر یک از برنامه نویسان
- امکان توسعه و کدنویسی همزمان
- سهولت کار تیمی به خصوص دورکاری در حوزه برنامه نویسی
- پیگیری میزان پیشرفت پروژه
- امکان شاخه سازی از سورس پروژه
- نسخه های پشتیبان
- و....
نتیجه گیری
مهم نیست که شما یک برنامه نویس، نویسنده و یا حتی گرافیست هستید. قطعا زمانی که در حال توسعه یک پروژه هستید به نگهداری نسخه های مختلفی از پروژتان نیاز خواهید داشت. مثلا تصور کنید که در حال توسعه یک نرم افزار هستید و بعد از گذشت مدت زمان زیادی متوجه می شوید که کدهایی که نوشته اید، دارای اشتباه بوده اند. در این صورت اگر نسخه های قبلی از پروژه خود را نداشته باشید، شاید هرگز نتوانید منشا خطاهای خود را پیدا کنید و به همین دلیل شاید مجبور شوید که پروژتان را از اول شروع کنید. پس اگر تاکنون از این ابزار قدرتمند و کاربردی در فرآیند توسعه نرم افزارهای خود استفاده نکرده اید، به شما توصیه می کنیم، همین امروز یادگیری این ابزارها را شروع کنید. آیا تاکنون چالش هایی که به دلیل استفاده نکردن از VCS به وجود می آیند را تجربه کرده اید؟
خیلی مقاله خوبی بودش جناب آقای علامه . واقعا این بستر های کنترل ورژن کد زنی رو رویای میکنن ، من خودم حتی تو مبحث پایان نامم که در زمینه شیمی هم بود از گیت استفاده کردم که تمام نسخه ها و تغییرات رو داشته باشم. و خیلی بهم کمک کرد این موضوع چون یک جا نیاز بود تغییراتی بدم و به کمک همین کامیت ها تو یک ساعت تغییرات شاید چند هفته ای رو ایجاد کردم .
ممنونم آقای نقلانی عزیز?
خیلی عالیه?
با درود
مهدی عزیز
اطلاعات بسیار عالی در خصوص vcs ارائه کردید.
سپاس
تشکر آقای ملهم عزیز، خوشحالم که این مقاله مورد استفاده شما قرار گرفته
سلام و خسته نباشید
ممنون از توضیحات VCS، کاش آموزش git هم بزارید
سلام دوست عزیز
حتما در مقالات آینده به آموزش git هم می پردازیم
با تشکر
سپاس فراوان آقای علامه
خواهش می کنم