کنترل نسخه
کنترل نسخه یا کنترل منبع (به انگلیسی: Revision control) عبارت است از سیستمی برای کنترل و پیگیری تغییرات واحد اطلاعاتی دخیل در ایجاد یک برنامهٔ نرمافزاری. واحد اطلاعاتی مزبور میتواند شامل فایلهای سورس، راهنماها، میک فایلها، اشیاء نرمافزاری و .... سورس کنترل به خصوص در جایی اهمیت پیدا میکند که چند برنامهنویس بخواهند روی منابع مشترکی کار کنند. در این صورت است که مفاهیمی همانند مقایسه، ترکیب، تداخل و ... پیش میآیند که سورس کنترل باید بتواند راه حل مناسبی برای هر یک ارایه دهد. امروزه معمولاً از ابزارهای نرمافزاری برای این کار استفاده میشود. با این حال هنوز هم هستند شرکتهایی که از روشهای قدیمی مانند داشتن یک فایل متن در هر پوشه، هارد کپی و ... استفاده میکنند.
انواع 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 مورد استفاده قرار میگیرد.