سیستم کنترل نسخه نرم افزاری است که تغییرات یک فایل یا مجموعه ای از فایل ها را در طول زمان ردیابی می کند تا بتوانید نسخه های خاصی را بعداً فراخوانی کنید. همچنین به شما امکان می دهد با برنامه نویسان دیگر کار کنید.
سیستم کنترل نسخه مجموعه ای از ابزارهای نرم افزاری است که به تیم کمک می کند تا تغییرات در کد منبع را مدیریت کند. از نوع خاصی از پایگاه داده برای پیگیری هر تغییر در کد استفاده می کند.
توسعه دهندگان می توانند نسخه های قبلی کد را با نسخه قدیمی تر مقایسه کنند تا اشتباهات را برطرف کنند.
مزایای سیستم کنترل نسخه
سیستم کنترل نسخه در توسعه نرم افزار بسیار مفید و سودمند است. توسعه نرم افزار بدون استفاده از کنترل نسخه ناامن است. برای بخش هایی که از آن ها اطمینان ندارید نیز پشتیبان تهیه می کند. سیستم های کنترل نسخه یک رابط سریع به توسعه دهندگان ارائه می دهند. همچنین به تیمهای نرمافزاری اجازه میدهد تا کارایی و چابکی را با توجه به مقیاسهای تیم حفظ کنند تا توسعهدهندگان بیشتری را شامل شوند.
برخی از مزایای کلیدی داشتن سیستم کنترل نسخه به شرح زیر است.
- تاریخچه تغییر کامل فایل
- همزمان کار می کند
- انشعاب و ادغام
- قابلیت ردیابی
انواع سیستم کنترل نسخه
- Localized version Control System
- Centralized version control systems
- Distributed version control systems
Localized version Control System
روش کنترل نسخه محلی به دلیل سادگی یک رویکرد رایج است. اما این روش منجر به احتمال بالاتر خطا می شود. در این روش، ممکن است فراموش کنید که در کدام دایرکتوری هستید و به طور تصادفی در فایل اشتباهی بنویسید یا روی فایلهایی که نمیخواهید کپی کنید.
برای مقابله با این موضوع، برنامه نویسان VCS های محلی را توسعه دادند که دارای یک پایگاه داده ساده بودند. چنین پایگاههای اطلاعاتی تمامی تغییرات فایلها را تحت کنترل بازنگری نگه میدارند. یک سیستم کنترل نسخه محلی، کپی های محلی فایل ها را نگه می دارد.
اشکال اصلی Local VCS این است که یک نقطه خرابی دارد.
Centralized Version Control System
توسعه دهندگان نیاز به همکاری با توسعه دهندگان دیگر در سیستم های دیگر داشتند. سیستم کنترل نسخه محلی در این مورد ناموفق بود. برای مقابله با این مشکل، سیستم های کنترل نسخه متمرکز توسعه داده شد.
این سیستم ها دارای یک سرور واحد هستند که حاوی فایل های نسخه شده است و به بعضی از افراد دسترسی مرکزی برای چک کردن این فایل ها داده میشد.
سیستم های کنترل نسخه متمرکز مزایای زیادی به خصوص نسبت به VCS های محلی دارند.
- همه افراد در سیستم اطلاعاتی در مورد کاری که دیگران در پروژه انجام می دهند دارند.
- مدیران بر دیگر توسعه دهندگان کنترل دارند.
- مقابله با یک سیستم کنترل نسخه متمرکز ساده تر از یک سیستم کنترل نسخه محلی است.
- یک سیستم کنترل نسخه محلی با یک جزء نرم افزار سرور که نسخه های مختلف فایل ها را ذخیره و مدیریت می کند، تسهیل می کند.
نکته: همچنین دارای همان اشکال سیستم کنترل نسخه محلی است که یک نقطه خرابی نیز دارد.
Distributed Version Control System
سیستم کنترل نسخه متمرکز از یک سرور مرکزی برای ذخیره تمام پایگاه داده و همکاری تیم استفاده می کند. اما به دلیل خرابی تک نقطه ای که به معنای خرابی سرور مرکزی است، توسعه دهندگان آن را ترجیح نمی دهند. در مرحله بعد، سیستم کنترل نسخه توزیع شده توسعه می یابد.
در یک سیستم کنترل نسخه توزیع شده (مانند Git، Mercurial، Bazaar یا Darcs)، کاربر یک کپی محلی از یک مخزن دارد. بنابراین، توسعه دهندگان فقط آخرین نسخه فایل ها را بررسی نمی کنند، حتی می توانند به طور کامل مخزن را کپی و توسعه دهند. مخزن محلی شامل تمام فایل ها و ابرداده های موجود در مخزن اصلی است.
DVCS امکان انشعاب و ادغام مدیریت خودکار را فراهم می کند. در اکثر عملیات به جز بارگذاری و واکشی سرعت می بخشد. DVCS توانایی کار آفلاین را افزایش می دهد و برای پشتیبان گیری به یک مکان تکیه نمی کند. اگر هر سروری متوقف شود و سیستمهای دیگر از طریق آن با هم همکاری کنند، هر یک از مخازن مشتری میتواند توسط آن سرور بازیابی شود.