مقدمه
مدیریت کد مرجع (source code management) یا به اختصار SCM
برای پیگیری تغییرات ایجاد شده در مخزن کد مرجع استفاده میشود. SCM
تاریخچه تغییرات کد ها را دنبال میکند و به بر طرف کردن conflict هایی (تضاد های ایجاد شده به دلیل تغییر دادن یک بخش از فایل توسط چند نفر) که هنگام ادغام تغییرات به وجود می آیند، کمک میکند. همچنین، واژه ی SCM
با کنترل نسخه (version control) هم معنی است.
با رشد پروژههای نرمافزاری، حجم کد های نوشته شده و تعداد افرادی که در پروژهها مشارکت میکنند زیاد شده و این موضوع باعث ایجاد هزینه در مدیریت و برقراری ارتباط میشود. SCM
، یک ابزار مهم در کاهش آسیب های سازمانی ناشی از رشد نرمافزار است.
اهمیت ابزار های مدیریت کد مرجع
هنگامی که چندین توسعهدهنده روی یک کد کار میکنند، ایجاد تغییرات روی یک تکه کد مشترک اتفاقی معمول است. توسعهدهنده های مختلف ممکن است روی قابلیتهایی کار کنند که جدا از یک دیگر به نظر می رسند، در حالی که آن قابلیت ها از یک تکه کد مشترک استفاده میکنند. به همین خاطر، با کارکردن یک توسعهدهنده (مانند علی) روی قابلیت A، تغییراتی ایجاد میشود که باعث میشود بعد ها هنگامی که توسعهدهنده ای دیگر (مانند رضا) روی قابلیت B کار کرده و همان فایل را ویرایش میکند، با conflict مواجه شود.
پیش از آن که از SCM
استفاده کنیم این اتفاق یک کابوس محسوب میشد. توسعهدهنده ها فایلهای متنی را ویرایش کرده و آنها را از طریق پروتکل هایی مثل FTP روی سرور بارگذاری میکردند. علی ویرایشی را انجام می داد و رضا ندانسته تغییرات خود را روی تغییرات علی بازنویسی کرده و تمام تغییرات او را پاک میکرد. نقش SCM که یک لایه محافظ است، در این سناریو ها با عنوان کنترل نسخه شناخته میشود.
با استفاده از SCM
در کنترل نسخه جلوی از دست رفتن کار به دلیل وجود conflict و بازنویسی فایل ها گرفته میشود. این سیستم با دنبال کردن تغییرات هر توسعهدهنده ، بخشهایی که در آنها conflict وجود دارد را شناسایی کرده و جلوی باز نویسی شدن آنها را میگیرد. SCM
پس از این مرحله، نقاط conflict را به توسعهدهنده ها اطلاع میدهد تا آنها بتوانند conflict های موجود را بررسی کرده و به آنها رسیدگی کنند.
از آن جایی که SCM
تاریخچه تمام تغییرات ایجاد شده در کد را ضبط میکند، توسعهدهندگان میتوانند تغییراتی که باعث ایجاد خرابی شده است را به راحتی بررسی کنند.
مزایای مدیریت کد مرجع
SCM
علاوه بر کنترل نسخه، مجموعه ای از ویژگیهای مفید دیگر را برای ایجاد تجربه ای بهتر در کار گروهی فراهم میکند. از زمانی که SCM
شروع به ثبت تغییرات یک پروژه میکند، یک تاریخچه با جزئیات بالا از روند پروژه ساخته میشود. این تاریخچه، بعد ها میتواند برای برگرداندن تغییرات کد استفاده شود. SCM
میتواند کد را به طور سریع به نقطهای در زمان گذشته بر گرداند. این قابلیت برای از بین بردن خطای ایجاد شده پس از بهروزرسانی کاربرد زیادی دارد.
تاریخچه ی SCM
از هر تغییر پیش آمده در پروژه، اطلاعات ارزشمندی برای بیان تغییرات هر نسخه، نسبت به نسخه قبل فراهم میکند. یک تاریخچه SCM
تمیز و نگهداری شده، میتواند روند پیشرفت پروژه را به مشتری نهایی یا افرادی که در تیم توسعه نرمافزار نیستند، به شکل شفاف تری نشان دهد.SCM
تعامل های بیهوده تیم را کاهش، و سرعت تحویل پروژه را افزایش میدهد. بدون SCM
باید تلاش مضاعفی برای برنامهریزی انجام داد تا از ایجاد conflict در فایل ها جلوگیری شود. به همین دلیل توسعه سرعت کمتری خواهد داشت. با وجود SCM
توسعهدهنده ها میتوانند مستقل از یک دیگر در شاخه (branch) های جدا قابلیتهای پروژه را توسعه دهند و در نهایت آنها را با یک دیگر ادغام کنند.
به طورکلی SCM
کمک بزرگی به تیم های مهندسی میکند تا هزینه توسعه خود را کاهش داده و به شکل بهتری عمل کنند. داشتن SCM
در عصر مدرن توسعه نرمافزار یک ضرورت است. تیم های حرفهای از SCM
استفاده میکنند و تیم شما هم بهتر است این کار را انجام دهد.
بهترین رویه های مدیریت کد مرجع
1. دفعات زیادی Commit کنید.
Commit کردن کار کم هزینه و ساده ای است. این کار باید به طور معمول اتفاق بیفتد تا تغییرات کد ثبت شود. هر Commit یک نقطهای از کد است که در آینده میتوانیم به آن برگردیم. Commit های زیاد، فرصت خوبی در اختیار ما قرار میدهند تا کار خود را به حالت قبلی برگردانیم. یک گروه از Commit ها میتوانند با استفاده از rebase به یک Commit تبدیل شوند تا log فرایند توسعه واضح تر شود.
2. مطمئن شوید که روی جدید ترین نسخه کار میکنید.
SCM
بهروزرسانی های سریع از چندین توسعهدهنده را امکانپذیر میکند. کدی که روی سیستم local خود دارید به راحتی از کد اصلی عقب میافتد. مطمئن شوید که از git pull استفاده میکنید تا قبل از بهروزرسانی، آخرین تغییرات کد را داشته باشید.
3. پیام Commit را با جزئیات بنویسید.
هر Commit یک پیام مربوطه دارد که هنگام ایجاد Commit، آن را مینویسیم. نوشتن پیامی که کار انجام شده را به خوبی تشریح و توصیف کند بسیار مهم است. پیام Commit باید دلیل و چگونگی محتوای Commit را برساند. این پیام ها تاریخچه توسعه پروژه را تشکیل میدهد و به کسانی که در آینده تغییرات را بازبینی میکنند، کمک میکند.
4. تغییرات را قبل از Commit کردن بازبینی کنید.
SCM
یک ناحیه staging (نمایش) در اختیار شما قرار میدهد. این ناحیه میتواند برای مدیریت و بازبینی تغییرات داده شده قبل از Commit کردن استفاده شود. استفاده کردن از ناحیه staging به این روش، یک فضای موقتی ایجاد میکند که به اصلاح به محتویات Commit کمک میکند.
5. از شاخه ها استفاده کنید.
Branching (شاخه بندی) یکی از قدرتمند ترین قابلیتهای SCM
است که به توسعهدهنده ها این امکان را میدهد که در مسیر های جداگانه ای توسعه را انجام دهند. شاخه ها باید به طور معمول استفاده شوند چرا که کار با آنها سریع و کم هزینه است. شاخه ها به چندین توسعهدهنده این امکان را میدهند که به شکل موازی در خط های جداگانه کار کنند. این خط ها به طور معمول قابلیتهای مختلف یک محصول اند. هنگامی که توسعه در یک شاخه به پایان میرسد، آن را با شاخه اصلی (master) ادغام میکنند.
6. روی یک گردش کار توافق کنید.
به طور پیشفرض SCM ها روش های مشارکت زیادی را پشتیبانی میکنند. این که تیم توسعه، الگوی مشترکی از همکاری را در پیش بگیرد، اهمیت زیادی دارد. گردش های کار SCM الگو ها و فرایند هایی را برای ادغام شاخه ها مشخص میکنند. اگر تیم توسعه روی یکی از این الگو ها توافق نکند، هنگام ادغام شاخه ها دچار مشکلات و ناکارآمدی هایی میشود.
خلاصه
SCM
یک ابزار ارزشمند در توسعه نرمافزار های مدرن است. بهترین تیم های توسعه نرمافزار از SCM
استفاده میکنند و تیم شما هم بهتر است این کار را انجام دهد. SCM
به راحتی در یک پروژه جدید پیکربندی میشود و بازدهی بسیار بالایی دارد.