کنترل نسخه

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

انواع SCM 
نرم‌افزارهای مدیریت کد به ۲ دستهٔ distributed و centeralized تقسیم می‌شوند:

Centeralized: مانند 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 وجود دارد و به صورت svn log و git log مورد استفاده قرار می‌گیرد.

منابع 

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