کنترل نسخه

کنترل نسخه یا کنترل منبع  عبارت است از سیستمی برای کنترل و پیگیری تغییرات واحد اطلاعاتی دخیل در ایجاد یک برنامهٔ نرم‌افزاری. واحد اطلاعاتی مزبور می‌تواند شامل فایل‌های سورس، راهنماها، میک فایل‌ها، اشیاء نرم‌افزاری و ... سورس کنترل به خصوص در جایی اهمیت پیدا می‌کند که چند برنامه‌نویس بخواهند روی منابع مشترکی کار کنند. در این صورت است که مفاهیمی همانند مقایسه، ترکیب، تداخل و ... پیش می‌آیند که سورس کنترل باید بتواند راه حل مناسبی برای هر یک ارائه دهد. امروزه معمولاً از ابزارهای نرم‌افزاری برای این کار استفاده می‌شود. با این حال هنوز هم هستند شرکتهایی که از روش‌های قدیمی مانند داشتن یک فایل متن در هر پوشه، هارد کپی و ... استفاده می‌نمایند.

 انواع SCM 
نرم‌افزارهای مدیریت کد به ۲ دستهٔ distributed و centralized تقسیم می‌شوند:7 Version Control Systems Reviewed - Smashing Magazine

Centralized: مانند Subversion (svn) / CVS که در این دسته نرم‌افزار یک server و تعدادی client وجود دارد. به این صورت که تمامی تغییرات در server ذخیره می‌شود و کاربران (برنامه‌نویس‌ها) با استفاده از client تغییرات جدید را اعمال/دریافت می‌کنند.

Distributed: مانند GIT / Bazaar در این دسته server حذف شده‌است و هر فرد می‌تواند یک server باشد و تاریخچهٔ کامل را در اختیار دارد. در این دسته تغییرات می‌تواند بدون در اختیار داشتن ارتباط انجام شود.

 عملیات معمول در SCMها 
از آن‌جایی که SCMها کار واحدی انجام می‌دهند و بخش‌های اصلی آن‌ها نیز یکسان است می‌توان انتظار داشت که عملیات واحدی نیز انجام دهند.
 init: ساخت مخزن جدید برای ذخیرهٔ تغییرات در آن.
 checkout / pull / fetch: دریافت اطلاعات از مخزن و ساخت working tree.
 switch branch: جا به جایی میان شاخه‌های مختلف توسعه.
 add / delete / rename: انجام تغییرات روی پرونده‌هایی که SCM آن‌ها را پیگیری می‌کند.
 commit: ذخیرهٔ دسته‌ای از تغییرات که ممکن است در پرونده‌های مختلف باشد.
 status: نمایش وضعیت کنونی پرونده‌های پروژه.
 diff: نمایش تغییرات انجام شده.
 log: نمایش تاریخچهٔ تغییرات.

دستورهای فوق معمولاً در این نرم‌افزارها یکسان هستند برای نمونه در هر دو نرم‌افزار آپاچی ساب‌ورژن و گیت دستور log وجود دارد و به صورتSubversion Commands and Scripts svn log و git log مورد استفاده قرار می‌گیرد.

 منابع 

رده:کنترل نسخه
رده:ارتباطات فنی
رده:سامانه‌های کنترل نسخه
رده:فرایند تولید نرم‌افزار
رده:واژگان عمومی نرم‌افزار