Skip to main content

آموزش مرکوریال (Mercurial) برای مدیریت کد

در چند پست به آموزش مقدماتی ابزار Mercurial برای مدیریت کد می‌پردازیم.

کنترل کد چیست و چرا از Mercurial استفاده کنیم؟

کنترل کد یا کنترل ورژن به معنی فرایند مدیریت نسخه‌هایی از اطلاعات است. به شکل ساده‌تر، کاری است که بسیاری از افراد به صورت دستی انجام می‌دهند: هر زمانی که فایلی را دستکاری می‌کنند آن را به اسم جدیدی ذخیره می‌کنند، مثلا به اسم قبلی یک عدد اضافه می‌کنند و هربار آن عدد را بالاتر می‌برند.

انجام دستی فرایندی که در بالا توضیح دادیم برای یک فایل و تغییرات یک نفر ممکن است اما برای چندین فایل و تغییرات چندین نفر ممکن نیست. بنابراین ابزارهایی به منظور اتوماتیک کردن این فرایند ایجاد شده‌اند. اولین نمونه‌های این ابزارها برای یک نفر مناسب بود تا تغییرات یک فایل را مدیریت کند، اما با گذشت زمان امکانات و ویژگی‌های آنها گسترش یافت. امروزه ابزارهای کنترل کد توانایی مدیریت چندین فایل و اعمال تغییرات توسط چندین نفر را دارند.

امروزه ابزارهای کنترل کد یا کنترل نسخه یا کنترل ورژن متفاوتی وجود دارند که از مشهورترین آنها می‌توان به Git اشاره کرد. یکی دیگر از آنها مرکوریال(Mercurial) است. دلیل انتخاب Mercurial در این نوشتار، ساده بودن یادگیری آن و مناسب بودن آن برای استفاده‌های واقعی با هر مقیاس و بزرگی است.

چرا از کنترل منبع یا کنترل کد استفاده کنیم؟

دلایل مختلفی وجود دارد که شما یا تیم شما نیاز دارد از ابزاری اتوماتیک برای کنترل ورژن در یک پروژه استفاده کند.

  • با استفاده از آن می‌توان یک تاریخچه از سیر تکاملی پروژه در اختیار داشت. برای هر تغییری یک log درباره آن و کسی که آن را انجام داده است وجود دارد.
  • زمانی که با افراد دیگر کار می‌کنید، استفاده از کنترل ورژن می‌تواند همکاری شما را راحت‌تر کند. برای مثال، زمانی که چند نفر به طور همزمان ممکن است تغییراتی که با یکدیگر تداخل دارند را انجام دهند، نرم‌افزار کنترل کد کمک می‌کند تا تداخلی در کار هیچ کدام رخ ندهد.
  • آن کمک می‌کند تا اشتباهات را اصلاح کنیم. اگر تغییری ایجاد کردیم که به خطا منجر شد، می‌توان به ورژن قبل از آن تغییر بازگشت. به نوعی می‌توان گفت که ابزار کنترل حتی می‌تواند در پیدا کردن و رفع بهینه‌تر یک مشکل کمک کند.
  • آن کمک می‌کند تا به طور همزمان بر روی نسخه‌های متفاوتی از پروژه‌تان کار کنید.

معنی‌ revision control

برای revision control معانی و عبارات مترادف زیادی در فارسی و انگلیسی وجود دارد. برخی از متداول‌ترین آنها عبارتند از:

  • کنترل نسخه، کنترل ویرایش یا همان Revision control
  • نرم افزار مدیریت پیکربندی یا Software configuration management
  • مدیریت کد منبع یا Source code management
  • کنترل کد منبع، کنترل منبع، کنترل کد یا Source code control
  • کنترل ورژن یا Version control

برخی از افراد معتقد هستند که این عبارات معانی متفاوتی دارند، اما در عمل دارای هم پوشانی هستند و روی تفاوت آنها نتیجه‌ای بدست نیامده است.

کنترل توزیع شده‌ی کد

نسل کنونی ابزارهای کنترل ورژن بصورت نظیر به نظیر (peer-to-peer) کار می‌کنند. آنها وابستگی به یک سرور مرکزی ندارند و به افراد مختلف اجازه می‌دهند که داده‌ی کنترل ورژن خودشان را به هر جایی نیاز است ببرند و به طور توزیع شده(مستقل-بدون وابستگی به مرکز) استفاده کنند. می‌توان نتیجه گرفت که الزامی به همکاری روی اینترنت وجود ندارد و بصورت آفلاین یا در شبکه داخلی، نامحدود و به‌دلخواه می‌توان از آن‌ها استفاده کرد.

توزیع شده بودن این ابزارها به دلایل مختلفی مفید هستند. برای مثال سریع‌تر هستند چون برای هر تغییری و هر عملی نیاز به ارتباط شبکه‌ای با سرور مرکزی ندارند. دلیل دیگر این است که به دلیل توزیع شده بودن، نگرانی در خصوص از دست رفتن داده‌ها وجود ندارد.

چرا Mercurial را انتخاب کنیم؟

  • یادگیری و استفاده آن آسان است.
  • سبک است.
  • مقیاس پذیر است.
  • به راحتی سفارشی سازی می‌شود.

اگر با سیستم‌های کنترل منبع آشنا باشید انتظار می‌رود در کمتر از پنج دقیقه آن را یاد بگیرید. حتی اگر آشنا نباشید نیز زمان خیلی زیادی بیشتر از آن لازم نیست! Mercurial از قواعد ثابتی استفاده می‌کند که لازم نیست استثناهای زیادی را یاد بگیرید.

اگر ویژگی‌های Mercurial برای شما کافی نیست می‌توانید آن‌ها را گسترش دهید. پیاده سازی مرکوریال با پایتون باعث شده است که دستکاری و گسترش آن ساده باشد و به همین دلیل افزونه‌های زیادی برای آن وجود دارند.

مقایسه Git و Mercurial

گیت یک ابزار کنترل ورژن توزیع شده است که برای مدیریت توسعه کرنل لینوکس ساخته شد.

گیت مجموعه بسیار زیادی دستور دارد، تا نسخه‌ی ۱.۵ گیت دارای ۱۳۹ دستور مستقل است. همین موجب سخت‌تر شدن یادگیری آن می‌شود. در مقایسه با گیت، مرکوریال تمرکز زیادی بر سادگی دارد.

در مورد عملکرد می‌توان گفت که Git بسیار سریع است. اما با این وجود Mercurial به خصوص در سیستم عامل‌های غیر لینوکسی هم سطح گیت است.

یک منبع، مخزن یا همان repository از نوع Mercurial نیازی به نگهداری خاصی ندارد. اما یک مخزن گیت به طور دستی به repack کردن metadata هایش نیاز دارد تا کارایی‌اش و مصرف فضای آن بهینه‌تر باشد. البته که این در مورد سروری است که مخزن‌های Git زیادی را میزبانی می‌کند. یک مخزن گیت pack شده حجم کمتری از یک مخزن مرکوریال مشابه دارد، اما یک مخزن pack نشده‌ی گیت بزرگتر است.

می‌توان از تاریخچه ورژن یک مخزن گیت در Mercurial استفاده کرد و به آن import کرد. با استفاده از افزونه‌ای به نام convert می‌توان از گیت یا ابزارهای دیگر به Mercurial مهاجرت کرد.


در نوشتار بعدی به سراغ نصب و استفاده از Mercurial خواهیم رفت.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *