HG(1) Mercurial Manual HG(1)

hg - سیستم مدیریت کد منبع Mercurial

hg command [option]... [argument]...

دستور hg یک واسط خط فرمان برای سیستم Mercurial ارائه می‌دهد.

نشان‌دهنده یک یا چند نام فایل یا نام فایل با مسیر نسبی است؛ برای اطلاعات درباره تطبیق الگو به File Name Patterns مراجعه کنید
نشان‌دهنده یک مسیر در دستگاه محلی است
نشان‌دهنده یک مجموعه تغییرات (changeset) است که می‌تواند به عنوان شماره نسخه مجموعه تغییرات، یک برچسب (tag) یا یک زیررشته یکتا از مقدار هش (hash) مجموعه تغییرات مشخص شود
یا نام مسیر یک مخزن محلی و یا URI یک مخزن دوردست (remote) است.

دایرکتوری ریشه مخزن یا نام فایل overlay bundle
تغییر دایرکتوری کاری
پرسشی مطرح نشود، انتخاب خودکار نخستین گزینه برای تمام اعلان‌ها
جلوگیری از نمایش خروجی
فعال کردن خروجی با جزئیات بیشتر
زمان رنگی‌سازی (boolean، always، auto، never یا debug)
تنظیم/بازنویسی گزینه پیکربندی (استفاده از 'section.name=value')
--config-file <HGRC[+]>
بارگذاری فایل پیکربندی برای تنظیم/بازنویسی گزینه‌های پیکربندی
فعال‌سازی خروجی اشکال‌زدایی
راه‌اندازی اشکال‌زدا (debugger)
تنظیم کدگذاری نویسه‌ها (پیش‌فرض: UTF-8)
تنظیم حالت کدگذاری نویسه‌ها (پیش‌فرض: strict)
چاپ همیشگی ردیابی پشته (traceback) در زمان رخداد استثنا
محاسبه مدت‌زمان اجرای دستور
چاپ نمایه (profile) اجرای دستور
نمایش اطلاعات نسخه و خروج
نمایش راهنما و خروج
در نظر گرفتن مجموعه‌های تغییرات پنهان (hidden changesets)
زمان صفحه‌بندی خروجی (boolean، always، auto یا never) (پیش‌فرض: auto)

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SH "دستورها (COMMANDS)"

تهیهٔ یک رونوشت از یک مخزن موجود:

hg clone [OPTION]... SOURCE [DEST]

ایجاد یک رونوشت از یک مخزن موجود در یک دایرکتوری جدید.

اگر نام دایرکتوری مقصد مشخص نشده باشد، به‌طور پیش‌فرض نام پایهٔ (basename) مبدأ در نظر گرفته می‌شود.

مکان مبدأ به فایل .hg/hgrc مخزن جدید افزوده می‌شود تا به عنوان پیش‌فرضی برای pullهای آینده استفاده شود.

تنها مسیرهای محلی و نشانی‌های ssh:// به عنوان مقصد پشتیبانی می‌شوند. برای مقصدهای ssh://، هیچ دایرکتوری کاری یا فایل .hg/hgrc در سمت دوردست (remote) ایجاد نخواهد شد.

اگر در مخزن مبدأ نشانکی (bookmark) به نام '@' تنظیم شده باشد، آن بازنگری به‌طور پیش‌فرض در مخزن جدید استخراج (checked out) خواهد شد.

برای استخراج یک نسخهٔ خاص از -u/--update، یا از -U/--noupdate برای ایجاد یک شبیه‌سازی (clone) بدون دایرکتوری کاری استفاده کنید.

برای دریافت تنها زیرمجموعه‌ای از مجموعه‌تغییرات (changesets)، یک یا چند شناسهٔ بازنگری را با -r/--rev یا شاخه‌ها را با -b/--branch مشخص کنید. مخزن شبیه‌سازی‌شدهٔ حاصل تنها شامل مجموعه‌تغییرات مشخص‌شده و نیاکان آن‌ها خواهد بود. این گزینه‌ها (یا 'clone src#rev dest') متضمن استفاده از --pull هستند، حتی برای مخازن مبدأ محلی.

در حالت عادیِ شبیه‌سازی، سمت دوردست داده‌های مخزن را به یک قالب تبادل مشترک تبدیل می‌کند و طرف گیرنده این داده‌ها را به قالب ذخیره‌سازی محلی خود برمی‌گرداند. گزینهٔ --stream حالت شبیه‌سازی متفاوتی را فعال می‌کند که اساساً فایل‌های مخزن را از سمت دوردست با کمترین پردازش داده کپی می‌کند. این کار بار پردازشی (CPU) شبیه‌سازی را چه از راه دور و چه به‌صورت محلی به‌طور چشمگیری کاهش می‌دهد. با این حال، معمولاً اندازهٔ داده‌های منتقل‌شده را ۳۰ تا ۴۰ درصد افزایش می‌دهد. این امر در مواردی که پهنای باند و توان ورودی/خروجی (I/O) فراوان است، به‌ویژه برای مخازن بزرگ‌تر، می‌تواند منجر به شبیه‌سازی بسیار سریع‌تر شود. یکی از اثرهای جانبی شبیه‌سازی با --stream این است که تنظیمات و الزامات ذخیره‌سازی روی سرور دوردست به‌صورت محلی اعمال می‌شوند: یک کلاینت امروزی ممکن است قالب ذخیره‌سازی قدیمی یا ناکارآمد مورد استفادهٔ سرور دوردست را به ارث ببرد، یا یک کلاینت قدیمی Mercurial ممکن است نتواند از یک سرور دوردست مدرن Mercurial شبیه‌سازی را انجام دهد.

نکته (Note)
مشخص کردن یک برچسب (tag)، مجموعه‌تغییرات برچسب‌خورده را شامل می‌شود اما مجموعه‌تغییراتی را که حاوی آن برچسب است در بر نمی‌گیرد.

برای افزایش کارایی، هر زمان که مبدأ و مقصد روی یک سیستم‌فایل باشند، از پیوندهای سخت (hardlinks) برای شبیه‌سازی استفاده می‌شود (توجه داشته باشید این موضوع تنها بر داده‌های مخزن اعمال می‌شود، نه بر دایرکتوری کاری). برخی سیستم‌های فایل مانند AFS، پیوند سخت را به‌نادرستی پیاده‌سازی می‌کنند اما خطایی نیز گزارش نمی‌دهند. در این موارد، از گزینهٔ --pull برای جلوگیری از ایجاد پیوندهای سخت استفاده کنید.

ابزار Mercurial دایرکتوری کاری را به اولین بازنگری قابل‌اعمال از این فهرست به‌روزرسانی (update) خواهد کرد:

null در صورتی که -U داده شده باشد یا مخزن مبدأ هیچ مجموعه‌تغییراتی نداشته باشد
اگر -u . داده شده باشد و مخزن مبدأ محلی باشد، والد نخستِ دایرکتوری کاریِ مخزن مبدأ
مجموعه‌تغییرات مشخص‌شده با -u (اگر نام یک شاخه باشد، به معنای تازه‌ترین سرشاخهٔ (head) آن شاخه است)
مجموعه‌تغییرات مشخص‌شده با -r
نهایی‌ترین سرشاخهٔ مشخص‌شده با -b
نهایی‌ترین سرشاخهٔ مشخص‌شده با ساختار مبدأ url#branch
بازنگری نشانه‌گذاری‌شده با نشانک '@'، در صورت وجود
نهایی‌ترین سرشاخهٔ شاخهٔ پیش‌فرض (default)
tip

هنگام شبیه‌سازی از سرورهایی که از آن پشتیبانی می‌کنند، Mercurial ممکن است داده‌های از پیش تولیدشده را از یک نشانی اینترنتی اعلام‌شده توسط سرور، یا به‌صورت درون‌خطی از همان جریان واکشی کند. وقتی این کار انجام می‌شود، قلاب‌هایی (hooks) که روی مجموعه‌تغییرات و changegroupهای دریافتی عمل می‌کنند ممکن است بیش از یک بار فعال شوند؛ یک بار برای هر بستهٔ (bundle) از پیش تولیدشده و همچنین برای هر دادهٔ باقی‌ماندهٔ دیگر. علاوه بر این، در صورت بروز خطا، مخزن ممکن است به یک شبیه‌سازی ناقص بازگردانده (rolled back) شود. این رفتار ممکن است در نسخه‌های آینده تغییر کند. برای اطلاعات بیشتر hg help -e clonebundles را ببینید.

مثال‌ها:

  • شبیه‌سازی یک مخزن دوردست در دایرکتوری جدیدی به نام hg/:
    hg clone https://www.mercurial-scm.org/repo/hg
  • ایجاد یک رونوشت محلی سبک‌وزن:
    hg clone project/ project-feature/
  • شبیه‌سازی از یک مسیر مطلق روی سرور ssh (به اسلش دوگانه توجه کنید):
    hg clone ssh://user@server//home/projects/alpha/
  • انجام شبیه‌سازی جریانی (streaming) هم‌زمان با استخراج یک نسخهٔ مشخص:
    hg clone --stream http://server/repo -u 1.5
  • ایجاد یک مخزن بدون مجموعه‌تغییراتِ پس از یک بازنگری مشخص:
    hg clone -r 04e544 experimental/ good/
  • شبیه‌سازی (و ردیابی) یک شاخهٔ نام‌گذاری‌شدهٔ مشخص:
    hg clone https://www.mercurial-scm.org/repo/hg/#stable

برای جزئیات مربوط به مشخص کردن URLها، hg help urls را ببینید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-U, --noupdate
شبیه‌سازی شامل یک دایرکتوری کاری خالی خواهد بود (تنها مخزن)
بازنگری، برچسب، یا شاخه برای استخراج
همه‌چیز شبیه‌سازی نشود، بلکه این مجموعه‌تغییرات و نیاکان آن گنجانده شوند.TP -b,--branch <BRANCH[+]> همه چیز کلون نشود، بلکه تنها مجموعه‌تغییرهای این شاخه و نیاکان آن‌ها گنجانده شود
استفاده از پروتکل pull برای کپی کردن متادیتا
نام مستعاری برای --stream (منسوخ شده)
کلون با کمترین میزان پردازش داده
مشخص کردن دستور ssh مورد استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
گواهی سرور اعتبارسنجی نشود (نادیده گرفتن پیکربندی web.cacerts)

گزینهٔ مشخص‌شده با [+] را می‌توان چندین بار مشخص کرد

ایجاد یک مخزن جدید در دایرکتوری داده‌شده:

hg init [-e CMD] [--remotecmd CMD] [DEST]

یک مخزن جدید در دایرکتوری داده‌شده مقداردهی اولیه می‌کند. اگر دایرکتوری داده‌شده وجود نداشته باشد، ایجاد خواهد شد.

اگر هیچ دایرکتوری‌ای داده نشود، از دایرکتوری جاری استفاده می‌شود.

امکان مشخص کردن یک نشانی اینترنتی ssh:// به عنوان مقصد وجود دارد. برای اطلاعات بیشتر hg help urls را ببینید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

مشخص کردن دستور ssh مورد استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
گواهی سرور اعتبارسنجی نشود (نادیده گرفتن پیکربندی web.cacerts)

نمایش مجموعه‌تغییرهای جدیدِ یافت‌شده در مبدأ:

hg incoming [-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]

نمایش مجموعه‌تغییرهای جدیدِ یافت‌شده در مسیر/نشانی اینترنتی مشخص‌شده یا مکان پیش‌فرض واکشی (pull). این‌ها مجموعه‌تغییرهایی هستند که در زمان اجرای این دستور توسط hg pull واکشی می‌شدند.

برای جزئیات قالب‌های معتبر مبدأ، pull را ببینید.

با -B/--bookmarks، نتیجهٔ مقایسهٔ بوک‌مارک‌ها بین مخازن محلی و دوردست نمایش داده می‌شود. با -v/--verbose، وضعیت هر بوک‌مارک نیز مطابق زیر نمایش می‌یابد:

BM1               01234567890a added
BM2               1234567890ab advanced
BM3               234567890abc diverged
BM4               34567890abcd changed

عملی که هنگام دریافت (pull) به صورت محلی انجام می‌شود به وضعیت هر بوک‌مارک بستگی دارد:

دستور pull آن را ایجاد خواهد کرد

دستور pull آن را به‌روزرسانی خواهد کرد

دستور pull یک بوک‌مارک واگرا ایجاد خواهد کرد

نتیجه به مجموعه‌تغییرهای دوردست بستگی دارد

از نقطه نظر رفتار واکشی، بوک‌مارک‌هایی که فقط در مخزن دوردست وجود دارند به عنوان added در نظر گرفته می‌شوند، حتی اگر در واقع به صورت محلی حذف شده باشند.

برای مخزن دوردست، در صورتی که پس از incoming دستور pull اجرا شود، استفاده از --bundle از بارگیری دوبارهٔ مجموعه‌تغییرها جلوگیری می‌کند.

مثال‌ها:

  • نمایش تغییرات ورودی به همراه وصله‌ها و توضیحات کامل:
    hg incoming -vp
  • نمایش تغییرات ورودی بدون ادغام‌ها، و ذخیرهٔ یک bundle:
    hg in -vpM --bundle incoming.hg
    hg pull incoming.hg
  • فهرست کردن خلاصهٔ تغییرات درون یک bundle:
    hg in changes.hg -T "{desc|firstline}\n"

اگر تغییرات ورودی وجود داشته باشد 0 و در غیر این صورت 1 را برمی‌گرداند.

گزینه‌ها:

-f, --force
اجرا حتی اگر مخزن دوردست نامرتبط باشد
-n, --newest-first
نمایش جدیدترین رکورد در ابتدا
فایل برای ذخیرهٔ بسته‌ها (bundles) در آن
یک مجموعه‌تغییر دوردست که قصد اضافه کردن آن وجود دارد
-B, --bookmarks
مقایسهٔ بوک‌مارک‌ها.TP -b,--branch <BRANCH[+]> یک شاخه خاص که مایل به دریافت (pull) آن هستید
--remote-hidden
شامل کردن مجموعه‌تغییرات (changesets) پنهان‌شده در مخزن دوردست (آزمایشی)
-p, --patch
نمایش وصله (patch)
استفاده از قالب diff گسترش‌یافته git
محدود کردن تعداد تغییرات نمایش‌داده‌شده
ادغام‌ها نمایش داده نشوند
خروجی خلاصه‌ای از تغییرات در سبک diffstat
نمایش گراف جهت‌دار بدون دور (DAG) بازبینی‌ها
نمایش با استفاده از فایل نگاشت الگو (منسوخ‌شده)
نمایش با الگو
مشخص کردن دستور ssh برای استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
عدم اعتبارسنجی گواهی کارگزار (نادیده گرفتن پیکربندی web.cacerts)
پیمایش بازگشتی در زیرمخزن‌ها (subrepositories)

گزینه‌های مشخص‌شده با [+] را می‌توان چندین بار تعیین کرد

نام‌های مستعار: in

نمایش مجموعه‌تغییراتی که در مقصد یافت نشدند:

hg outgoing [-M] [-p] [-n] [-f] [-r REV]... [DEST]...

نمایش مجموعه‌تغییراتی که در مخزن مقصدِ مشخص‌شده یا مکان پیش‌فرض push یافت نمی‌شوند. این‌ها مجموعه‌تغییراتی هستند که در صورت درخواست push، ارسال خواهند شد.

برای جزئیات قالب‌های معتبر مقصد، pull را ببینید.

با -B/--bookmarks، نتیجه مقایسه نشانک‌ها (bookmarks) بین مخازن محلی و دوردست نمایش داده می‌شود. با -v/--verbose، وضعیت هر نشانک نیز مانند زیر نمایش داده می‌شود:

BM1               01234567890a added
BM2                            deleted
BM3               234567890abc advanced
BM4               34567890abcd diverged
BM5               4567890abcde changed

اقدام انجام‌شده هنگام ارسال (push) به وضعیت هر نشانک بستگی دارد:

دستور push به همراه -B آن را ایجاد خواهد کرد

دستور push به همراه -B آن را حذف خواهد کرد

دستور push آن را به‌روزرسانی خواهد کرد

دستور push به همراه -B آن را به‌روزرسانی خواهد کرد

دستور push به همراه -B آن را به‌روزرسانی خواهد کرد

از دیدگاه رفتار عملیات push، نشانک‌هایی که تنها در مخزن دوردست وجود دارند، به عنوان deleted در نظر گرفته می‌شوند، حتی اگر در واقع در سمت دوردست اضافه شده باشند.

در صورت وجود تغییرات ارسالی (outgoing)، مقدار 0 و در غیر این صورت 1 را برمی‌گرداند.

گزینه‌ها:

-f, --force
اجرا حتی زمانی که مقصد نامرتبط است
مجموعه‌تغییری که در نظر است در مقصد گنجانده شود
-n, --newest-first
نمایش جدیدترین رکورد در ابتدا
-B, --bookmarks
مقایسه نشانک‌ها
یک شاخه خاص که مایل به ارسال (push) آن هستید
-p, --patch
نمایش وصله (patch)
استفاده از قالب diff گسترش‌یافته git
محدود کردن تعداد تغییرات نمایش‌داده‌شده
ادغام‌ها نمایش داده نشوند
خروجی خلاصه‌ای از تغییرات در سبک diffstat
نمایش گراف جهت‌دار بدون دور (DAG) بازبینی‌ها
نمایش با استفاده از فایل نگاشت الگو (منسوخ‌شده)
نمایش با الگو.TP -e,--ssh <CMD> مشخص کردن دستور ssh مورد استفاده
مشخص کردن دستور hg برای اجرا در سمت ریموت
عدم تأیید گواهی سرور (نادیده گرفتن پیکربندی web.cacerts)
پیمایش بازگشتی در زیرمخزن‌ها

گزینه علامت‌گذاری‌شده با [+] می‌تواند چندین بار مشخص شود

نام‌های مستعار: out

نمایش نام‌های مستعار مخازن ریموت:

hg paths [NAME]

نمایش تعریف نام نمادین مسیر NAME. اگر نامی مشخص نشود، تعریف تمام نام‌های موجود نمایش داده می‌شود.

گزینه -q/--quiet هنگام جستجوی NAME تمام خروجی‌ها را سرکوب می‌کند و هنگام فهرست کردن تمام تعاریف، تنها نام مسیرها را نشان می‌دهد.

نام‌های مسیر در بخش [paths] فایل پیکربندی شما و در /etc/mercurial/hgrc تعریف می‌شوند. در صورت اجرا در داخل یک مخزن، .hg/hgrc نیز استفاده می‌شود.

نام‌های مسیر default و default-push معنای ویژه‌ای دارند. هنگام انجام عملیات push یا pull، در صورتی که مکانی در خط فرمان مشخص نشده باشد، این نام‌ها به‌عنوان جایگزین استفاده می‌شوند. هنگامی که default-push تنظیم شده باشد، برای push و از default برای pull استفاده خواهد شد؛ در غیر این صورت default به‌عنوان جایگزین برای هر دو به کار می‌رود. هنگام clone کردن یک مخزن، منبع clone به‌صورت default در .hg/hgrc نوشته می‌شود.

نکته
default و default-push برای تمام عملیات‌های ورودی (مانند hg incoming) و خروجی (مانند hg outgoing، hg email و hg bundle) اعمال می‌شوند.

برای اطلاعات بیشتر، hg help urls را ببینید.

قالب:

کلیدواژه‌های زیر پشتیبانی می‌شوند. همچنین hg help templates را ببینید.

رشته. نام نمادین نام مستعار مسیر.
رشته. نشانی URL برای عملیات push.
رشته. نشانی URL یا مسیر دایرکتوری برای سایر عملیات‌ها.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

نمایش با قالب

دریافت تغییرات از منبع مشخص‌شده:

hg pull [-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]...

دریافت تغییرات از یک مخزن دوردست به مخزن محلی.

این دستور تمامی تغییرات را از مخزن در مسیر یا نشانی اینترنتی (URL) مشخص‌شده پیدا کرده و آن‌ها را به مخزن محلی اضافه می‌کند (مخزن جاری، مگر اینکه -R مشخص شده باشد). به‌طور پیش‌فرض، این کار نسخه رونوشت پروژه در دایرکتوری کاری را به‌روز نمی‌کند.

هنگام کلون کردن از سرورهایی که از این قابلیت پشتیبانی می‌کنند، ممکن است Mercurial داده‌های از پیش تولیدشده را واکشی کند. در این حالت، قلاب‌هایی (hooks) که روی مجموعه‌تغییرها (changesets) و changegroupهای ورودی عمل می‌کنند ممکن است بیش از یک بار اجرا شوند؛ یک بار برای هر بسته (bundle) از پیش تولیدشده و همچنین برای هر داده باقی‌مانده اضافی. برای اطلاعات بیشتر hg help -e clonebundles را ببینید.

اگر می‌خواهید ببینید چه مواردی در زمان اجرای این دستور توسط یک pull اضافه می‌شد، از hg incoming استفاده کنید. اگر سپس تصمیم گرفتید آن تغییرات را به مخزن اضافه کنید، باید از hg pull -r X استفاده کنید که در آن X آخرین مجموعه‌تغییر فهرست‌شده توسط hg incoming است.

اگر SOURCE مشخص نشود، مسیر 'default' استفاده خواهد شد. برای اطلاعات بیشتر hg help urls را ببینید.

اگر چندین منبع مشخص شوند، آن‌ها به صورت متوالی دریافت خواهند شد، گویی دستور چندین بار اجرا شده است. اگر --update مشخص شود، دستور در اولین --update ناموفق متوقف خواهد شد.

مشخص کردن نشانک (bookmark) به عنوان . معادل مشخص کردن نام نشانک فعال است.

می‌توان از پرچم --remote-hidden برای دریافت مجموعه‌تغییرهای پنهان در مخزن دوردست استفاده کرد. این پرچم بر پایه «بیشترین تلاش» (best effort) عمل می‌کند و تنها در صورتی کار خواهد کرد که سرور از این ویژگی پشتیبانی کرده و طوری پیکربندی شده باشد که به کاربر اجازه دسترسی به مجموعه‌تغییرهای پنهان را بدهد. این گزینه آزمایشی است و سازگاری رو به عقب آن تضمین نمی‌شود.

در صورت موفقیت مقدار 0، و در صورتی که به‌روزرسانی دارای فایل‌های حل‌نشده باشد 1 را برمی‌گرداند.

گزینه‌ها:

-u, --update
به‌روزرسانی به سرشاخه (head) جدید شاخه در صورت دریافت نوادگان جدید
-f, --force
اجرا حتی زمانی که مخزن دوردست نامرتبط باشد
تأیید عملیات pull پیش از اعمال تغییرات
مجموعه‌تغییر دوردست که قصد اضافه کردن آن را دارید
نشانک (bookmark) برای دریافت
شاخه خاصی که مایل به دریافت آن هستید
--remote-hidden
شامل کردن مجموعه‌تغییرهای پنهان در سرور دوردست (آزمایشی)
مشخص کردن دستور ssh مورد استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
عدم اعتبارسنجی گواهی سرور (نادیده گرفتن پیکربندی web.cacerts)

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد.SS push

ارسال تغییرات به مقصد مشخص‌شده:

hg push [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]...

مجموعه‌تغییرات را از مخزن محلی به مقصد مشخص‌شده ارسال می‌کند.

این عملیات متقارن با pull است: دقیقاً مشابه اجرای یک pull در مخزن مقصد از روی مخزن فعلی است.

به‌طور پیش‌فرض، push اجازهٔ ایجاد سرشاخه‌های (heads) جدید را در مقصد نمی‌دهد، زیرا وجود چند سرشاخه مشخص نخواهد کرد از کدام سرشاخه باید استفاده شود. در این وضعیت، توصیه می‌شود پیش از ارسال (push)، ابتدا تغییرات را دریافت (pull) و ادغام (merge) کنید.

اگر می‌خواهید به push اجازه دهید یک شاخهٔ نام‌دار جدید که در مقصد وجود ندارد ایجاد کند، از --new-branch استفاده کنید. این کار به شما امکان می‌دهد بدون تحمیل سایر تغییرات، فقط یک شاخهٔ جدید ایجاد نمایید.

نکته
در استفاده از گزینهٔ -f/--force باید دقت ویژه‌ای به کار برد، چرا که این گزینه تمام سرشاخه‌های جدید در تمام شاخه‌ها را ارسال خواهد کرد؛ اقدامی که تقریباً همیشه باعث سردرگمی همکاران خواهد شد.

اگر از -r/--rev استفاده شود، بازبینی (revision) مشخص‌شده و تمام نیاکان آن به مخزن دوردست ارسال خواهند شد.

اگر از -B/--bookmark استفاده شود، بازبینی بوکمارک‌شدهٔ مشخص، نیاکان آن و خود بوکمارک به مخزن دوردست ارسال خواهند شد. مشخص کردن . معادل تعیین نام بوکمارک فعال است. برای ارسال تمام بوکمارک‌های جاری از گزینهٔ --all-bookmarks استفاده کنید.

لطفاً برای جزئیات مهم دربارهٔ نشانی‌های اینترنتی ssh:// بخش hg help urls را ببینید. اگر DESTINATION حذف شود، از یک مسیر پیش‌فرض استفاده خواهد شد.

هنگامی که چندین مقصد مشخص شود، push آن‌ها را یکی پس از دیگری پردازش می‌کند، اما در صورت بروز خطا متوقف می‌شود.

گزینهٔ --pushvars رشته‌هایی را به سرور می‌فرستد که با پیشوند HG_USERVAR_ تبدیل به متغیرهای محیطی می‌شوند. برای مثال، --pushvars ENABLE_FEATURE=true متغیر HG_USERVAR_ENABLE_FEATURE=true را به عنوان بخشی از محیط قلاب‌های سمت سرور در اختیار آن‌ها قرار می‌دهد.

گزینهٔ pushvars می‌تواند امکان بازنویسی قلاب‌ها توسط کاربر و همچنین تنظیم سطوح اشکال‌زدایی (debug) را فراهم کند. یک نمونه، داشتن قلابی است که کامیت‌های حاوی نشانگرهای تعارض (conflict markers) را مسدود می‌کند، اما به کاربر اجازه می‌دهد در صورتی که فایل برای اهداف آزمایشی از نشانگرهای تعارض استفاده کرده یا قالب فایل حاوی رشته‌هایی شبیه به نشانگرهای تعارض باشد، قلاب را بازنویسی (override) کند.

به‌طور پیش‌فرض، سرورها --pushvars را نادیده می‌گیرند. برای فعال‌سازی آن، موارد زیر را به فایل پیکربندی خود بیفزایید:

[push]
pushvars.server = true

در صورت موفقیت‌آمیز بودن push مقدار 0، و در صورتی که چیزی برای ارسال وجود نداشته باشد مقدار 1 را برمی‌گرداند.

گزینه‌ها:

-f, --force
ارسال اجباری (force push)
مجموعه‌تغییراتی که قرار است در مقصد گنجانده شود
بوکمارک برای ارسال
--all-bookmarks
ارسال تمام بوکمارک‌ها (آزمایشی)
شاخهٔ مشخصی که مایل به ارسال آن هستید
اجازهٔ ارسال یک شاخهٔ جدید
متغیرهایی که می‌توان به سرور ارسال کرد (پیشرفته)
ارسال مجموعه‌تغییرات به صورت عمومی (آزمایشی)
مشخص کردن دستور ssh برای استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
عدم اعتبارسنجی گواهی سرور (نادیده گرفتن پیکربندی web.cacerts)

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد.SS serve

راه‌اندازی وب‌سرور مستقل:

hg serve [OPTION]...

یک مرورگر مخزن و سرور pull محلی تحت HTTP را راه‌اندازی می‌کند. می‌توانید از این قابلیت برای اشتراک‌گذاری و مرور موقت (ad-hoc) مخازن استفاده کنید. توصیه می‌شود برای سرویس‌دهی به یک مخزن در بازه‌های زمانی طولانی‌تر، از یک وب‌سرور واقعی استفاده نمایید.

لطفاً توجه داشته باشید که سرور کنترل دسترسی را پیاده‌سازی نمی‌کند. این بدان معناست که به‌طور پیش‌فرض، هر کسی می‌تواند از سرور بخواند و هیچ‌کس به طور پیش‌فرض نمی‌تواند روی آن بنویسد. گزینهٔ web.allow-push را روی * تنظیم کنید تا به همه اجازهٔ push کردن به سرور داده شود. اگر نیاز به احراز هویت کاربران دارید، باید از یک وب‌سرور واقعی استفاده کنید.

به‌طور پیش‌فرض، سرور گزارش دسترسی‌ها را در stdout و خطاها را در stderr ثبت می‌کند. از گزینه‌های -A/--accesslog و -E/--errorlog برای ثبت گزارش‌ها در فایل استفاده کنید.

برای اینکه سرور یک شماره پورت آزاد را برای گوش دادن انتخاب کند، شماره پورت را 0 مشخص کنید؛ در این حالت، سرور شماره پورتی را که استفاده می‌کند چاپ خواهد کرد.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

نام فایل لاگ دسترسی برای نوشتن در آن
-d, --daemon
اجرای سرور در پس‌زمینه
به‌صورت داخلی توسط حالت daemon استفاده می‌شود
نام فایل لاگ خطا برای نوشتن در آن
پورت برای گوش دادن (پیش‌فرض: 8000)
آدرس برای گوش دادن (پیش‌فرض: تمام رابط‌ها)
مسیر پیشوند برای سرویس‌دهی از آن (پیش‌فرض: ریشهٔ سرور)
نام نمایشی در صفحات وب (پیش‌فرض: دایرکتوری کاری)
نام فایل پیکربندی hgweb (ببینید 'hg help hgweb')
نام فایل پیکربندی hgweb (منسوخ‌شده)
نام فایل برای نوشتن شناسه فرایند در آن
برای کلاینت‌های راه‌دور (پیشرفته)
برای کلاینت‌های راه‌دور (پیشرفته)
قالب‌های وب برای استفاده
سبک قالب برای استفاده
-6, --ipv6
استفاده از IPv6 به جای IPv4
فایل گواهی SSL
راه‌اندازی و فقط چاپ URL
پیمایش بازگشتی در زیرمخزن‌ها

گزینهٔ علامت‌گذاری‌شده با [+] می‌تواند چندین بار مشخص شود.SS ایجاد تغییرات

ثبت فایل‌های مشخص‌شده یا تمامی تغییرات باقی‌مانده:

hg commit [OPTION]... [FILE]...

تغییرات فایل‌های مشخص‌شده را در مخزن ثبت می‌کند. بر خلاف یک SCM متمرکز، این یک عملیات محلی است. برای روشی جهت توزیع فعالانهٔ تغییرات خود، hg push را ببینید.

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

اگر در حال ثبت نتیجهٔ یک ادغام (merge) هستید، هیچ نام فایل یا فیلترهای -I/-X را مشخص نکنید.

اگر هیچ پیام ثبتی مشخص نشده باشد، Mercurial ویرایشگر پیکربندی‌شدهٔ شما را اجرا می‌کند که در آن می‌توانید پیامی وارد کنید. در صورتی که ثبت با شکست مواجه شود، یک نسخهٔ پشتیبان از پیام خود را در .hg/last-message.txt خواهید یافت.

پرچم --close-branch می‌تواند برای علامت‌گذاری نوک (head) شاخهٔ جاری به عنوان بسته‌شده استفاده شود. هنگامی که تمام نوک‌های یک شاخه بسته شوند، آن شاخه بسته‌شده تلقی شده و دیگر در فهرست نمایش داده نخواهد شد.

پرچم --amend می‌تواند برای اصلاح والد دایرکتوری کاری با یک ثبت جدید استفاده شود که علاوه بر تغییراتی که در حال حاضر توسط hg status گزارش می‌شوند، حاوی تغییرات موجود در والد نیز هست (در صورت وجود). ثبت قدیمی در یک بستهٔ پشتیبان (backup bundle) در .hg/strip-backup ذخیره می‌شود (برای نحوهٔ بازیابی آن، hg help bundle و hg help unbundle را ببینید).

پیام، کاربر و تاریخ از ثبت اصلاح‌شده گرفته می‌شوند مگر آنکه مشخص شده باشند. هنگامی که پیامی در خط فرمان مشخص نشده باشد، ویرایشگر با پیامِ ثبت اصلاح‌شده باز خواهد شد.

امکان اصلاح مجموعه‌تغییرات (changeset) عمومی (نگاه کنید به hg help phases) یا مجموعه‌تغییراتی که فرزند دارند وجود ندارد.

برای فهرستی از قالب‌های معتبر -d/--date به hg help dates مراجعه کنید.

در صورت موفقیت 0، و در صورتی که چیزی تغییر نکرده باشد 1 را برمی‌گرداند.

مثال‌ها:

  • ثبت تمام فایل‌هایی که به .py ختم می‌شوند:
    hg commit --include "set:**.py"
  • ثبت تمام فایل‌های غیرباینری:
    hg commit --exclude "set:binary()"
  • اصلاح ثبت جاری و تنظیم تاریخ به اکنون (now):
    hg commit --amend --date now

گزینه‌ها:

-A, --addremove
علامت‌گذاری فایل‌های جدید/ناموجود به عنوان اضافه‌شده/حذف‌شده پیش از ثبت
--close-branch
علامت‌گذاری نوک یک شاخه به عنوان بسته‌شده
اصلاح والد دایرکتوری کاری
-s, --secret
استفاده از فاز secret برای ثبت
استفاده از فاز draft برای ثبت
-e, --edit
فراخوانی ویرایشگر برای پیام‌های ثبت
--force-close-branch
بستن اجباری شاخه از یک مجموعه‌تغییرات غیر از نوک شاخه (پیشرفته)
-i, --interactive
استفاده از حالت تعاملی
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
استفاده از متن به عنوان پیام ثبت
خواندن پیام ثبت از فایل
ثبت تاریخ مشخص‌شده به عنوان تاریخ ثبت
ثبت کاربر مشخص‌شده به عنوان ثبت‌کننده
پیمایش بازگشتی در زیرمخزن‌ها

گزینه‌های علامت‌گذاری‌شده با [+] می‌توانند چندین بار مشخص شوند

نام‌های مستعار: ci

لغو یک عملیات ناتمام (آزمایشی):

hg abort

یک عملیات چندمرحله‌ای مانند graft، histedit، rebase، merge و unshelve را در صورتی که در وضعیتی ناتمام باشند لغو می‌کند.

از --dry-run/-n برای اجرای آزمایشی دستور استفاده کنید.

گزینه‌ها:

-n, --dry-run
عملیاتی انجام نده، فقط خروجی را چاپ کن

معکوس کردن اثر changeset پیشین:

hg backout [OPTION]... [-r] REV

یک changeset جدید را آماده می‌کند که در آن اثر REV در دایرکتوری کاری فعلی خنثی شده است. اگر هیچ تداخلی وجود نداشته باشد، فوراً کامیت خواهد شد.

اگر REV والد دایرکتوری کاری باشد، این changeset جدید به‌طور خودکار کامیت می‌شود (مگر اینکه --no-commit مشخص شده باشد).

نکته
از hg backout نمی‌توان برای اصلاح یک merge ناخواسته یا نادرست استفاده کرد.

مثال‌ها:

  • معکوس کردن اثر والد دایرکتوری کاری. این backout فوراً کامیت خواهد شد:
    hg backout -r .
  • معکوس کردن اثر بازبینی نادرست پیشین 23:
    hg backout -r 23
  • معکوس کردن اثر بازبینی نادرست پیشین 23 و باقی گذاشتن تغییرات به صورت کامیت‌نشده:
    hg backout -r 23 --no-commit
    hg commit -m "Backout revision 23"

به‌طور پیش‌فرض، changeset در انتظار یک والد خواهد داشت که تاریخچه خطی را حفظ می‌کند. با --merge، این changeset در انتظار در عوض دو والد خواهد داشت: والد قدیمی دایرکتوری کاری و یک فرزند جدید از REV که به‌سادگی REV را خنثی می‌کند.

قبل از نسخه 1.7، رفتار بدون --merge معادل تعیین --merge و به دنبال آن hg update --clean . برای لغو merge و باقی گذاشتن فرزند REV به عنوان یک head بود تا به طور جداگانه ادغام شود.

برای فهرستی از قالب‌های معتبر برای -d/--date به hg help dates مراجعه کنید.

برای روشی جهت بازگرداندن فایل‌ها به وضعیت یک بازبینی دیگر، به hg help revert مراجعه کنید.

در صورت موفقیت 0، و اگر چیزی برای backout وجود نداشته باشد یا فایل‌های حل‌نشده باقی مانده باشند، 1 برمی‌گرداند.

گزینه‌ها:

ادغام با والد قدیمی dirstate پس از backout
کامیت در صورت عدم برخورد با تداخل (منسوخ‌شده)
کامیت انجام نشود
والد انتخابی هنگام backout کردن merge (منسوخ‌شده)
بازبینی برای backout
-e, --edit
فراخوانی ویرایشگر برای پیام‌های کامیت
تعیین ابزار merge
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
استفاده از متن به عنوان پیام کامیت
خواندن پیام کامیت از فایل
ثبت تاریخ مشخص‌شده به عنوان تاریخ کامیت
ثبت کاربر مشخص‌شده به عنوان کامیت‌کننده

گزینه‌های مشخص‌شده با [+] را می‌توان چندین بار تعیین کرد.SS continue

یک عملیات متوقف‌شده را از سر می‌گیرد (آزمایشی):

hg continue

یک عملیات چندمرحله‌ای مانند graft، histedit، rebase، merge و unshelve را در صورتی که در وضعیت متوقف‌شده باشند، به پایان می‌رساند.

برای اجرای آزمایشی دستور از --dry-run/-n استفاده کنید.

گزینه‌ها:

-n, --dry-run
عملیات را انجام نده، تنها خروجی را چاپ کن

تغییرات را از سایر شاخه‌ها به شاخهٔ فعلی کپی می‌کند:

hg graft [OPTION]... [-r REV]... REV...

این دستور از منطق ادغام (merge) در Mercurial برای کپی کردن تغییرات مجزا از سایر شاخه‌ها بدون ادغام شاخه‌ها در گراف تاریخچه استفاده می‌کند. این عمل گاهی با عنوان 'backporting' یا 'cherry-picking' شناخته می‌شود. به‌طور پیش‌فرض، graft کاربر، تاریخ و توضیحات را از دسته‌تغییرات (changesets) مبدأ کپی می‌کند.

دسته‌تغییراتی که نیاکان بازبینی فعلی باشند، قبلاً graft شده باشند، یا از نوع ادغام (merge) باشند، نادیده گرفته خواهند شد.

اگر --log مشخص شده باشد، توضیحی به شکل زیر به انتهای پیام‌های گزارش اضافه خواهد شد:

(grafted from CHANGESETHASH)

اگر --force مشخص شده باشد، بازبینی‌ها حتی اگر از قبل نیاکان مقصد باشند یا به مقصد graft شده باشند، اعمال خواهند شد. این مورد زمانی مفید است که بازبینی‌ها از آن زمان واگردانی (backed out) شده باشند.

اگر یک ادغام graft به تداخل بیانجامد، فرایند graft متوقف می‌شود تا ادغام فعلی بتواند به‌صورت دستی رفع شود. پس از برطرف شدن همهٔ تداخل‌ها، فرایند graft را می‌توان با گزینهٔ -c/--continue ادامه داد.

گزینهٔ -c/--continue تمام گزینه‌های قبلی را مجدداً اعمال می‌کند.

گزینهٔ --base اطلاعات بیشتری را دربارهٔ چگونگی استفادهٔ درونی graft از merge با یک بازبینی پایهٔ سفارشی نشان می‌دهد. از --base می‌توان برای مشخص کردن نیاکانی غیر از نخستین و تنها والد استفاده کرد.

دستور:

hg graft -r 345 --base 234

بنابراین کم‌وبیش معادل دستور زیر است:

hg diff --from 234 --to 345 | hg import

اما از ادغام برای حل تداخل‌ها و ردگیری فایل‌های جابه‌جاشده استفاده می‌کند.

بنابراین می‌توان نتیجهٔ یک ادغام را با مشخص کردن یکی از والدین ادغام به‌عنوان base، در قالب یک commit واحد منتقل (backport) کرد و در نتیجه تغییرات طرف دیگر را به‌طور مؤثر graft نمود.

همچنین می‌توان با مشخص کردن نیاکانی دیگر به‌عنوان base، چندین دسته‌تغییر را یکپارچه (collapse) کرده و تاریخچه را پاکسازی نمود، بسیار شبیه به rebase --collapse --keep.

پیام commit را می‌توان پس از انجام کار با استفاده از commit --amend اصلاح کرد.

برای استفاده از غیرنیاکان به‌عنوان base جهت واگردانی تغییرات، دستور backout و گزینهٔ پنهان --parent را ببینید.

گزینهٔ آزمایشی --to امکان graft کردن یک بازبینی را به‌صورت درون‌حافظه‌ای و مستقل از نسخهٔ کاری (working copy) فراهم می‌کند. تداخل‌های ادغام در حال حاضر پشتیبانی نمی‌شوند و چنانچه ابزار پیکربندی‌شده نتواند تداخل‌های پیش‌آمده را مدیریت کند، عملیات لغو خواهد شد.

از آنجا که عملیات در حافظه انجام می‌شود، فایل‌های روی دیسک تغییر نخواهند کرد و ممکن است برخی قلاب‌ها (hooks) اجرا نشوند.

مثال‌ها:

  • کپی کردن یک تغییر واحد به شاخهٔ stable و ویرایش توضیحات آن:
    hg update stable
    hg graft --edit 9393
  • اعمال (graft) دامنه‌ای از دسته‌تغییرها با یک استثنا و به‌روزرسانی تاریخ‌ها:
    hg graft -D "2085::2093 and not 2091"
  • ادامه دادن graft پس از حل تداخل‌ها:
    hg graft -c
  • نمایش مبدأ یک دسته‌تغییر graft شده:
    hg log --debug -r .
  • نمایش بازبینی‌ها مرتب‌شده بر اساس تاریخ:
    hg log -r "sort(all(), date)"
  • انتقال (backport) نتیجهٔ یک ادغام در قالب یک commit واحد:
    hg graft -r 123 --base 123^
  • انتقال نهایی (land) یک شاخهٔ ویژگی در قالب یک دسته‌تغییر:
    hg up -cr default
    hg graft -r featureX --base "ancestor('featureX', 'default')"

برای اطلاعات بیشتر دربارهٔ مشخص کردن بازبینی‌ها، hg help revisions را ببینید.

در صورت موفقیت 0 و در صورت وجود فایل‌های حل‌نشده 1 را برمی‌گرداند.

گزینه‌ها:

بازبینی‌ها جهت graft.TP --base <REV> بازبینی پایه هنگام انجام ادغام graft (پیشرفته)
اعمال graft به این مقصد، در حافظه (آزمایشی)
-c, --continue
ازسرگیری graft متوقف‌شده
متوقف کردن graft متوقف‌شده
لغو graft متوقف‌شده
-e, --edit
فراخوانی ویرایشگر برای پیام‌های ثبت (commit)
الحاق اطلاعات graft به پیام گزارش (log)
ثبت نکن، فقط تغییرات را در دایرکتوری کاری اعمال کن
-f, --force
اجبار در اجرای graft
ثبت تاریخ جاری به عنوان تاریخ ثبت
-U, --currentuser
ثبت کاربر جاری به عنوان ثبت‌کننده
ثبت تاریخ مشخص‌شده به عنوان تاریخ ثبت
ثبت کاربر مشخص‌شده به عنوان ثبت‌کننده
مشخص کردن ابزار ادغام
-n, --dry-run
عملیاتی انجام نده، فقط خروجی را چاپ کن

گزینه علامت‌گذاری‌شده با [+] می‌تواند چندین بار مشخص شود

ادغام بازبینی دیگر در دایرکتوری کاری:

hg merge [-P] [[-r] REV]

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

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

--tool می‌تواند برای مشخص کردن ابزار ادغام استفاده‌شده جهت ادغام فایل‌ها به کار رود. این گزینه متغیر محیطی HGMERGE و فایل‌های پیکربندی شما را لغو (نادیده) می‌کند. برای گزینه‌ها به hg help merge-tools مراجعه کنید.

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

برای اطلاعات درباره مدیریت تداخل‌های فایل به hg help resolve مراجعه کنید.

برای لغو یک ادغام ثبت‌نشده، از hg merge --abort استفاده کنید که نسخه تمیزی از والد ادغام اصلی را واکشی کرده (check out) و تمام تغییرات را از بین می‌برد.

در صورت موفقیت 0 و در صورت وجود فایل‌های حل‌نشده 1 را بازمی‌گرداند.

گزینه‌ها:

-f, --force
اجبار به ادغام، شامل تغییرات معلق (منسوخ‌شده)
بازبینی مورد نظر برای ادغام
-P, --preview
بررسی بازبینی‌ها برای ادغام (هیچ ادغامی انجام نمی‌شود)
لغو ادغام در حال انجام
مشخص کردن ابزار ادغام

ایجاد یک نشانک (bookmark) جدید یا فهرست کردن نشانک‌های موجود:

hg bookmarks [OPTIONS]... [NAME]...

نشانک‌ها (Bookmarks) برچسب‌هایی روی مجموعه‌های تغییرات (changesets) هستند که به ردیابی خطوط توسعه کمک می‌کنند. نشانک‌ها نسخه‌بندی نمی‌شوند (unversioned) و می‌توان آن‌ها را جابه‌جا کرد، نامشان را تغییر داد و حذف کرد. حذف یا جابه‌جا کردن یک نشانک هیچ اثری بر مجموعه‌های تغییرات مرتبط با آن ندارد.

ایجاد یک نشانک یا به‌روزرسانی (update) به آن موجب می‌شود که به عنوان 'فعال' ('active') علامت‌گذاری شود. نشانک فعال با یک '*' مشخص می‌شود. هنگامی که یک کامیت (commit) ایجاد می‌شود، نشانک فعال به کامیت جدید پیشروی می‌کند. اجرای سادهٔ hg update نیز در صورت امکان، نشانک فعال را به جلو خواهد برد. به‌روزرسانی به جایی غیر از موقعیت نشانک، موجب غیرفعال شدن آن می‌شود.

نشانک‌ها را می‌توان بین مخازن push و pull کرد (ببینید: hg help push و hg help pull)‌. اگر یک نشانک به اشتراک گذاشته‌شده واگرا شود، یک 'نشانک واگرا' (divergent bookmark) جدید به شکل 'name@path' ایجاد خواهد شد. استفاده از hg merge این واگرایی را برطرف خواهد کرد.

مشخص کردن نشانک به عنوان '.' در گزینه‌های -m/-d/-l، معادل مشخص کردن نام نشانک فعال است.

نشانکی با نام '@' این ویژگی خاص را دارد که در صورت وجود، hg clone به‌طور پیش‌فرض آن را checkout می‌کند.

قالب (Template):

کلیدواژه‌های زیر علاوه بر کلیدواژه‌ها و توابع رایج قالب مانند {bookmark} پشتیبانی می‌شوند. همچنین ببینید: hg help templates.

بولی (Boolean). مقدار درست (True) اگر نشانک فعال باشد.

مثال‌ها:

  • ایجاد یک نشانک فعال برای یک خط توسعه جدید:
    hg book new-feature
  • ایجاد یک نشانک غیرفعال به عنوان نشانه‌گذار موقعیت:
    hg book -i reviewed
  • ایجاد یک نشانک غیرفعال روی یک مجموعه تغییرات دیگر:
    hg book -r .^ tested
  • تغییر نام نشانک turkey به dinner:
    hg book -m turkey dinner
  • انتقال نشانک '@' از یک شاخهٔ دیگر:
    hg book -f @
  • فقط نمایش نام نشانک فعال:
    hg book -ql .

گزینه‌ها:

-f, --force
اجبار
بازنگری (revision) برای عملیات نشانک
-d, --delete
حذف یک نشانک مشخص
تغییر نام یک نشانک مشخص
-i, --inactive
علامت‌گذاری نشانک به عنوان غیرفعال
-l, --list
فهرست کردن نشانک‌های موجود
نمایش با قالب

نام‌های مستعار: bookmark

تنظیم یا نمایش نام شاخهٔ فعلی:

hg branch [-fC] [NAME]
نکته
نام‌های شاخه دائمی و سراسری هستند. به‌جای آن برای ایجاد یک نشانک (bookmark) سبک از hg bookmark استفاده کنید. برای اطلاعات بیشتر درباره شاخه‌های نام‌دار و نشانک‌ها، hg help glossary را ببینید.

بدون آرگومان، نام شاخهٔ فعلی را نمایش می‌دهد. با یک آرگومان، نام شاخهٔ دایرکتوری کاری را تنظیم می‌کند (شاخه تا زمان ثبت (commit) بعدی در مخزن وجود نخواهد داشت). رویهٔ استاندارد توصیه می‌کند که توسعهٔ اصلی روی شاخهٔ 'default' انجام شود.

مگر اینکه -f/--force مشخص شده باشد، دستور branch اجازه نخواهد داد نام شاخه‌ای را تعیین کنید که از قبل وجود دارد.

برای بازنشانی شاخهٔ دایرکتوری کاری به شاخهٔ والدِ دایرکتوری کاری و لغو تغییر شاخهٔ قبلی، از -C/--clean استفاده کنید.

از دستور hg update برای جابه‌جایی به یک شاخهٔ موجود استفاده کنید. از hg commit --close-branch برای بسته‌شده علامت‌گذاری کردن سرشاخهٔ (head) این شاخه استفاده کنید. هنگامی که تمام سرشاخه‌های یک شاخه بسته شوند، شاخه بسته‌شده در نظر گرفته می‌شود.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-f, --force
تنظیم نام شاخه حتی اگر روی یک شاخهٔ موجود سایه بیفکند
بازنشانی نام شاخه به نام شاخهٔ والد
تغییر شاخه‌های بازبینی‌های (revs) داده‌شده (آزمایشی)

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد

فهرست کردن شاخه‌های نام‌دار مخزن:

hg branches [-c]

فهرست کردن شاخه‌های نام‌دار مخزن با مشخص کردن شاخه‌های غیرفعال. اگر -c/--closed مشخص شده باشد، شاخه‌هایی که بسته‌شده علامت‌گذاری شده‌اند را نیز فهرست می‌کند (ببینید: hg commit --close-branch).

از دستور hg update برای جابه‌جایی به یک شاخهٔ موجود استفاده کنید.

قالب:

کلیدواژه‌های زیر علاوه بر کلیدواژه‌ها و توابع متداول قالب نظیر {branch} پشتیبانی می‌شوند. همچنین hg help templates را ببینید.

بولی (Boolean). درست (True) اگر شاخه فعال باشد.
بولی (Boolean). درست (True) اگر شاخه بسته باشد.
بولی (Boolean). درست (True) اگر شاخهٔ فعلی باشد.

مقدار 0 را برمی‌گرداند.

گزینه‌ها:

-a, --active
نمایشِ تنها شاخه‌هایی که سرشاخه‌های ادغام‌نشده دارند (منسوخ‌شده)
-c, --closed
نمایش شاخه‌های عادی و بسته‌شده
نمایش نام (یا نام‌های) شاخه برای بازبینی (rev) داده‌شده
نمایش با استفاده از قالب

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد.SS phase

تنظیم یا نمایش نام فاز جاری:

hg phase [-p|-d|-s] [-f] [-r] [REV...]

بدون آرگومان، نام فاز بازبینی(های) جاری را نمایش می‌دهد.

با استفاده از یکی از گزینه‌های -p/--public، -d/--draft یا -s/--secret، مقدار فاز بازبینی‌های مشخص‌شده تغییر می‌کند.

مگر اینکه -f/--force مشخص شده باشد، hg phase مجموعه‌تغییرها را از یک فاز پایین‌تر به فازی بالاتر منتقل نخواهد کرد. ترتیب فازها به شرح زیر است:

public < draft < secret

در صورت موفقیت 0، و اگر برخی از فازها قابل تغییر نباشند 1 برمی‌گرداند.

(برای اطلاعات بیشتر درباره مفهوم فازها، hg help phases را ببینید.)

گزینه‌ها:

-p, --public
تنظیم فاز مجموعه‌تغییر به public
-d, --draft
تنظیم فاز مجموعه‌تغییر به draft
-s, --secret
تنظیم فاز مجموعه‌تغییر به secret
-f, --force
اجازه دادن به حرکت مرز به عقب
بازبینی هدف

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد

افزودن یک یا چند برچسب برای بازبینی جاری یا داده‌شده:

hg tag [-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...

نام‌گذاری یک بازبینی خاص با استفاده از <name>.

برچسب‌ها برای نام‌گذاری بازبینی‌های خاصی از مخزن به کار می‌روند و برای مقایسهٔ بازبینی‌های مختلف، بازگشت به نسخه‌های مهم پیشین یا علامت‌گذاری نقاط شاخه به‌عنوان انتشارها و غیره بسیار کاربردی هستند. تغییر یک برچسب موجود معمولاً مجاز نیست؛ برای نادیده‌گرفتن این محدودیت از -f/--force استفاده کنید.

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

به منظور تسهیل کنترل نسخه، توزیع، و ادغام برچسب‌ها، آنها در فایلی با نام ".hgtags" ذخیره می‌شوند که مشابه دیگر فایل‌های پروژه مدیریت شده و در صورت نیاز می‌توان آن را به‌صورت دستی ویرایش کرد. این امر همچنین بدان معناست که برچسب‌گذاری یک کامیت جدید ایجاد می‌کند. فایل ".hg/localtags" برای برچسب‌های محلی (که میان مخازن به اشتراک گذاشته نمی‌شوند) استفاده می‌شود.

کامیت‌های برچسب معمولاً در رأس یک شاخه انجام می‌شوند. اگر والد دایرکتوری کاری رأس شاخه نباشد، hg tag متوقف می‌شود؛ برای اجبار کامیت برچسب به قرارگیری بر پایهٔ یک مجموعه‌تغییر غیر رأس، از -f/--force استفاده کنید.

برای دیدن فهرستی از قالب‌های معتبر برای -d/--date، hg help dates را ببینید.

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

در صورت موفقیت 0 برمی‌گرداند.

گزینه‌ها:

-f, --force
اجبار در برچسب‌گذاری
-l, --local
محلی کردن برچسب
بازبینی برای برچسب‌گذاری
حذف یک برچسب
-e, --edit
فراخوانی ویرایشگر برای پیام‌های کامیت
استفاده از متن به‌عنوان پیام کامیت
ثبت تاریخ مشخص‌شده به‌عنوان تاریخ کامیت
ثبت کاربر مشخص‌شده به‌عنوان کامیت‌کننده

فهرست کردن تگ‌های مخزن:

hg tags

این دستور هم تگ‌های عادی و هم تگ‌های محلی را فهرست می‌کند. هنگامی که سوییچ -v/--verbose استفاده شود، ستون سومی با عنوان "local" برای تگ‌های محلی چاپ می‌شود. هنگامی که سوییچ -q/--quiet استفاده شود، تنها نام تگ چاپ می‌شود.

قالب:

علاوه بر کلیدواژه‌ها و توابع متداول قالب مانند {tag}، کلیدواژه‌های زیر نیز پشتیبانی می‌شوند. همچنین hg help templates را ببینید.

رشته. مقدار local برای تگ‌های محلی.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

نمایش با استفاده از قالب

نمایش اطلاعات changeset خط به خط برای هر فایل:

hg annotate [-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...

فهرست کردن تغییرات در فایل‌ها، به همراه نمایش شناسه بازبینی (revision id) مربوط به هر خط.

این دستور برای پی بردن به اینکه چه زمانی و توسط چه کسی تغییری ایجاد شده است مفید است.

اگر از --file، --user، یا --date استفاده کنید، شماره بازبینی نمایش داده نمی‌شود مگر اینکه --number را نیز مشخص کرده باشید.

بدون گزینه -a/--text، دستور annotate از پردازش فایل‌هایی که به عنوان دودویی (باینری) تشخیص می‌دهد خودداری خواهد کرد. با گزینه -a، دستور annotate فایل را در هر صورت حاشیه‌نویسی می‌کند، اگرچه نتایج آن احتمالاً نه مفید خواهند بود و نه مطلوب.

از گزینه‌های -L/--line-range FILE,M:N برای محدود کردن خروجی به خطوط M تا N در FILE استفاده کنید. این گزینه با --no-follow ناسازگار است و نمی‌تواند با آرگومان‌های الگوی فایل ترکیب شود. هنگام ترکیب با --rev، محدوده‌های خط به وضعیت فایل در بازبینی درخواست‌شده اشاره دارند.

قالب:

علاوه بر کلیدواژه‌ها و توابع متداول قالب، کلیدواژه‌های زیر نیز پشتیبانی می‌شوند. همچنین hg help templates را ببینید.

فهرست خطوط به همراه داده‌های حاشیه‌نویسی.
رشته. مسیر مطلق نسبت به مخزن برای فایل مشخص‌شده.

و هر مدخل از {lines} علاوه بر {date}، {node}، {rev}، {user} و غیره، زیرکلیدواژه‌های زیر را فراهم می‌کند:

رشته. محتوای خط.
عدد صحیح. شماره خط در آن بازبینی.
رشته. مسیر مطلق نسبت به مخزن برای فایل در آن بازبینی.

برای ساختار نحو گسترش فهرست، hg help templates.operators را ببینید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

حاشیه‌نویسی بازبینی مشخص‌شده
دنبال کردن رونوشت‌ها/تغییرنام‌ها و فهرست کردن نام فایل (منسوخ‌شده)
دنبال نکردن رونوشت‌ها و تغییرنام‌ها
-a, --text
در نظر گرفتن تمام فایل‌ها به عنوان متن
-u, --user
فهرست کردن پدیدآورنده (با -v به صورت کامل)
-f, --file
فهرست کردن نام فایل
-d, --date
فهرست کردن تاریخ (با -q به صورت کوتاه)
-n, --number
فهرست کردن شماره بازبینی (پیش‌فرض)
-c, --changeset
فهرست کردن changeset
-l, --line-number
نمایش شماره خط در اولین رخداد
مجموعه بازبینی (revset) برای عدم نمایش (آزمایشی)
دنبال کردن محدوده خطوط فایل مشخص‌شده (آزمایشی)
نادیده گرفتن فاصله‌های خالی هنگام مقایسه خطوط
-b, --ignore-space-change
نادیده گرفتن تغییرات در تعداد فاصله‌های خالی
-B, --ignore-blank-lines
نادیده گرفتن تغییراتی که تمام خطوط آن‌ها خالی است
نادیده گرفتن تغییرات در فاصله‌های خالی انتهای خط (EOL)
شامل کردن نام‌های منطبق بر الگوهای داده‌شده
مستثنی کردن نام‌های منطبق بر الگوهای داده‌شده
نمایش با استفاده از قالب گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد

نام‌های مستعار: blame

خروجی دادن بازبینی فعلی یا مشخص‌شدهٔ فایل‌ها:

hg cat [OPTION]... FILE...

چاپ فایل‌های مشخص‌شده به همان شکلی که در بازبینی ارائه‌شده بوده‌اند. اگر هیچ بازبینی‌ای ارائه نشود، والد دایرکتوری کاری استفاده می‌شود.

خروجی می‌تواند درون یک فایل قرار گیرد، که در این حالت نام فایل با استفاده از یک رشتهٔ الگو مشخص می‌شود. دستور hg help templates را ببینید. علاوه بر کلیدواژه‌های معمول الگو، قواعد قالب‌بندی زیر نیز پشتیبانی می‌شوند:

%%

نویسهٔ تحت‌اللفظی "%"

%s

نام پایهٔ (basename) فایلی که چاپ می‌شود

%d

مسیر دایرکتوری (dirname) فایلی که چاپ می‌شود، یا '.' در صورت قرار داشتن در ریشهٔ مخزن

%p

نام مسیر نسبی به ریشه برای فایلی که چاپ می‌شود

%H

هش changeset (۴۰ رقم هگزادسیمال)

%R

شمارهٔ بازبینی changeset

%h

شکل کوتاه هش changeset (۱۲ رقم هگزادسیمال)

%r

شمارهٔ بازبینی changeset با صفرهای ابتدایی (zero-padded)

%b

نام پایهٔ (basename) مخزن صادرکننده

\

نویسهٔ تحت‌اللفظی ""

الگو:

علاوه بر کلیدواژه‌ها و توابع معمول الگو، کلیدواژه‌های زیر نیز پشتیبانی می‌شوند. همچنین hg help templates را ببینید.

رشته. محتوای فایل.
رشته. مسیر مطلق فایل نسبت به مخزن.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

چاپ خروجی درون فایلی با نام قالب‌بندی‌شده
چاپ بازبینی مشخص‌شده
اعمال هر فیلتر رمزگشایی (decode) منطبق
شامل کردن نام‌های منطبق با الگوهای ارائه‌شده
مستثنی کردن نام‌های منطبق با الگوهای ارائه‌شده
نمایش با الگو

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SS copy

نشانه‌گذاری فایل‌ها به عنوان رونوشت‌شده برای commit بعدی:

hg copy [OPTION]... (SOURCE... DEST | --forget DEST...)

dest را به عنوان دارای رونوشت‌های فایل‌های منبع نشانه‌گذاری می‌کند. اگر dest یک دایرکتوری باشد، رونوشت‌ها در آن دایرکتوری قرار می‌گیرند. اگر dest یک فایل باشد، منبع باید فقط یک فایل منفرد باشد.

به طور پیش‌فرض، این دستور محتوای فایل‌ها را به همان صورتی که در دایرکتوری کاری وجود دارند کپی می‌کند. اگر با -A/--after فراخوانی شود، عملیات ثبت می‌شود، اما هیچ کپی‌کردنی انجام نمی‌گیرد.

برای لغو نشانه‌گذاری یک فایل مقصد به عنوان رونوشت‌شده، از --forget استفاده کنید. با این گزینه، نشانه‌گذاری تمام آرگومان‌های (موقعیتی) داده‌شده به عنوان رونوشت برداشته می‌شود. فایل(های) مقصد در جای خود باقی خواهند ماند (همچنان ردگیری می‌شوند). توجه داشته باشید که hg copy --forget رفتاری مشابه با hg rename --forget دارد.

این دستور به طور پیش‌فرض با commit بعدی اعمال می‌شود.

در صورت موفقیت 0 و در صورت بروز خطا 1 را برمی‌گرداند.

گزینه‌ها:

لغو نشانه‌گذاری یک فایل مقصد به عنوان رونوشت‌شده
-A, --after
ثبت رونوشتی که از قبل ایجاد شده است
نشانه‌گذاری (یا لغو نشانه‌گذاری) رونوشت‌ها در بازبینی داده‌شده (آزمایشی)
-f, --force
رونویسی اجباری روی یک فایل مدیریت‌شده موجود
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
-n, --dry-run
عدم انجام عملیات، صرفاً نمایش خروجی

گزینه‌ای که با علامت [+] مشخص شده را می‌توان چندین بار تعیین کرد

نام‌های مستعار: cp

مقایسه (diff) مخزن (یا فایل‌های انتخاب‌شده):

hg diff [OPTION]... ([-c REV] | [--from REV1] [--to REV2]) [FILE]...

نمایش تفاوت‌های میان بازبینی‌ها برای فایل‌های مشخص‌شده.

تفاوت‌های میان فایل‌ها با استفاده از قالب unified diff نمایش داده می‌شوند.

نکته
دستور hg diff ممکن است برای ادغام‌ها (merges) نتایج غیرمنتظره‌ای تولید کند، چرا که در صورت مشخص نشدن بازبینی‌ها، به طور پیش‌فرض با changeset والد اول دایرکتوری کاری مقایسه می‌کند. برای مقایسه با نواحی تداخل، می‌توانید از --config diff.merge=yes استفاده کنید.

به طور پیش‌فرض، فایل‌های دایرکتوری کاری با والد اول آن مقایسه می‌شوند. برای مشاهده تفاوت‌ها نسبت به یک بازبینی دیگر، از --from استفاده کنید. برای مشاهده تفاوت تا یک بازبینی دیگر، از --to استفاده کنید. برای نمونه، hg diff --from .^ تفاوت‌ها از والدِ والد (grandparent) رونوشت کاری تا رونوشت کاری را نشان می‌دهد، hg diff --to . تفاوت از رونوشت کاری تا والد آن را نشان می‌دهد (یعنی معکوس حالت پیش‌فرض)، و hg diff --from 1.0 --to 1.2 تفاوت بین این دو بازبینی را نشان خواهد داد.

همچنین می‌توانید -c/--change را به همراه یک بازبینی مشخص کنید تا تغییرات موجود در آن changeset را نسبت به والد اولش مشاهده نمایید (یعنی hg diff -c 42 معادل hg diff --from 42^ --to 42 است).

بدون گزینه -a/--text، دستور diff از تولید تفاوت برای فایل‌هایی که باینری تشخیص می‌دهد خودداری می‌کند. با گزینه -a، دستور diff در هر صورت تفاوت را تولید خواهد کرد که احتمالاً با نتایج نامطلوبی همراه است.

برای تولید تفاوت‌ها در قالب توسعه‌یافته git diff، از گزینه -g/--git استفاده کنید. برای اطلاعات بیشتر، hg help diffs را بخوانید.

مثال‌ها:

  • مقایسه یک فایل در دایرکتوری کاری فعلی با والد آن:
    hg diff foo.c
  • مقایسه دو نسخه تاریخی از یک دایرکتوری، به همراه اطلاعات تغییر نام:
    hg diff --git --from 1.0 --to 1.2 lib/
  • دریافت آمار تغییرات نسبت به آخرین تغییر در یک تاریخ مشخص:
    hg diff --stat --from "date('may 2')"
  • مقایسه تمام فایل‌های تازه اضافه‌شده که حاوی یک کلیدواژه هستند:
    hg diff "set:added() and grep(GNU)"
  • مقایسه یک بازبینی و والدین آن:
    hg diff -c 9353                  # مقایسه با والد اول
    hg diff --from 9353^ --to 9353   # همان کار با استفاده از نحو revset
    hg diff --from 9353^2 --to 9353  # مقایسه با والد دوم

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

بازبینی (منسوخ‌شده)
بازبینی مبدأ برای مقایسه
بازبینی مقصد برای مقایسه
تغییر ایجادشده توسط بازبینی
تنها مقایسه تغییر ایجادشده توسط بازبینی انتخاب‌شده (آزمایشی).TP -a, --text در نظر گرفتن تمام فایل‌ها به صورت متنی
استفاده از قالب diff گسترش‌یافتهٔ git (پیش‌فرض: diff.git)
تولید diffهای باینری در حالت git (پیش‌فرض)
حذف تاریخ‌ها از سرآیندهای diff
حذف پیشوندهای a/ و b/ از نام فایل‌ها
-p, --show-function
نمایش تابعی که هر تغییر در آن قرار دارد (پیش‌فرض: diff.showfunc)
تولید یک diff که تغییرات را معکوس (خنثی) می‌کند
نادیده گرفتن فاصله‌های خالی هنگام مقایسهٔ خطوط
-b, --ignore-space-change
نادیده گرفتن تغییرات در تعداد فاصله‌های خالی
-B, --ignore-blank-lines
نادیده گرفتن تغییراتی که تمامی خطوط آن‌ها خالی هستند
نادیده گرفتن تغییرات در فاصله‌های خالی انتهای خط (EOL)
تعداد خطوط زمینه (context) برای نمایش
خروجی خلاصهٔ تغییرات به سبک diffstat
تولید diffها به‌صورت نسبی نسبت به زیردایرکتوری
شامل کردن نام‌های منطبق با الگوهای ارائه‌شده
مستثنی کردن نام‌های منطبق با الگوهای ارائه‌شده
پیمایش بازگشتی درون مخزن‌های فرعی (subrepositories)

گزینهٔ علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد

جستجوی یک الگو در فایل‌های مشخص‌شده:

hg grep [--diff] [OPTION]... PATTERN [FILE]...

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

به‌طور پیش‌فرض، grep فایل‌های مخزن را در دایرکتوری کاری جستجو کرده و فایل‌هایی را که در آن‌ها تطابق پیدا کند چاپ می‌کند. برای مشخص کردن نسخه‌های پیشین به جای دایرکتوری کاری، از پرچم --rev استفاده کنید.

برای جستجو در تفاوت‌های نسخه‌های پیشین که شامل تغییری در وضعیت تطابق هستند (“-” برای تطابقی که به عدم تطابق تبدیل می‌شود، یا “+” برای عدم تطابقی که به تطابق تبدیل می‌شود)، از پرچم --diff استفاده کنید.

مقدار PATTERN می‌تواند هر عبارت باقاعدهٔ Python (تقریباً سازگار با Perl) باشد.

اگر هیچ FILE مشخص نشود و پرچم --rev نیز ارائه نشده باشد، تمام فایل‌های دایرکتوری کاری جستجو می‌شوند. هنگام استفاده از پرچم --rev و مشخص کردن FILEها، از آرگومان --follow برای دنبال کردن فایل‌های مشخص‌شده در طول تغییر نام‌ها و کپی‌ها استفاده کنید.

الگو:

علاوه‌بر کلمات کلیدی و توابع رایج الگو، کلمات کلیدی زیر نیز پشتیبانی می‌شوند. همچنین ببینید: hg help templates.

رشته (String). نویسه‌ای که نشان‌دهندهٔ درج + یا حذف - است. در صورت مشخص شدن --diff در دسترس است.
عدد صحیح (Integer). شماره خط تطابق‌یافته.
رشته (String). مسیر مطلق فایل نسبت به مخزن.
فهرست تکه‌متن‌ها (List of text chunks).

و هر مدخل از {texts} زیرکلیدواژه‌های زیر را فراهم می‌کند.

بولی (Boolean). مقدار درستی (True) در صورتی که تکه با الگوی مشخص‌شده مطابقت داشته باشد.
رشته (String). محتوای تکه.

برای نحو بسط فهرست به hg help templates.operators مراجعه کنید.

در صورت یافتن تطابق، مقدار 0 و در غیر این صورت مقدار 1 را برمی‌گرداند.

گزینه‌ها:

-0, --print0
خاتمه دادن فیلدها با NUL
یک نام مستعار برای --diff (منسوخ‌شده)
جستجو در تفاوت‌های نسخه برای زمان‌هایی که الگو اضافه یا حذف شده است
-a, --text
در نظر گرفتن تمام فایل‌ها به صورت متنی
-f, --follow
دنبال کردن تاریخچهٔ changeset یا تاریخچهٔ فایل در طول رونوشت‌ها و تغییر نام‌ها
-i, --ignore-case
صرف‌نظر از کوچک و بزرگی حروف در تطبیق
-l, --files-with-matches
تنها چاپ نام فایل‌ها و نسخه‌های دارای تطابق
-n, --line-number
چاپ شمارهٔ خطوط منطبق
جستجوی فایل‌های تغییریافته در محدودهٔ نسخه‌ها
--all-files
شامل کردن تمام فایل‌های changeset حین اجرای grep (منسوخ‌شده).TP -u, --user نمایش پدیدآورنده (به‌صورت کامل با -v)
-d, --date
نمایش تاریخ (به‌صورت کوتاه با -q)
نمایش با الگو
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده

گزینهٔ علامت‌گذاری‌شده با [+] می‌تواند چندین بار مشخص شود

جستجوی دودویی در مجموعه‌تغییرها:

hg bisect [-gbsr] [-U] [-c CMD] [REV]

این دستور به یافتن مجموعه‌تغییرهایی که باعث بروز مشکل شده‌اند کمک می‌کند. برای استفاده، نخستین مجموعه‌تغییری را که می‌دانید دارای مشکل است به‌عنوان بد (bad) علامت‌گذاری کنید، سپس جدیدترین مجموعه‌تغییری را که عاری از مشکل است به‌عنوان خوب (good) مشخص نمایید. دستور bisect دایرکتوری کاری شما را برای آزمایش به یک بازبینی به‌روزرسانی می‌کند (مگر اینکه گزینهٔ -U/--noupdate مشخص شده باشد). پس از انجام آزمایش‌ها، دایرکتوری کاری را به‌عنوان خوب یا بد علامت‌گذاری کنید؛ سپس bisect یا به یک مجموعه‌تغییر کاندید دیگر به‌روزرسانی می‌شود یا اعلام می‌کند که بازبینی بد را یافته است.

به‌عنوان یک میان‌بُر، می‌توانید از آرگومان بازبینی (revision) نیز برای علامت‌گذاری یک بازبینی به‌عنوان خوب یا بد بدون نیاز به checkout اولیهٔ آن استفاده کنید.

اگر دستوری را مشخص کنید، برای bisection خودکار استفاده خواهد شد. متغیر محیطی HG_NODE شامل شناسهٔ مجموعه‌تغییری خواهد بود که آزمایش می‌شود. وضعیت خروج دستور برای علامت‌گذاری بازبینی‌ها به‌عنوان خوب یا بد استفاده خواهد شد: وضعیت 0 به معنای خوب، 125 به معنای نادیده گرفتن بازبینی، 127 (فرمان یافت نشد) موجب لغو bisection می‌شود، و هر وضعیت خروج غیرصفر دیگر به معنای بد بودن بازبینی است.

چند مثال:

  • شروع bisection با بازبینی بدِ مشخص 34 و بازبینی خوب 12:
    hg bisect --bad 34
    hg bisect --good 12
  • پیش بردن bisection جاری با علامت‌گذاری بازبینی فعلی به‌عنوان خوب یا بد:
    hg bisect --good
    hg bisect --bad
  • علامت‌گذاری بازبینی فعلی یا یک بازبینی مشخص برای نادیده گرفته شدن (مثلاً اگر آن بازبینی به دلیل مشکل دیگری قابل استفاده نباشد):
    hg bisect --skip
    hg bisect --skip 23
  • نادیده گرفتن تمام بازبینی‌هایی که دایرکتوری‌های foo یا bar را تغییر نمی‌دهند:
    hg bisect --skip "!( file('path:foo') & file('path:bar') )"
  • فراموش کردن bisection جاری:
    hg bisect --reset
  • استفاده از 'make && make tests' برای یافتن خودکار نخستین بازبینی خراب:
    hg bisect --reset
    hg bisect --bad 34
    hg bisect --good 12
    hg bisect --command "make && make tests"
  • مشاهدهٔ تمام مجموعه‌تغییرهایی که وضعیت آن‌ها در bisection جاری از قبل مشخص است:
    hg log -r "bisect(pruned)"
  • مشاهدهٔ مجموعه‌تغییری که در حال حاضر در حال bisect شدن است (به‌ویژه در صورت اجرا با -U/--noupdate بسیار مفید است):
    hg log -r "bisect(current)"
  • مشاهدهٔ تمام مجموعه‌تغییرهایی که در bisection جاری شرکت داشته‌اند:
    hg log -r "bisect(range)"
  • حتی می‌توانید یک نمودار زیبا دریافت کنید:
    hg log --graph -r "bisect(range)"

برای اطلاعات بیشتر دربارهٔ گزارهٔ bisect() به hg help revisions.bisect مراجعه کنید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-r, --reset
بازنشانی وضعیت bisect
علامت‌گذاری مجموعه‌تغییر به‌عنوان خوب
-b, --bad
علامت‌گذاری مجموعه‌تغییر به‌عنوان بد
-s, --skip
صرف‌نظر کردن از آزمایش مجموعه‌تغییر.TP -e, --extend گسترش محدودهٔ bisect
استفاده از دستور برای بررسی وضعیت changeset
-U, --noupdate
به‌روزرسانی به هدف انجام نشود

نمایش سرشاخه‌ها (branch heads):

hg heads [-ct] [-r STARTREV] [REV]...

بدون هیچ آرگومانی، تمام سرشاخه‌های باز موجود در مخزن را نمایش می‌دهد. سرشاخه‌ها دسته‌تغییرهایی (changesets) هستند که هیچ نواده‌ای روی همان شاخه ندارند. آن‌ها جایی هستند که توسعه معمولاً در آن اتفاق می‌افتد و اهداف معمول برای عملیات به‌روزرسانی (update) و ادغام (merge) هستند.

اگر یک یا چند REV مشخص شوند، تنها سرشاخه‌های باز روی شاخه‌های مرتبط با دسته‌تغییرهای مشخص‌شده نشان داده می‌شوند. این بدان معناست که می‌توانید از hg heads . برای دیدن سرشاخه‌ها در شاخهٔ فعلیِ دریافت‌شده (checked-out) استفاده کنید.

اگر -c/--closed مشخص شده باشد، سرشاخه‌های علامت‌گذاری‌شده به عنوان بسته‌شده را نیز نمایش می‌دهد (ببینید hg commit --close-branch).

اگر STARTREV مشخص شده باشد، تنها سرشاخه‌هایی نمایش داده خواهند شد که از نوادگان STARTREV باشند.

اگر -t/--topo مشخص شده باشد، سازوکار شاخه‌های نام‌گذاری‌شده نادیده گرفته شده و تنها سرشاخه‌های توپولوژیکی (دسته‌تغییرهای بدون فرزند) نمایش داده خواهند شد.

در صورت یافتن سرشاخه‌های منطبق، 0 و در غیر این صورت 1 را بازمی‌گرداند.

گزینه‌ها:

تنها سرشاخه‌هایی را نشان می‌دهد که از نوادگان STARTREV هستند
-t, --topo
تنها سرشاخه‌های توپولوژیک را نشان می‌دهد
-a, --active
تنها سرشاخه‌های فعال را نشان می‌دهد (منسوخ‌شده)
-c, --closed
نمایش سرشاخه‌های عادی و بسته‌شده
نمایش با استفاده از فایل نگاشت قالب (منسوخ‌شده)
نمایش با قالب

شناسایی دایرکتوری کاری یا بازنگری (revision) مشخص‌شده:

hg identify [-nibtB] [-r REV] [SOURCE]

خلاصه‌ای از وضعیت مخزن در REV را با استفاده از یک یا دو شناسهٔ هش والد چاپ می‌کند؛ در صورتی که دایرکتوری کاری تغییرات ثبت‌نشده داشته باشد یک «+»، سپس نام شاخه (اگر پیش‌فرض نباشد)، فهرستی از برچسب‌ها و فهرستی از چوب‌الف‌ها (bookmarks) به دنبال آن می‌آید.

هنگامی که REV داده نشود، خلاصه‌ای از وضعیت کنونی مخزن شامل دایرکتوری کاری را چاپ می‌کند. برای دریافت اطلاعات والدِ دایرکتوری کاری بدون بررسی تغییرات ثبت‌نشده، ‎-r.‎ را مشخص کنید.

مشخص کردن یک مسیر به ریشهٔ مخزن یا یک بستهٔ (bundle) مرکوریال باعث می‌شود عملیات جستجو روی آن مخزن/بسته انجام شود.

قالب:

علاوه بر کلیدواژه‌ها و توابع عمومی قالب، کلیدواژه‌های زیر نیز پشتیبانی می‌شوند. همچنین ببینید hg help templates.

رشته. نویسهٔ + که نشان می‌دهد آیا دایرکتوری کاری دارای تغییرات ثبت‌نشده است یا خیر.
رشته. یک یا دو گره، که در صورت وجود تغییرات یک + به دنبال آن می‌آید.
فهرستی از رشته‌ها. گره‌های والد دسته‌تغییر (changeset).

مثال‌ها:

  • تولید یک شناسهٔ ساخت (build) برای دایرکتوری کاری:
    hg id --id > build-id.dat
  • یافتن بازنگری متناظر با یک برچسب:
    hg id -n -r 1.3
  • بررسی تازه‌ترین بازنگری در یک مخزن دوردست:
    hg id -r tip https://www.mercurial-scm.org/repo/hg

برای تولید اطلاعات بیشتر دربارهٔ بازنگری‌های خاص، از جمله شناسه‌های هش کامل، به hg log مراجعه کنید.

در صورت موفقیت 0 را بازمی‌گرداند.

گزینه‌ها:

شناسایی بازنگری مشخص‌شده
-n, --num
نمایش شمارهٔ بازنگری محلی
-i, --id
نمایش شناسهٔ بازنگری سراسری
-b, --branch
نمایش شاخه
-t, --tags
نمایش برچسب‌ها
-B, --bookmarks
نمایش چوب‌الف‌ها (bookmarks)
مشخص کردن دستور ssh مورد استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست.TP --insecure عدم اعتبارسنجی گواهی سرور (نادیده‌گرفتن پیکربندی web.cacerts)
نمایش با الگو

نام‌های مستعار: id

نمایش تاریخچه بازنگری‌های کل مخزن یا فایل‌ها:

hg log [OPTION]... [FILE]

چاپ تاریخچه بازنگری‌های فایل‌های مشخص‌شده یا کل پروژه.

اگر هیچ بازه‌ای از بازنگری‌ها مشخص نشود، پیش‌فرض tip:0 خواهد بود مگر اینکه --follow تنظیم شده باشد.

تاریخچه فایل بدون دنبال کردن تاریخچه تغییر نام یا رونوشت فایل‌ها نمایش داده می‌شود. از -f/--follow همراه با نام فایل برای دنبال کردن تاریخچه در میان تغییر نام‌ها و رونوشت‌ها استفاده کنید. گزینه --follow بدون نام فایل، تنها نیاکان بازنگری‌های شروع را نشان می‌دهد. بازنگری‌های شروع را می‌توان با -r/--rev مشخص کرد که مقدار پیش‌فرض آن والد دایرکتوری کاری است.

به‌طور پیش‌فرض این دستور شماره بازنگری و شناسه changeset، برچسب‌ها، والدین غیربدیهی، کاربر، تاریخ و زمان، و خلاصه‌ای برای هر کامیت را چاپ می‌کند. هنگامی که سوییچ -v/--verbose استفاده شود، فهرست فایل‌های تغییریافته و پیام کامل کامیت نمایش داده می‌شوند.

با --graph بازنگری‌ها به‌صورت یک گراف جهت‌دار بدون دور (DAG) در قالب هنر اسکی با جدیدترین changeset در بالا نمایش داده می‌شوند. ‏'o' یک changeset است، '@' والد دایرکتوری کاری است، '%' یک changeset درگیر در تعارض ادغام حل‌نشده است، '_' شاخه را می‌بندد، 'x' منسوخ‌شده است، '*' ناپایدار است، و '+' نمایانگر یک انشعاب است که در آن changeset خطوط پایین‌تر، والد ادغام 'o' در همان خط است. مسیرها در DAG با '|'، '/' و غیره نمایش داده می‌شوند. قرار گرفتن ':' به‌جای '|' نشان می‌دهد که یک یا چند بازنگری در یک مسیر نادیده گرفته شده‌اند.

از گزینه‌های -L/--line-range FILE,M:N برای دنبال کردن تاریخچه خطوط از M تا N در FILE استفاده کنید. با -p/--patch تنها تکه‌تغییرهای تفاوت (diff hunks) اثرگذار بر بازه خطوط مشخص‌شده نمایش داده خواهند شد. این گزینه نیازمند --follow است؛ و می‌تواند چندین بار مشخص شود. در حال حاضر، این گزینه با --graph سازگار نیست. این گزینه آزمایشی است.

نکته
دستور hg log --patch ممکن است برای مجموعه‌تغییرهای ادغام، خروجی تفاوت (diff) غیرمنتظره‌ای تولید کند، زیرا تنها changeset ادغام را با والد اول آن مقایسه خواهد کرد. همچنین، تنها فایل‌هایی که با هر دو والد متفاوت باشند در files: ظاهر خواهند شد.

نکته
به دلایل کارایی، hg log FILE ممکن است تغییرات تکراری ایجادشده در شاخه‌ها را نادیده بگیرد و موارد حذف‌شده یا تغییرات حالت فایل را نشان ندهد. برای مشاهده تمام این دست تغییرات، از سوییچ --removed استفاده کنید.

نکته
تاریخچه حاصل از گزینه‌های -L/--line-range به گزینه‌های diff بستگی دارد؛ برای نمونه اگر فاصله‌های خالی نادیده گرفته شوند، تغییرات مربوطه‌ای که فقط شامل فاصله‌های خالی در بازه خطوط مشخص‌شده هستند فهرست نخواهند شد.

چند مثال:

  • مجموعه‌تغییرها با توضیحات کامل و فهرست فایل‌ها:
    hg log -v
  • مجموعه‌تغییرهای نیاکان دایرکتوری کاری:
    hg log -f
  • ۱۰ کامیت اخیر در شاخه کنونی:
    hg log -l 10 -b .
  • مجموعه‌تغییرهای نشان‌دهنده تمام تغییرات یک فایل، شامل موارد حذف‌شده:
    hg log --removed file.c
  • تمام مجموعه‌تغییرهایی که به یک دایرکتوری مربوط می‌شوند، همراه با تفاوت‌ها، بدون ادغام‌ها:
    hg log -Mp lib/
  • تمام شماره‌های بازنگری منطبق با یک کلیدواژه:
    hg log -k bug --template "{rev}\n"
  • شناسه درهم‌سازی (هش) کامل والد دایرکتوری کاری:
    hg log -r . --template "{node}\n"
  • فهرست کردن الگوهای گزارش (log) در دسترس:
    hg log -T list
  • بررسی اینکه آیا یک مجموعه‌تغییر معین در یک انتشار برچسب‌خورده گنجانده شده است یا خیر:
    hg log -r "a21ccf and ancestor(1.9)"
  • یافتن تمام مجموعه‌تغییرهای یک کاربر در یک بازه تاریخی:
    hg log -k alice -d "may 2008 to jul 2008"
  • خلاصه تمام مجموعه‌تغییرهای پس از آخرین برچسب:
    hg log -r "last(tagged())::" --template "{desc|firstline}\n"
    مجموعه‌تغییرهای مربوط به خط‌های ۱۳ تا ۲۳ فایل file.c:
    hg log -L file.c,13:23
  • مجموعه‌تغییرهای مربوط به خط‌های ۱۳ تا ۲۳ فایل file.c و خط‌های ۲ تا ۶ از main.c همراه با وصله:
    hg log -L file.c,13:23 -L main.c,2:6 -p

برای فهرستی از قالب‌های معتبر برای -d/--date، دستور hg help dates را ببینید.

برای اطلاعات بیشتر درباره تعیین و ترتیب‌بندی بازبینی‌ها، دستور hg help revisions را ببینید.

برای اطلاعات بیشتر درباره سبک‌های از پیش بسته‌بندی‌شده و تعیین قالب‌های سفارشی، دستور hg help templates را ببینید. قالب پیش‌فرضی که توسط دستور log استفاده می‌شود را می‌توان از طریق تنظیم پیکربندی command-templates.log سفارشی‌سازی کرد.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-f, --follow
دنبال کردن تاریخچه مجموعه‌تغییرها، یا تاریخچه فایل در میان کپی‌ها و تغییر نام‌ها
--follow-first
تنها دنبال کردن والد اولِ مجموعه‌تغییرهای ادغام (منسوخ‌شده)
نمایش بازبینی‌های منطبق با مشخصه تاریخ
نمایش فایل‌های کپی‌شده
انجام جستجوی غیرحساس به حروف بزرگ و کوچک برای یک متن مشخص
بازبینی‌ها برای انتخاب یا دنبال کردن از آن‌ها
دنبال کردن محدوده خطوط فایل مشخص‌شده (آزمایشی)
شامل کردن بازبینی‌هایی که در آن‌ها فایل‌ها حذف شده‌اند
-m, --only-merges
تنها نمایش ادغام‌ها (منسوخ‌شده) (به جای آن از -r "merge()" استفاده کنید)
بازبینی‌های ثبت‌شده توسط کاربر
تنها نمایش مجموعه‌تغییرهای درون شاخه نام‌گذاری‌شده مشخص (منسوخ‌شده)
نمایش مجموعه‌تغییرهای درون شاخه نام‌گذاری‌شده مشخص
نمایش مجموعه‌تغییرهای درون نشانک مشخص
عدم نمایش بازبینی یا هیچ‌یک از نیاکان آن
-p, --patch
نمایش وصله
استفاده از قالب تفاضلی گسترش‌یافته git
محدود کردن تعداد تغییرات نمایش‌داده‌شده
عدم نمایش ادغام‌ها
خروجی خلاصه‌ای از تغییرات در سبک diffstat
نمایش گراف جهت‌دار بدون دور (DAG) بازبینی‌ها
نمایش با استفاده از فایل نگاشت قالب (منسوخ‌شده)
نمایش با قالب
شامل کردن نام‌های منطبق با الگوهای مشخص‌شده
مستثنی کردن نام‌های منطبق با الگوهای مشخص‌شده

گزینه‌های مشخص‌شده با [+] می‌توانند چندین بار تعیین شوند

نام‌های مستعار: history

نمایش والدین دایرکتوری کاری یا بازبینی (منسوخ‌شده):

hg parents [-r REV] [FILE]

چاپ بازبینی‌های والد دایرکتوری کاری. اگر بازبینی از طریق -r/--rev مشخص شده باشد، والد آن بازبینی چاپ خواهد شد. اگر یک آرگومان فایل داده شود، بازبینی‌ای که فایل آخرین بار در آن تغییر یافته است (پیش از بازبینی دایرکتوری کاری یا در صورت ارائه، آرگومان مشخص‌شده برای --rev) چاپ می‌شود.

این دستور معادل است با:

hg log -r "p1()+p2()" or
hg log -r "p1(REV)+p2(REV)" or
hg log -r "max(::p1() and file(FILE))+max(::p2() and file(FILE))" or
hg log -r "max(::p1(REV) and file(FILE))+max(::p2(REV) and file(FILE))"

برای اطلاعات مرتبط hg summary و hg help revsets را ببینید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

نمایش والدین بازبینی مشخص‌شده
نمایش با استفاده از فایل نگاشت الگو (منسوخ‌شده)
نمایش با الگو

نمایش بازبینی tip (منسوخ‌شده):

hg tip [-p] [-g]

بازبینی tip (که معمولاً صرفاً tip نامیده می‌شود) جدیدترین دسته‌تغییر (changeset) افزوده‌شده به مخزن (و بنابراین جدیدترین head تغییریافته) است.

اگر به‌تازگی یک commit انجام داده باشید، آن commit همان tip خواهد بود. اگر به‌تازگی تغییراتی را از یک مخزن دیگر pull کرده باشید، tip آن مخزن به tip فعلی تبدیل می‌شود. برچسب "tip" خاص است و نمی‌توان نام آن را تغییر داد یا آن را به دسته‌تغییر دیگری اختصاص داد.

این دستور منسوخ شده است؛ لطفاً به جای آن از hg heads استفاده کنید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-p, --patch
نمایش وصله
استفاده از قالب diff گسترش‌یافتهٔ git
نمایش با استفاده از فایل نگاشت الگو (منسوخ‌شده)
نمایش با الگو

افزودن فایل‌های مشخص‌شده در کامیت بعدی:

hg add [OPTION]... [FILE]...

زمان‌بندی فایل‌ها برای قرار گرفتن تحت کنترل نسخه و افزوده شدن به مخزن.

فایل‌ها در کامیت بعدی به مخزن افزوده خواهند شد. برای لغو یک افزودن پیش از آن، hg forget را ببینید.

اگر هیچ نامی مشخص نشود، تمام فایل‌ها به مخزن افزوده می‌شوند (به‌جز فایل‌های منطبق با .hgignore).

مثال‌ها:

  • فایل‌های جدید (ناشناخته) به‌طور خودکار توسط hg add افزوده می‌شوند:
    $ ls
    foo.c
    $ hg status
    ? foo.c
    $ hg add
    adding foo.c
    $ hg status
    A foo.c
  • می‌توان فایل‌های خاصی را برای افزوده شدن مشخص کرد:
    $ ls
    bar.c  foo.c
    $ hg status
    ? bar.c
    ? foo.c
    $ hg add bar.c
    $ hg status
    A bar.c
    ? foo.c

در صورت افزوده شدن موفقیت‌آمیز تمام فایل‌ها، مقدار 0 را برمی‌گرداند.

گزینه‌ها:

شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
پیمایش بازگشتی درون زیرمخزن‌ها
-n, --dry-run
هیچ عملیاتی انجام نده، فقط خروجی را چاپ کن

گزینهٔ علامت‌گذاری‌شده با [+] می‌تواند چندین بار مشخص شود.SS addremove

افزودن تمام فایل‌های جدید، حذف تمام فایل‌های مفقود:

hg addremove [OPTION]... [FILE]...

تمام فایل‌های جدید را افزوده و تمام فایل‌های مفقود را از مخزن حذف می‌کند.

مگر در حالتی که نام‌ها مشخص شده باشند، فایل‌های جدید در صورتی که با هر یک از الگوهای موجود در .hgignore تطابق داشته باشند نادیده گرفته می‌شوند. همانند add، این تغییرات در کامیت بعدی اعمال می‌شوند.

از گزینهٔ -s/--similarity برای شناسایی فایل‌های تغییر نام‌یافته استفاده کنید. این گزینه درصدی بین 0 (غیرفعال) و 100 (فایل‌ها باید یکسان باشند) را به عنوان پارامتر خود دریافت می‌کند. با پارامتری بزرگ‌تر از 0، این گزینه هر فایل حذف‌شده را با هر فایل اضافه‌شده مقایسه می‌کند و مواردی را که به اندازه کافی مشابه باشند به عنوان تغییر نام ثبت می‌کند. شناسایی فایل‌های تغییر نام‌یافته از این طریق می‌تواند هزینه‌بر و سنگین باشد. پس از استفاده از این گزینه، می‌توان از hg status -C برای بررسی اینکه کدام فایل‌ها به عنوان جابه‌جا‌شده یا تغییر نام‌یافته شناسایی شده‌اند استفاده کرد. در صورت مشخص نشدن، مقدار پیش‌فرض -s/--similarity برابر 100 است و تنها تغییر نام فایل‌های کاملاً یکسان شناسایی می‌شود.

مثال‌ها:

  • تعدادی از فایل‌ها (bar.c و foo.c) جدید هستند، در حالی که foobar.c (بدون استفاده از hg remove) از مخزن حذف شده است:
    $ ls
    bar.c foo.c
    $ hg status
    ! foobar.c
    ? bar.c
    ? foo.c
    $ hg addremove
    adding bar.c
    adding foo.c
    removing foobar.c
    $ hg status
    A bar.c
    A foo.c
    R foobar.c
  • فایل foobar.c بدون استفاده از hg rename به foo.c منتقل شده است. سپس اندکی ویرایش شده است:
    $ ls
    foo.c
    $ hg status
    ! foobar.c
    ? foo.c
    $ hg addremove --similarity 90
    removing foobar.c
    adding foo.c
    recording removal of foobar.c as rename to foo.c (94% similar)
    $ hg status -C
    A foo.c
      foobar.c
    R foobar.c

در صورت افزوده شدن موفقیت‌آمیز تمام فایل‌ها، 0 برمی‌گرداند.

گزینه‌ها:

حدس فایل‌های تغییر نام‌یافته بر اساس شباهت (0<=s<=100)
پیمایش بازگشتی در زیرمخزن‌ها
شامل کردن نام‌های منطبق با الگوهای مشخص‌شده
مستثنی کردن نام‌های منطبق با الگوهای مشخص‌شده
-n, --dry-run
انجام ندادن عملیات، صرفاً چاپ خروجی

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SS files

فهرست کردن فایل‌های ردیابی‌شده:

hg files [OPTION]... [FILE]...

چاپ فایل‌های تحت کنترل Mercurial در دایرکتوری کاری یا در بازبینی (revision) مشخص‌شده برای فایل‌های داده‌شده (به‌استثنای فایل‌های حذف‌شده). فایل‌ها را می‌توان به‌صورت نام فایل یا مجموعه‌فایل (fileset) مشخص کرد.

اگر فایلی برای تطابق داده نشود، این دستور نام تمام فایل‌های تحت کنترل Mercurial را چاپ می‌کند.

قالب (Template):

علاوه بر کلیدواژه‌ها و توابع عمومی قالب، کلیدواژه‌های زیر نیز پشتیبانی می‌شوند. همچنین hg help templates را ببینید.

رشته. نویسه‌ای که نشان‌دهندهٔ بیت‌های پیوند نمادین (symlink) و اجرایی (executable) فایل است.
رشته. مسیر مطلق فایل نسبت به ریشهٔ مخزن.
عدد صحیح. اندازهٔ فایل به بایت.

مثال‌ها:

  • فهرست کردن تمام فایل‌های زیر دایرکتوری جاری:
    hg files .
  • نمایش اندازه‌ها و پرچم‌ها برای بازبینی جاری:
    hg files -vr .
  • فهرست کردن تمام فایل‌های با نام README:
    hg files -I "**/README"
  • فهرست کردن تمام فایل‌های باینری:
    hg files "set:binary()"
  • یافتن فایل‌های حاوی یک عبارت باقاعده:
    hg files "set:grep('bob')"
  • جستجوی محتوای فایل‌های ردیابی‌شده با xargs و grep:
    hg files -0 | xargs -0 grep foo

برای اطلاعات بیشتر در مورد تعیین الگوهای فایل، hg help patterns و hg help filesets را ببینید.

در صورت یافتن تطابق، مقدار 0 و در غیر این صورت مقدار 1 را برمی‌گرداند.

گزینه‌ها:

جستجوی مخزن به همان شکلی که در REV قرار دارد
-0, --print0
خاتمه دادن به نام فایل‌ها با نویسهٔ NUL، برای استفاده همراه با xargs
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
نمایش خروجی با قالب مشخص‌شده
پیمایش بازگشتی به درون زیرمخزن‌ها (subrepositories)

گزینه‌های دارای علامت [+] را می‌توان چندین بار تعیین کرد.SS forget

فراموش کردن فایل‌های مشخص‌شده در کامیت بعدی:

hg forget [OPTION]... FILE...

فایل‌های مشخص‌شده را علامت‌گذاری می‌کند تا پس از کامیت بعدی دیگر ردگیری نشوند.

این کار فایل‌ها را فقط از شاخهٔ جاری حذف می‌کند، نه از کل تاریخچهٔ پروژه، و آن‌ها را از دایرکتوری کاری حذف نمی‌کند.

برای حذف فایل از دایرکتوری کاری، hg remove را ببینید.

برای لغو فراموشی پیش از کامیت بعدی، hg add را ببینید.

مثال‌ها:

  • فراموش کردن فایل‌های باینری تازه‌افزوده‌شده:
    hg forget "set:added() and binary()"
  • فراموش کردن فایل‌هایی که توسط .hgignore مستثنی می‌شوند:
    hg forget "set:hgignore()"

در صورت موفقیت، ۰ را برمی‌گرداند.

گزینه‌ها:

-i, --interactive
استفاده از حالت تعاملی
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
-n, --dry-run
عدم انجام عملیات، تنها چاپ خروجی

گزینه‌های علامت‌گذاری‌شده با [+] می‌توانند چندین بار مشخص شوند

یافتن فایل‌های منطبق با الگوهای مشخص (منسوخ‌شده):

hg locate [OPTION]... [PATTERN]...

چاپ فایل‌های تحت کنترل Mercurial در دایرکتوری کاری که نام آن‌ها با الگوهای داده‌شده مطابقت دارد.

به‌طور پیش‌فرض، این دستور تمام دایرکتوری‌های موجود در دایرکتوری کاری را جستجو می‌کند. برای جستجوی تنها دایرکتوری جاری و زیردایرکتوری‌های آن، از "--include ." استفاده کنید.

اگر هیچ الگویی برای مطابقت داده نشود، این دستور نام تمام فایل‌های تحت کنترل Mercurial در دایرکتوری کاری را چاپ می‌کند.

اگر می‌خواهید خروجی این دستور را به دستور "xargs" بفرستید، از گزینهٔ -0 هم در این دستور و هم در "xargs" استفاده کنید. این کار از بروز مشکل تلقی شدن نام‌فایل‌های منفرد حاوی فاصله به عنوان چندین نام‌فایل توسط "xargs" جلوگیری می‌کند.

برای دستوری با کاربردهای متنوع‌تر، hg help files را ببینید.

در صورت یافتن تطابق، ۰ و در غیر این صورت، ۱ را برمی‌گرداند.

گزینه‌ها:

جستجوی مخزن همان‌طور که در REV بوده است
-0, --print0
پایان دادن نام فایل‌ها با NUL، جهت استفاده با xargs
-f, --fullpath
چاپ مسیرهای کامل از ریشهٔ سیستم‌فایل
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده

گزینه‌های علامت‌گذاری‌شده با [+] می‌توانند چندین بار مشخص شوند.SS purge

فایل‌هایی را که توسط Mercurial ردیابی نمی‌شوند حذف می‌کند:

hg purge [OPTION]... [DIR]...

فایل‌های ناشناخته برای Mercurial را حذف می‌کند. این دستور برای آزمایش تغییرات محلی و ثبت‌نشده در یک درخت منبع در غیر این صورت پاکیزه، مفید است.

این بدان معناست که purge به‌طور پیش‌فرض موارد زیر را حذف خواهد کرد:

  • فایل‌های ناشناخته: فایل‌هایی که با hg status با علامت «?» مشخص شده‌اند
  • دایرکتوری‌های خالی: در واقع Mercurial دایرکتوری‌ها را نادیده می‌گیرد، مگر اینکه حاوی فایل‌های تحت مدیریت کنترل نسخه باشند

اما موارد زیر را دست‌نخورده باقی می‌گذارد:

  • فایل‌های ردیابی‌شدهٔ تغییریافته و تغییرنیافته
  • فایل‌های نادیده‌گرفته‌شده (مگر اینکه -i یا --all مشخص شده باشد)
  • فایل‌های جدید اضافه‌شده به مخزن (با hg add)

می‌توان از گزینه‌های --files و --dirs برای هدایت purge به حذف فقط فایل‌ها، فقط دایرکتوری‌ها، یا هر دو استفاده کرد. اگر هیچ‌کدام از این گزینه‌ها داده نشوند، هر دو حذف خواهند شد.

اگر دایرکتوری‌ها در خط فرمان داده شوند، فقط فایل‌های درون این دایرکتوری‌ها در نظر گرفته می‌شوند.

هنگام استفاده از purge مراقب باشید، زیرا ممکن است به‌طور بازگشت‌ناپذیری فایل‌هایی را که فراموش کرده‌اید به مخزن اضافه کنید، حذف نمایید. اگر فقط می‌خواهید فهرست فایل‌هایی را که این برنامه حذف می‌کند چاپ کنید، از گزینهٔ --print استفاده نمایید.

گزینه‌ها:

-a, --abort-on-err
لغو عملیات در صورت بروز خطا
پاکسازی فایل‌های نادیده‌گرفته‌شده نیز
-i, --ignored
پاکسازی فقط فایل‌های نادیده‌گرفته‌شده
پاکسازی دایرکتوری‌های خالی
پاکسازی فایل‌ها
-p, --print
چاپ نام فایل‌ها به‌جای حذف آن‌ها
-0, --print0
خاتمه دادن نام فایل‌ها با NUL، جهت استفاده با xargs (مستلزم -p/--print)
پرسش قبل از حذف دائمی فایل‌ها
شامل کردن نام‌های منطبق بر الگوهای داده‌شده
مستثنی کردن نام‌های منطبق بر الگوهای داده‌شده

گزینهٔ علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد

نام‌های مستعار: clean

حذف فایل‌های مشخص‌شده در کامیت بعدی:

hg remove [OPTION]... FILE...

زمان‌بندی فایل‌های مشخص‌شده برای حذف از شاخه فعلی.

این دستور فایل‌ها را برای حذف شدن در کامیت بعدی زمان‌بندی می‌کند. برای بازگردانی حذف پیش از آن زمان، hg revert را ببینید. برای لغو فایل‌های اضافه‌شده، hg forget را ببینید.

می‌توان از -A/--after تنها برای حذف فایل‌هایی استفاده کرد که پیش‌تر پاک شده‌اند، از -f/--force می‌توان برای اجبار به حذف بهره برد، و از -Af می‌توان برای حذف فایل‌ها از بازبینی بعدی بدون پاک کردن آن‌ها از دایرکتوری کاری استفاده نمود.

جدول زیر رفتار remove را برای وضعیت‌های مختلف فایل (ستون‌ها) و ترکیب گزینه‌ها (سطرها) شرح می‌دهد. وضعیت‌های فایل عبارتند از: اضافه‌شده [A]، بدون تغییر [C]، تغییریافته [M] و مفقود [!] (همان‌گونه که توسط hg status گزارش می‌شود). کنش‌ها عبارتند از: هشدار (Warn - W)، حذف از شاخه (Remove - R) و پاک کردن از دیسک (Delete - D):

opt/state A C M !
none W RD W R
-f R RD RD R
-A W W W R
-Af R R R R
نکته
دستور hg remove هرگز فایل‌های در وضعیت اضافه‌شده [A] را از دایرکتوری کاری پاک نمی‌کند، حتی اگر --force مشخص شده باشد.

در صورت موفقیت 0، و در صورت مواجهه با هرگونه هشدار 1 برمی‌گرداند.

گزینه‌ها:

-A, --after
ثبت حذف برای فایل‌های مفقود
-f, --force
فراموش کردن فایل‌های اضافه‌شده، پاک کردن فایل‌های تغییریافته
پیمایش بازگشتی در مخازن فرعی
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
-n, --dry-run
عدم انجام عملیات، صرفاً چاپ خروجی

گزینه با علامت [+] را می‌توان چندین بار مشخص کرد

نام‌های مستعار: rm

تغییر نام فایل‌ها؛ معادل کپی + حذف:

hg rename [OPTION]... SOURCE... DEST

نشانه‌گذاری dest به‌عنوان رونوشت‌هایی از sources؛ و نشانه‌گذاری sources برای حذف. اگر dest یک دایرکتوری باشد، رونوشت‌ها درون آن دایرکتوری قرار می‌گیرند. اگر dest یک فایل باشد، تنها می‌تواند یک منبع وجود داشته باشد.

به‌طور پیش‌فرض، این دستور محتویات فایل‌ها را همان‌گونه که در دایرکتوری کاری وجود دارند کپی می‌کند. اگر با -A/--after فراخوانی شود، عملیات ثبت می‌گردد، اما هیچ کپی‌کردنی انجام نمی‌شود.

برای لغو نشانه‌گذاری یک فایل مقصد به‌عنوان تغییرنام‌یافته، از --forget استفاده کنید. با آن گزینه، نشانه‌گذاری تغییر نام از روی تمام آرگومان‌های (موقعیتی) داده‌شده برداشته می‌شود. فایل(های) مقصد در جای خود باقی خواهند ماند (همچنان ردیابی می‌شوند). فایل(های) منبع بازیابی نخواهند شد. توجه داشته باشید که hg rename --forget رفتاری مشابه hg copy --forget دارد.

این دستور به‌طور پیش‌فرض با commit بعدی اعمال می‌شود.

در صورت موفقیت 0، و در صورت مواجهه با خطا 1 برمی‌گرداند.

گزینه‌ها:

لغو نشانه‌گذاری فایل مقصد به‌عنوان تغییرنام‌یافته
-A, --after
ثبت تغییر نامی که قبلاً رخ داده است
نشانه‌گذاری/لغو نشانه‌گذاری تغییر نام‌ها در بازنگری (revision) داده‌شده (آزمایشی)
-f, --force
انتقال اجباری بر روی یک فایل مدیریت‌شدهٔ موجود
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
-n, --dry-run
عدم انجام عملیات، فقط چاپ خروجی

گزینهٔ علامت‌گذاری‌شده با [+] می‌تواند چند بار مشخص شود

نام‌های مستعار: move mv

ادغام مجدد یا تنظیم/مشاهدهٔ وضعیت ادغام فایل‌ها:

hg resolve [OPTION]... [FILE]...

ادغام‌های دارای تداخل حل‌نشده اغلب نتیجهٔ ادغام غیرتعاملی با استفاده از تنظیمات پیکربندی internal:merge یا یک ابزار ادغام خط فرمانی مانند diff3 هستند. دستور resolve برای مدیریت فایل‌های درگیر در یک ادغام، پس از اجرای hg merge و پیش از اجرای hg commit استفاده می‌شود (یعنی دایرکتوری کاری باید دو والد داشته باشد). برای اطلاعات دربارهٔ پیکربندی ابزارهای ادغام به hg help merge-tools مراجعه کنید.

دستور resolve می‌تواند به روش‌های زیر استفاده شود:

  • hg resolve [--re-merge] [--tool TOOL] FILE...: تلاش برای ادغام مجدد فایل‌های مشخص‌شده، با کنار گذاشتن تلاش‌های قبلی ادغام. ادغام مجدد برای فایل‌هایی که قبلاً به‌عنوان حل‌شده نشانه‌گذاری شده‌اند انجام نمی‌شود. از --all/-a برای انتخاب همهٔ فایل‌های حل‌نشده استفاده کنید. از --tool می‌توان برای مشخص کردن ابزار ادغام مورد استفاده برای فایل‌های داده‌شده استفاده کرد. این گزینه متغیر محیطی HGMERGE و فایل‌های پیکربندی شما را بازنویسی (override) می‌کند. محتویات قبلی فایل با پسوند .orig ذخیره می‌شوند.
  • hg resolve -m [FILE]: نشانه‌گذاری یک فایل به‌عنوان حل‌شده (مثلاً پس از اصلاح دستی فایل‌ها). حالت پیش‌فرض نشانه‌گذاری همهٔ فایل‌های حل‌نشده است.
  • hg resolve -u [FILE]...: نشانه‌گذاری یک فایل به‌عنوان حل‌نشده. حالت پیش‌فرض نشانه‌گذاری همهٔ فایل‌های حل‌شده است.
  • hg resolve -l: فهرست کردن فایل‌هایی که تداخل داشته‌اند یا هنوز دارند. در فهرست چاپ‌شده، U = حل‌نشده و R = حل‌شده است. می‌توانید از set:unresolved() یا set:resolved() برای پالایش فهرست استفاده کنید. برای جزئیات به hg help filesets مراجعه کنید.
نکته
Mercurial به شما اجازه نخواهد داد فایل‌های دارای تداخل ادغام حل‌نشده را commit کنید. باید پیش از آنکه پس از یک ادغام دارای تداخل commit کنید، از hg resolve -m ... استفاده نمایید.

قالب:

کلیدواژه‌های زیر علاوه بر کلیدواژه‌ها و توابع عمومی قالب پشتیبانی می‌شوند. همچنین ببینید hg help templates.

رشته (String). نویسهٔ نشان‌دهندهٔ تداخل‌های ادغام، U یا R.
رشته (String). مسیر فایل نسبت به ریشهٔ مخزن (Repository-absolute).

در صورت موفقیت 0، و در صورتی که تلاش برای حل هر فایلی ناموفق باشد 1 برمی‌گرداند.

گزینه‌ها:

-a, --all
انتخاب همهٔ فایل‌های حل‌نشده
-l, --list
فهرست کردن وضعیت فایل‌های نیازمند ادغام
-m, --mark
نشانه‌گذاری فایل‌ها به‌عنوان حل‌شده
-u, --unmark
نشانه‌گذاری فایل‌ها به‌عنوان حل‌نشده
-n, --no-status
پنهان کردن پیشوند وضعیت
ادغام مجدد فایل‌ها
مشخص کردن ابزار ادغام
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
نمایش بر اساس قالب گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد

بازگرداندن فایل‌ها به وضعیت استخراج‌شده (checkout):

hg revert [OPTION]... [-r REV] [NAME]...
نکته
برای استخراج (checkout) بازبینی‌های پیشین، باید از hg update REV استفاده کنید. برای لغو یک ادغام اعمال‌نشده (و از دست رفتن تغییراتتان)، از hg merge --abort استفاده کنید.

در صورت مشخص نشدن بازبینی، فایل‌ها یا دایرکتوری‌های مشخص‌شده را به محتوایی که در والد دایرکتوری کاری داشتند بازمی‌گرداند. این کار محتوای فایل‌ها را به یک وضعیت تغییرنیافته بازمی‌گرداند و افزودن‌ها، حذف‌ها، رونوشت‌ها و تغییر نام‌های زمان‌بندی‌شده را لغو می‌کند. اگر دایرکتوری کاری دارای دو والد باشد، باید صراحتاً یک بازبینی را مشخص کنید.

با استفاده از گزینه‌های -r/--rev یا -d/--date، فایل‌ها یا دایرکتوری‌های داده‌شده را به وضعیتشان در یک بازبینی مشخص بازگردانید. از آنجا که revert والدین دایرکتوری کاری را تغییر نمی‌دهد، این امر باعث می‌شود این فایل‌ها تغییریافته به نظر برسند. این می‌تواند برای «خنثی‌سازی» (back out) بخشی یا تمام یک تغییر پیشین مفید باشد. برای یک روش مرتبط، hg backout را ببینید.

فایل‌های تغییریافته پیش از بازگردانی با پسوند .orig ذخیره می‌شوند. برای غیرفعال کردن این نسخه‌های پشتیبان، از --no-backup استفاده کنید. امکان ذخیرهٔ فایل‌های پشتیبان در یک دایرکتوری سفارشی نسبت به ریشهٔ مخزن با تنظیم گزینهٔ پیکربندی ui.origbackuppath وجود دارد.

برای فهرستی از قالب‌های معتبر برای -d/--date، به hg help dates مراجعه کنید.

برای روشی جهت معکوس کردن اثر یک changeset پیشین، به hg help backout مراجعه کنید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-a, --all
بازگردانی همهٔ تغییرات در صورت عدم ارائهٔ آرگومان
تازه‌ترین بازبینی منطبق با تاریخ
بازگردانی به بازبینی مشخص‌شده
ذخیره نکردن نسخه‌های پشتیبان فایل‌ها
-i, --interactive
انتخاب تعاملی تغییرات
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
-n, --dry-run
انجام ندادن اقدامات، فقط چاپ خروجی

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد.SS root

چاپ ریشه (بالاترین سطح) دایرکتوری کاری فعلی:

hg root

چاپ دایرکتوری ریشهٔ مخزن فعلی.

قالب:

کلیدواژه‌های زیر علاوه بر کلیدواژه‌ها و توابع عمومی قالب پشتیبانی می‌شوند. همچنین hg help templates را ببینید.

رشته. مسیر دایرکتوری .hg.
رشته. مسیر دایرکتوری نگه‌دارندهٔ داده‌های نسخه‌بندی‌شده.

در صورت موفقیت ۰ را برمی‌گرداند.

گزینه‌ها:

--share-source
چاپ ریشهٔ منبع اشتراک به جای آن
نمایش با قالب مشخص‌شده

ذخیره و کنار گذاشتن تغییرات دایرکتوری کاری:

hg shelve [OPTION]... [FILE]...

عملیات بایگانی موقت (shelve) فایل‌هایی را که «hg status» به عنوان غیرتمیز (not clean) گزارش می‌کند دریافت کرده، تغییرات را در یک بسته (یک تغییر بایگانی‌شده) ذخیره می‌کند و فایل‌ها را بازگردانی (revert) می‌نماید تا وضعیت آن‌ها در دایرکتوری کاری پاک شود.

برای بازگرداندن این تغییرات به دایرکتوری کاری، از «hg unshelve» استفاده کنید؛ این دستور حتی در صورت انتقال به کامیتی دیگر نیز کار خواهد کرد.

هنگامی که هیچ فایلی مشخص نشده باشد، «hg shelve» تمام فایل‌های غیرتمیز را ذخیره می‌کند. اگر فایل‌ها یا دایرکتوری‌های خاصی نام برده شوند، تنها تغییرات مربوط به همان فایل‌ها بایگانی موقت می‌شوند.

در بایگانی موقت ساده (زمانی که فایلی مشخص نشده باشد، بدون حالت تعاملی و گزینه‌های include و exclude)، اطلاعات مربوط به قرار داشتن دایرکتوری کاری روی شاخهٔ تازه ایجادشده حفظ می‌شود؛ به عبارت دیگر، زمانی که دایرکتوری کاری روی شاخه‌ای متفاوت از اولین والد خود قرار دارد. در این شرایط، unshelve اطلاعات شاخه را به دایرکتوری کاری بازمی‌گرداند.

هر تغییر بایگانی‌شده دارای نامی است که یافتن بعدی آن را آسان‌تر می‌کند. نام پیش‌فرض تغییر بایگانی‌شده بر پایهٔ نشانک (bookmark) فعال، یا در صورت نبود نشانک فعال، بر اساس شاخهٔ نام‌دار فعلی تعیین می‌شود. برای تعیین نامی دیگر، از --name استفاده کنید.

برای دیدن فهرستی از تغییرات بایگانی‌شدهٔ موجود، از گزینهٔ --list استفاده کنید. برای هر تغییر بایگانی‌شده، نام، قدمت و شرح آن چاپ خواهد شد؛ برای جزئیات بیشتر از --patch یا --stat استفاده کنید.

برای حذف تغییرات بایگانی‌شدهٔ مشخص، از --delete استفاده کنید. برای حذف تمام تغییرات بایگانی‌شده، از --cleanup استفاده کنید.

گزینه‌ها:

-A, --addremove
علامت‌گذاری فایل‌های جدید/گم‌شده به عنوان اضافه‌شده/حذف‌شده پیش از بایگانی موقت
-u, --unknown
ذخیرهٔ فایل‌های ناشناخته در بایگانی موقت
حذف تمام تغییرات بایگانی‌شده
بایگانی موقت با تاریخ کامیت مشخص‌شده
-d, --delete
حذف تغییر(ات) بایگانی‌شدهٔ نام‌برده
-e, --edit
فراخوانی ویرایشگر برای پیام‌های کامیت
-k, --keep
بایگانی موقت، اما نگه‌داشتن تغییرات در دایرکتوری کاری
-l, --list
فهرست کردن بایگانی‌های موقت فعلی
استفاده از متن به عنوان پیام بایگانی موقت
استفاده از نام داده‌شده برای کامیت بایگانی‌شده
-p, --patch
چاپ وصله‌ها برای تغییرات (نام تغییرات بایگانی‌شده را به عنوان آرگومان‌های مکانی مشخص کنید)
-i, --interactive
حالت تعاملی
چاپ خلاصه‌ای از تغییرات به سبک diffstat (نام تغییرات بایگانی‌شده را به عنوان آرگومان‌های مکانی مشخص کنید)
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده

گزینهٔ علامت‌گذاری‌شده با [+] می‌تواند چندین بار مشخص شود.SS status

نمایش فایل‌های تغییریافته در دایرکتوری کاری:

hg status [OPTION]... [FILE]...

نمایش وضعیت فایل‌ها در مخزن. اگر نام‌هایی مشخص شوند، فقط فایل‌های منطبق نمایش داده می‌شوند. فایل‌هایی که بدون تغییر (clean) یا نادیده‌گرفته‌شده (ignored) هستند یا مبدأ یک عملیات رونوشت/انتقال (copy/move) می‌باشند، فهرست نمی‌شوند مگر آنکه -c/--clean، -i/--ignored، -C/--copies یا -A/--all مشخص شده باشند. مگر در صورتی که گزینه‌های توصیف‌شده با «فقط نمایش ...» مشخص شده باشند، گزینه‌های -mardu استفاده می‌شوند.

گزینهٔ -q/--quiet فایل‌های ردگیری‌نشده (ناشناخته و نادیده‌گرفته‌شده) را پنهان می‌کند، مگر اینکه صراحتاً با -u/--unknown یا -i/--ignored درخواست شده باشند.

نکته
hg status ممکن است در صورتی که دسترسی‌ها تغییر کرده باشند یا یک ادغام (merge) رخ داده باشد، با diff ناهمخوان به نظر برسد. قالب استاندارد diff تغییرات دسترسی را گزارش نمی‌کند و diff تنها تغییرات را نسبت به یکی از والدین ادغام گزارش می‌دهد.

اگر یک بازبینی (revision) مشخص شود، به عنوان بازبینی پایه استفاده می‌شود. اگر دو بازبینی مشخص شوند، تفاوت‌های میان آن‌ها نمایش داده می‌شود. گزینهٔ --change نیز می‌تواند به عنوان میان‌بری برای فهرست کردن فایل‌های تغییریافتهٔ یک بازبینی نسبت به نخستین والد آن استفاده شود.

کدهای مورد استفاده برای نمایش وضعیت فایل‌ها عبارتند از:

M = modified (تغییریافته)
A = added (اضافه‌شده)
R = removed (حذف‌شده)
C = clean (بدون تغییر)
! = missing (مفقود - حذف‌شده با دستوری غیر از hg، اما همچنان ردگیری‌شده)
? = not tracked (ردگیری‌نشده)
I = ignored (نادیده‌گرفته‌شده)
  = مبدأ فایل قبلی (همراه با --copies)

گزینهٔ -t/--terse در صورتی که تمام فایل‌های درون یک دایرکتوری وضعیت یکسانی داشته باشند، با نمایش تنها نام دایرکتوری خروجی را خلاصه می‌کند. این گزینه آرگومانی می‌پذیرد که وضعیت‌های مورد نظر برای خلاصه‌سازی را مشخص می‌کند: 'm' برای 'modified' (تغییریافته)، 'a' برای 'added' (اضافه‌شده)، 'r' برای 'removed' (حذف‌شده)، 'd' برای 'deleted' (مفقود)، 'u' برای 'unknown' (ناشناخته)، 'i' برای 'ignored' (نادیده‌گرفته‌شده) و 'c' برای clean (بدون تغییر).

این گزینه تنها وضعیت‌هایی را که مشخص شده‌اند خلاصه می‌کند. توجه داشته باشید که فایل‌های بدون تغییر و نادیده‌گرفته‌شده با '--terse ic' نمایش داده نمی‌شوند مگر آنکه گزینه‌های -c/--clean و -i/--ignored نیز استفاده شده باشند.

گزینهٔ -v/--verbose هنگامی که مخزن در وضعیت ادغام ناتمام، shelve، rebase و غیره باشد، اطلاعات لازم را نمایش می‌دهد. می‌توانید این رفتار را با فعال کردن گزینهٔ commands.status.verbose به صورت پیش‌فرض فعال کنید.

می‌توانید با تنظیم commands.status.skipstates روی یک یا چند مورد از این موارد، از نمایش برخی از این وضعیت‌ها صرف‌نظر کنید: 'bisect'، 'graft'، 'histedit'، 'merge'، 'rebase' یا 'unshelve'.

قالب:

کلیدواژه‌های زیر علاوه بر کلیدواژه‌ها و توابع مشترک قالب پشتیبانی می‌شوند. همچنین ببینید hg help templates.

رشته. مسیر فایل به صورت مطلق نسبت به مخزن.
رشته. مسیر مطلق فایلی در مخزن که این فایل از آن منشعب شده است. در صورت مشخص بودن --copies در دسترس خواهد بود.
رشته. نویسه‌ای که وضعیت فایل را نشان می‌دهد.

مثال‌ها:

  • نمایش تغییرات دایرکتوری کاری نسبت به یک changeset:
    hg status --rev 9353
  • نمایش تغییرات دایرکتوری کاری نسبت به دایرکتوری جاری (برای اطلاعات بیشتر hg help patterns را ببینید):
    hg status re:
  • نمایش تمام تغییرات از جمله رونوشت‌ها در یک changeset موجود:
    hg status --copies --change 9353
  • دریافت فهرستی از فایل‌های اضافه‌شده با جداکنندهٔ NUL، مناسب برای xargs:
    hg status -an0
  • نمایش اطلاعات بیشتر دربارهٔ وضعیت مخزن، با خلاصه‌سازی مسیرهای اضافه‌شده، حذف‌شده، تغییریافته، مفقود و ردگیری‌نشده:
    hg status -v -t mardu

در صورت موفقیت 0 بازمی‌گرداند.

گزینه‌ها:

-A, --all
نمایش وضعیت تمام فایل‌ها
-m, --modified
فقط نمایش فایل‌های تغییریافته
-a, --added
فقط نمایش فایل‌های اضافه‌شده
-r, --removed
فقط نمایش فایل‌های حذف‌شده
-d, --deleted
فقط نمایش فایل‌های مفقود
-c, --clean
فقط نمایش فایل‌های بدون تغییر
-u, --unknown
فقط نمایش فایل‌های ناشناخته (ردگیری‌نشده)
-i, --ignored
فقط نمایش فایل‌های نادیده‌گرفته‌شده
-n, --no-status
پنهان کردن پیشوند وضعیت
نمایش خروجی خلاصه (آزمایشی) (پیش‌فرض: هیچ‌چیز).TP -C, --copies نمایش مبدأ فایل‌های رونوشت‌شده (پیش‌فرض: ui.statuscopies)
-0, --print0
خاتمه دادن نام فایل‌ها با NUL، برای استفاده با xargs
نمایش تفاوت نسبت به بازنگری
فهرست کردن فایل‌های تغییریافته در یک بازنگری
گنجاندن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
پیمایش بازگشتی در مخازن فرعی
نمایش با استفاده از قالب

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد

نام‌های مستعار: st

خلاصه‌سازی وضعیت دایرکتوری کاری:

hg summary [--remote]

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

با گزینهٔ --remote، این دستور مسیرهای پیش‌فرض را برای تغییرات ورودی و خروجی بررسی می‌کند. این عمل ممکن است زمان‌بر باشد.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

بررسی برای push و pull

نام‌های مستعار: sum

بازگردانی یک تغییر بایگانی‌شده (shelved) به دایرکتوری کاری:

hg unshelve [OPTION]... [[-n] SHELVED]

این دستور یک نام اختیاری از تغییر بایگانی‌شده را برای بازگردانی می‌پذیرد. اگر نامی داده نشود، تازه‌ترین تغییر بایگانی‌شده استفاده می‌شود.

اگر یک تغییر بایگانی‌شده با موفقیت اعمال شود، بسته‌ای (bundle) که حاوی تغییرات بایگانی‌شده است به یک مکان پشتیبان (.hg/shelve-backup) منتقل می‌شود.

از آنجا که می‌توانید یک تغییر بایگانی‌شده را روی هر کامیت دلخواهی بازگردانی کنید، ممکن است عملیات unshelve منجر به تداخل (conflict) بین تغییرات شما و کامیت‌هایی شود که روی آن‌ها unshelve می‌کنید. در صورت وقوع این امر، باید تداخل را حل کرده، سپس از --continue برای تکمیل عملیات unshelve استفاده کنید. (بسته تا زمانی که عملیات unshelve را با موفقیت تکمیل نکنید منتقل نخواهد شد.)

(به عنوان جایگزین، می‌توانید از --abort برای لغو عملیات unshelve که منجر به تداخل شده است استفاده کنید. این کار تغییرات بازگردانی‌شده را برمی‌گرداند و بسته را در جای خود باقی می‌گذارد.)

اگر تغییر بایگانی‌شدهٔ خام (بدون گزینه‌های تعاملی، include و exclude) روی شاخه‌ای تازه ایجاد شده انجام گرفته باشد، اطلاعات شاخه را به دایرکتوری کاری بازمی‌گرداند.

پس از یک unshelve موفق، تغییرات بایگانی‌شده در یک دایرکتوری پشتیبان ذخیره می‌شوند. تنها N نسخهٔ پشتیبان اخیر نگهداری می‌شوند. مقدار پیش‌فرض N برابر ۱۰ است اما می‌توان آن را با استفاده از گزینهٔ پیکربندی shelve.maxbackups بازنویسی کرد.

برچسب زمانی بر حسب ثانیه برای تعیین ترتیب نسخه‌های پشتیبان استفاده می‌شود. جهت ایمنی، اگر برچسب زمانی یکسان مانع از تعیین ترتیب دقیق آن‌ها شود، بیش از maxbackups نسخهٔ پشتیبان نگهداری می‌شود.

تغییرات انتخاب‌شده را می‌توان با پرچم --interactive بازگردانی کرد. دایرکتوری کاری با تغییرات انتخاب‌شده به‌روزرسانی می‌شود و تنها تغییرات انتخاب‌نشده به صورت بایگانی‌شده باقی می‌مانند. نکته: کل بایگانی ابتدا قبل از اجرای تعاملی روی دایرکتوری کاری اعمال می‌شود. بنابراین، صرف نظر از اینکه کدام تغییرات unshelve خواهند شد، تمام تداخلات بین دایرکتوری کاری و بایگانی پدیدار خواهند شد.

گزینه‌ها:

-a, --abort
لغو یک عملیات unshelve ناتمام
-c, --continue
ادامه دادن یک عملیات unshelve ناتمام
-i, --interactive
استفاده از حالت تعاملی (آزمایشی)
-k, --keep
نگهداری بایگانی پس از بازگردانی (unshelve)
بازگردانی تغییر بایگانی‌شده با نام داده‌شده
مشخص کردن ابزار ادغام (merge)
تنظیم تاریخ برای کامیت‌های موقت (منسوخ‌شده)

به‌روزرسانی دایرکتوری کاری (یا تعویض بازبینی‌ها):

hg update [-C|-c|-m] [-d DATE] [[-r] REV]

دایرکتوری کاری مخزن را به مجموعه تغییرات (changeset) مشخص‌شده به‌روزرسانی می‌کند. اگر هیچ مجموعه تغییراتی مشخص نشود، به نوک (tip) شاخهٔ نام‌گذاری‌شدهٔ فعلی به‌روزرسانی شده و نشانک (bookmark) فعال منتقل می‌شود (ببینید: hg help bookmarks).

دستور update بازبینی والد دایرکتوری کاری را روی مجموعه تغییرات مشخص‌شده تنظیم می‌کند (ببینید: hg help parents).

اگر مجموعه تغییرات مشخص‌شده از نوادگان یا اجداد والدِ دایرکتوری کاری نباشد و تغییرات ثبت‌نشده‌ای وجود داشته باشد، عملیات به‌روزرسانی لغو می‌شود. با گزینهٔ -c/--check، دایرکتوری کاری برای وجود تغییرات ثبت‌نشده بررسی می‌شود؛ اگر موردی یافت نشود، دایرکتوری کاری به مجموعه تغییرات مشخص‌شده به‌روزرسانی می‌گردد.

گزینه‌های -C/--clean، -c/--check و -m/--merge کنترل می‌کنند که در صورت وجود تغییرات ثبت‌نشده در دایرکتوری کاری چه اتفاقی رخ دهد. در هر بار حداکثر یکی از آن‌ها را می‌توان مشخص کرد.

1.
اگر هیچ گزینه‌ای مشخص نشده باشد، و مجموعه تغییرات درخواستی از اجداد یا نوادگان والدِ دایرکتوری کاری باشد، تغییرات ثبت‌نشده در مجموعه تغییرات درخواستی ادغام (merge) شده و نتیجه ادغام به‌صورت ثبت‌نشده باقی می‌ماند. اگر مجموعه تغییرات درخواستی از اجداد یا نوادگان نباشد (یعنی در شاخهٔ دیگری باشد)، عملیات به‌روزرسانی لغو شده و تغییرات ثبت‌نشده حفظ می‌شوند.
2.
با گزینهٔ -m/--merge، عملیات به‌روزرسانی مجاز خواهد بود حتی اگر مجموعه تغییرات درخواستی از اجداد یا نوادگان والدِ دایرکتوری کاری نباشد.
3.
با گزینهٔ -c/--check، عملیات به‌روزرسانی لغو شده و تغییرات ثبت‌نشده حفظ می‌شوند.
4.
با گزینهٔ -C/--clean، تغییرات ثبت‌نشده دور ریخته شده و دایرکتوری کاری به مجموعه تغییرات درخواستی به‌روزرسانی می‌شود.

برای لغو یک ادغام ثبت‌نشده (و از دست دادن تغییرات خود)، از hg merge --abort استفاده کنید.

از null به‌عنوان changeset برای خالی کردن دایرکتوری کاری استفاده کنید (مانند hg clone -U).

اگر می‌خواهید فقط یک فایل را به بازبینی قدیمی‌تری بازگردانید، از hg revert [-r REV] NAME استفاده کنید.

برای دیدن فهرستی از قالب‌های معتبر برای -d/--date، به hg help dates مراجعه کنید.

در صورت موفقیت 0، و در صورت وجود فایل‌های حل‌نشده 1 برمی‌گرداند.

گزینه‌ها:

دور ریختن تغییرات ثبت‌نشده (بدون نسخهٔ پشتیبان)
-c, --check
الزام به تمیز بودن دایرکتوری کاری
-m, --merge
ادغام تغییرات ثبت‌نشده
تازه‌ترین بازبینی مطابق با تاریخ
بازبینی
تعیین ابزار ادغام (merge)

نام‌های مستعار: up checkout co

ایجاد یک بایگانی فاقد نسخه‌بندی از یک بازبینی مخزن:

hg archive [OPTION]... DEST

به‌طور پیش‌فرض، بازبینی استفاده‌شده والد دایرکتوری کاری است؛ برای تعیین یک بازبینی متفاوت از -r/--rev استفاده کنید.

نوع بایگانی به‌طور خودکار بر اساس پسوند فایل تشخیص داده می‌شود (برای تعیین دستی، از -t/--type استفاده کنید).

مثال‌ها:

  • ایجاد یک فایل zip شامل انتشار 1.0:
    hg archive -r 1.0 project-1.0.zip
  • ایجاد یک tarball به‌استثنای فایل‌های .hg:
    hg archive project.tar.gz -X ".hg*"

انواع معتبر عبارتند از:

files

یک دایرکتوری پر از فایل (پیش‌فرض)

بایگانی tar، فشرده‌نشده

بایگانی tar، فشرده‌شده با bzip2

بایگانی tar، فشرده‌شده با gzip

بایگانی tar، فشرده‌شده با lzma (تنها در Python 3)

بایگانی zip، فشرده‌نشده

بایگانی zip، فشرده‌شده با deflate

نام دقیق بایگانی یا دایرکتوری مقصد با استفاده از یک رشته قالب مشخص می‌شود؛ برای جزئیات به hg help export مراجعه کنید.

به ابتدای نام هر عضوی که به فایل بایگانی افزوده می‌شود، یک پیشوند دایرکتوری اضافه می‌گردد. برای مشخص کردن یک رشته قالب برای پیشوند، از -p/--prefix استفاده کنید. پیش‌فرض، نام پایه (basename) بایگانی با حذف پسوندها است.

در صورت موفقیت، 0 برمی‌گرداند.

گزینه‌ها:

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

گزینه علامت‌گذاری‌شده با [+] می‌تواند چندین بار مشخص شود.SS bundle

ایجاد یک فایل بسته (bundle):

hg bundle [-f] [-t BUNDLESPEC] [-a] [-r REV]... [--base REV]... FILE [DEST]...

تولید یک فایل بسته (bundle) حاوی داده‌هایی که قرار است به مخزن دیگری منتقل شوند.

برای ایجاد بسته‌ای شامل تمام مجموعه‌تغییرها (changesets)، از -a/--all (یا --base null) استفاده کنید. در غیر این صورت، hg فرض می‌کند که مقصد تمام گره‌های مشخص‌شده با پارامترهای --base را دارد. در غیر این حالت، hg فرض خواهد کرد که مخزن حاوی تمام گره‌های موجود در مقصد است، یا default-push/default اگر مقصدی مشخص نشده باشد، که در آن مقصد همان مخازنی است که از طریق آرگومان DEST مشخص می‌کنید.

می‌توانید قالب بسته را با گزینهٔ -t/--type تغییر دهید. برای مستندات مربوط به این قالب، hg help bundlespec را ببینید. به‌طور پیش‌فرض، مناسب‌ترین قالب استفاده می‌شود و فشرده‌سازی نیز به‌طور پیش‌فرض بر روی bzip2 تنظیم شده است.

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

اعمال بسته‌ها تمام محتویات مجموعه‌تغییر از جمله مجوزها، اطلاعات رونوشت/تغییر نام و تاریخچهٔ بازبینی‌ها را حفظ می‌کند.

در صورت موفقیت 0، و اگر تغییری یافت نشود 1 را برمی‌گرداند.

گزینه‌ها:

محاسبهٔ پایه از بازبینی مشخص‌شده
-f, --force
اجرا حتی در صورتی که مقصد غیرمرتبط باشد
مجموعه‌تغییری که قصد اضافه کردن آن به مقصد وجود دارد
شاخهٔ مشخصی که می‌خواهید بسته‌بندی کنید
مجموعه‌تغییر پایه‌ای که فرض می‌شود در مقصد موجود است
-a, --all
بسته‌بندی تمام مجموعه‌تغییرها در مخزن
نوع فشرده‌سازی بسته جهت استفاده (پیش‌فرض: bzip2)
مشخص کردن دستور ssh جهت استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست (remote)
عدم اعتبارسنجی گواهی سرور (نادیده‌گرفتن پیکربندی web.cacerts)

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد.SS export

تخلیه سرآیند و diffها برای یک یا چند changeset:

hg export [OPTION]... [-o OUTFILESPEC] [-r] [REV]...

چاپ سرآیند changeset و diffها برای یک یا چند بازنگری (revision). اگر هیچ بازنگری‌ای مشخص نشود، والد دایرکتوری کاری استفاده می‌شود.

اطلاعات نشان‌داده‌شده در سرآیند changeset عبارتند از: نویسنده، تاریخ، نام شاخه (در صورت غیرپیش‌فرض بودن)، هش changeset، والد(ها) و توضیحات ثبت (commit).

نکته
hg export ممکن است برای changesetهای ادغام (merge) خروجی diff غیرمنتظره‌ای تولید کند، زیرا changeset ادغام را تنها با نخستین والد آن مقایسه خواهد کرد.

خروجی می‌تواند درون یک فایل نوشته شود، که در این حالت نام فایل با استفاده از یک رشته الگو (template) مشخص می‌شود. hg help templates را ببینید. علاوه بر کلیدواژه‌های رایج الگو، قواعد قالب‌بندی زیر نیز پشتیبانی می‌شوند:

%%

نویسه لفظی "%"

%H

هش changeset (۴۰ رقم هگزادسیمال)

%N

تعداد وصله‌های در حال تولید

%R

شماره بازنگری changeset

%b

نام پایه (basename) مخزن برون‌بری‌کننده

%h

شکل کوتاه هش changeset (۱۲ رقم هگزادسیمال)

%m

نخستین سطر پیام ثبت (فقط نویسه‌های الفبایی-عددی)

%n

شماره توالی پر شده با صفر، شروع از ۱

%r

شماره بازنگری changeset پر شده با صفر

\

نویسه لفظی ""

بدون گزینه -a/--text، دستور export از تولید diff برای فایل‌هایی که باینری تشخیص دهد خودداری می‌کند. با -a، دستور export در هر صورت یک diff تولید خواهد کرد، احتمالاً با نتایجی نامطلوب.

با -B/--bookmark، changesetهای قابل دسترس توسط نشانک (bookmark) داده‌شده انتخاب می‌شوند.

از گزینه -g/--git برای تولید diffها در قالب diff گسترش‌یافته git استفاده کنید. برای اطلاعات بیشتر hg help diffs را ببینید.

با گزینه --switch-parent، مقایسه (diff) در برابر والد دوم انجام خواهد شد. این گزینه می‌تواند برای بازبینی یک ادغام مفید باشد.

الگو (Template):

کلیدواژه‌های زیر علاوه بر کلیدواژه‌ها و توابع رایج الگو پشتیبانی می‌شوند. همچنین hg help templates را ببینید.

رشته (String). محتوای diff.
فهرستی از رشته‌ها (List of strings). گره‌های والد changeset.

مثال‌ها:

  • استفاده از export و import برای انتقال (transplant) یک رفع‌باگ به شاخه جاری:
    hg export -r 9353 | hg import -
  • برون‌بری همه changesetهای میان دو بازنگری به یک فایل همراه با اطلاعات تغییرنام:
    hg export --git -r 123:150 > changes.txt
  • تقسیم تغییرات ارسالی (outgoing) به یک سری وصله با نام‌های توصیفی:
    hg export -r "outgoing()" -o "%n-%m.patch"

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

برون‌بری تغییراتی که تنها از طریق نشانک داده‌شده در دسترس هستند
چاپ خروجی درون فایل با نام قالب‌بندی‌شده
تولید diff در برابر والد دوم
بازنگری‌ها برای برون‌بری
-a, --text
در نظر گرفتن همه فایل‌ها به عنوان متنی
استفاده از قالب diff گسترش‌یافته git (پیش‌فرض: diff.git)
تولید diffهای باینری در حالت git (پیش‌فرض)
حذف تاریخ‌ها از سرآیندهای diff
نمایش با الگو

گزینه علامت‌گذاری‌شده با [+] می‌تواند چندین بار مشخص شود.SS import

وارد کردن مجموعه‌ای مرتب از وصله‌ها:

hg import [OPTION]... PATCH...

فهرستی از وصله‌ها را وارد کرده و آن‌ها را به‌صورت تک‌تک کامیت می‌کند (مگر اینکه --no-commit مشخص شده باشد).

برای خواندن یک وصله از ورودی استاندارد (stdin)، از «-» به‌عنوان نام وصله استفاده کنید. اگر یک URL مشخص شده باشد، وصله از آنجا بارگیری خواهد شد.

دستور import ابتدا تغییرات را روی دایرکتوری کاری اعمال می‌کند (مگر اینکه --bypass مشخص شده باشد)؛ اگر تغییرات معلق و اعمال‌نشده‌ای وجود داشته باشد، عملیات import متوقف خواهد شد.

از --bypass برای اعمال و ثبت (commit) مستقیم وصله‌ها در مخزن، بدون دستکاری دایرکتوری کاری استفاده کنید. بدون --exact، وصله‌ها بر روی بازبینی والد دایرکتوری کاری اعمال خواهند شد.

شما می‌توانید یک وصله را مستقیماً از یک پیام ایمیل وارد کنید. حتی وصله‌های پیوست‌شده نیز کار می‌کنند (برای استفاده از بخش بدنه، نوع آن باید text/plain یا text/x-patch باشد). هدرهای From و Subject در پیام ایمیل به‌عنوان ثبت‌کننده و پیام کامیت پیش‌فرض استفاده می‌شوند. تمامی بخش‌های متن ساده (text/plain) در بدنه، قبل از اولین diff، به پیام کامیت اضافه می‌شوند.

اگر وصله واردشده توسط hg export ایجاد شده باشد، کاربر و توضیحات موجود در وصله بر مقادیر هدرها و بدنه پیام اولویت دارند. مقادیری که در خط فرمان با -m/--message و -u/--user مشخص می‌شوند، این مقادیر را بازنویسی می‌کنند.

اگر --exact مشخص شده باشد، import قبل از اعمال هر وصله، دایرکتوری کاری را روی والد آن وصله تنظیم می‌کند و در صورتی که changeset حاصل شناسه‌ای متفاوت از شناسه ثبت‌شده در وصله داشته باشد، عملیات متوقف می‌شود. این کار در برابر حالت‌های گوناگونی که قالب‌های قابل‌حمل وصله و سامانه‌های ایمیل ممکن است در انتقال داده‌ها یا متاداده‌های Mercurial با خطا مواجه شوند محافظت می‌کند. برای انتقال بدون اتلاف داده، به hg bundle مراجعه کنید.

از --partial استفاده کنید تا مطمئن شوید که حتی در صورت عدم اعمال برخی قطعات (hunks)، یک changeset از وصله ایجاد می‌شود. قطعاتی که اعمال آن‌ها با شکست مواجه شود در یک فایل <target-file>.rej نوشته می‌شوند. سپس می‌توان تعارض‌ها را پیش از اجرای hg commit --amend جهت به‌روزرسانی changeset ایجادشده، به‌صورت دستی حل کرد. این پرچم برای این تعبیه شده تا کاربران بتوانند وصله‌هایی را که به‌صورت جزئی اعمال می‌شوند بدون از دست دادن متاداده‌های مرتبط (نویسنده، تاریخ، توضیحات و...) وارد کنند.

نکته
هنگامی که هیچ قطعه‌ای به‌صورت تمیز اعمال نشود، hg import --partial یک changeset خالی ایجاد کرده و فقط متاداده‌های وصله را وارد می‌کند.

با استفاده از -s/--similarity، دستور hg تلاش خواهد کرد تغییر نام‌ها و رونوشت‌ها را در وصله درست همانند hg addremove شناسایی کند.

استفاده از برنامه‌های خارجی patch برای اعمال وصله با تنظیم گزینه پیکربندی ui.patch امکان‌پذیر است. برای ابزار داخلی پیش‌فرض، میزان تقریب (fuzz) را می‌توان از طریق patch.fuzz پیکربندی کرد. برای اطلاعات بیشتر درباره فایل‌های پیکربندی و نحوه استفاده از این گزینه‌ها، به hg help config مراجعه کنید.

برای فهرستی از قالب‌های معتبر برای -d/--date، به hg help dates مراجعه کنید.

مثال‌ها:

  • وارد کردن یک وصله سنتی از یک وب‌سایت و تشخیص تغییر نام‌ها:
    hg import -s 80 http://example.com/bugfix.patch
  • وارد کردن یک changeset از یک سرور hgweb:
    hg import https://www.mercurial-scm.org/repo/hg/rev/5ca8c111e9aa
  • وارد کردن تمام وصله‌های موجود در یک فایل mbox به سبک Unix:
    hg import incoming-patches.mbox
  • وارد کردن وصله‌ها از stdin:
    hg import -
  • تلاش برای بازیابی دقیق یک changeset صادرشده (همیشه امکان‌پذیر نیست):
    hg import --exact proposed-fix.patch
  • استفاده از یک ابزار خارجی برای اعمال وصله‌ای که برای ابزار داخلی پیش‌فرض بیش از حد تقریبی (fuzzy) است:

hg import --config ui.patch="patch --merge" fuzzy.patch

•
تغییر مقدار تقریب (fuzzing) پیش‌فرض از 2 به مقدار آسان‌گیرانه‌ترِ 7:

hg import --config ui.fuzz=7 fuzz.patch

در صورت موفقیت 0، و در صورت موفقیت جزئی 1 را بازمی‌گرداند (به --partial مراجعه کنید).

گزینه‌ها:

گزینه حذف مسیر دایرکتوری (strip) برای patch. این گزینه معنایی یکسان با گزینه متناظر در دستور patch دارد (پیش‌فرض: 1)
مسیر پایه (منسوخ‌شده)
استفاده از فاز محرمانه (secret) برای کامیت کردن
-e, --edit
فراخوانی ویرایشگر متن برای ویرایش پیام‌های کامیت
-f, --force
صرف‌نظر کردن از بررسی تغییرات معلق و کامیت‌نشده (منسوخ‌شده)
کامیت نکردن، تنها به‌روزرسانی دایرکتوری کاری
اعمال وصله بدون تغییر دادن دایرکتوری کاری
کامیت کردن حتی در صورت شکست در اعمال برخی قطعات (hunks)
لغو عملیات در صورتی که وصله همراه با اتلاف داده اعمال شود
اعمال وصله بر روی یک زیردایرکتوری.TP --import-branch استفاده از تمام اطلاعات شاخه در وصله (به صورت ضمنی با --exact اعمال می‌شود)
استفاده از متن به عنوان پیام کامیت
خواندن پیام کامیت از فایل
ثبت تاریخ مشخص‌شده به عنوان تاریخ کامیت
ثبت کاربر مشخص‌شده به عنوان کامیت‌کننده
حدس زدن فایل‌های تغییرنام‌یافته بر اساس شباهت (0<=s<=100)

نام‌های مستعار: patch

اعمال یک یا چند فایل بسته (bundle):

hg unbundle [-u] FILE...

اعمال یک یا چند فایل بسته تولیدشده توسط hg bundle.

در صورت موفقیت 0، و اگر یک به‌روزرسانی فایل‌های حل‌نشده داشته باشد 1 را برمی‌گرداند.

گزینه‌ها:

-u, --update
در صورت باز شدن بسته‌های مجموعه تغییرات (changesets)، به سرشاخه (head) جدید به‌روزرسانی می‌کند

ابزارهای مدیریت کلاینت مرتبط با narrow. (آزمایشی):

hg admin::narrow-client

این دستور آزمایشی است و در معرض تغییر قرار دارد.

گزینه‌ها:

دریافت اثرانگشت (fingerprint) برای narrowspec ذخیره‌سازی این مخزن

ابزارهای مدیریت سرور مرتبط با narrow. (آزمایشی):

hg admin::narrow-server

این دستور آزمایشی است و در معرض تغییر قرار دارد.

گزینه‌ها:

فهرست کردن اثرانگشت (fingerprint) برای هر شکل (shape)
فهرست کردن الگوهای مسیر برای شکل داده‌شده
فهرست کردن الگوهای قدیمی به سبک narrow برای شکل داده‌شده
فهرست کردن فایل‌های پوشش‌داده‌شده توسط شکل داده‌شده
فهرست کردن فایل‌های این شکل که در رونوشت کاری (working copy) قرار ندارند
نمایش بر اساس الگو (template)

بررسی یکپارچگی مخزن:

hg admin::verify

رابط کاربری جایگزین برای hg verify با کنترل بسیار بیشتر بر فرآیند اعتبارسنجی و گزارش‌دهی خطای بهتر.

گزینه‌ها:

افزودن یک بررسی
ارسال یک گزینه به بررسی

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد

نمایش مانیفست پروژه در بازبینی (revision) جاری یا مشخص‌شده:

hg manifest [-r REV]

چاپ فهرستی از فایل‌های تحت کنترل نسخه برای بازبینی مشخص‌شده. اگر بازبینی مشخص نشود، اولین والد دایرکتوری کاری استفاده می‌شود، یا در صورتی که هیچ بازبینی واکشی (check out) نشده باشد، از بازبینی تهی (null) استفاده خواهد شد.

با گزینه -v، مجوزهای فایل، پیوندهای نمادین (symlinks) و بیت‌های اجرایی چاپ می‌شوند. با گزینه --debug، هَش‌های بازبینی فایل چاپ می‌شوند.

اگر گزینه --all مشخص شود، فهرست تمام فایل‌ها از تمام بازبینی‌ها چاپ خواهد شد. این شامل فایل‌های حذف‌شده و تغییرنام‌یافته نیز می‌شود.

در صورت موفقیت، مقدار ۰ را برمی‌گرداند.

گزینه‌ها:

بازبینی جهت نمایش
فهرست کردن فایل‌ها از تمام بازبینی‌ها
نمایش به همراه الگو (template)

بازگردانی یک تراکنش قطع‌شده (ناتمام):

hg recover

بازیابی از یک commit یا pull ناتمام و قطع‌شده.

این دستور تلاش می‌کند وضعیت مخزن را پس از یک عملیات ناتمام اصلاح کند. تنها زمانی باید از آن استفاده کرد که Mercurial آن را پیشنهاد دهد.

در صورت موفقیت ۰، و در صورتی که چیزی برای بازیابی نباشد یا verify شکست بخورد، ۱ را برمی‌گرداند.

گزینه‌ها:

اجرای hg verify پس از بازیابی موفقیت‌آمیز

بازگردانی آخرین تراکنش (خطرناک) (منسوخ‌شده):

hg rollback

لطفاً برای تصحیح اشتباهات در آخرین commit به‌جای rollback از hg commit --amend استفاده کنید.

این دستور باید با احتیاط استفاده شود. تنها یک سطح از rollback وجود دارد و هیچ راهی برای واگردانی یک rollback نیست. این دستور همچنین dirstate را به وضعیت زمان آخرین تراکنش بازمی‌گرداند و هرگونه تغییر در dirstate از آن زمان تاکنون از بین می‌رود. این دستور دایرکتوری کاری را تغییر نمی‌دهد.

تراکنش‌ها برای کپسوله‌سازی اثرات تمام دستوراتی به کار می‌روند که changesetهای جدید ایجاد کرده یا changesetهای موجود را به یک مخزن منتقل می‌کنند.

برای مثال، دستورهای زیر تراکنشی هستند و اثرات آن‌ها می‌تواند بازگردانده شود:

  • commit
  • import
  • pull
  • push (با این مخزن به‌عنوان مقصد)
  • unbundle

برای جلوگیری از دست رفتن دائمی داده‌ها، اگر تراکنش commit بررسی (check out) نشده باشد، rollback از بازگردانی آن خودداری می‌کند. برای نادیده‌گرفتن این محافظت از --force استفاده کنید.

دستور rollback را می‌توان با تنظیم پیکربندی ui.rollback روی false به‌طور کامل غیرفعال کرد. اگر به این دلیل اینجا هستید که می‌خواهید از rollback استفاده کنید و غیرفعال است، می‌توانید با تنظیم ui.rollback روی true دوباره آن را فعال کنید.

این دستور برای استفاده در مخازن عمومی در نظر گرفته نشده است. به محض اینکه تغییرات برای pull شدن توسط سایر کاربران قابل مشاهده باشد، بازگرداندن محلی تراکنش بی‌اثر خواهد بود (ممکن است فرد دیگری از قبل تغییرات را pull کرده باشد). علاوه‌بر این، امکان تداخل و رقابت (race) با خوانندگان مخزن وجود دارد؛ برای مثال اگر یک rollback اجرا شود، ممکن است عملیات pull در حال انجام از مخزن با شکست مواجه شود.

در صورت موفقیت 0، و در صورتی که داده‌ای برای rollback در دسترس نباشد 1 برمی‌گرداند.

گزینه‌ها:

-n, --dry-run
اقدامات را انجام نده، فقط خروجی را چاپ کن
-f, --force
نادیده‌گرفتن اقدامات ایمنی

بررسی صحت و یکپارچگی مخزن:

hg verify

بررسی صحت و یکپارچگی مخزن جاری.

این دستور یک بررسی جامع از یکپارچگی مخزن انجام می‌دهد و درهم‌سازها (hashes) و چکسام‌های هر مدخل در changelog، manifest و فایل‌های ردیابی‌شده، و همچنین یکپارچگی ارجاعات متقابل (crosslinks) و شاخص‌های آن‌ها را اعتبارسنجی می‌کند.

لطفاً برای اطلاعات بیشتر دربارهٔ بازیابی از خرابی مخزن، https://mercurial-scm.org/wiki/RepositoryCorruption را ببینید.

برای یک رابط کاربری جایگزین با کنترل بسیار بیشتر روی فرایند اعتبارسنجی و گزارش خطای بهتر، hg help admin::verify را امتحان کنید.

در صورت موفقیت 0، و در صورت مواجهه با خطا 1 برمی‌گرداند.

گزینه‌ها:

انجام بررسی‌های بیشتر (آزمایشی)

نمایش تنظیمات پیکربندی ادغام‌شده از تمام فایل‌های hgrc:

hg config [-u] [NAME]...

بدون هیچ آرگومانی، نام‌ها و مقادیر تمام موارد پیکربندی چاپ می‌شود.

با یک آرگومان به شکل section.name، تنها مقدار آن مورد پیکربندی چاپ می‌شود.

با چندین آرگومان، نام‌ها و مقادیر تمام موارد پیکربندی که با نام‌های بخش یا section.name مطابقت دارند، چاپ می‌شود.

با --edit، یک ویرایشگر روی فایل پیکربندی در سطح کاربر باز می‌شود. با --global، فایل پیکربندی سراسری سیستم ویرایش می‌شود. با --local، فایل پیکربندی در سطح مخزن ویرایش می‌شود.

با --source، منبع (نام فایل و شماره خط) برای هر مورد پیکربندی چاپ می‌شود.

برای اطلاعات بیشتر درباره فایل‌های پیکربندی، hg help config را ببینید.

پرچم --non-shared برای ویرایش فایل پیکربندی .hg/hgrc-not-shared به کار می‌رود. این فایل در حالت share-safe میان اشتراک‌ها به اشتراک گذاشته نمی‌شود.

قالب (Template):

کلیدواژه‌های زیر پشتیبانی می‌شوند. همچنین hg help templates را ببینید.

رشته (String). نام پیکربندی.
رشته (String). نام فایل و شماره خطی که مورد در آن تعریف شده است.
رشته (String). مقدار پیکربندی.

پرچم --shared می‌تواند برای ویرایش فایل پیکربندی مخزن مبدأ اشتراکی استفاده شود. این پرچم تنها زمانی کار می‌کند که با استفاده از ویژگی آزمایشی share safe اشتراک‌گذاری انجام داده باشید.

در صورت موفقیت 0، و در صورتی که NAME وجود نداشته باشد 1 را برمی‌گرداند.

گزینه‌ها:

-u, --untrusted
نمایش گزینه‌های پیکربندی غیرقابل‌اعتماد
نمایش تمام گزینه‌های پیکربندی شناخته‌شده (آزمایشی)
-e, --edit
ویرایش پیکربندی کاربر
-l, --local
ویرایش پیکربندی مخزن
نمایش منبع مقدار پیکربندی
ویرایش پیکربندی مخزن مبدأ اشتراکی
ویرایش پیکربندی غیرمشترک
ویرایش پیکربندی سراسری
نمایش با استفاده از قالب

نام‌های مستعار: showconfig debugconfig

نمایش راهنما برای یک موضوع مشخص یا یک نمای کلی از راهنما:

hg help [-eck] [-s PLATFORM] [TOPIC]

بدون هیچ آرگومانی، فهرستی از دستورها را به همراه پیام‌های راهنمای کوتاه چاپ می‌کند.

با مشخص کردن یک موضوع، افزونه یا نام دستور، راهنمای مربوط به آن موضوع چاپ می‌شود.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-e, --extension
تنها نمایش راهنمای مربوط به افزونه‌ها
-c, --command
تنها نمایش راهنمای مربوط به دستورها
-k, --keyword
نمایش موضوعات منطبق با کلیدواژه
نمایش راهنما برای پلتفرم(های) مشخص

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد

نمایش اطلاعات نگارش و حق‌نشر:

hg version

قالب:

کلیدواژه‌های زیر پشتیبانی می‌شوند. همچنین ببینید: hg help templates.

فهرست افزونه‌ها.
رشته. شماره نگارش.

و هر مدخل از {extensions} افزون بر {ver} زیرکلیدواژه‌های زیر را فراهم می‌کند.

بولی (Boolean). درست (True) در صورتی که در این انتشار گنجانده شده باشد.
رشته. نام افزونه.

گزینه‌ها:

نمایش با استفاده از قالب

دریافت و به‌روزرسانی به یک بازبینی مشخص، تحت هر شرایطی، (آزمایشی):

hg admin::chainsaw-update [OPTION] --rev REV --source SOURCE --dest DEST

زمینهٔ کاربرد: برخی سیستم‌های ادغام مداوم (CI)، ابزارهای بسته‌بندی یا استقرار.

نتیجهٔ نهایی مطلوب: مخزن محلی در REPO_PATH مشخص‌شده، دارای آخرین تغییرات تا بازبینی داده‌شده و با یک دایرکتوری کاری تمیز و به‌روزرسانی‌شده به بازبینی مورد نظر.

دستور chainsaw-update از یک مبدأ دریافت (pull) می‌کند، سپس دایرکتوری کاری را به بازبینی مشخص‌شده به‌روزرسانی می‌نماید و بر هر مانعی که بر سر راه باشد فائق می‌آید.

به‌طور پیش‌فرض، این دستور موارد زیر را انجام می‌دهد:

  • اگر مخزن محلی هنوز وجود نداشته باشد، آن را کلون می‌کند و هر دایرکتوری را در مسیر داده‌شده که یک مخزن Mercurial نباشد حذف می‌نماید. کلون اولیه به‌طور پیش‌فرض کامل است تا بتوان clonebundles را اعمال کرد. برای جلوگیری از این کار از پرچم --initial-clone-minimal استفاده کنید.
  • در صورت نیاز قفل‌ها را می‌شکند، که در صورت دسترسی هم‌زمان برای نوشتن ممکن است منجر به خرابی داده‌ها شود.
  • در صورت نیاز عملیات بازیابی (recovery) را انجام می‌دهد.
  • هرگونه تغییرات محلی را بازگردانی (revert) می‌کند.
  • فایل‌های ناشناخته و نادیده‌گرفته‌شده را پاک‌سازی (purge) می‌کند.
  • در صورتی که سایر روش‌ها با شکست مواجه شوند، تا مرز کلون مجدد پیش می‌رود (هنوز پیاده‌سازی نشده است).

از این دستور برای هیچ کاری جز انجام یک سری به‌روزرسانی‌های خودکار (بدون نظارت)، با دسترسی انحصاری کامل به مخزن در هر بار و بدون هیچ کار محلی دیگر جز اجرای اسکریپت‌های ساخت (build)، استفاده نکنید. در صورتی که مخزن محلی یک اشتراک باشد (رجوع کنید به hg help share)، دسترسی نوشتن انحصاری به مبدأ اشتراک نیز الزامی است.

توصیه می‌شود این دستورها با متغیر محیطی HGPLAIN اجرا شوند (رجوع کنید به hg scripting).

انگیزه: در سیستم‌های ادغام و تحویل مداوم (CI/CD)، قفل‌های ساختگی یا باقی‌مانده از منابع رایج اتلاف وقت (هم زمان کاری و هم زمان تقویمی) هستند. اسکریپت‌های CI/CD تمایل دارند با اقدامات متقابل، که اغلب در شرایط اضطراری ایجاد می‌شوند، گسترش یافته و حجیم شوند. همچنین، با این‌که نگه‌داشتن مخازن از یک وظیفه (job) به وظیفهٔ بعدی ایده‌آل است (به‌ویژه برای مخازن بزرگ)، انجام یک کلون مجدد استثنایی بسیار بهتر از دست دادن مهلت انتشار است.

گزینه‌ها:

--purge-unknown
حذف فایل‌های نسخه‌بندی‌نشده پیش از به‌روزرسانی. غیرفعال کردن این گزینه در برخی موارد می‌تواند با به‌روزرسانی تداخل ایجاد کند. همچنین رجوع کنید به hg purge. (پیش‌فرض: True)
--purge-ignored
حذف فایل‌های نادیده‌گرفته‌شده پیش از به‌روزرسانی. برای نمونه جهت استفادهٔ مجدد از فایل‌های شیء کامپایلر (compiler object files) قبلی، این گزینه را غیرفعال کنید. همچنین رجوع کنید به hg purge. (پیش‌فرض: True)
بازبینی مورد نظر برای به‌روزرسانی به آن
مخزن مبدأ برای کلون کردن از آن
مخزن مقصد برای به‌روزرسانی به REV (احتمالاً همراه با کلون کردن)
فقط بازبینی تعیین‌شده را در هنگام کلون اولیه دریافت (pull) می‌کند. این امر اثر جانبی نادیده‌گرفتن clone-bundles را دارد که اغلب در سمت کلاینت کُندتر بوده و نسبت به اعمال بسته‌های کلون موجود، بار بیشتری به سرور تحمیل می‌کند.

نرم‌افزار Mercurial از تولید فایل‌های مستقل «باندل» (bundle) که حاوی داده‌های مخزن هستند پشتیبانی می‌کند. این «باندل‌ها» معمولاً به‌طور محلی ذخیره شده و بعداً مورد استفاده قرار می‌گیرند یا میان مخازن مختلف، احتمالاً در ماشین‌های متفاوت، تبادل می‌شوند. دستورهای نمونه‌ای که از باندل‌ها استفاده می‌کنند hg bundle و hg unbundle هستند.

تولید فایل‌های باندل توسط یک رشتهٔ «مشخصات باندل» («bundlespec») کنترل می‌شود. این رشته به فرایند تولید باندل مشخص می‌کند که چگونه باندل را ایجاد کند.

یک رشتهٔ «bundlespec» از عناصر زیر تشکیل شده است:

رشته‌ای که مشخص‌کنندهٔ قالب باندلِ مورد استفاده است.
موتور فشرده‌سازی مورد استفاده برای فشرده‌سازی داده‌های خام باندل را مشخص می‌کند.
پارامترهای کلید-مقدار دلخواه برای کنترل بیشتر فرایند تولید باندل.

یک رشتهٔ «bundlespec» دارای قالب‌های زیر است:

<type>
رشتهٔ دقیق و بدون تغییرِ قالب باندل استفاده می‌شود.
<compression>-<type>
موتور فشرده‌سازی و قالب توسط یک خط پیوند (-) از یکدیگر جدا می‌شوند.

پارامترهای اختیاری پس از <type> قرار می‌گیرند. پارامترها جفت‌های key=value هستند که با سازوکار URI گریزدهی شده‌اند (URI escaped). هر جفت با یک نقطه‌ویرگول (;) جدا می‌شود. نخستین پارامتر پس از یک ; بلافاصله به دنبال مقدار <type> آغاز می‌شود.

رشته‌های <type> زیر برای باندل در دسترس هستند:

یک باندل سنتی «changegroup» نسخهٔ ۱ تولید می‌کند.

این قالب تقریباً با تمام کلاینت‌های Mercurial سازگار است زیرا قدیمی‌ترین نسخه محسوب می‌شود. با این حال، محدودیت‌هایی دارد و به همین دلیل دیگر برای مخازن جدید گزینهٔ پیش‌فرض نیست.

باندل‌های v1 را می‌توان در مخازن مدرنی که از قالب ذخیره‌سازی «generaldelta» استفاده می‌کنند به کار برد. با این حال، ممکن است تولید باندل زمان بیشتری برده و باندل حاصل به طور چشمگیری بزرگ‌تر از یک باندل v2 باشد.

باندل‌های v1 تنها می‌توانند از قالب‌های فشرده‌سازی gzip، bzip2 و none استفاده کنند.

یک باندل نسخهٔ ۲ تولید می‌کند.

باندل‌های نسخهٔ ۲ قالبی توسعه‌پذیر هستند که می‌توانند داده‌های بیشتری از مخزن (مانند اطلاعات bookmarkها و فازها) را ذخیره کنند و همچنین داده‌ها را بهینه‌تر ذخیره نمایند که در نتیجه باندل‌های کوچک‌تری تولید می‌شود.

باندل‌های نسخهٔ ۲ همچنین می‌توانند از موتورهای فشرده‌سازی مدرن نظیر zstd استفاده کنند که عملیات فشرده‌سازی را سریع‌تر و حجم خروجی را اغلب کوچک‌تر می‌سازد.

موتورهای <compression> زیر برای باندل قابل استفاده هستند:

الگوریتمی که نسبت به gzip باندل‌های کوچک‌تری تولید می‌کند.

تمام کلاینت‌های Mercurial باید از این قالب پشتیبانی کنند.

این موتور احتمالاً باندل‌های کوچک‌تری نسبت به gzip تولید می‌کند اما هم هنگام فشرده‌سازی و هم در زمان بازگشایی به طور محسوسی کندتر خواهد بود.

در صورت در دسترس بودن، موتور zstd می‌تواند فشرده‌سازی مشابه یا بهتری را با سرعت‌های بسیار بالاتر ارائه دهد.

فشرده‌سازی zlib با استفاده از الگوریتم DEFLATE.

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

هیچ فشرده‌سازی انجام نمی‌شود.

از این موتور فشرده‌سازی برای غیرفعال کردن صریح فشرده‌سازی استفاده کنید.

می‌توان به ابتدای نام موتورهای فشرده‌سازی عبارت stream را افزود تا یک باندل جریانی (streaming bundle) ایجاد شود. این‌ها باندل‌هایی هستند که تولید و مصرف آن‌ها بسیار کارآمد است، اما سازگاری آن‌ها با کلاینت‌های قدیمی‌تر تضمین‌شده نیست..SS "گزینه‌های موجود (Available Options)"

گزینه‌های زیر وجود دارند:

گنجاندن داده‌های changegroup در bundle (پیش‌فرض: True).
انتخاب نسخه changegroup جهت استفاده. گزینه‌های موجود عبارتند از: 01، 02، 03 یا 04. به‌طور پیش‌فرض بر اساس قالب فعلی مخزن، نسخه به‌صورت خودکار انتخاب خواهد شد.
از cg.version "04" به بعد، changegroupها می‌توانند شامل دلتاهای از پیش فشرده‌شده‌ای باشند که سمت دریافت‌کننده ممکن است آن‌ها را همان‌گونه که هستند بازاستفاده کند. اگر این گزینه نادیده گرفته شود، هیچ دلتایی از این نوع بخشی از changegroup نخواهد بود. این گزینه فهرستی جداشده با کاما از قالب‌های فشرده‌سازیِ پذیرفته‌شده را دریافت می‌کند. قالب‌های پشتیبانی‌شده عبارتند از:
•
  • zlib: دلتای فشرده‌شده با zlib
  • zstd: دلتای فشرده‌شده با zstd
گنجاندن نشانگرهای منسوخ‌شدگی (obsolescence-markers) مرتبط با changesetهای بسته‌بندی‌شده.
گنجاندن اطلاعات فازها (phases) مرتبط با changesetهای بسته‌بندی‌شده.
گنجاندن حافظهٔ پنهان "rev-branch" در داخل bundle.
گنجاندن حافظهٔ پنهان "tags-fnodes" در داخل bundle.

v2

تولید یک bundle از نوع v2 با استفاده از گزینه‌های پیش‌فرض، از جمله فشرده‌سازی.

تولید یک bundle از نوع v1 بدون هیچ‌گونه فشرده‌سازی.

تولید یک bundle از نوع v2 با فشرده‌سازی zstandard با استفاده از تنظیمات پیش‌فرض.

این مورد با خطا مواجه می‌شود زیرا zstd برای انواع v1 پشتیبانی نمی‌شود.

تولید یک bundle جریانی (streaming) از نوع v2 بدون فشرده‌سازی.

تولید یک bundle از نوع v2 با فشرده‌سازی zstandard که شامل نشانگرهای منسوخ‌شدگی و فازها است.

‏Mercurial خروجی چندین دستور را رنگی‌سازی می‌کند.

برای نمونه، دستور diff موارد اضافه‌شده را با رنگ سبز و موارد حذف‌شده را با رنگ قرمز نشان می‌دهد، در حالی که دستور status فایل‌های تغییریافته را به رنگ سرخابی (magenta) نمایش می‌دهد. بسیاری از دستورهای دیگر نیز رنگ‌های مشابهی دارند. سفارشی‌سازی این رنگ‌ها امکان‌پذیر است.

برای فعال‌سازی رنگ (پیش‌فرض) در صورت امکان، استفاده کنید از:

[ui]
color = yes

برای غیرفعال کردن رنگ استفاده کنید از:

[ui]
color = no

برای جزئیات، hg help config.ui.color را ببینید.

صفحه‌بندی‌کننده (pager) پیش‌فرض در Windows از رنگ پشتیبانی نمی‌کند، بنابراین فعال‌کردن صفحه‌بندی‌کننده عملاً رنگ را غیرفعال خواهد کرد. برای غیرفعال کردن صفحه‌بندی‌کننده، hg help config.ui.paginate را ببینید. متناوباً، پوسته‌های MSYS و Cygwin دستور less را به عنوان صفحه‌بندی‌کننده ارائه می‌دهند که می‌تواند برای پشتیبانی از حالت رنگی ANSI پیکربندی شود. Windows 10 به‌طور بومی از حالت رنگی ANSI پشتیبانی می‌کند.

‏Mercurial می‌تواند از سامانه‌های گوناگونی برای نمایش رنگ استفاده کند. حالت‌های پشتیبانی‌شده عبارتند از ansi، win32 و terminfo. برای جزئیات درباره نحوه کنترل حالت، hg help config.color را ببینید.

علاوه بر رنگ، جلوه‌های دیگری مانند متن پررنگ (bold) و زیرخط‌دار (underlined) نیز در دسترس هستند. به‌طور پیش‌فرض، پایگاه داده terminfo برای یافتن کدهای ترمینالِ مربوط به تغییر رنگ و جلوه استفاده می‌شود. اگر terminfo در دسترس نباشد، جلوه‌ها با تابع کنترلی ECMA-48 SGR (معروف به کدهای گریز ANSI) رندر می‌شوند.

جلوه‌های موجود در حالت terminfo عبارتند از 'blink'، 'bold'، 'dim'، 'inverse'، 'invisible'، 'italic'، 'standout' و 'underline'؛ در حالت ECMA-48، گزینه‌ها عبارتند از 'bold'، 'inverse'، 'italic' و 'underline'. نحوه رندر شدن هر جلوه به شبیه‌ساز ترمینال بستگی دارد. ممکن است برخی از آن‌ها برای یک نوع ترمینال خاص در دسترس نباشند و بدون هشدار نادیده گرفته شوند.

اگر مدخل terminfo برای ترمینال شما فاقد کدهای یک جلوه باشد یا کدهای نادرستی داشته باشد، می‌توانید آن کدها را در پیکربندی خود اضافه کرده یا بازنویسی کنید:

[color]
terminfo.dim = \E[2m

که در آن 'E' با یک نویسه گریز (escape) جایگزین می‌شود.

متن بسته به برچسب‌هایی که دارد جلوه‌های رنگی دریافت می‌کند. بسیاری از دستورهای پیش‌فرض Mercurial متن برچسب‌دار تولید می‌کنند. شما همچنین می‌توانید با استفاده از تابع label، برچسب‌های اختصاصی خود را در قالب‌ها تعریف کنید؛ hg help templates را ببینید. برای دریافت جلوه‌ها، برچسب‌ها باید دارای یک نقطه باشند، مانند log.secret یا branch.active. یک بخش منفرد از متن ممکن است بیش از یک برچسب داشته باشد. در این صورت، جلوه‌های داده‌شده به آخرین برچسب بر سایر جلوه‌ها ارجحیت خواهند داشت (آن‌ها را لغو می‌کنند). این شامل جلوه ویژه "none" نیز می‌شود که سایر جلوه‌ها را خنثی می‌کند.

برچسب‌ها معمولاً نامرئی هستند. برای دیدن این برچسب‌ها و موقعیت آن‌ها در متن، از گزینه سراسری --color=debug استفاده کنید. یک متن پایه ممکن است به چندین برچسب وابسته باشد، مانند:

[log.changeset changeset.secret|changeset: 22611:6f0a53c8f587]

موارد زیر جلوه‌های پیش‌فرض برای برخی برچسب‌های پیش‌فرض هستند. جلوه‌های پیش‌فرض را می‌توان از طریق فایل پیکربندی بازنویسی کرد:

[color]
status.modified = blue bold underline red_background
status.added = green bold
status.removed = red bold blue_background
status.deleted = cyan bold underline
status.unknown = magenta bold underline
status.ignored = black bold
# مقدار 'none' تمام جلوه‌ها را خاموش می‌کند
status.clean = none
status.copied = none
qseries.applied = blue bold underline
qseries.unapplied = black bold
qseries.missing = red bold
diff.diffline = bold
diff.extended = cyan bold
diff.file_a = red bold
diff.file_b = green bold
diff.hunk = magenta
diff.deleted = red
diff.inserted = green
diff.changed = white
diff.tab =
diff.trailingwhitespace = bold red_background
# خالی است تا سبک برچسب دربرگیرنده را به ارث ببرد
changeset.public =
changeset.draft =
changeset.secret =
resolve.unresolved = red bold
resolve.resolved = green bold
bookmarks.active = green
branches.active = none
branches.closed = black bold
branches.current = green
branches.inactive = none
tags.normal = green
tags.local = black bold
rebase.rebased = blue
rebase.remaining = red bold
shelve.age = cyan
shelve.newest = green bold
shelve.name = blue bold
histedit.remaining = red bold

از آن‌جا که تنها هشت رنگ استاندارد وجود دارد، Mercurial به شما اجازه می‌دهد در صورت استفاده از حالت terminfo، برای سایر جایگاه‌های رنگی (color slots) که ممکن است برای نوع ترمینال شما در دسترس باشند، نام‌های رنگی تعریف کنید. برای نمونه:
color.brightblue = 12
color.pink = 207
color.orange = 202

جهت تنظیم 'brightblue' روی جایگاه رنگی 12 (کاربردی برای ترمینال‌های 16 رنگی که رنگ‌های روشن‌تری در هشت جایگاه بالایی تعریف کرده‌اند)، و 'pink' و 'orange' برای رنگ‌های موجود در مکعب رنگ پیش‌فرض ترمینال 256 رنگ xterm. این رنگ‌های تعریف‌شده سپس می‌توانند همانند هر یک از هشت رنگ از پیش‌تعریف‌شده استفاده شوند، از جمله افزودن پسوند '_background' برای تنظیم پس‌زمینه به آن رنگ.

برخی از دستورها به کاربر اجازه می‌دهند یک تاریخ را مشخص کند، مانند:

  • backout, commit, import, tag: تعیین تاریخ کامیت.
  • log, revert, update: انتخاب بازبینی(ها) بر اساس تاریخ.

قالب‌های تاریخ متعددی معتبر هستند. در اینجا چند نمونه آورده شده است:

  • Wed Dec 6 13:18:29 2006 (منطقه زمانی محلی فرض می‌شود)
  • Dec 6 13:18 -0600 (سال فرض می‌شود، اختلاف زمانی مشخص شده است)
  • Dec 6 13:18 UTC (عبارت‌های UTC و GMT نام‌های مستعار برای +0000 هستند)
  • Dec 6 (نیمه‌شب)
  • 13:18 (امروز فرض می‌شود)
  • 3:39 (ساعت 3:39AM فرض می‌شود)
  • 3:39pm (15:39)
  • 2006-12-06 13:18:29 (قالب ISO 8601)
  • 2006-12-6 13:18
  • 2006-12-6
  • 12-6
  • 12/6
  • 12/6/6 (Dec 6 2006)
  • today (نیمه‌شب)
  • yesterday (نیمه‌شب)
  • now - همین لحظه

در نهایت، قالب درونی Mercurial نیز وجود دارد:

•
1165411109 0 (Wed Dec 6 13:18:29 2006 UTC)

این قالب نمایش درونی برای تاریخ‌ها است. عدد نخست، تعداد ثانیه‌های سپری‌شده از مبدأ زمانی (1970-01-01 00:00 UTC) است. عدد دوم، اختلاف منطقه زمانی محلی به ثانیه در غرب UTC است (اگر منطقه زمانی در شرق UTC باشد، منفی خواهد بود).

دستور log بازه‌های تاریخ را نیز می‌پذیرد:

  • <DATE - در یا پیش از تاریخ/زمان مشخص‌شده
  • >DATE - در یا پس از تاریخ/زمان مشخص‌شده
  • DATE to DATE - یک بازه زمانی، به‌صورت فراگیر (شامل ابتدا و انتها)
  • -DAYS - ظرف تعداد روزهای مشخص‌شده از امروز

    ابزار Mercurial با گذشت زمان تکامل می‌یابد و ممکن است برخی ویژگی‌ها، گزینه‌ها یا دستورها با جایگزین‌های بهتر و امن‌تر جایگزین شوند. این مبحث به شما کمک می‌کند تا شیوه استفاده و/یا پیکربندی فعلی خود را به ویژگی‌های جدیدتر انتقال دهید.

دستورهای زیر هنوز در دسترس هستند، اما استفاده از آن‌ها دیگر توصیه نمی‌شود:

locate

این دستور با hg files جایگزین شده است.

parents

این دستور می‌تواند با hg summary یا hg log به همراه revsetهای مناسب جایگزین شود. برای اطلاعات بیشتر hg help revsets را ببینید.

tip

جایگزین توصیه‌شده hg heads است.

به allow-pull تغییر نام یافته است.

به allow-push تغییر نام یافته است.

قالب پیش‌فرض Mercurial برای نمایش تغییرات بین دو نسخه از یک فایل، با قالب یکپارچه (unified format) مربوط به GNU diff سازگار است که می‌تواند توسط GNU patch و بسیاری دیگر از ابزارهای استاندارد استفاده شود.

اگرچه این قالب استاندارد اغلب کافی است، اطلاعات زیر را ذخیره و کدگذاری نمی‌کند:

  • وضعیت قابل‌اجرا بودن (executable) و سایر بیت‌های دسترسی (permission bits)
  • اطلاعات رونوشت (کپی) یا تغییر نام
  • تغییرات در فایل‌های باینری
  • ایجاد یا حذف فایل‌های خالی

همچنین Mercurial از قالب گسترش‌یافته diff از سامانه کنترل نسخه git پشتیبانی می‌کند که این محدودیت‌ها را برطرف می‌سازد. قالب git diff به‌صورت پیش‌فرض تولید نمی‌شود زیرا هنوز برخی ابزارهای متداول این قالب را شناسایی نمی‌کنند.

این بدان معناست که هنگام تولید diff از یک مخزن Mercurial (به‌عنوان مثال با hg export)، باید مراقب مواردی مانند کپی یا تغییر نام فایل‌ها و دیگر موارد ذکرشده در بالا باشید؛ چرا که هنگام اعمال یک diff استاندارد روی مخزنی دیگر، این اطلاعات اضافی از بین خواهند رفت. عملیات داخلی Mercurial (مانند push و pull) تحت تأثیر این موضوع قرار نمی‌گیرند، زیرا آن‌ها از یک قالب باینری داخلی برای انتقال تغییرات استفاده می‌کنند.

برای اینکه Mercurial قالب گسترش‌یافته git diff را تولید کند، از گزینه --git که برای بسیاری از دستورها در دسترس است استفاده کنید، یا در بخش [diff] فایل پیکربندی خود مقدار 'git = True' را قرار دهید. هنگام وارد کردن (import) فایل‌های diff با این قالب یا استفاده از آن‌ها در افزونه mq، نیازی به تنظیم این گزینه ندارید.

مسیر فایل اجرایی 'hg'، که به‌طور خودکار هنگام اجرای قلاب‌ها (hooks)، افزونه‌ها یا ابزارهای خارجی منتقل می‌شود. در صورت تنظیم نشدن یا خالی بودن، اگر برنامه به‌صورت کامپایل‌شده (frozen) باشد نام فایل اجرایی hg خواهد بود، یا اینکه یک فایل اجرایی با نام 'hg' (با پسوندهای تعریف‌شده در %PATHEXT% [به‌صورت پیش‌فرض COM/EXE/BAT/CMD] در ویندوز) جستجو می‌شود.
نام ویرایشگری که هنگام ثبت تغییرات (commit) اجرا می‌شود. EDITOR را ببینید.

(منسوخ‌شده، hg help config.ui.editor را ببینید)

این متغیر تنظیمات محلی (locale) پیش‌فرضی را که توسط Mercurial شناسایی شده است لغو می‌کند. این تنظیم برای تبدیل داده‌ها از جمله نام‌های کاربری، توضیحات changeset، نام برچسب‌ها (tags) و شاخه‌ها استفاده می‌شود. این تنظیم را می‌توان با گزینه خط فرمان --encoding نادیده گرفت.
رفتار Mercurial را در مواجهه با نویسه‌های ناشناخته هنگام تغییر کدگذاری (transcoding) ورودی کاربر تعیین می‌کند. مقدار پیش‌فرض "strict" است که باعث می‌شود در صورت ناتوانی در نگاشت یک نویسه، Mercurial متوقف شود. سایر مقادیر شامل "replace" (جایگزین کردن نویسه‌های ناشناخته) و "ignore" (نادیده گرفتن و حذف آن‌ها) است. این تنظیم با گزینه خط فرمان --encodingmode قابل بازنویسی است.
رفتار Mercurial را برای مدیریت نویسه‌هایی با عرض نامشخص یا «مبهم» (مانند نویسه‌های لاتین دارای اعراب در قلم‌های شرق آسیا) تعیین می‌کند. به‌طور پیش‌فرض، Mercurial نویسه‌های مبهم را باریک (narrow) در نظر می‌گیرد؛ اگر این نویسه‌ها باعث بروز مشکل در قالب‌بندی می‌شوند، این متغیر را روی "wide" تنظیم کنید.
یک فایل اجرایی برای حل تعارض‌های ادغام (merge conflicts). این برنامه با سه آرگومان اجرا خواهد شد: فایل محلی (local file)، فایل راه دور (remote file) و فایل والد مشترک (ancestor file).

(منسوخ‌شده، hg help config.ui.merge را ببینید)

فهرستی از فایل‌ها یا دایرکتوری‌ها برای جستجوی فایل‌های پیکربندی. جداکننده موارد در Unix برابر با ":" و در Windows برابر با ";" است. اگر HGRCPATH تنظیم نشده باشد، مسیر جستجوی پیش‌فرض سیستم‌عامل استفاده می‌شود. اگر خالی باشد، تنها فایل .hg/hgrc از مخزن فعلی خوانده می‌شود.

به ازای هر مورد در HGRCPATH:

  • اگر یک دایرکتوری باشد، تمام فایل‌هایی که با پسوند .rc خاتمه می‌یابند اضافه می‌شوند
  • در غیر این صورت، خود فایل اضافه خواهد شد
هنگامی که این متغیر تنظیم شود، فایل‌های .hg/hgrc مربوط به مخازن خوانده نخواهند شد.
هنگامی که تنظیم شود، هرگونه تنظیمات پیکربندی را که ممکن است خروجی پیش‌فرض Mercurial را تغییر دهد غیرفعال می‌کند. این موارد شامل کدگذاری، پیش‌فرض‌ها، حالت پرگو (verbose)، حالت اشکال‌زدایی (debug)، حالت بی‌صدا (quiet)، گزارش خطاها (tracebacks) و بومی‌سازی می‌شود. این متغیر به‌ویژه هنگام اسکریپت‌نویسی با Mercurial بدون تأثیرپذیری از تنظیمات کاربر بسیار کاربردی است.

علاوه بر قابلیت‌های غیرفعال‌شده توسط HGPLAIN=، مقادیر زیر را نیز می‌توان برای تنظیم رفتار دقیق‌تر مشخص کرد:

+strictflags

تجزیه و اعتبارسنجی پرچم‌های خط فرمان را محدود و سخت‌گیرانه می‌کند.

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

برای جزئیات بیشتر hg help scripting را ببینید.

فهرستی جداشده با کاما از ویژگی‌هایی که باید در زمان فعال بودن HGPLAIN همچنان حفظ شوند. در حال حاضر مقادیر زیر پشتیبانی می‌شوند:

نام‌های مستعار (aliases) حذف نشوند.

color

خروجی رنگی غیرفعال نشود.

بین‌المللی‌سازی و ترجمه خروجی حفظ شود..TP revsetalias

نام‌های مستعار revset حذف نشوند.

نام‌های مستعار template حذف نشوند.

خروجی پیشرفت پنهان نشود.

تنظیم HGPLAINEXCEPT روی هر مقداری (حتی یک رشتهٔ خالی)، حالت ساده را فعال خواهد کرد.

این رشته‌ای است که به‌عنوان پدیدآورندهٔ یک commit استفاده می‌شود. اگر تنظیم نشده باشد، مقادیر موجود به این ترتیب بررسی خواهند شد:
  • HGUSER (منسوخ شده)
  • فایل‌های پیکربندی برگرفته از HGRCPATH
  • EMAIL
  • اعلان تعاملی
  • LOGNAME (به همراه @hostname الحاق‌شده)

(منسوخ شده، ببینید: hg help config.ui.username)

ممکن است به‌عنوان پدیدآورندهٔ یک commit استفاده شود؛ HGUSER را ببینید.
ممکن است به‌عنوان پدیدآورندهٔ یک commit استفاده شود؛ HGUSER را ببینید.
این نام ویرایشگری است که هنگام ثبت commit استفاده می‌شود. EDITOR را ببینید.
گاهی Mercurial نیاز دارد تا یک فایل متنی را برای ویرایش توسط کاربر در یک ویرایشگر باز کند، برای نمونه هنگام نوشتن پیام‌های commit. ویرایشگر مورد استفاده با بررسی متغیرهای محیطی HGEDITOR، VISUAL و EDITOR به همین ترتیب مشخص می‌شود. نخستین متغیر غیرخالی انتخاب می‌شود. اگر همهٔ آن‌ها خالی باشند، ویرایشگر پیش‌فرض 'vi' خواهد بود.
این متغیر توسط Python برای یافتن ماژول‌های واردشده استفاده می‌شود و در صورتی که Mercurial در سطح کل سیستم نصب نشده باشد، ممکن است نیاز به مقداردهی مناسب داشته باشد.
کنترل می‌کند که کدام پیاده‌سازی zstd برای کد Python استفاده شود. این مقداری فهرستی از گزینه‌ها به ترتیب اولویت است.
  • vendored: استفاده از نسخهٔ ثابت python-zstandard که همراه با Mercurial عرضه می‌شود
  • system: استفاده از بستهٔ پایتون "zstandard" که احتمالاً روی سیستم نصب است
  • none: عدم استفاده از zstd (در صورت شکست گزینه‌های بالا، حذف این گزینه موجب بروز خطا خواهد شد)

مقدار پیش‌فرض "vendored,system,none" است.

بسته به این‌که کتابخانهٔ واسط (wrapper) مربوط به zstd و ادغام آن در Mercurial در آینده چگونه توسعه یابد، ممکن است این متغیر در آینده منسوخ شود. این پیکربندی هیچ تأثیری بر کد Rust ندارد.

نشانگرهای منسوخ‌شدگی امکان علامت‌گذاری مجموعه‌تغییراتی را که حذف شده یا با نسخهٔ جدیدی از مجموعه‌تغییرات جایگزین شده‌اند، فراهم می‌آورند.

برخلاف روش پیشین برای مدیریت چنین تغییراتی—یعنی حذف کامل (strip) مجموعه‌تغییرات قدیمی از مخزن—نشانگرهای منسوخ‌شدگی می‌توانند بین مخازن منتشر شوند. این موضوع امکان تبادل امن و سادهٔ تاریخچهٔ تغییرپذیر و اصلاح پس از ثبت آن را فراهم می‌کند. فازهای مجموعه‌تغییرات رعایت می‌شوند؛ به گونه‌ای که تنها مجموعه‌تغییرات draft و secret قابل تغییر هستند (برای جزئیات بیشتر hg help phases را ببینید).

منسوخ‌شدگی با استفاده از «نشانگرهای منسوخ‌شدگی» ردیابی می‌شود؛ بخشی از فراداده که مشخص می‌کند کدام مجموعه‌تغییرات منسوخ شده‌اند، جانشین‌های احتمالی برای یک مجموعه‌تغییرات داده‌شده کدامند، مجموعه‌تغییرات در چه زمانی منسوخ علامت‌گذاری شده است و چه کاربری عملیات بازنویسی را انجام داده است. این نشانگرها جدا از داده‌های استاندارد مجموعه‌تغییرات ذخیره می‌شوند و می‌توان آن‌ها را بدون هیچ‌یک از مجموعه‌تغییرات پیشین (سلف) تبادل کرد که از تبادل غیرضروری داده‌های منسوخ‌شدگی جلوگیری می‌کند.

مجموعهٔ کامل نشانگرهای منسوخ‌شدگی، تاریخچه‌ای از اصلاحات مجموعه‌تغییرات را شرح می‌دهد که مستقل از (متعامد با) تاریخچهٔ تغییرات فایل‌ها در مخزن است. این تاریخچهٔ مجموعه‌تغییرات امکان تشخیص و رفع خودکار حالت‌های خاصی (edge cases) را فراهم می‌آورد که از بازنویسی هم‌زمان بخش یکسانی از تاریخچه توسط چندین کاربر ناشی می‌شوند.

این قابلیت هنوز در حال توسعه است.

بازنویسی مجموعه‌تغییرات ممکن است باعث ایجاد ناپایداری شود.

دو نوع اصلی از ناپایداری وجود دارد: یتیم‌شدگی (orphaning) و واگرایی (diverging).

یتیم‌ها (orphans) مجموعه‌تغییراتی هستند که پس از بازنویسی نیاکانشان، جا مانده‌اند. واگرایی دو حالت دارد:

  • واگرایی محتوا (Content-divergence) زمانی رخ می‌دهد که بازنویسی‌های مستقلِ مجموعه‌تغییرات یکسان، به نتایج متفاوتی بیانجامند.
  • واگرایی فاز (Phase-divergence) زمانی رخ می‌دهد که نسخهٔ قدیمی (منسوخ‌شدهٔ) یک مجموعه‌تغییرات، عمومی (public) شود.

می‌توان با استفاده از پیکربندی زیر از ایجاد محلیِ مجموعه‌تغییرات یتیم جلوگیری کرد:

[experimental]
evolution.createmarkers = true
evolution.exchange = true

همچنین می‌توانید آن گزینه را صراحتاً فعال کنید:

[experimental]
evolution.createmarkers = true
evolution.exchange = true
evolution.allowunstable = true

سامانهٔ Mercurial این توانایی را دارد که از طریق استفاده از افزونه‌ها (extensions)، قابلیت‌های جدیدی بیفزاید. افزونه‌ها ممکن است دستورهای جدیدی اضافه کنند، گزینه‌هایی به دستورهای موجود بیفزایند، رفتار پیش‌فرض دستورها را تغییر دهند، یا قلاب‌ها (hooks) را پیاده‌سازی کنند.

برای فعال‌سازی افزونهٔ «foo»—که یا به همراه Mercurial عرضه شده یا در مسیر جستجوی Python قرار دارد—مدخلی مانند زیر در فایل پیکربندی خود بسازید:

[extensions]
foo =

همچنین می‌توانید مسیر کامل یک افزونه را مشخص کنید:

[extensions]
myfeature = ~/.hgext/myfeature.py

برای اطلاعات بیشتر دربارهٔ فایل‌های پیکربندی، hg help config را ببینید.

افزونه‌ها به دلایل مختلفی به‌طور پیش‌فرض بارگذاری نمی‌شوند: ممکن است بار راه‌اندازی اولیه را افزایش دهند؛ ممکن است فقط برای استفاده‌های پیشرفته در نظر گرفته شده باشند؛ ممکن است قابلیت‌های بالقوه خطرناکی ارائه دهند (مانند امکان تخریب یا دستکاری تاریخچه)؛ ممکن است برای استفادهٔ عمومی کاملاً آماده نباشند؛ یا ممکن است برخی از رفتارهای معمول و استاندارد Mercurial را تغییر دهند. بنابراین فعال‌سازی افزونه‌ها بر حسب نیاز بر عهدهٔ کاربر است.

برای غیرفعال‌سازی صریح افزونه‌ای که در فایل پیکربندی با دامنهٔ گسترده‌تر فعال شده است، علامت ! را به ابتدای مسیر آن اضافه کنید:

[extensions]
# disabling extension bar residing in /path/to/extension/bar.py
bar = !/path/to/extension/bar.py
# ditto, but no path was supplied for extension baz
baz = !

افزونه‌های غیرفعال:

قلاب‌هایی برای کنترل دسترسی به مخزن
ثبت رویدادهای مخزن در یک جعبه سیاه (blackbox) جهت اشکال‌زدایی
قلاب‌هایی برای یکپارچه‌سازی با سامانهٔ ردیابی باگ Bugzilla
پاک‌کردن محتوای فایل در یک بازنگری (revision) مشخص
دستوری برای نمایش آمار و ارقام دربارهٔ تاریخچهٔ مخزن
اعلان بسته‌های از‌پیش‌تولید‌شده برای تسریع و پایه‌ریزی کلون‌ها
بستن سرشاخه‌های (heads) دلخواه بدون نیاز به استخراج (checkout) اولیهٔ آن‌ها
وارد کردن بازنگری‌ها از مخازن سایر سامانه‌های کنترل نسخه (VCS) به Mercurial
مدیریت خودکار نویسه‌های انتهای خط (newline) در فایل‌های مخزن
دستوری برای فراهم ساختن امکان مقایسهٔ بازنگری‌ها توسط برنامه‌های خارجی
احراز هویت http با factotum
برون‌بری مخازن به صورت جریان git fast-import
تلاش برای نگاشت دستورهای git به دستورهای Mercurial
دستورهایی برای امضا و اعتبارسنجی مجموعه‌تغییرات
مرور مخزن به صورت گرافیکی.TP highlight برجسته‌سازی نحو برای hgweb (نیازمند Pygments)
ویرایش تعاملی تاریخچه
بسط کلیدواژه‌ها در فایل‌های ردیابی‌شده
ردیابی فایل‌های باینری بزرگ
مدیریت پشته‌ای از وصله‌ها
قلاب‌ها برای ارسال اعلان‌های ایمیلی push
دستور ارسال مجموعه‌تغییرات به‌صورت (مجموعه‌ای از) ایمیل‌های وصله
دستور انتقال مجموعه‌ای از بازبینی‌ها به نیاکانی دیگر
ایجاد مجدد پیوندهای سخت میان کلون‌های مخزن
گسترش طرح‌واره‌ها (schemes) با میان‌برهایی به توده‌های مخزن (repository swarms)
اشتراک‌گذاری یک تاریخچهٔ مشترک میان چند دایرکتوری کاری
دستور پیوند زدن مجموعه‌تغییرات از شاخه‌ای دیگر
امکان استفاده از مسیرهای MBCS با کدگذاری‌های مشکل‌ساز
کشف و اعلان مخازن در شبکهٔ محلی

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

مانند دیگر الگوهای فایل، این نوع الگو با یک پیشوند، 'set:'، مشخص می‌شود. این زبان از چندین گزاره (predicate) پشتیبانی می‌کند که توسط عملگرهای میانوند (infix) به یکدیگر متصل می‌شوند. از پرانتز می‌توان برای گروه‌بندی استفاده کرد.

شناسه‌ها مانند نام فایل‌ها یا الگوها در صورتی که حاوی نویسه‌هایی خارج از [.*{}[]?/\_a-zA-Z0-9\x80-\xff] باشند یا با یکی از گزاره‌های از پیش تعریف‌شده مطابقت داشته باشند، باید درون نقل‌قول تکی یا دوتایی قرار گیرند. این قاعده معمولاً برای الگوهای فایل غیر از globها و آرگومان‌های گزاره‌ها اعمال می‌شود. پیشوندهای الگو مانند path: را می‌توان بدون نقل‌قول مشخص کرد.

نویسه‌های خاص را می‌توان با گریز دادن (escaping) در شناسه‌های نقل‌قول‌شده استفاده کرد؛ برای نمونه، \n به‌عنوان خط جدید تفسیر می‌شود. برای جلوگیری از تفسیر شدن آن‌ها، می‌توان رشته‌ها را با پیشوند r مشخص کرد، مانند r'...'.

همچنین ببینید: hg help patterns..SS "عملگرها (Operators)"

تنها یک عملگر پیشوندی وجود دارد:

فایل‌هایی که در x نیستند. شکل کوتاه آن ! x است.

عملگرهای میانوندی پشتیبانی‌شده عبارتند از:

اشتراک فایل‌های موجود در x و y. شکل کوتاه آن x & y است.

اجتماع فایل‌های موجود در x و y. دو شکل کوتاه جایگزین وجود دارد: x | y و x + y.

فایل‌های موجود در x که در y نیستند.

گزاره‌های زیر پشتیبانی می‌شوند:

فایلی که طبق hg status اضافه شده است.

فایلی که به نظر دودویی می‌رسد (حاوی بایت‌های NUL است).

فایلی که طبق hg status بدون تغییر (clean) است.

فایلی که به عنوان کپی‌شده ثبت شده است.

نام مستعار برای missing().

فایل می‌تواند با موفقیت با کدگذاری نویسه داده‌شده رمزگشایی شود. ممکن است برای کدگذاری‌هایی غیر از ASCII و UTF-8 کاربرد چندانی نداشته باشد.

فایل شامل پایان خط‌های سبک داده‌شده (dos، unix، mac) است. فایل‌های دودویی مستثنی هستند؛ فایل‌هایی با پایان خط مختلط با چندین سبک مطابقت دارند.

فایلی که به عنوان قابل اجرا نشانه‌گذاری شده است.

فایلی که حاوی عبارت باقاعده داده‌شده است.

فایلی که با الگوی فعال .hgignore مطابقت دارد.

فایلی که طبق hg status نادیده گرفته شده است.

فایلی که طبق hg status مفقود شده است.

فایلی که طبق hg status تغییر یافته است.

فایلی که نامی سازگار (portable) دارد. (این شامل نام‌های فایلی با تداخل در بزرگی و کوچکی حروف نمی‌شود.)

فایلی که طبق hg status حذف شده است.

فایلی که طبق hg resolve -l به عنوان حل‌شده نشانه‌گذاری شده است.

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

اندازه فایل با عبارت داده‌شده مطابقت دارد. مثال‌ها:

  • size('1k') - فایل‌های از 1024 تا 2047 بایت
  • size('< 20k') - فایل‌های کمتر از 20480 بایت
  • size('>= .5MB') - فایل‌های حداقل 524288 بایت
  • size('4k - 1MB') - فایل‌های از 4096 بایت تا 1048576 بایت

ارزیابی گزاره با استفاده از تغییر وضعیت بین base و rev. مثال‌ها:

•
status(3, 7, added()) - فایل‌های اضافه شده از "3" تا "7" را مطابقت می‌دهد

زیرمخزن‌هایی که مسیر آن‌ها با الگوی داده‌شده مطابقت دارد.

فایلی که به عنوان پیوند نمادین نشانه‌گذاری شده است.

فایلی که تحت کنترل Mercurial است.

فایلی که طبق hg status ناشناخته است.

فایلی که طبق hg resolve -l به عنوان حل‌نشده نشانه‌گذاری شده است.

چند پرس‌وجوی نمونه:

  • نمایش وضعیت فایل‌هایی در دایرکتوری کاری که به نظر باینری می‌رسند:
    hg status -A "set:binary()"
  • فراموش کردن فایل‌هایی که در .hgignore هستند اما پیش‌تر ردگیری شده‌اند:
    hg forget "set:hgignore() and not ignored()"
  • یافتن فایل‌های متنی حاوی یک رشته:
    hg files "set:grep(magic) and not binary()"
  • یافتن فایل‌های C با کدگذاری غیر استاندارد:
    hg files "set:**.c and not encoding('UTF-8')"
  • بازگردانی رونوشت‌های فایل‌های باینری بزرگ:
    hg revert "set:copied() and binary() and size('>1M')"
  • بازگردانی فایل‌هایی که به دایرکتوری کاری اضافه شده‌اند:
    hg revert "set:revs('wdir()', added())"
  • حذف فایل‌های فهرست‌شده در foo.lst که حاوی حرف a یا b هستند:
    hg remove "set: listfile:foo.lst and (**a* or **b*)"

بیشتر دستورهای Mercurial پرچم‌های گوناگونی را می‌پذیرند.

پرچم‌های مربوط به هر دستور در hg help برای آن دستور فهرست شده‌اند. علاوه بر این، برخی از پرچم‌ها مانند --repository سراسری هستند و می‌توانند با هر دستوری به کار روند - این پرچم‌ها در hg help -v دیده می‌شوند، و می‌توان آن‌ها را پیش یا پس از دستور مشخص کرد.

هر پرچم دست‌کم یک نام بلند دارد، مانند --repository. برخی پرچم‌ها ممکن است یک نام کوتاه یک‌حرفی نیز داشته باشند، مانند معادل آن -R. استفاده از نام کوتاه یا بلند یکسان بوده و اثر یکسانی دارد. نام بلند را می‌توان به هر پیشوند یکتایی خلاصه‌نویسی کرد. برای مثال، hg commit --amend را می‌توان به hg commit --am خلاصه کرد.

پرچم‌هایی که نام کوتاه دارند را می‌توان در یکدیگر ادغام نیز کرد - برای نمونه، برای مشخص کردن هر دو پرچم --edit (کوتاه -e) و --interactive (کوتاه -i)، می‌توان چنین نوشت:

hg commit -ei

اگر هر یک از پرچم‌های ادغام‌شده مقداری بپذیرد (یعنی بولی نباشد)، باید آخرین پرچم باشد و مقدار در ادامهٔ آن بیاید:

hg commit -im 'Message'

پرچم‌های خط فرمان Mercurial می‌توانند رشته، عدد، بولی یا فهرستی از رشته‌ها باشند.

با فرض وجود پرچم 'flagname' با نام کوتاه 'f'، نحوهای دستوری زیر مجاز هستند:

--flagname=foo
--flagname foo
-f foo
-ffoo

این نحو برای تمامی پرچم‌های غیربولی (رشته‌ها، اعداد یا فهرست‌ها) اعمال می‌شود.

پرچم‌های بولی پارامتر مقدار نمی‌پذیرند. برای مشخص کردن یک پرچم بولی، از نام پرچم برای تنظیم آن روی true، یا از همان نام همراه با پیشوند 'no-' برای تنظیم آن روی false استفاده کنید:

hg commit --interactive
hg commit --no-interactive

پرچم‌های فهرستی چندین مقدار می‌پذیرند. برای تعیین آن‌ها، پرچم را چندین بار وارد کنید:

hg files --include mercurial --include tests

به‌منظور تنظیم یک مقدار پیش‌فرض برای یک پرچم در فایل hgrc، توصیه می‌شود از نام‌های مستعار (alias) استفاده کنید:

[alias]
commit = commit --interactive

برای اطلاعات بیشتر دربارهٔ فایل‌های hgrc، بخش hg help config را ببینید.

اگر یک پرچم غیرفهرستی یکسان چندین بار در خط فرمان مشخص شود، آخرین مقدار مشخص‌شده استفاده می‌شود:

hg commit -m "Ignored value" -m "Used value"

این مورد شامل استفاده از نام‌های مستعار نیز می‌شود - برای مثال، اگر داشته باشیم:

[alias]
committemp = commit -m "Ignored value"

آنگاه دستور زیر آن -m را بازنویسی خواهد کرد:

hg committemp -m "Used value"

هر پرچم دارای یک مقدار پیش‌فرض است، و همچنین می‌توانید همان‌طور که در بالا توضیح
داده شد، مقادیر پیش‌فرض خود را در hgrc تنظیم کنید.
به‌جز پرچم‌های فهرستی (list flags)، مقادیر پیش‌فرض را می‌توان در خط فرمان به‌سادگی
با مشخص کردن پرچم در همان محل بازنویسی کرد.

برخی از پرچم‌ها به‌طور پیش‌فرض در راهنمای دستور نمایش داده نمی‌شوند - به‌ویژه پرچم‌هایی که آزمایشی، منسوخ‌شده یا پیشرفته در نظر گرفته شده‌اند. برای نمایش همهٔ پرچم‌ها، پرچم --verbose را به دستور help اضافه کنید:

hg help --verbose commit

نیا (Ancestor)
هر مجموعه‌تغییری (changeset) که بتوان از طریق یک زنجیرهٔ ناگسسته از مجموعه‌تغییرهای والد از یک مجموعه‌تغییر مشخص به آن رسید. به‌طور دقیق‌تر، نیاهای یک مجموعه‌تغییر را می‌توان با دو ویژگی تعریف کرد: والدِ یک مجموعه‌تغییر یک نیا است، و والدِ یک نیا نیز یک نیا محسوب می‌شود. همچنین ببینید: 'نواده (Descendant)'.
نشانک (Bookmark)
نشانک‌ها اشاره‌گرهایی به کامیت‌های مشخصی هستند که هنگام ثبت کامیت جابه‌جا می‌شوند. آن‌ها از این جهت شبیه به برچسب‌ها (tags) هستند که می‌توان از نام نشانک در تمام مکان‌هایی که Mercurial انتظار یک شناسهٔ مجموعه‌تغییر دارد استفاده کرد؛ برای مثال با hg update. برخلاف برچسب‌ها، هنگام کامیت کردن، نشانک‌ها همراه با آن به جلو حرکت می‌کنند.

نشانک‌ها را می‌توان تغییر نام داد، کپی کرد و حذف نمود. نشانک‌ها محلی هستند، مگر این‌که صراحتاً بین مخازن push یا pull شوند. ارسال (push) و دریافت (pull) نشانک‌ها به شما این امکان را می‌دهد که بدون ایجاد یک شاخهٔ نام‌دار، با دیگران روی یک شاخه همکاری کنید.

شاخه (Branch)
(اسم) مجموعه‌تغییر فرزندی که از والدی ایجاد شده است که سر (head) نیست. این موارد با عنوان شاخه‌های مکان‌شناختی (توپولوژیک) شناخته می‌شوند؛ ببینید: 'شاخه مکان‌شناختی (Branch, topological)'. اگر یک شاخهٔ توپولوژیک نام‌گذاری شود، به یک شاخهٔ نام‌دار تبدیل می‌شود. اگر یک شاخهٔ توپولوژیک نام‌گذاری نشود، به یک شاخهٔ ناشناس تبدیل خواهد شد. ببینید: 'شاخه ناشناس (Branch, anonymous)' و 'شاخه نام‌دار (Branch, named)'.

شاخه‌ها ممکن است هنگام دریافت (pull) یا ارسال (push) تغییرات به یک مخزن دوردست ایجاد شوند، چرا که این عملیات ممکن است سرهای (heads) جدیدی ایجاد کند. توجه داشته باشید که اصطلاح شاخه (branch) همچنین می‌تواند به‌طور غیررسمی برای توصیف فرآیند توسعه‌ای به کار رود که در آن بخش معینی از توسعه مستقل از سایر بخش‌ها انجام می‌شود. این کار گاهی به‌صراحت با یک شاخهٔ نام‌دار انجام می‌شود، اما می‌تواند به‌صورت محلی با استفاده از نشانک‌ها یا کلون‌ها (clones) و شاخه‌های ناشناس نیز انجام گیرد.

مثال: "شاخهٔ آزمایشی."

(فعل) عملِ ایجاد یک مجموعه‌تغییر فرزند که منجر به داشتن بیش از یک فرزند برای والد آن می‌شود.

مثال: "من قصد دارم در X شاخه ایجاد کنم."

شاخه ناشناس (Branch, anonymous)
هر بار که یک مجموعه‌تغییر فرزند جدید از والدی ساخته شود که سر (head) نیست و نام شاخه تغییر نکند، یک شاخهٔ ناشناس جدید ایجاد می‌شود.
شاخه بسته‌شده (Branch, closed)
یک شاخهٔ نام‌دار که تمام سرهای شاخهٔ آن بسته شده‌اند.
شاخه پیش‌فرض (Branch, default)
شاخه‌ای که به یک مجموعه‌تغییر اختصاص می‌یابد، در صورتی که قبلاً هیچ نامی برای آن تعیین نشده باشد.
سر شاخه (Branch head)
ببینید: 'سر، شاخه (Head, branch)'.
شاخه غیرفعال (Branch, inactive)
اگر یک شاخهٔ نام‌دار هیچ سرِ مکان‌شناختی (topological head) نداشته باشد، غیرفعال در نظر گرفته می‌شود. به‌عنوان مثال، یک شاخهٔ ویژگی (feature branch) هنگامی که در شاخهٔ default ادغام می‌شود، غیرفعال می‌گردد. دستور hg branches شاخه‌های غیرفعال را به‌طور پیش‌فرض نمایش می‌دهد، هرچند می‌توان آن‌ها را با hg branches --active پنهان کرد.

نکته: این مفهوم منسوخ شده است زیرا بیش از حد ضمنی است. اکنون شاخه‌ها را باید زمانی که دیگر نیازی به آن‌ها نیست، صراحتاً با استفاده از hg commit --close-branch بست.

شاخه نام‌دار (Branch, named)
مجموعه‌ای از مجموعه‌تغییرها که نام شاخهٔ یکسانی دارند. به‌طور پیش‌فرض، فرزندان یک مجموعه‌تغییر در یک شاخهٔ نام‌دار، به همان شاخهٔ نام‌دار تعلق دارند. یک فرزند را می‌توان به‌صراحت به شاخهٔ متفاوتی اختصاص داد. برای اطلاعات بیشتر در زمینهٔ مدیریت شاخه‌ها، به hg help branch، hg help branches و hg commit --close-branch مراجعه کنید.

شاخه‌های نام‌دار را می‌توان نوعی فضای نام (namespace) در نظر گرفت که مجموعهٔ مجموعه‌تغییرهای تشکیل‌دهندهٔ مخزن را به مجموعه‌ای از زیرمجموعه‌های مجزا تقسیم می‌کنند. یک شاخهٔ نام‌دار لزوماً یک شاخهٔ مکان‌شناختی نیست. اگر شاخهٔ نام‌دار جدیدی از سرِ یک شاخهٔ نام‌دار دیگر یا شاخهٔ پیش‌فرض ساخته شود، اما هیچ مجموعه‌تغییر دیگری به آن شاخهٔ قبلی اضافه نگردد، آن شاخهٔ قبلی صرفاً اسماً یک شاخه خواهد بود.

نوک شاخه (Branch tip)
ببینید: 'نوک، شاخه (Tip, branch)'.
شاخه مکان‌شناختی (Branch, topological)
هر بار که یک مجموعه‌تغییر فرزند جدید از والدی ساخته شود که سر (head) نیست، یک شاخهٔ مکان‌شناختی (توپولوژیک) جدید ایجاد می‌شود. اگر یک شاخهٔ توپولوژیک نام‌گذاری شود، به یک شاخهٔ نام‌دار تبدیل می‌گردد. اگر یک شاخهٔ توپولوژیک نام‌گذاری نشود، به یک شاخهٔ ناشناس از شاخهٔ جاری (احتمالاً پیش‌فرض) تبدیل می‌شود.
گزارش تغییرات (Changelog)
پیشینه‌ای از مجموعه‌تغییرها به ترتیبی که به مخزن اضافه شده‌اند. این پیشینه شامل جزئیاتی مانند شناسهٔ مجموعه‌تغییر (changeset id)، نویسنده، پیام کامیت، تاریخ و فهرست فایل‌های تغییریافته است.
مجموعه‌تغییر (Changeset)
یک تصویر لحظه‌ای (snapshot) از وضعیت مخزن که برای ثبت یک تغییر به کار می‌رود.
مجموعه‌تغییر فرزند (Changeset, child)
عکس مجموعه‌تغییر والد: اگر P والد C باشد، آنگاه C فرزند P است. هیچ محدودیتی برای تعداد فرزندانی که یک مجموعه‌تغییر می‌تواند داشته باشد وجود ندارد.
شناسه مجموعه‌تغییر (Changeset id)
یک هش SHA-1 که یک مجموعه‌تغییر را به‌طور یکتا مشخص می‌کند. این شناسه می‌تواند به‌صورت یک رشتهٔ "طولانی" ۴۰ رقمی در مبنای شانزده (هگزادسیمال)، یا یک رشتهٔ "کوتاه" ۱۲ رقمی هگزادسیمال نمایش داده شود.
مجموعه‌تغییر ادغام (Changeset, merge)
مجموعه‌تغییری با دو والد. این وضعیت زمانی رخ می‌دهد که یک ادغام کامیت شود.
مجموعه‌تغییر والد (Changeset, parent)
بازبینی‌ای (revision) که مجموعه‌تغییر فرزند بر پایهٔ آن است. به‌طور دقیق‌تر، مجموعه‌تغییر والدِ یک مجموعه‌تغییر C، مجموعه‌تغییری است که گرهٔ آن در DAG بلافاصله پیش از C قرار می‌گیرد. مجموعه‌تغییرها حداکثر دو والد دارند.
واکشی (Checkout)
(اسم) دایرکتوری کاری در حال به‌روزرسانی به یک بازبینی مشخص. در صورت امکان بهتر است از این کاربرد خودداری شود، زیرا در این زمینه اصطلاح مجموعه‌تغییر (changeset) بسیار مناسب‌تر از checkout است.

مثال: "من از checkout نسخهٔ X استفاده می‌کنم."

(فعل) به‌روزرسانی دایرکتوری کاری به یک مجموعه‌تغییر مشخص. ببینید: hg help update.

مثال: "من قصد دارم مجموعه‌تغییر X را check out کنم."

مجموعه‌تغییر فرزند (Child changeset)
ببینید: 'مجموعه‌تغییر فرزند (Changeset, child)'.
مجموعه‌تغییر بستن (Close changeset)
ببینید: 'سر، شاخه بسته‌شده (Head, closed branch)'.
شاخه بسته‌شده (Closed branch)
ببینید: 'شاخه بسته‌شده (Branch, closed)'..TP Clone (اسم) رونوشتی کامل یا جزئی از یک مخزن. کلون جزئی باید به شکل یک بازنگری (revision) و نیاکان آن باشد.

مثال: «آیا کلون شما به‌روز است؟»

(فعل) فرایند ایجاد یک کلون، با استفاده از hg clone.

مثال: «من قصد دارم مخزن را کلون کنم.»

ببینید: 'Head, closed branch'.
(اسم) مترادفی برای changeset.

مثال: «آیا این باگ در کامیت اخیر شما برطرف شده است؟»

(فعل) عمل ثبت تغییرات در یک مخزن. هنگامی که فایل‌ها در یک دایرکتوری کاری کامیت می‌شوند، Mercurial تفاوت‌های میان فایل‌های کامیت‌شده و changeset والد آن‌ها را می‌یابد و یک changeset جدید در مخزن ایجاد می‌کند.

مثال: «شما باید اکنون آن تغییرات را کامیت کنید.»

مخففی رایج برای اصطلاح changeset.
مخزن changesetهای یک سامانهٔ کنترل نسخهٔ توزیع‌شده (DVCS) را می‌توان به عنوان یک گراف جهت‌دار بدون دور (DAG) توصیف کرد که متشکل از گره‌ها و یال‌ها است، به‌طوری‌که گره‌ها متناظر با changesetها هستند و یال‌ها بیانگر رابطهٔ والد -> فرزند (parent -> child) می‌باشند. این گراف را می‌توان با ابزارهای گرافیکی نظیر hg log --graph به تصویر کشید. در Mercurial، ساختار DAG به این الزام محدود شده است که فرزندان حداکثر دو والد داشته باشند.
قابلیتی که از مستندات برداشته شده، اما برنامه‌ای برای حذف نهایی آن تعیین نشده است (منسوخ‌شده).
ببینید: 'Branch, default'.
هر changeset که بتوان از طریق زنجیره‌ای از changesetهای فرزند از یک changeset مشخص به آن رسید. به‌طور دقیق‌تر، نوادگان یک changeset را می‌توان با دو ویژگی تعریف کرد: فرزند یک changeset یک نواده است، و فرزند یک نواده نیز یک نواده است. همچنین ببینید: 'Ancestor'.
(اسم) تفاوت میان محتوا و مشخصه‌های فایل‌ها در دو changeset، یا یک changeset و دایرکتوری کاری فعلی. این تفاوت معمولاً در قالب استانداردی به نام “diff” یا “patch” نمایش داده می‌شود. قالب “git diff” زمانی به کار می‌رود که تغییرات شامل رونوشت‌ها، تغییر نام‌ها، یا تغییر در مشخصه‌های فایل باشد؛ مواردی که هیچ‌کدام توسط “diff” و “patch” کلاسیک قابل نمایش/مدیریت نیستند.

مثال: «آیا اصلاحیهٔ مرا در diff دیدید؟»

(فعل) مقایسه (diffing) دو changeset، عملِ ایجاد یک diff یا patch است.

مثال: «اگر با changeset شمارهٔ X مقایسه (diff) کنید، متوجه منظورم خواهید شد.»

دایرکتوری کاری بیانگر وضعیت فایل‌های ردگیری‌شده توسط Mercurial است که در کامیت بعدی ثبت خواهند شد. دایرکتوری کاری در ابتدا متناظر با تصویر لحظه‌ای (snapshot) در یک changeset موجود است که به عنوان والدِ دایرکتوری کاری شناخته می‌شود. ببینید: 'Parent, working directory'. این وضعیت ممکن است با تغییرات دستی اعمال‌شده در فایل‌ها یا از طریق یک ادغام (merge) تغییر کند. متاداده‌های مخزن در دایرکتوری .hg درون دایرکتوری کاری قرار دارند.
مجموعه‌تغییرات (changesetها) در فاز draft با مخازن عمومی (publishing) به اشتراک گذاشته نشده‌اند و از این رو می‌توان آن‌ها را با خیالی آسوده توسط افزونه‌های اصلاح‌کنندهٔ تاریخچه (history-modifying) تغییر داد. ببینید: hg help phases.
قابلیتی که ممکن است در آینده تغییر کند یا حذف شود (آزمایشی).
ببینید: DAG و hg log --graph.
اصطلاح 'head' بسته به زمینهٔ کاربرد ممکن است برای اشاره به سرشاخهٔ یک شاخه (branch head) یا سرشاخهٔ مخزن (repository head) به کار رود. برای تعاریف مشخص، ببینید: 'Head, branch' و 'Head, repository'.

سرشاخه‌ها جایی هستند که توسعه معمولاً در آنجا انجام می‌گیرد و اهداف متداول برای عملیات به‌روزرسانی (update) و ادغام (merge) به شمار می‌روند.

یک changeset بدون هیچ نواده‌ای در همان شاخهٔ نام‌دار.
یک changeset که یک سرشاخه را به عنوان موردی که دیگر اهمیتی ندارد نشانه‌گذاری می‌کند. سرشاخهٔ بسته دیگر توسط hg heads فهرست نمی‌شود. یک شاخه زمانی بسته تلقی می‌شود که تمام سرشاخه‌های آن بسته شده باشند و در نتیجه در خروجی hg branches نمایش داده نمی‌شود.

سرشاخه‌های بسته را می‌توان با کامیت کردن یک changeset جدید به عنوان فرزندِ changeset نشانه‌گذاری‌کنندهٔ سرشاخهٔ بسته، دوباره بازگشایی کرد.

یک سرشاخهٔ توپولوژیک که بسته نشده است.
یک changeset که هیچ فرزندی در مخزن ندارد.
پس از کامیت شدن، changesetها غیرقابل تغییر هستند. افزونه‌هایی که به نظر می‌رسد تاریخچه را تغییر می‌دهند در عمل changesetهای جدیدی ایجاد می‌کنند که جایگزین موارد موجود می‌شوند و سپس changesetهای قدیمی را نابود می‌کنند. انجام این کار در مخازن عمومی (public) می‌تواند منجر به معرفی و ورود مجدد changesetهای قدیمی به مخزن شود.
مجموعه‌تغییرات (changesetها) در یک مخزن تغییرناپذیر هستند. با این حال، می‌توان از افزونه‌های Mercurial برای دستکاری مخزن استفاده کرد، معمولاً به گونه‌ای که محتوای changeset حفظ شود.
ببینید: 'History, immutable'.
Merge changeset
ببینید: 'Changeset, merge'.
هر changeset دارای یک مانیفست (manifest) است؛ فهرستی از فایل‌هایی که توسط آن changeset ردگیری می‌شوند.
برای یکپارچه‌سازی شاخه‌های کاری واگرا به کار می‌رود. هنگامی که به یک changeset به‌روزرسانی (update) می‌کنید و سپس changeset دیگری را ادغام می‌نمایید، تاریخچهٔ changeset دوم را به دایرکتوری کاری خود وارد می‌کنید. پس از حل اختلافات (و علامت‌گذاری آن‌ها)، این ادغام می‌تواند به عنوان یک changeset ادغام (merge changeset) کامیت شود و بدین ترتیب دو شاخه را در ساختار DAG به هم پیوند دهد.
ببینید: 'Branch, named'.
مجموعه‌تغییرات (changeset) تهی. این حالتْ والدِ مخازن تازه راه‌اندازی‌شده و مخازنی است که هیچ بازنگری‌ای در آن‌ها دریافت (check out) نشده است. از این رو والد changesetهای ریشه و نیاکان مؤثر هنگام ادغام changesetهای نامرتبط به شمار می‌رود. می‌تواند با نام مستعار 'null' یا با شناسهٔ changeset یعنی '000000000000' مشخص شود.
ببینید: 'Changeset, parent'..TP مجموعه‌تغییر والد (Parent changeset) «مجموعه‌تغییر، والد» ('Changeset, parent') را ببینید.
والد، دایرکتوری کاری (Parent, working directory)
والد دایرکتوری کاری، بازتاب‌دهندهٔ یک بازبینی مجازی است که فرزندِ مجموعه‌تغییر (یا دو مجموعه‌تغییر در صورت وجود یک ادغام ثبت‌نشده) نمایش‌داده‌شده توسط hg parents است. این مقدار با hg update تغییر می‌کند. دستورهای دیگر برای مشاهدهٔ والد دایرکتوری کاری عبارتند از hg summary و hg id. همچنین می‌تواند با نام مستعار «.» مشخص شود.
وصله (Patch)
(اسم) حاصل یک عملیات diff.

مثال: "I've sent you my patch." (وصله‌ام را برایتان فرستادم.)

(فعل) فرایند استفاده از یک فایل وصله برای تبدیل یک مجموعه‌تغییر به مجموعه‌تغییری دیگر.

مثال: "You will need to patch that revision." (باید آن بازبینی را وصله کنید.)

فاز (Phase)
وضعیتی به‌ازای هر مجموعه‌تغییر که نحوهٔ هم‌رسانی شدن پیشین مجموعه‌تغییر یا چگونگی اشتراک‌گذاری مورد انتظار آن را دنبال می‌کند. hg help phases را ببینید.
عمومی (Public)
مجموعه‌تغییرات در فاز عمومی (public) با مخازن انتشار هم‌رسانی شده‌اند و بنابراین تغییرناپذیر در نظر گرفته می‌شوند. hg help phases را ببینید.
دریافت (Pull)
عملیاتی که در آن مجموعه‌تغییرات موجود در یک مخزن دوردست که در مخزن محلی وجود ندارند، به مخزن محلی آورده می‌شوند. توجه داشته باشید که این عملیات بدون آرگومان‌های ویژه فقط مخزن را به‌روز می‌کند و فایل‌های موجود در دایرکتوری کاری را به‌روزرسانی نمی‌کند. hg help pull را ببینید.
ارسال (Push)
عملیاتی که در آن مجموعه‌تغییرات موجود در یک مخزن محلی که در مخزن دوردست وجود ندارند، به مخزن دوردست ارسال می‌شوند. توجه داشته باشید که این عملیات فقط مجموعه‌تغییراتی را به مخزن دوردست اضافه می‌کند که به‌صورت محلی ثبت (commit) شده باشند. تغییرات ثبت‌نشده ارسال نمی‌شوند. hg help push را ببینید.
مخزن (Repository)
متاداده‌ای که تمام وضعیت‌های ثبت‌شده از مجموعه‌ای از فایل‌ها را توصیف می‌کند. هر وضعیت ثبت‌شده توسط یک مجموعه‌تغییر نشان داده می‌شود. یک مخزن معمولاً (اما نه همیشه) در زیردایرکتوری .hg از یک دایرکتوری کاری یافت می‌شود. هر وضعیت ثبت‌شده را می‌توان با «به‌روزرسانی» یک دایرکتوری کاری به یک مجموعه‌تغییر خاص، دوباره ایجاد کرد.
رأس مخزن (Repository head)
«رأس، مخزن» ('Head, repository') را ببینید.
بازبینی (Revision)
وضعیتی از مخزن در یک نقطه از زمان. با استفاده از hg update می‌توان به بازبینی‌های پیشین به‌روزرسانی کرد. همچنین «شماره بازبینی» ('Revision number') و «مجموعه‌تغییر» ('Changeset') را ببینید.
شماره بازبینی (Revision number)
این عدد صحیح به‌طور یکتا یک مجموعه‌تغییر را در یک مخزن خاص مشخص می‌کند. این عدد نشان‌دهندهٔ ترتیبی است که مجموعه‌تغییرات به مخزن اضافه شده‌اند و از شماره بازبینی 0 شروع می‌شود. توجه داشته باشید که شماره بازبینی ممکن است در هر نسخهٔ کلون‌شده از یک مخزن متفاوت باشد. برای شناسایی یکتای مجموعه‌تغییرات میان کلون‌های مختلف، «شناسه مجموعه‌تغییر» ('Changeset id') را ببینید.
سازوکار ذخیره‌سازی تاریخچه که توسط Mercurial استفاده می‌شود. این سازوکار شکلی از کدگذاری دلتا (delta encoding) است، با بازبینی‌های کامل دوره‌ای از داده‌ها که با دلتای هر بازبینی متوالی دنبال می‌شود. این سازوکار شامل داده‌ها و یک نمایه است که به داده‌ها اشاره می‌کند.
بازنویسی تاریخچه (Rewriting history)
«تاریخچه، بازنویسی» ('History, rewriting') را ببینید.
ریشه (Root)
مجموعه‌تغییری که تنها مجموعه‌تغییر تهی (null changeset) را به‌عنوان والد خود دارد. بیشتر مخازن تنها یک مجموعه‌تغییر ریشه دارند.
محرمانه (Secret)
مجموعه‌تغییرات در فاز محرمانه (secret) ممکن است از طریق push، pull یا clone هم‌رسانی نشوند. hg help phases را ببینید.
برچسب (Tag)
نامی جایگزین که به یک مجموعه‌تغییر اختصاص داده می‌شود. برچسب‌ها را می‌توان در تمام جاهایی که Mercurial انتظار یک شناسهٔ مجموعه‌تغییر را دارد، مثلاً همراه با hg update به کار برد. ایجاد یک برچسب در تاریخچه ذخیره می‌شود و بنابراین با استفاده از push و pull به‌طور خودکار با دیگران به اشتراک گذاشته خواهد شد.
نوک (Tip)
مجموعه‌تغییری با بالاترین شماره بازبینی. این مجموعه‌تغییر، جدیدترین مورد اضافه‌شده به یک مخزن است.
نوک، شاخه (Tip, branch)
رأس یک شاخهٔ مشخص با بالاترین شماره بازبینی. هنگامی که نام یک شاخه به‌عنوان شناسهٔ بازبینی استفاده می‌شود، به نوک شاخه اشاره دارد. همچنین «شاخه، رأس» ('Branch, head') را ببینید. توجه داشته باشید از آنجا که شماره‌های بازبینی ممکن است در کلون‌های مختلف مخزن متفاوت باشند، نوک شاخه نیز ممکن است در مخازن شبیه‌سازی‌شدهٔ مختلف متفاوت باشد.
به‌روزرسانی (Update)
(اسم) مترادف دیگری برای مجموعه‌تغییر.

مثال: "I've pushed an update." (من یک به‌روزرسانی را push کردم.)

(فعل) این اصطلاح معمولاً برای توصیف به‌روزرسانی وضعیت دایرکتوری کاری به وضعیت یک مجموعه‌تغییر خاص استفاده می‌شود. hg help update را ببینید.

مثال: "You should update." (باید به‌روزرسانی کنید.)

دایرکتوری کاری (Working directory)
«دایرکتوری، کاری» ('Directory, working') را ببینید.
والد دایرکتوری کاری (Working directory parent)
«والد، دایرکتوری کاری» ('Parent, working directory') را ببینید.

سیستم Mercurial از فایلی به نام .hgignore در دایرکتوری ریشهٔ مخزن استفاده می‌کند تا رفتار خود را هنگام جستجوی فایل‌هایی که در حال حاضر ردگیری نمی‌شوند، کنترل کند.

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

یک فایل ردگیری‌نشده در صورتی نادیده گرفته می‌شود که مسیر آن نسبت به دایرکتوری ریشهٔ مخزن، یا هر پیشوندی از آن مسیر، با هر الگویی در .hgignore مطابقت داشته باشد.

برای مثال، فرض کنید یک فایل ردگیری‌نشده به نام file.c در مسیر a/b/file.c درون مخزن خود داریم. Mercurial فایل file.c را نادیده می‌گیرد اگر هر الگویی در .hgignore با a/b/file.c، a/b یا a مطابقت داشته باشد.

علاوه بر این، یک فایل پیکربندی Mercurial می‌تواند به مجموعه‌ای از فایل‌های نادیده‌گیری مختص کاربر یا سراسری ارجاع دهد. برای جزئیات نحوهٔ پیکربندی این فایل‌ها، کلید پیکربندی ignore را در بخش [ui] در hg help config مشاهده کنید.

برای کنترل نحوهٔ مدیریت فایل‌هایی که Mercurial اداره می‌کند، بسیاری از دستورها از گزینه‌های -I و -X پشتیبانی می‌کنند؛ برای جزئیات به hg help <command> و hg help patterns مراجعه کنید.

فایل‌هایی که از قبل ردگیری می‌شوند، حتی در صورت حضور در .hgignore، تحت تأثیر آن قرار نمی‌گیرند. یک فایل ردگیری‌نشده مانند X را می‌توان صریحاً با دستور hg add X اضافه کرد، حتی اگر X توسط یک الگو در .hgignore مستثنی شده باشد.

یک فایل نادیده‌گیری، یک فایل متنی ساده متشکل از فهرستی از الگوها است که در هر سطر یک الگو قرار می‌گیرد. خطوط خالی نادیده گرفته می‌شوند. نویسهٔ # به عنوان نویسهٔ توضیح و نویسهٔ \ به عنوان نویسهٔ گریز (escape) در نظر گرفته می‌شود.

سیستم Mercurial از چندین نحو برای الگوها پشتیبانی می‌کند. نحو پیش‌فرض مورداستفاده، عبارت‌های منظم به سبک Python/Perl است.

برای تغییر نحو مورداستفاده، از سطری با قالب زیر استفاده کنید:

syntax: NAME

که در آن NAME یکی از موارد زیر است:

عبارت منظم، با نحو Python/Perl.

الگوی glob به سبک پوسته (Shell).

گونه‌ای از glob که ریشه‌دار (rooted) است (پایین را ببینید).

نحو انتخاب‌شده هنگام پردازش تمام الگوهای بعدی معتبر باقی می‌ماند، تا زمانی که نحو دیگری تعیین شود.

الگوهای glob و regexp هیچ‌کدام ریشه‌دار نیستند. یک الگوی دارای نحو glob به شکل *.c با فایلی که به .c ختم می‌شود در هر دایرکتوری مطابقت خواهد داشت، و یک الگوی regexp به شکل \.c$ نیز همین کار را انجام می‌دهد. برای ریشه‌دار کردن یک الگوی regexp، آن را با ^ شروع کنید. برای دستیابی به همین نتیجه با نحو glob، باید از rootglob استفاده کنید.

زیردایرکتوری‌ها می‌توانند با افزودن subinclude:path/to/subdir/.hgignore به .hgignore ریشه، تنظیمات .hgignore مختص به خود را داشته باشند. برای جزئیات بیشتر دربارهٔ subinclude: و include:، به hg help patterns مراجعه کنید.

نکته (Note)
الگوهایی که در جایی غیر از .hgignore مشخص شده‌اند، همیشه ریشه‌دار هستند. لطفاً برای جزئیات به hg help patterns مراجعه کنید.

در اینجا نمونه‌ای از یک فایل چشم‌پوشی (ignore) آمده است.

# use glob syntax.
syntax: glob
*.elc
*.pyc
*~
# switch to regexp syntax.
syntax: regexp
^\.pc/

برای بررسی اینکه آیا و چرا یک فایل نادیده گرفته شده است، یا برای مشاهدهٔ الگوی ترکیبی چشم‌پوشی، از دستور debugignore استفاده کنید. برای جزئیات به hg help debugignore مراجعه کنید.

وب‌سرور داخلی Mercurial، با نام hgweb، می‌تواند برای ارائهٔ یک مخزن واحد یا درختی از مخازن به کار رود. در حالت دوم، مسیرهای مخازن و گزینه‌های سراسری را می‌توان با استفاده از یک فایل پیکربندی اختصاصی و مشترک بین hg serve، hgweb.wsgi، hgweb.cgi و hgweb.fcgi تعریف کرد.

این فایل از همان نحو سایر فایل‌های پیکربندی Mercurial استفاده می‌کند، اما تنها بخش‌های زیر را به رسمیت می‌شناسد:

  • web
  • paths
  • collections

گزینه‌های web به‌طور کامل در hg help config شرح داده شده‌اند.

بخش paths مسیرهای URL را به مسیرهای مخازن در فایل‌سیستم نگاشت می‌کند. hgweb فایل‌سیستم را مستقیماً در دسترس عموم قرار نمی‌دهد - تنها مخازن Mercurial قابل انتشار هستند و آن هم صرفاً مطابق با پیکربندی.

سمت چپ، مسیر درون URL است. توجه داشته باشید که hgweb زیرمسیرهایی مانند rev یا file را برای خود رزرو کرده است؛ سعی کنید برای مخازن تودرتو از نام‌های دیگری استفاده کنید تا از بروز رفتارهای ناخواسته و گیج‌کننده جلوگیری شود.

سمت راست، مسیر در فایل‌سیستم است. اگر مسیر مشخص‌شده به * یا ** ختم شود، فایل‌سیستم به‌صورت بازگشتی برای یافتن مخازن در زیر آن نقطه جستجو خواهد شد. با نماد *، جستجو به داخل مخازنی که پیدا می‌کند وارد نخواهد شد (به‌جز .hg/patches). با نماد **، درون دایرکتوری‌های کاری مخازن نیز جستجو صورت می‌گیرد و زیرمخازن (subrepositories) احتمالی نیز یافته خواهند شد.

در این مثال:

[paths]
/projects/a = /srv/tmprepos/a
/projects/b = c:/repos/b
/ = /srv/repos/*
/user/bob = /home/bob/repos/**
  • دو مدخل نخست باعث می‌شوند دو مخزن واقع در دایرکتوری‌های مختلف، در رابط کاربری وب زیر یک دایرکتوری یکسان نمایش داده شوند
  • مدخل سوم هر مخزن Mercurial موجود در /srv/repos/ را منتشر خواهد کرد؛ برای نمونه، مخزن /srv/repos/quux/ به‌صورت http://server/quux/ ظاهر خواهد شد
  • مدخل چهارم هر دو نشانی http://server/user/bob/quux/ و http://server/user/bob/quux/testsubrepo/ را منتشر خواهد کرد

بخش collections منسوخ شده و paths جایگزین آن شده است..SS نشانی‌های URL و آرگومان‌های متداول

نشانی‌های URL تحت هر مخزن قالبی به صورت /{command}[/{arguments}] دارند که در آن {command} بیانگر نام دستور یا گرداننده (handler) و {arguments} بیانگر هر تعداد پارامتر اضافی URL برای آن دستور است.

کارساز وب یک شیوهٔ (style) پیش‌فرض متناظر با خود دارد. شیوه‌ها به مجموعه‌ای از الگوهای نام‌گذاری‌شده نگاشت می‌شوند. هر الگو برای رندر کردن بخش خاصی از داده‌ها، مانند یک مجموعه‌تغییر (changeset) یا diff به کار می‌رود.

شیوهٔ درخواست جاری را می‌توان به دو روش بازنویسی (override) کرد. نخست، اگر {command} شامل خط پیوند (-) باشد، متن پیش از خط پیوند شیوه را تعیین می‌کند. برای نمونه، /atom-log گردانندهٔ دستور log را با شیوهٔ atom رندر خواهد کرد. روش دوم برای تعیین شیوه، استفاده از آرگومان رشتهٔ پرس‌وجوی style است؛ مانند /log?style=atom. استفاده از پارامتر URL دارای خط پیوند ارجح است.

همه الگوها برای همه شیوه‌ها در دسترس نیستند. تلاش برای استفاده از شیوه‌ای که همهٔ الگوهای آن تعریف نشده‌اند ممکن است به بروز خطا در رندر کردن صفحه منجر شود.

بسیاری از دستورها یک پارامتر URL به نام {revision} می‌گیرند. این پارامتر مجموعه‌تغییری را مشخص می‌کند که عملیات روی آن انجام می‌شود. این مقدار معمولاً به صورت اختصار کوتاه و ۱۲ رقمی هگزادسیمال برای شناسهٔ یکتای بازبینی ۴۰ نویسه‌ای کامل مشخص می‌شود. با این حال، هر مقداری که در hg help revisions شرح داده شده است معمولاً کار می‌کند.

دستورهای وب زیر و نشانی‌های URL آن‌ها در دسترس هستند:

اطلاعات مجموعه‌تغییر را برای هر خط از یک فایل نمایش می‌دهد.

آرگومان‌های رشتهٔ پرس‌وجوی ignorews، ignorewsamount، ignorewseol و ignoreblanklines معنایی مشابه با معادل‌هایشان در پیکربندی [annotate] دارند. این آرگومان‌ها از منطق ارزیابی بولی hgrc برای تفسیر مقدار استفاده می‌کنند؛ برای نمونه 0 و false نادرست و 1 و true درست هستند. اگر تعریف نشوند، از تنظیمات پیش‌فرض کارساز استفاده می‌شود.

الگوی fileannotate رندر می‌شود.

دریافت یک بایگانی از محتوای مخزن.

محتوا و نوع بایگانی توسط پارامتر مسیر URL تعیین می‌شود. format پسوند فایل مربوط به نوع بایگانی تولیدی است؛ مانند zip یا tar.bz2. ممکن است همهٔ انواع بایگانی توسط پیکربندی کارساز شما مجاز نباشند.

پارامتر اختیاری URL با نام path محتوایی را که باید در بایگانی گنجانده شود کنترل می‌کند. در صورت حذف، هر فایلی در بازبینی مشخص‌شده در بایگانی حضور خواهد داشت. در صورت درج، تنها فایل مشخص‌شده یا محتویات دایرکتوری مشخص‌شده در بایگانی قرار خواهند گرفت.

هیچ الگویی برای این گرداننده استفاده نمی‌شود. محتوای خام و دودویی تولید می‌شود.

اطلاعات مربوط به نشانک‌ها (bookmarks) را نمایش می‌دهد.

هیچ آرگومانی پذیرفته نمی‌شود.

الگوی bookmarks رندر می‌شود.

اطلاعات مربوط به شاخه‌ها را نمایش می‌دهد.

همهٔ شاخه‌های شناخته‌شده در خروجی گنجانده می‌شوند، حتی شاخه‌های بسته.

هیچ آرگومانی پذیرفته نمی‌شود.

الگوی branches رندر می‌شود.

اطلاعات مربوط به چندین مجموعه‌تغییر را نمایش می‌دهد.

اگر آرگومان اختیاری URL با نام revision وجود نداشته باشد، اطلاعات همهٔ مجموعه‌تغییرها با شروع از tip رندر خواهد شد. اگر آرگومان revision حضور داشته باشد، مجموعه‌تغییرها با شروع از بازبینی مشخص‌شده نمایش داده می‌شوند.

اگر revision غایب باشد، آرگومان رشتهٔ پرس‌وجوی rev می‌تواند تعریف شود. این کار جستجویی را برای مجموعه‌تغییرها انجام خواهد داد.

آرگومان rev می‌تواند یک بازبینی تکی، یک مجموعه بازبینی، یا یک کلیدواژهٔ لفظی برای جستجو در داده‌های مجموعه‌تغییر باشد (معادل hg log -k).

آرگومان رشتهٔ پرس‌وجوی revcount بیشینهٔ تعداد مجموعه‌تغییرها را برای رندر مشخص می‌کند.

برای مواردی به جز جستجو، الگوی changelog رندر خواهد شد..SS /changeset[/{revision}]

نمایش اطلاعات درباره یک مجموعه‌تغییر (changeset).

آرگومان مسیر URL، شناسه مجموعه‌تغییری است که باید نمایش داده شود. برای مشاهده مقادیر مجاز، hg help revisions را ببینید. در صورت عدم تعریف، مجموعه‌تغییر tip نمایش داده خواهد شد.

قالب changeset رندر می‌شود. محتویات قالب‌های changesettag، changesetbookmark، filenodelink، filenolink و قالب‌های متعدد مربوط به diff ممکن است همگی برای تولید خروجی به کار روند.

نمایش مقایسه بین نسخه‌های قدیم و جدید یک فایل بر اساس تغییرات اعمال‌شده در یک بازبینی (revision) خاص.

این بخش شبیه به گرداننده diff است؛ با این تفاوت که این ساختار به جای یک diff یکپارچه (unified diff)، یک diff ستونی یا کنار هم (side-by-side) ارائه می‌دهد.

آرگومان رشته پرس‌وجوی context می‌تواند برای کنترل خطوط بافت (context) در diff استفاده شود.

قالب filecomparison رندر می‌شود.

نمایش نحوه تغییر یک فایل در یک کامیت مشخص.

قالب filediff رندر می‌شود.

این گرداننده تحت هر دو مسیر /diff و /filediff ثبت شده است. در کدهای مدرن از /diff استفاده می‌شود.

نمایش اطلاعات درباره یک دایرکتوری یا فایل در مخزن.

اطلاعات مربوط به path که به عنوان پارامتر URL مشخص شده است رندر خواهد شد.

اگر path یک دایرکتوری باشد، اطلاعات مربوط به ورودی‌های آن دایرکتوری رندر می‌شود. این حالت معادل گرداننده manifest است.

اگر path یک فایل باشد، اطلاعات آن فایل از طریق قالب filerevision نمایش داده خواهد شد.

اگر path تعریف نشود، اطلاعات دایرکتوری ریشه رندر خواهد شد.

نمایش نحوه تغییر یک فایل در یک کامیت مشخص.

قالب filediff رندر می‌شود.

این گرداننده تحت هر دو مسیر /diff و /filediff ثبت شده است. در کدهای مدرن از /diff استفاده می‌شود.

نمایش اطلاعات درباره تاریخچه یک فایل در مخزن.

آرگومان رشته پرس‌وجوی revcount می‌تواند برای تعیین حداکثر تعداد ورودی‌ها جهت نمایش تعریف شود.

قالب filelog رندر خواهد شد.

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

اطلاعات ارائه‌شده توسط این گرداننده می‌تواند برای ساخت نمایش‌های بصری از توپولوژی مخزن استفاده شود.

پارامتر URL مربوط به revision مجموعه‌تغییر آغازین را کنترل می‌کند. در صورت عدم وجود، مقدار پیش‌فرض tip است.

آرگومان رشته پرس‌وجوی revcount می‌تواند تعداد مجموعه‌تغییرهایی که اطلاعات آن‌ها نمایش داده می‌شود را مشخص کند.

آرگومان رشته پرس‌وجوی graphtop می‌تواند مجموعه‌تغییر آغازین را جهت تولید متغیر jsdata (که برای رندر نمودار در JavaScript استفاده می‌شود) تعیین کند. به طور پیش‌فرض، مقداری برابر با revision دارد.

این گرداننده قالب graph را رندر خواهد کرد..SS /help[/{topic}]

رندر کردن مستندات راهنما.

این دستور وب تقریباً معادل hg help است. اگر یک topic تعریف شده باشد، آن مبحث راهنما رندر خواهد شد. در غیر این صورت، فهرستی از مباحث راهنمای موجود رندر می‌شود.

هنگام درخواست راهنما برای یک موضوع، قالب help رندر خواهد شد. برای فهرست موضوعات راهنما، قالب helptopics رندر می‌شود.

نمایش تاریخچهٔ مخزن یا فایل.

برای نشانی‌های وب به شکل /log/{revision}، فهرستی از مجموعه‌تغییرها (changesets) با شروع از شناسهٔ changeset مشخص‌شده نمایش داده می‌شود. اگر {revision} تعریف نشده باشد، مقدار پیش‌فرض tip است. این ساختار معادل گردانندهٔ changelog می‌باشد.

برای نشانی‌های وب به شکل /log/{revision}/{file}، تاریخچهٔ یک فایل بخصوص نمایش داده خواهد شد. این ساختار معادل گردانندهٔ filelog است.

نمایش اطلاعات دربارهٔ یک دایرکتوری.

اگر آرگومان‌های مسیر نشانی وب حذف شوند، اطلاعات مربوط به دایرکتوری ریشه برای مجموعه‌تغییر tip نشان داده خواهد شد.

از آنجا که این گرداننده تنها می‌تواند اطلاعات مربوط به دایرکتوری‌ها را نشان دهد، توصیه می‌شود به جای آن از گردانندهٔ file استفاده کنید، زیرا می‌تواند هم دایرکتوری‌ها و هم فایل‌ها را مدیریت کند.

قالب manifest برای این گرداننده رندر خواهد شد.

نمایش اطلاعات دربارهٔ یک changeset منفرد.

آرگومان مسیر نشانی وب، شناسهٔ changeset برای نمایش است. برای مقادیر ممکن، hg help revisions را ببینید. در صورت تعریف نشدن، changeset مربوط به tip نشان داده خواهد شد.

قالب changeset رندر می‌شود. محتویات changesettag، changesetbookmark، filenodelink، filenolink و قالب‌های متعدد مربوط به diffها همگی ممکن است برای تولید خروجی مورد استفاده قرار گیرند.

نمایش اطلاعات اولیه دربارهٔ مجموعه‌ای از changesetها.

این بخش پارامترهایی مشابه گردانندهٔ changelog می‌پذیرد. تنها تفاوت این است که به جای قالب changelog، قالب shortlog رندر خواهد شد.

نمایش خلاصه‌ای از وضعیت مخزن.

اطلاعات مربوط به جدیدترین changesetها، نشانک‌ها (bookmarks)، تگ‌ها و شاخه‌ها توسط این گرداننده دریافت می‌شود.

قالب summary رندر می‌شود.

نمایش اطلاعات دربارهٔ تگ‌ها.

هیچ آرگومانی پذیرفته نمی‌شود.

قالب tags رندر می‌شود.

برای دسترسی به یک زیرمبحث، از "hg help internals.{subtopic-name}" استفاده کنید

الگوریتم Bid Merge
Bundle2
بسته‌ها (Bundles)
CBOR
سانسور (Censor)
گروه‌های تغییر (Changegroups)
ثبت‌کنندهٔ پیکربندی (Config Registrar)
قالب فایل dirstate-v2
رابط برنامه‌نویسی افزونه‌ها (Extension API)
نمایهٔ فایل (File Index)
وضعیت ادغام (Mergestate)
نیازمندی‌های مخزن (Repository Requirements)
لاگ‌های بازنگری (Revision Logs)
پروتکل شبکه (Wire Protocol)
پروتکل شبکه RPC (یا Wire Protocol RPC)
نسخهٔ ۲ پروتکل شبکه (Wire Protocol Version 2)

برای ادغام فایل‌ها، Mercurial از ابزارهای ادغام استفاده می‌کند.

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

ابزارهای ادغام هم برای hg resolve، hg merge، hg update، hg backout و هم در چندین افزونه استفاده می‌شوند.

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

ابزارهای ادغام خارجی و ویژگی‌های آن‌ها در بخش پیکربندی merge-tools تنظیم می‌شوند - hgrc(5) را ببینید - اما اغلب می‌توان آن‌ها را صرفاً با نام فایل اجرایی‌شان مشخص کرد.

یک ابزار ادغام به‌طور کلی زمانی قابل استفاده است که فایل اجرایی آن در سیستم پیدا شود و بتواند ادغام را انجام دهد. فایل اجرایی زمانی پیدا می‌شود که یک مسیر اجرایی مطلق یا نسبی یا نام یک برنامه در مسیر جستجوی فایل‌های اجرایی باشد. ابزار در صورتی قادر به انجام ادغام در نظر گرفته می‌شود که اگر فایل یک symlink باشد بتواند symlinkها را مدیریت کند، اگر فایل باینری باشد بتواند فایل‌های باینری را مدیریت کند، و در صورتی که ابزار به رابط گرافیکی نیاز دارد، GUI در دسترس باشد.

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

:dump

سه نسخه از فایل‌ها را برای ادغام ایجاد می‌کند که شامل محتویات local، other و base هستند. سپس می‌توان از این فایل‌ها برای انجام دستی ادغام استفاده کرد. اگر نام فایل مورد نظر برای ادغام a.txt باشد، این فایل‌ها متناسب با آن a.txt.local، a.txt.other و a.txt.base نام‌گذاری خواهند شد و در همان دایرکتوری a.txt قرار می‌گیرند.

این ابزار شامل premerge است. بنابراین، اگر premerge با موفقیت اجرا شود، فایل‌ها استخراج (dump) نمی‌شوند. برای نوشتن اجباری فایل‌ها از :forcedump استفاده کنید.

(قابلیت‌های واقعی: binary، symlink)

:fail

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

(قابلیت‌های واقعی: binary، symlink)

:forcedump

مانند :dump سه نسخه از فایل‌ها را ایجاد می‌کند، اما از premerge صرف‌نظر می‌کند.

(قابلیت‌های واقعی: binary، symlink)

:local

از نسخه محلی p1() فایل‌ها به عنوان نسخه ادغام‌شده استفاده می‌کند.

(قابلیت‌های واقعی: binary، symlink)

:merge

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

:merge-local

مانند :merge است، اما تمام تعارض‌ها را به صورت غیرتعاملی به نفع تغییرات محلی p1() حل می‌کند.

:merge-other

مانند :merge است، اما تمام تعارض‌ها را به صورت غیرتعاملی به نفع تغییرات طرف دیگر p2() حل می‌کند.

:merge3

از الگوریتم داخلی ساده و غیرتعاملی برای ادغام فایل‌ها استفاده می‌کند. در صورت وجود هرگونه تعارض با شکست مواجه می‌شود و نشانگرهایی را در فایل تا حدی ادغام‌شده باقی می‌گذارد. نشانگر دارای سه بخش خواهد بود، یکی برای هر طرف ادغام و یکی برای محتوای پایه (base).

:mergediff

از الگوریتم داخلی ساده و غیرتعاملی برای ادغام فایل‌ها استفاده می‌کند. در صورت وجود هرگونه تعارض با شکست مواجه می‌شود و نشانگرهایی را در فایل تا حدی ادغام‌شده باقی می‌گذارد. نشانگر دو بخش خواهد داشت، یکی با محتوای یک طرف ادغام، و دیگری با یک diff از محتوای پایه نسبت به محتوای طرف دیگر. (آزمایشی)

:other

از نسخه طرف دیگر p2() فایل‌ها به عنوان نسخه ادغام‌شده استفاده می‌کند.

(قابلیت‌های واقعی: binary، symlink)

:prompt

از کاربر می‌پرسد که کدام یک از نسخه‌های محلی p1() یا طرف دیگر p2() به عنوان نسخه ادغام‌شده نگه‌داری شود.

(قابلیت‌های واقعی: binary، symlink)

:tagmerge

از الگوریتم داخلی ادغام برچسب (tag merge) استفاده می‌کند (آزمایشی).

:union

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

:union-other-first

مانند :union است، اما other را روی local اضافه می‌کند.

ابزارهای داخلی همیشه در دسترس هستند و به GUI نیازی ندارند، اما به طور پیش‌فرض پیوندهای نمادین یا فایل‌های باینری را مدیریت نمی‌کنند. برای جزئیات در مورد «قابلیت‌های واقعی» که در بالا توضیح داده شد، به بخش بعدی مراجعه کنید..SS "انتخاب ابزار ادغام (Choosing a merge tool)"

Mercurial هنگام تصمیم‌گیری درباره این‌که از کدام ابزار ادغام استفاده کند، از این قواعد پیروی می‌کند:

1.
اگر ابزاری با گزینه --tool برای merge یا resolve مشخص شده باشد، از همان استفاده می‌شود. اگر نام یک ابزار در پیکربندی merge-tools باشد، پیکربندی آن به‌کار گرفته می‌شود. در غیر این صورت، ابزار مشخص‌شده باید توسط شل قابل اجرا باشد.
2.
اگر متغیر محیطی HGMERGE تعریف شده باشد، از مقدار آن استفاده می‌شود و این مقدار باید توسط شل قابل اجرا باشد.
3.
اگر نام فایل مورد نظر برای ادغام با هر یک از الگوها در بخش پیکربندی merge-patterns مطابقت داشته باشد، نخستین ابزار ادغامِ قابل استفاده متناظر با الگوی منطبق، به‌کار گرفته می‌شود.
4.
اگر ui.merge تنظیم شده باشد، در مرحله بعد بررسی خواهد شد. اگر مقدار آن نام یک ابزار پیکربندی‌شده نباشد، از همان مقدار تعیین‌شده استفاده می‌شود و باید توسط شل قابل اجرا باشد. در غیر این صورت، اگر ابزار نام‌برده قابل استفاده باشد، همان به‌کار گرفته می‌شود.
5.
اگر هر ابزار ادغامِ قابل استفاده‌ای در بخش پیکربندی merge-tools موجود باشد، ابزاری که بالاترین اولویت را دارد استفاده می‌شود.
6.
اگر برنامه‌ای با نام hgmerge در سیستم یافت شود، استفاده خواهد شد - اما به‌طور پیش‌فرض برای symlinkها و فایل‌های باینری استفاده نمی‌شود.
7.
اگر فایلی که باید ادغام شود باینری نباشد و یک symlink نیز نباشد، آنگاه :merge داخلی استفاده می‌شود.
8.
در غیر این صورت، :prompt به‌کار می‌رود.

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

مرحله تعیین‌شده از طریق باینری symlink
0.0 1. 3 168u --tool o/o o/o
0.0 2. 3 168u HGMERGE o/o o/o
0.0 3. 3 168u merge-patterns o/o(*) x/?(*)
0.0 4. 3 168u ui.merge x/?(*) x/?(*)

هر ستون قابلیت، نشان‌دهنده رفتار Mercurial در قبال ابزارهای ادغام داخلی/خارجی هنگام بررسی هر قاعده است.

  • "o": "فرض بر این است که ابزار دارای قابلیت است"
  • "x": "فرض بر این است که ابزار فاقد قابلیت است"
  • "?": "بررسی قابلیت واقعی ابزار"

اگر پیکربندی merge.strict-capability-check برابر true باشد، Mercurial قابلیت‌های ابزارهای ادغام را در موارد (*) بالا به‌طور دقیق بررسی می‌کند (= هر ستون قابلیت به "?/?" تبدیل می‌شود). این مقدار برای سازگاری با گذشته به‌طور پیش‌فرض false است.

نکته
پس از انتخاب یک برنامه ادغام، Mercurial به‌طور پیش‌فرض ابتدا تلاش خواهد کرد فایل‌ها را با استفاده از یک الگوریتم ادغام ساده ادغام کند. تنها در صورتی که این کار به دلیل تغییرات دارای تداخل با شکست مواجه شود، Mercurial برنامه ادغام را در عمل اجرا خواهد کرد. اینکه آیا ابتدا از الگوریتم ادغام ساده استفاده شود یا خیر، از طریق تنظیم premerge ابزار ادغام قابل کنترل است. premerge به‌طور پیش‌فرض فعال است مگر اینکه فایل باینری یا یک symlink باشد.

برای جزئیات بیشتر درباره پیکربندی ابزارهای ادغام، بخش‌های merge-tools و ui در hgrc(5) را ببینید..SH "پشتیبانی از صفحه‌بند (PAGER SUPPORT)"

برخی از دستورهای Mercurial می‌توانند خروجی زیادی تولید کنند، و Mercurial تلاش خواهد کرد تا از یک صفحه‌بند (pager) استفاده کند تا کار با آن دستورها آسان‌تر شود.

برای تعیین صفحه‌بندی که باید استفاده شود، متغیر برنامه را تنظیم کنید:

[pager]
pager = less -FRX

اگر هیچ صفحه‌بندی در پیکربندی کاربر یا مخزن تنظیم نشده باشد، Mercurial از متغیر محیطی $PAGER استفاده می‌کند. اگر $PAGER تنظیم نشده باشد، pager.pager از پیکربندی پیش‌فرض یا سیستمی استفاده می‌شود. اگر هیچ‌یک از این‌ها تنظیم نشده باشند، یک صفحه‌بند پیش‌فرض استفاده خواهد شد که معمولاً در Unix برابر less و در Windows برابر more است.

در Windows، دستور more از رنگ پشتیبانی نمی‌کند، بنابراین استفاده از آن عملاً رنگ را غیرفعال می‌کند. پوسته‌های MSYS و Cygwin دستور less را به‌عنوان صفحه‌بند ارائه می‌دهند که می‌توان آن را برای پشتیبانی از کدهای رنگی ANSI پیکربندی کرد. برای پیکربندی حالت رنگ هنگام فراخوانی صفحه‌بند، hg help config.color.pagermode را ببینید.

می‌توانید با افزودن دستورها به فهرست pager.ignore، صفحه‌بند را برای دستورهای خاصی غیرفعال کنید:

[pager]
ignore = version, help, update

برای نادیده گرفتن دستورهای سراسری مانند hg version یا hg help، باید آن‌ها را در فایل پیکربندی کاربر خود مشخص کنید.

برای کنترل اینکه آیا برای یک دستور خاص اصلاً از صفحه‌بند استفاده شود یا خیر، می‌توانید از --pager=<value> استفاده کنید:

  • استفاده در صورت نیاز: auto.
  • الزام به استفاده از صفحه‌بند: yes یا on.
  • جلوگیری از صفحه‌بند: no یا off (هر مقدار ناشناختهٔ دیگری نیز کار خواهد کرد).

برای غیرفعال کردن سراسری تمام تلاش‌ها جهت استفاده از صفحه‌بند، این مورد را تنظیم کنید:

[ui]
paginate = never

که از اجرای صفحه‌بند جلوگیری خواهد کرد.

ابزار Mercurial شیوه‌های نگارش متعددی را برای شناسایی یک یا چند فایل به‌صورت هم‌زمان می‌پذیرد.

به‌طور پیش‌فرض، Mercurial با نام‌های فایل به‌صورت لفظی (عین عبارت) و بدون تطبیق الگو، نسبت به دایرکتوری کاری فعلی رفتار می‌کند. توجه داشته باشید که پوستهٔ سیستم شما ممکن است پیش از ارسال نام‌های فایل به Mercurial، تطبیق الگوی مخصوص به خود را انجام دهد.

شیوه‌های دیگر نگارش الگو باید به‌صورت صریح مشخص شوند.

نکته
الگوهای مشخص‌شده در .hgignore مقید به ریشه نیستند. لطفاً برای جزئیات hg help hgignore را ببینید.

برای استفاده از یک نام مسیر ساده بدون هیچ‌گونه تطبیق الگو، آن را با path: آغاز کنید. این نام‌های مسیر باید از ریشهٔ مخزن فعلی به‌طور کامل مطابقت داشته باشند، و هنگامی که مسیر به یک دایرکتوری اشاره می‌کند، تطبیق آن به‌صورت بازگشتی انجام می‌شود. برای تطبیق تمام فایل‌ها در یک دایرکتوری به‌صورت غیربازگشتی (بدون شامل شدن هیچ فایلی در زیردایرکتوری‌ها)، می‌توان از rootfilesin: با مشخص کردن یک مسیر مطلق (نسبت به ریشهٔ مخزن) استفاده کرد. برای تطبیق دقیق یک تک‌فایل، نسبت به ریشهٔ مخزن، می‌توانید از filepath: استفاده کنید.

برای استفاده از یک glob گسترش‌یافته، نام را با glob: آغاز کنید. الگوهای glob نسبت به دایرکتوری جاری مبنا می‌گیرند؛ الگویی مانند *.c تنها با فایل‌هایی در دایرکتوری جاری مطابقت می‌یابد که به .c ختم می‌شوند. برای یک glob که مبنای آن ریشهٔ مخزن است، می‌توان به‌جای glob: از rootglob: استفاده کرد.

گسترش‌های نحوی glob پشتیبانی‌شده عبارتند از ** برای تطبیق با هر رشته‌ای در میان جداکننده‌های مسیر و {a,b} به معنای «a یا b».

برای استفاده از یک عبارت منظم Perl/Python، نام را با re: آغاز کنید. تطبیق الگوی عبارت منظم، در ریشهٔ مخزن مهار (anchored) می‌شود.

برای خواندن الگوهای نام از یک فایل، از listfile: یا listfile0: استفاده کنید. مورد دوم انتظار الگوهای جداشده با بایت تهی (null) را دارد، در حالی که اولی خطوط جدید را در نظر می‌گیرد. هر رشتهٔ خوانده‌شده از فایل، خود به‌عنوان یک الگوی فایل تلقی می‌شود.

برای خواندن مجموعه‌ای از الگوها از یک فایل، از include: یا subinclude: استفاده کنید. include: از تمام الگوهای فایل داده‌شده استفاده کرده و با آن‌ها طوری رفتار می‌کند که گویی دستی وارد شده‌اند. subinclude: الگوها را تنها بر روی فایل‌هایی اعمال می‌کند که زیر دایرکتوریِ فایل subinclude قرار دارند. برای جزئیات در مورد قالب این فایل‌ها، hg help hgignore را ببینید.

تمام الگوها، به‌جز glob: مشخص‌شده در خط فرمان (نه برای گزینه‌های -I یا -X)، می‌توانند با دایرکتوری‌ها نیز تطبیق یابند: فایل‌های زیر دایرکتوری‌های تطبیق‌یافته، به‌عنوان تطبیق‌یافته در نظر گرفته می‌شوند. برای گزینه‌های -I و -X، الگوی glob: دایرکتوری‌ها را به‌صورت بازگشتی مطابقت می‌دهد.

مثال‌های ساده (Plain):

path:foo/bar                  نام bar در دایرکتوری با نام foo در ریشهٔ
                              مخزن
path:some/path                یک فایل یا دایرکتوری با نام "some/path"
filepath:some/path/to/a/file  دقیقاً یک تک‌فایل با نام
                              "some/path/to/a/file"، نسبت به ریشهٔ
                              مخزن
rootfilesin:foo/bar           فایل‌های درون دایرکتوری با نام foo/bar،
                              اما نه هیچ فایلی در زیردایرکتوری‌های آن
                              و نه فایل bar در دایرکتوری foo

مثال‌های Glob:

glob:*.c       هر نامی که در دایرکتوری جاری به ".c" ختم می‌شود
*.c            هر نامی که در دایرکتوری جاری به ".c" ختم می‌شود
**.c           هر نامی که در هر زیردایرکتوری از دایرکتوری جاری،
               شامل خود آن، به ".c" ختم می‌شود.
foo/*          هر فایلی در دایرکتوری foo
foo/**         هر فایلی در دایرکتوری foo به‌همراه همهٔ زیردایرکتوری‌های
               آن، به‌صورت بازگشتی
foo/*.c        هر نامی که در دایرکتوری foo به ".c" ختم می‌شود
foo/**.c       هر نامی که در هر زیردایرکتوری از foo، شامل خود آن،
               به ".c" ختم می‌شود.
rootglob:*.c   هر نامی که در ریشهٔ مخزن به ".c" ختم می‌شود

مثال‌های عبارت منظم (Regexp):

re:.*\.c$      هر نامی که به ".c" ختم می‌شود، در هر کجای مخزن

مثال‌های فایل:

listfile:list.txt  خواندن فهرست از list.txt با یک الگوی فایل در هر خط
listfile0:list.txt خواندن فهرست از list.txt با جداکننده‌های بایت تهی (null)

همچنین hg help filesets را ببینید.

مثال‌های Include:

include:path/to/mypatternfile    خواندن الگوها برای اعمال بر تمام مسیرها
subinclude:path/to/subignorefile خواندن الگوها به‌طور خاص برای مسیرهای
                                 درون زیردایرکتوری

فازها سامانه‌ای برای ردگیری این موضوع هستند که کدام مجموعه‌تغییرها (changesets) به اشتراک گذاشته شده‌اند یا باید به اشتراک گذاشته شوند. این کار به جلوگیری از اشتباه‌های متداول هنگام اصلاح تاریخچه کمک می‌کند (برای نمونه، با افزونه‌های mq یا rebase).

هر مجموعه‌تغییر در یک مخزن، در یکی از فازهای زیر قرار دارد:

  • public : مجموعه‌تغییر روی یک سرور عمومی قابل مشاهده است
  • draft : مجموعه‌تغییر هنوز منتشر نشده است
  • secret : مجموعه‌تغییر نباید push، pull، یا clone شود

این فازها دارای ترتیب هستند (public < draft < secret) و هیچ مجموعه‌تغییری نمی‌تواند در فازی پایین‌تر از نیاکان خود باشد. برای نمونه، اگر یک مجموعه‌تغییر public باشد، تمام نیاکان آن نیز public هستند. در نهایت، فازهای مجموعه‌تغییر تنها باید به سمت فاز public تغییر یابند.

در بیشتر موارد، فازها باید به‌صورت شفاف و خودکار عمل کنند. به‌طور پیش‌فرض، یک مجموعه‌تغییر در فاز draft ایجاد می‌شود و هنگامی که به مخزن دیگری push شود، به فاز public منتقل می‌گردد.

به محض اینکه مجموعه‌تغییرها public شوند، افزونه‌هایی مانند mq و rebase برای جلوگیری از ایجاد مجموعه‌تغییرهای تکراری، از دستکاری آن‌ها خودداری خواهند کرد. همچنین فازها را می‌توان در صورت نیاز با دستور hg phase به‌صورت دستی تغییر داد. برای مشاهدهٔ مثال‌ها، hg help -v phase را ببینید.

برای اینکه commitهای شما به‌طور پیش‌فرض secret باشند، این تنظیم را در فایل پیکربندی خود قرار دهید:

[phases]
new-commit = secret

به‌طور معمول، همهٔ سرورها به‌طور پیش‌فرض در وضعیت publishing هستند. این بدان معناست که:

- تمامی مجموعه‌تغییرهای draft که pull یا clone شوند، در سمت کلاینت
در فاز public ظاهر می‌شوند
- تمامی مجموعه‌تغییرهای draft که push شوند، هم در کلاینت و هم در سرور
به‌صورت public ظاهر می‌شوند
- مجموعه‌تغییرهای secret نه push می‌شوند، نه pull، و نه clone
نکته
دریافت (pull) یک مجموعه‌تغییر draft از سروری با حالت publishing، به دلیل ماهیت فقط‌خواندنیِ (read-only) عملیات pull، آن را در سمت سرور به public تغییر وضعیت نمی‌دهد.

گاهی اوقات ممکن است ارسال (push) و دریافت (pull) مجموعه‌تغییرها در فاز draft برای به اشتراک‌گذاری کارهای ناتمام مطلوب باشد. این کار با غیرفعال‌سازی حالت publishing در فایل پیکربندی یک مخزن امکان‌پذیر است:

[phases]
publish = False

برای اطلاعات بیشتر در مورد فایل‌های پیکربندی، hg help config را ببینید.

نکته
با سرورهایی که نگارش‌های قدیمی‌تر Mercurial را اجرا می‌کنند، به‌عنوان publishing رفتار می‌شود.

نکته
مجموعه‌تغییرهای موجود در فاز secret با سرور مبادله نمی‌شوند. این موضوع در مورد محتوای آن‌ها صدق می‌کند: نام فایل‌ها، محتوای فایل‌ها و فراداده‌های مجموعه‌تغییر. به دلایل فنی، ممکن است شناسهٔ (برای مثال d825e4025e39) مجموعه‌تغییر secret به سرور منتقل شود.
  • فهرست کردن مجموعه‌تغییرها (changesets) در فاز draft یا secret:
    hg log -r "not public()"
  • تغییر دادن تمام مجموعه‌تغییرهای secret به draft:
    hg phase --draft "secret()"
  • انتقال اجباری مجموعه‌تغییر کنونی و نوادگان آن از public به draft:
    hg phase --force --draft .
  • نمایش فهرستی از بازبینی‌های مجموعه‌تغییر و فاز مربوط به هر یک:
    hg log --template "{rev} {phase}\n"
  • همگام‌سازی مجدد مجموعه‌تغییرهای draft نسبت به یک مخزن دوردست (remote):
    hg phase -fd "outgoing(URL)"

برای اطلاعات بیشتر دربارهٔ دستکاری دستی فازها، hg help phase را ببینید.

نرم‌افزار Mercurial از چندین روش برای مشخص کردن بازبینی‌ها پشتیبانی می‌کند.

یک عدد صحیح ساده، به عنوان شمارهٔ بازبینی در نظر گرفته می‌شود. اعداد صحیح منفی به عنوان آفست‌های ترتیبی از tip در نظر گرفته می‌شوند؛ به‌طوری‌که -1 بیانگر tip، و -2 بیانگر بازبینی پیش از tip است، و به همین ترتیب ادامه می‌یابد.

یک رشتهٔ شانزده‌شانزدهی (hexadecimal) ۴۰ رقمی به عنوان شناسهٔ بازبینی یکتا در نظر گرفته می‌شود. یک رشتهٔ شانزده‌شانزدهی با طول کمتر از ۴۰ نویسه نیز به عنوان یک شناسهٔ بازبینی یکتا در نظر گرفته شده و شناسهٔ فرم‌کوتاه (short-form) نامیده می‌شود. یک شناسهٔ فرم‌کوتاه تنها در صورتی معتبر است که پیشوند دقیقاً یک شناسه با طول کامل باشد.

هر رشتهٔ دیگری به عنوان یک bookmark، برچسب (tag)، یا نام شاخه (branch) در نظر گرفته می‌شود. یک bookmark یک اشاره‌گر جابه‌جاشونده به یک بازبینی است. یک tag نامی دائمی است که به یک بازبینی نسبت داده شده است. نام یک شاخه نشان‌دهندهٔ تازه‌ترین سرشاخهٔ باز (tipmost open branch head) از آن شاخه است - یا در صورتی که همهٔ آن‌ها بسته باشند، تازه‌ترین سرشاخهٔ بستهٔ آن شاخه خواهد بود. نام‌های bookmark، برچسب (tag)، و شاخه (branch) نباید شامل نویسهٔ ":" باشند.

نام رزروشدهٔ "tip" همواره جدیدترین بازبینی را مشخص می‌کند.

نام رزروشدهٔ "null" بیانگر بازبینی تهی است. این، بازبینی یک مخزن خالی و والدِ بازبینی 0 است.

نام رزروشدهٔ "." بیانگر والد دایرکتوری کاری است. اگر هیچ دایرکتوری کاری تحویل گرفته نشده باشد (checked out)، معادل با null خواهد بود. اگر یک ادغام ثبت‌نشده (uncommitted merge) در جریان باشد، "." بازبینی والد اول خواهد بود.

در نهایت، دستورهایی که انتظار یک بازبینی واحد را دارند (مانند hg update) مجموعه‌بازبینی‌ها یا revsetها را نیز می‌پذیرند (برای جزئیات به بخش زیر مراجعه کنید). هنگام دریافت یک revset، آن‌ها از آخرین بازبینی موجود در revset استفاده می‌کنند. تعداد کمی از دستورها دو بازبینی واحد را می‌پذیرند (مانند hg diff). هنگام دریافت یک revset، آن‌ها از نخستین و آخرین بازبینی revset استفاده خواهند کرد..SS مشخص کردن چندین بازنگری

مرکوریال (Mercurial) از یک زبان تابعی برای انتخاب مجموعه‌ای از بازنگری‌ها پشتیبانی می‌کند. عبارت‌ها در این زبان revset نامیده می‌شوند.

این زبان از تعدادی گزاره پشتیبانی می‌کند که توسط عملگرهای میانوند به یکدیگر متصل می‌شوند. از پرانتز می‌توان برای گروه‌بندی استفاده کرد.

شناسه‌هایی مانند نام شاخه‌ها، در صورتی که حاوی نویسه‌هایی مثل - باشند یا با یکی از گزاره‌های از پیش تعریف‌شده مطابقت داشته باشند، ممکن است نیاز به قرار گرفتن داخل نقل‌قول تکی یا دوگانه داشته باشند.

نویسه‌های خاص را می‌توان با گریز دادن (escape کردن) در شناسه‌های داخل نقل‌قول استفاده کرد؛ به عنوان مثال، \n به عنوان خط جدید تفسیر می‌شود. برای جلوگیری از تفسیر آن‌ها، می‌توان رشته‌ها را با پیشوند r مشخص کرد، مانند r'...'.

تنها یک عملگر پیشوندی وجود دارد:

مجموعه‌تغییرهایی که در x نیستند. فرم کوتاه آن ! x است.

عملگرهای میانوند پشتیبانی‌شده عبارتند از:

یک بازه در گراف جهت‌دار بدون دور (DAG)، به معنای تمام مجموعه‌تغییرهایی که نوادگان x و نیاکان y هستند، شامل خود x و y. اگر نقطه انتهایی نخست حذف شود، معادل ancestors(y) است، و اگر دومی حذف شود، معادل descendants(x) خواهد بود.

یک نحو جایگزین x..y است.

تمام مجموعه‌تغییرهای با شماره بازنگری بین x و y، شامل هر دو مورد. هر یک از نقاط انتهایی می‌تواند حذف شود، که مقدار پیش‌فرض آن‌ها 0 و tip است.

اشتراک مجموعه‌تغییرها در x و y. شکل کوتاه آن x & y است.

اجتماع مجموعه‌تغییرها در x و y. دو شکل کوتاه جایگزین وجود دارد: x | y و x + y.

مجموعه‌تغییرهایی که در x هستند اما در y نیستند.

مجموعه‌تغییرهایی که از نیاکان x هستند اما از نیاکان y نیستند (یعنی ::x - ::y). این یک نشانه‌گذاری کوتاه برای only(x, y) است (پایین‌تر را ببینید). آرگومان دوم اختیاری است و در صورت حذف، معادل only(x) خواهد بود.

والد nامِ x، که در آن n == 0، 1، یا 2 است. به ازای n == 0، خود x؛ به ازای n == 1، نخستین والد هر مجموعه‌تغییر در x؛ برای n == 2، دومین والد هر مجموعه‌تغییر در x.

nامین والد نخست x؛ x~0 برابر با x است؛ x~3 معادل x^^^ است. برای n < 0، nامین نواده بدون ابهام x.

الحاق رشته‌ها و شناسه‌ها به یکدیگر در قالب یک رشته.

تمام عملگرهای دیگرِ پیشوندی، میانوند و پسوندی اولویت کمتری نسبت به ## دارند. برای مثال، a1 ## a2~2 معادل (a1 ## a2)~2 است.

برای مثال:

[revsetalias]
issue(a1) = grep(r'\bissue[ :]?' ## a1 ## r'\b|\bbug\(' ## a1 ## r'\)')

در این حالت، issue(1234) معادل grep(r'\bissue[ :]?1234\b|\bbug\(1234\)') است. این عبارت با تمام موارد "issue 1234"، "issue:1234"، "issue1234" و "bug(1234)" مطابقت دارد.

تنها یک عملگر پسوندی وجود دارد:

معادل x^1، نخستین والد هر مجموعه‌تغییر در x.

در جاهایی که ذکر شده است، گزاره‌هایی که تطبیق رشته انجام می‌دهند می‌توانند یک رشتهٔ الگو بپذیرند. الگو می‌تواند یک عبارت تحت‌اللفظی (literal) یا یک عبارت منظم (regular expression) باشد. اگر الگو با re: آغاز شود، ادامهٔ الگو به عنوان یک عبارت منظم در نظر گرفته می‌شود؛ در غیر این صورت، به عنوان یک عبارت تحت‌اللفظی رفتار خواهد شد. برای تطبیق الگویی که واقعاً با re: شروع می‌شود، از پیشوند literal: استفاده کنید.

تطبیق به بزرگی و کوچکی حروف حساس است (case-sensitive)، مگر آن‌که خلاف آن قید شده باشد. برای انجام تطبیق غیرحساس به حروف کوچک و بزرگ روی یک گزارهٔ حساس، از یک عبارت منظم با پیشوند (?i) استفاده کنید.

برای نمونه، tag(r're:(?i)release') با "release" یا "RELEASE" یا "Release" و غیره تطبیق می‌یابد.

گزاره‌های زیر پشتیبانی می‌شوند:

مجموعه‌تغییراتی که فایلی منطبق با الگو اضافه می‌کنند.

انتظار می‌رود الگوی بدون نوع صریح مانند glob: نسبت به دایرکتوری جاری سنجیده شده و با یک فایل یا دایرکتوری تطبیق یابد.

تمام مجموعه‌تغییرات، مشابه با 0:tip.

بزرگ‌ترین نیای مشترک مجموعه‌تغییرات.

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

مجموعه‌تغییراتی که نیای مجموعه‌تغییرات درون set هستند، شامل خود مجموعه‌تغییرات ارائه‌شده.

در صورت تعیین depth، خروجی تنها شامل مجموعه‌تغییرات تا نسل مشخص‌شده خواهد بود.

نام مستعاری برای user(string).

مجموعه‌تغییرات نشانه‌گذاری‌شده در وضعیت مشخص bisect:

  • good، bad، skip: مجموعه‌تغییراتی که صراحتاً به عنوان good/bad/skip نشانه‌گذاری شده‌اند
  • goods، bads : مجموعه‌تغییرات با وضعیت توپولوژیکی good/bad
  • range : مجموعه‌تغییرات حاضر در دو‌نیم‌سازی (bisection)
  • pruned : مجموعه‌تغییراتی که goods، bads یا ردشده (skipped) هستند
  • untested : مجموعه‌تغییراتی که وضعیت آن‌ها هنوز نامشخص است
  • ignored : مجموعه‌تغییرات نادیده‌گرفته‌شده به دلیل توپولوژی DAG
  • current : مجموعه‌تغییراتی که در حال حاضر تحت bisect قرار دارد

بوک‌مارک مشخص‌شده یا همهٔ بوک‌مارک‌ها.

تطبیق الگو برای name پشتیبانی می‌شود. hg help revisions.patterns را ببینید.

تمام مجموعه‌تغییرات متعلق به شاخهٔ داده‌شده یا شاخه‌های مجموعه‌تغییرات ارائه‌شده.

تطبیق الگو برای string پشتیبانی می‌شود. hg help revisions.patterns را ببینید.

مجموعه‌تغییراتی با بیش از یک فرزند.

مجموعه‌تغییرات موجود در بسته (bundle).

بسته باید با گزینهٔ -R مشخص شود.

مجموعه‌تغییرات فرزند برای مجموعه‌تغییرات در set.

مجموعه‌تغییرات بسته است.

مجموعه‌تغییراتی که نیای تک‌تک مجموعه‌تغییرات در set هستند.

سمت محلی ادغام، اگر در حال حاضر در یک ادغام حل‌نشده باشد.

واژهٔ "merge" در اینجا شامل تداخل‌های ادغام ناشی از مواردی مانند 'hg rebase' یا 'hg graft' نیز می‌شود.

سمت دیگر ادغام، اگر در حال حاضر در یک ادغام حل‌نشده باشد.

واژهٔ "merge" در اینجا شامل تداخل‌های ادغام ناشی از مواردی مانند 'hg rebase' یا 'hg graft' نیز می‌شود.

مانیفست بازبینی، حاوی فایلی منطبق با الگو است (اما ممکن است آن را تغییر نداده باشد). برای اطلاعات دربارهٔ الگوهای فایل، hg help patterns را ببینید.

انتظار می‌رود الگوی بدون نوع صریح مانند glob: جهت کارایی بهتر، نسبت به دایرکتوری جاری بوده و دقیقاً با یک فایل تطبیق یابد.

مجموعه‌تغییرات تبدیل‌شده از شناسهٔ داده‌شده در مخزن قدیمی (در صورت وجود)، یا تمام مجموعه‌تغییرات تبدیل‌شده در صورت عدم تعیین شناسه.

مجموعه‌تغییرات درون بازهٔ زمانی، hg help dates را ببینید.

جستجوی string در پیام کامیت. تطبیق نسبت به بزرگی و کوچکی حروف حساس نیست (case-insensitive).

تطبیق الگو برای string پشتیبانی می‌شود. hg help revisions.patterns را ببینید.

مجموعه‌تغییراتی که نوادهٔ مجموعه‌تغییرات در set هستند، شامل خود مجموعه‌تغییرات ارائه‌شده.

در صورت تعیین depth، نتیجه تنها شامل مجموعه‌تغییرات تا نسل مشخص‌شده خواهد بود.

مجموعه‌تغییراتی که توسط عملیات graft، transplant یا rebase ایجاد شده‌اند و بازبینی‌های ارائه‌شده به عنوان مبدأ آن‌ها مشخص شده است. حذف کردن set اختیاری معادل ارسال all() است.

جستجوی تفاوت‌های بازبینی برای زمانی که الگو اضافه یا حذف شده است.

الگو می‌تواند یک زیررشتهٔ تحت‌اللفظی یا یک عبارت منظم باشد. hg help revisions.patterns را ببینید.

مجموعه‌تغییرات در فاز پیش‌نویس (draft).

در صورتی که size با اندازهٔ revset تطابق داشته باشد، revset داده‌شده را برمی‌گرداند. اگر revset اندازهٔ داده‌شده را نداشته باشد، لغو می‌شود (Abort). مقدار size می‌تواند یک بازه از اعداد صحیح یا یک عدد صحیح باشد..sp برای مثال، expectsize(0:1, 3:5) لغو خواهد شد زیرا اندازه revset برابر با ۲ است و ۲ بین ۳ و ۵ (شامل خود آن‌ها) نیست.

مجموعه‌تغییرها (changesets) دارای برچسب داده‌شده در فراداده‌های اضافی (extra metadata)، همراه با مقدار اختیاری مشخص‌شده.

تطبیق الگو برای value پشتیبانی می‌شود. به hg help revisions.patterns مراجعه کنید.

مجموعه‌تغییرهایی که بر فایل‌های منطبق با الگو تأثیر می‌گذارند.

برای نتیجه‌ای سریع‌تر اما با دقت کمتر، می‌توانید استفاده از filelog() را در نظر بگیرید.

این گزاره از glob: به‌عنوان نوع پیش‌فرض الگو استفاده می‌کند.

مجموعه‌تغییرهای متصل به filelog مشخص‌شده.

به دلایل کارایی و عملکرد، تنها بازبینی‌های ذکرشده در filelog در سطح فایل بررسی می‌شوند، به جای پالایش میان تمام مجموعه‌تغییرها (بسیار سریع‌تر است، اما شامل حذف‌ها یا تغییرات تکراری نمی‌شود). برای نتیجه‌ای کندتر و دقیق‌تر، از file() استفاده کنید.

الگوی بدون نوع صریح مانند glob:، برای کارایی بیشتر انتظار می‌رود که نسبت به دایرکتوری جاری باشد و دقیقاً با یک فایل تطابق یابد.

نام مستعاری برای limit().

نام مستعاری برای ::. (نیاکان والد اول دایرکتوری کاری). اگر الگوی فایل مشخص شود، تاریخچه فایل‌های منطبق با الگوی ارائه‌شده در بازبینی مشخص‌شده توسط startrev، شامل رونوشت‌ها، دنبال می‌شود.

مجموعه‌تغییرهایی که file را در محدوده خطوط ('fromline'، 'toline') اصلاح می‌کنند.

محدوده خط متناظر با محتوای 'file' در 'startrev' است و بنابراین باید با اندازه فایل همخوانی داشته باشد. اگر startrev مشخص نشود، والد دایرکتوری کاری استفاده می‌شود.

به‌طور پیش‌فرض، نیاکان 'startrev' بازگردانده می‌شوند. اگر 'descend' برابر با True باشد، نوادگان 'startrev' بازگردانده می‌شوند، هرچند تغییر نام‌ها (در حال حاضر) در این جهت دنبال نمی‌شوند.

مانند keyword(string) است ولی یک regex را می‌پذیرد. از grep(r'...') استفاده کنید تا مطمئن شوید نویسه‌های گریز (escape) به‌درستی پردازش می‌شوند. برخلاف keyword(string)، تطبیق به حروف بزرگ و کوچک حساس است.

مجموعه‌تغییری که سرشاخه (head) یک شاخه نام‌گذاری‌شده است.

عضوهایی از set که هیچ فرزندی در set ندارند.

مجموعه‌تغییرهای مخفی.

بازبینی که به‌طور غیرمبهم با پیشوند رشته هگز مشخص شده است.

جستجوی پیام کامیت، نام کاربری، و نام‌های فایل‌های تغییریافته برای string. تطبیق حساس به حروف بزرگ و کوچک نیست.

برای یک عبارت باقاعده (regular expression) یا جستجوی حساس به حروف در این فیلدها، از grep(regex) استفاده کنید.

تعداد n عضو آخر set، با مقدار پیش‌فرض ۱.

تعداد n عضو اول set، با مقدار پیش‌فرض ۱، با شروع از offset.

مجموعه‌تغییرهایی که در آن‌ها مجموعه‌ای مشخص از فیلدها با فیلدهای بازبینی یا مجموعه انتخاب‌شده مطابقت دارند.

برای مطابقت دادن بیش از یک فیلد، فهرست فیلدهای مورد نظر را جداشده با فاصله ارسال کنید (مانند author description).

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

فیلدهای معمول بازبینی عبارت‌اند از description، author، branch، date، files، phase، parents، substate، user و diff. توجه داشته باشید که author و user مترادف یکدیگرند. diff به محتویات بازبینی اشاره دارد. دو بازبینی که در diff خود مطابقت دارند، در files نیز مطابقت خواهند داشت.

فیلدهای ویژه عبارت‌اند از summary و metadata: summary با خط اول description مطابقت دارد. metadata معادل تطبیق description user date است (یعنی با فیلدهای اصلی فراداده مطابقت دارد).

metadata فیلد پیش‌فرضی است که در صورت عدم تعیین فیلدها استفاده می‌شود. می‌توانید بیش از یک فیلد را به‌طور هم‌زمان مطابقت دهید.

مجموعه‌تغییر با بیشترین شماره بازبینی در set.

مجموعه‌تغییری که یک ادغام (merge) است.

مجموعه‌تغییر با کمترین شماره بازبینی در set.

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

الگوی بدون نوع صریح مانند glob: انتظار می‌رود که نسبت به دایرکتوری جاری باشد و با یک فایل یا دایرکتوری مطابقت یابد.

مجموعه‌تغییرهای موجود در یک فضای‌نام (namespace) معین.

تطبیق الگو برای namespace پشتیبانی می‌شود. به hg help revisions.patterns مراجعه کنید.

خواندن فهرستی از گره‌ها از فایل موجود در path.

این گزاره id(LINE) را بر روی هر خط از فایل اعمال می‌کند.

این مورد زمانی مفید است که تعداد گره‌هایی که باید مشخص کنید برای خط فرمان بیش از حد بزرگ می‌شود.

هیچ مجموعه‌تغییری.

مجموعه‌تغییرهایی که نیاکان مجموعه اول هستند اما نیاکان هیچ سرشاخه (head) دیگری در مخزن نیستند. اگر مجموعه دوم مشخص شود، نتیجه نیاکان مجموعه اول است که نیاکان مجموعه دوم نباشند (یعنی ::<set1> - ::<set2>).

مجموعه‌تغییرهایی که به‌عنوان مبدأ برای عملیات graft، transplant یا rebase مشخص شده بودند که بازبینی‌های ارائه‌شده را ایجاد کرده‌اند. حذف set اختیاری مانند ارسال all() است. اگر مجموعه‌تغییری که توسط این عملیات ایجاد شده خود به‌عنوان مبدأ یکی از این عملیات مشخص شود، تنها مجموعه‌تغییر مبدأ برای اولین عملیات انتخاب می‌شود.

مجموعه‌تغییرهایی که در مخزن مقصد مشخص‌شده یا مکان پیش‌فرض push یافت نمی‌شوند.

اگر مکان به چندین مخزن منتهی شود، اجتماع تمام مجموعه‌تغییرهای ارسالی (outgoing) استفاده خواهد شد..TP p1([set])

والد نخست چنج‌ست‌های موجود در set، یا دایرکتوری کاری.

والد دوم چنج‌ست‌های موجود در set، یا دایرکتوری کاری.

مجموعه تمام والدین برای همه چنج‌ست‌های موجود در set، یا دایرکتوری کاری.

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

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

چنج‌ست در فاز public.

بازنگری محلی که در صورت وجود، متناظر با شناسه داده‌شده در یک مخزن دوردست (remote) است. در اینجا، شناسه '.' مترادفی برای شاخه محلی جاری است.

چنج‌ست‌هایی که فایل‌های منطبق با pattern را حذف می‌کنند.

انتظار می‌رود الگوی بدون نوع صریح مانند glob: نسبت به دایرکتوری جاری در نظر گرفته شود و با یک فایل یا یک دایرکتوری تطبیق داده شود.

بازنگری با شناسه عددی داده‌شده.

ترتیب معکوس set.

تفسیر دقیق محتوا به عنوان یک revset.

محتوای این گزاره ویژه دقیقاً به عنوان یک revset تفسیر خواهد شد. برای مثال، revset(id(0)) بدون ابهام احتمالی با یک بوک‌مارک یا تگ "id(0)"، به صورت "id(0)" تفسیر خواهد شد.

چنج‌ست‌هایی در set که هیچ چنج‌ست والدی در set ندارند.

چنج‌ست در فاز secret.

مرتب‌سازی set بر اساس کلیدها. ترتیب مرتب‌سازی پیش‌فرض صعودی است؛ برای مرتب‌سازی نزولی یک کلید را به صورت -key مشخص کنید.

کلیدها می‌توانند موارد زیر باشند:

  • rev برای شماره بازنگری،
  • branch برای نام شاخه،
  • desc برای پیام کامیت (توضیحات)،
  • user برای نام کاربر (author می‌تواند به عنوان یک نام مستعار استفاده شود)،
  • date برای تاریخ کامیت
  • topo برای مرتب‌سازی توپولوژیکی معکوس
  • node برای nodeid بازنگری
  • random برای بر زدن تصادفی بازنگری‌ها

ترتیب مرتب‌سازی topo نمی‌تواند با سایر کلیدهای مرتب‌سازی ترکیب شود. این مرتب‌سازی یک آرگومان اختیاری، topo.firstbranch، می‌پذیرد که یک revset دریافت می‌کند و مشخص می‌سازد کدام شاخه‌های توپولوژیکی در مرتب‌سازی اولویت داشته باشند.

مرتب‌سازی random یک آرگومان اختیاری random.seed برای واپایش شبه‌تصادفی بودن نتیجه می‌پذیرد.

چنج‌ست‌هایی که subrepo داده‌شده را اضافه، ویرایش یا حذف می‌کنند. اگر هیچ الگوی subrepo مشخص نشده باشد، تمامی تغییرات subrepo بازگردانده می‌شوند.

تگ مشخص‌شده با نام، یا تمام بازنگری‌های تگ‌خورده در صورتی که نامی داده نشود.

تطبیق الگو برای name پشتیبانی می‌شود. ببینید hg help revisions.patterns.

نام کاربر شامل string باشد. تطابق نسبت به بزرگی و کوچکی حروف حساس نیست (case-insensitive).

تطبیق الگو برای string پشتیبانی می‌شود. ببینید hg help revisions.patterns.

می‌توان با استفاده از هر ترکیبی از گزاره‌های موجود یا دیگر نام‌های مستعار، گزاره‌های جدیدی (معروف به «نام‌های مستعار» یا aliases) تعریف کرد. تعریف یک نام مستعار به این صورت است:

<alias> = <definition>

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

برای مثال،

[revsetalias]
h = heads()
d(s) = sort(s, date)
rs(s, k) = reverse(sort(s, k))

سه نام مستعار h، d و rs را تعریف می‌کند. عبارت rs(0:tip, author) دقیقاً معادل reverse(sort(0:tip, author)) است.

معادل‌های خط فرمان برای hg log:

-f    ->  ::.
-d x  ->  date(x)
-k x  ->  keyword(x)
-m    ->  merge()
-u x  ->  user(x)
-b x  ->  branch(x)
-P x  ->  !::x
-l x  ->  limit(expr, x)

چند پرس‌وجوی نمونه:

  • مجموعه‌تغییرها (changesets) در شاخه default:
    hg log -r "branch(default)"
  • مجموعه‌تغییرهای شاخه default از زمان برچسب 1.5 به بعد (بدون ادغام‌ها):
    hg log -r "branch(default) and 1.5:: and not merge()"
  • سرشاخه‌های باز (heads):
    hg log -r "head() and not closed()"
  • مجموعه‌تغییرهای بین برچسب‌های 1.3 و 1.5 که به «bug» اشاره دارند و بر hgext/* تأثیر می‌گذارند:
    hg log -r "1.3::1.5 and keyword(bug) and file('hgext/*')"
  • مجموعه‌تغییرهای ثبت‌شده در مه ۲۰۰۸، مرتب‌شده بر اساس کاربر:
    hg log -r "sort(date('May 2008'), user)"
  • مجموعه‌تغییرهایی که به «bug» یا «issue» اشاره دارند و در یک انتشار برچسب‌خورده قرار ندارند:
    hg log -r "(keyword(bug) or keyword(issue)) and not ancestors(tag())"
  • به‌روزرسانی به کامیتی که نشانک (bookmark) @ به آن اشاره دارد، بدون فعال‌سازی نشانک (این دستور کار می‌کند چون آخرین بازبینی revset استفاده می‌شود):
    hg update :@
  • نمایش تفاوت (diff) میان برچسب‌های 1.3 و 1.5 (این دستور کار می‌کند چون اولین و آخرین بازبینی‌های revset استفاده می‌شوند):
    hg diff -r 1.3::1.5

    می‌توان Mercurial را برای افزایش سرعت برخی عملیات‌ها با افزونه‌های Rust ارتقا داد.

استفاده از افزونهٔ Rust ممکن است منجر به استفاده از قالب‌های مختلف مخزنی شود که توسط نسخه‌های غیر Rust نرم‌افزار Mercurial پشتیبانی نمی‌شوند. هنگام استفاده از نسخهٔ Mercurial بدون پشتیبانی از Rust بر روی همان مخازن، ممکن است نیاز باشد قالب‌های مخزن خود را به نسخه‌های قدیمی‌تر برگردانید (downgrade) و/یا برای سازگاری، مسیرهای بسیار کُند را فعال کنید. برای جزئیات بیشتر، ببینید:

  • hg help config.format.use-persistent-nodemap
  • hg help config.format.use-dirstate-v2

علاوه بر این، در حالی که آزمون‌ها با کد Rust اجرا می‌شوند، ممکن است انحراف‌ها و تفاوت‌های ظریف و کشف‌نشده‌ای نسبت به کدهای قدیمی غیر Rust وجود داشته باشد. بنابراین دقت کافی داشته باشید و هرگونه رفتار غیرعادی را گزارش دهید. Rust هنوز به عنوان یک شهروند درجه‌یک در این پروژه در نظر گرفته نمی‌شود.

اگرچه افزونه‌های Rust توسط پروژه فقط روی Linux آزمایش می‌شوند، کاربران MacOS ،FreeBSD و سایر سیستم‌های شبه‌یونیکس (UNIX-like) نیز از آن‌ها استفاده کرده‌اند. ممکن است تجربهٔ شما متفاوت باشد، اما حتماً بازخورد ارسال کنید یا علاقهٔ خود را برای پشتیبانی بهتر اعلام نمایید.

برای سازگاری با نسخه‌های بدون Rust از Mercurial، بخش قبلی «هشدار (Word of Caution)» را بررسی کنید.

در حال حاضر هیچ افزونهٔ Rust برای Windows در دسترس نیست.

هنگام استفاده از Rust سرعت عملیات‌های زیر افزایش می‌یابد:

  • کشف تفاوت‌های میان مخازن (pull/push)
  • قابلیت nodemap (ببینید hg help config.format.use-persistent-nodemap)
  • تمامی دستورهایی که از dirstate استفاده می‌کنند (status،‏ commit،‏ diff،‏ add،‏ update و غیره)
  • قابلیت dirstate-v2 (ببینید hg help config.format.use-dirstate-v2)
  • پیمایش روی نیاکان (ancestors) در یک گراف

ویژگی‌های بیشتری در دست ساخت هستند و بهبود موارد فهرست‌شده در بالا همچنان در حال انجام است. برای کارهای آزمایشی بیشتر، بخش «rhg» را ببینید.

بسته به نحوهٔ نصب Mercurial، ممکن است از قبل افزونه‌های Rust را در اختیار داشته باشید:

$ hg debuginstall | grep -i rust
checking Rust extensions (installed)
checking module policy (rust+c-allow)

اگر این خطوط اصلاً وجود ندارند، از نسخهٔ قدیمی hg استفاده می‌کنید که هنوز هیچ افزونهٔ Rust ندارد..SS نصب

شما نیاز خواهید داشت که cargo در $PATH شما باشد. برای اطلاع از اینکه از کدام نسخه استفاده کنید، بخش «MSRV» را ببینید.

کاربران pip می‌توانند افزونه‌های Rust را با دستورهای زیر نصب کنند:

$ pip cache remove mercurial
$ pip install mercurial -v \
      --config-settings --global-option=--rust \
      --no-binary mercurial --force

دستور pip cache remove و گزینهٔ --no-binary برای این هستند که به pip بگویند از wheelهای از پیش کامپایل‌شده‌ای که فاقد پشتیبانی از rust هستند استفاده نکند. این فرآیند ممکن است چند دقیقه طول بکشد زیرا شما در حال کامپایل کردن همه چیز هستید.

برای بررسی موفقیت‌آمیز بودن نصب، بخش «Checking for Rust» را ببینید.

استفاده از pipx روشی کارآمد برای داشتن یک نصب ایزوله از mercurial برای یک کاربر یا به‌صورت سراسری است.

$ pipx install mercurial
--pip-args '--no-cache-dir --config-settings --global-option=--rust --no-binary=mercurial'

سپس می‌توانید با استفاده از دستور زیر افزونه‌ها را به آن نصب اضافه کنید:

$ pipx inject mercurial hg-foo

استفاده از uv tool روش کارآمد دیگری برای داشتن یک نصب ایزوله از mercurial برای یک کاربر یا به‌صورت سراسری است.

$ uv tool install mercurial
--no-binary=mercurial --no-cache --config-setting=--build-option=--rust

می‌توانید با استفاده از گزینهٔ --with افزونه‌ها را نیز به همراه آن بیاورید. برای مثال

$ uv tool install mercurial --with hg-evolve [...]

برخی از توزیع‌ها Mercurial را با افزونه‌های Rust از پیش کامپایل‌شده و فعال عرضه می‌کنند (به این معنی که نیازی به نصب cargo نخواهید داشت)، یا به شما امکان می‌دهند یک پرچم نصب را مشخص کنید. برای چگونگی انجام این کار، توزیع خاص خود را بررسی کنید یا از تیم آن‌ها بخواهید که پشتیبانی از hg+Rust را اضافه کنند!

لطفاً برای دریافت دستورالعمل‌های نحوهٔ نصب از کد منبع، به فایل rust/README.md در مخزن Mercurial مراجعه کنید.

حداقل نسخهٔ پشتیبانی‌شدهٔ Rust در rust/clippy.toml تعریف شده است. سیاست پروژه این است که برای ساده‌تر کردن کار توزیع‌ها، آن را در نسخهٔ Debian testing یا پایین‌تر از آن نگه دارد..SS rhg

نسخه‌ای آزمایشی و کاملاً مبتنی بر Rust از Mercurial به نام rhg وجود دارد که مجهز به سازوکار بازگشت خودکار (fallback) برای فراخوانی‌های پشتیبانی‌نشده است. این ابزار امکان اجرای بسیار سریع‌تر برخی دستورها را فراهم می‌کند، بدون این‌که بار اضافی محسوسی برای سایر دستورها به همراه داشته باشد.

تنها راه آزمایش آن، کامپایل و ساخت از سورس‌کد است. لطفاً به rust/README.md در مخزن Mercurial مراجعه کنید.

برای مشاهده گزینه‌های پیکربندی، hg help config.rhg را ببینید.

اگر مایلید در تلاش‌های مربوط به Rust مشارکت کنید، لطفاً به rust/README.md در مخزن Mercurial مراجعه کنید.

استفاده ماشین‌ها (در مقایسه با انسان‌ها) از Mercurial بسیار متداول است. این مبحث راهنما برخی از نکات و ملاحظات مربوط به برقراری ارتباط ماشین‌ها با Mercurial را شرح می‌دهد.

ماشین‌ها برای برقراری ارتباط با Mercurial، چندین روش در پیش رو دارند. این روش‌ها شامل موارد زیر است:

  • اجرای فرایند hg
  • ارسال درخواست به یک سرور HTTP
  • فراخوانی سرور دستور (command server)

اجرای فرایندهای hg بسیار شبیه به نحوه تعامل انسان‌ها با Mercurial در محیط خط فرمان (shell) است و احتمالاً از قبل با آن آشنا هستید.

از hg serve می‌توان برای راه‌اندازی یک سرور استفاده کرد. به‌طور پیش‌فرض، این دستور یک سرور HTTP از نوع “hgweb” را راه‌اندازی می‌کند. این سرور HTTP از خروجی‌های ماشین‌خوان مانند JSON پشتیبانی می‌کند. برای اطلاعات بیشتر، hg help hgweb را ببینید.

همچنین hg serve می‌تواند یک “سرور دستور” (command server) را راه‌اندازی کند. کلاینت‌ها می‌توانند به این سرور متصل شده و دستورهای Mercurial را از طریق یک پروتکل ویژه صادر کنند. برای جزئیات بیشتر درباره سرور دستور، از جمله پیوندها به کتابخانه‌های کلاینت، https://www.mercurial-scm.org/wiki/CommandServer را ببینید.

رابط‌های مبتنی بر hg serve (سرورهای hgweb و سرورهای دستور) نسبت به فراخوانی‌های ساده فرایند hg این مزیت را دارند که احتمالاً کارآمدتر هستند؛ زیرا ایجاد و راه‌اندازی فرایندهای جدید Python با سربار چشمگیری همراه است.

نکته
اگر نیاز دارید چندین فرایند hg را در فواصل زمانی کوتاه اجرا کنید و/یا کارایی (performance) برایتان مهم است، استفاده از یک رابط مبتنی بر سرور اکیداً توصیه می‌شود.

همان‌طور که در hg help environment مستند شده است، متغیرهای محیطی گوناگونی بر عملکرد Mercurial تأثیر می‌گذارند. موارد زیر به‌ویژه برای ماشین‌هایی که از Mercurial استفاده می‌کنند اهمیت دارند:

در صورت تنظیم نشدن، خروجی Mercurial می‌تواند تحت تأثیر تنظیمات پیکربندی قرار گیرد که بر کدگذاری (encoding)، حالت پرگویی (verbose mode)، بومی‌سازی و غیره تأثیر می‌گذارند.

اکیداً توصیه می‌شود هنگام فراخوانی فرایندهای hg توسط ماشین‌ها، این متغیر تنظیم شود.

در صورت تنظیم نشدن، لوکال (locale) مورد استفاده Mercurial از متغیرهای محیط سیستم تشخیص داده خواهد شد. اگر لوکال مشخص‌شده از نمایش نویسه‌های خاصی پشتیبانی نکند، ممکن است Mercurial این دنباله‌های نویسه‌ای را به‌صورت نادرست نمایش دهد (اغلب با استفاده از “?” به عنوان جایگزین نویسه‌های نامعتبر در لوکال فعلی).

تنظیم صریح این متغیر محیطی روشی مناسب برای تضمین نتایج پایدار و یکنواخت است. مقدار “utf-8” انتخابی مناسب در محیط‌های شبه‌یونیکس (UNIX-like) به شمار می‌رود.

در صورت تنظیم نشدن، Mercurial گزینه‌های پیکربندی را با استفاده از فرایند شرح داده‌شده در hg help config از فایل‌های پیکربندی به ارث می‌برد. این شامل به ارث بردن فایل‌های پیکربندی کاربر یا سراسری سیستم نیز می‌شود.

هنگامی که بیشترین سطح کنترل بر پیکربندی Mercurial مد نظر باشد، مقدار HGRCPATH را می‌توان روی یک فایل مشخص با پیکربندی‌های معتبر شناخته‌شده تنظیم کرد. در موارد نادر، می‌توان مقدار آن را روی یک فایل خالی یا دستگاه تهی (معمولاً /dev/null) قرار داد تا از بارگذاری هرگونه فایل پیکربندی کاربر یا سیستم صرف‌نظر شود. توجه داشته باشید که این روش‌ها می‌توانند پیامدهای ناخواسته‌ای داشته باشند، زیرا فایل‌های پیکربندی کاربر و سیستم غالباً مواردی نظیر نام کاربری و افزونه‌هایی را تعریف می‌کنند که ممکن است برای برقراری ارتباط با یک مخزن الزامی باشند.

در صورت تنظیم شدن، فایل .hg/hgrc مخازن خوانده نخواهد شد.

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

تجزیه‌گر خط فرمان پیش‌فرض Mercurial برای انسان‌ها طراحی شده است و در برابر ورودی‌های مخرب مقاوم نیست. برای نمونه، می‌توانید با ارسال --debugger به عنوان مقدار یک گزینه، یک اشکال‌زدا (debugger) را اجرا کنید:

$ REV=--debugger sh -c 'hg log -r "$REV"'

این اتفاق به این دلیل رخ می‌دهد که چندین پرچم خط فرمان باید بدون استفاده از یک جدول دستور مشخص بررسی شوند؛ جدولی که ممکن است هنگام بارگذاری تنظیمات مخزن و افزونه‌ها تغییر یابد.

از نسخه 4.4.2 نرم‌افزار Mercurial به بعد، تجزیه چنین پرچم‌هایی می‌تواند با مقداردهی HGPLAIN=+strictflags محدود شود. هنگامی که این ویژگی فعال است، تمام گزینه‌های اولیه (مانند -R/--repository، --cwd، --config) باید در ابتدا و پیش از سایر گزینه‌های سراسری مشخص شوند و نمی‌توان آن‌ها را در یک مکان دلخواه تزریق کرد:

$ HGPLAIN=+strictflags hg -R "$REPO" log -r "$REV"

در نسخه‌های پیشین Mercurial که +strictflags در دسترس نیست، می‌توانید این مشکل را با چسباندن مقدار گزینه به پرچم آن کاهش دهید:

$ hg log -r"$REV" --keyword="$KEYWORD"

بسیار معمول است که سیستم‌ها یا برنامه‌ها نیاز داشته باشند خروجی دستورهای Mercurial را برای استخراج داده‌های مرتبط تجزیه کنند. این بخش روش‌های گوناگون انجام این کار را شرح می‌دهد.

احتمالاً ساده‌ترین و کارآمدترین راهکار برای استفاده از خروجی، اجرای عادی دستورهای hg همانند یک کاربر معمولی و تجزیه خروجی آن‌ها است.

خروجی بسیاری از دستورها را می‌توان به آسانی با ابزارهایی مانند grep، sed و awk تجزیه کرد.

یک جنبه منفی بالقوه در تجزیه خروجی دستورات این است که با ارتقای Mercurial، ممکن است خروجی دستورها تغییر کند. اگرچه Mercurial به‌طور کلی برای حفظ سازگاری رو به عقب (backwards compatibility) قوی تلاش می‌کند، اما خروجی دستورات گاهی دستخوش تغییر می‌شود. داشتن آزمون‌هایی برای بررسی تعاملات خودکار با دستورهای hg عموماً توصیه می‌شود، اما زمانی که پای تجزیه خروجی خام در میان باشد، این امر اهمیت دوچندانی پیدا می‌کند.

بسیاری از دستورهای hg از خروجی قالب‌بندی‌شده از طریق آرگومان -T/--template پشتیبانی می‌کنند. برای اطلاعات بیشتر، دستور hg help templates را ببینید.

الگوها برای کنترل صریح خروجی سودمند هستند تا بتوانید دقیقاً داده‌های مورد نظر خود را با همان قالبی که می‌خواهید به دست آورید. برای نمونه، log -T {node}\n می‌تواند برای چاپ فهرستی از گره‌های changeset با جداکننده خط جدید استفاده شود، به‌جای خروجی مخصوص انسان که شامل نام نویسندگان، تاریخ‌ها، توضیحات و غیره است.

نکته
اگر تجزیه خروجی خام دستور بیش از حد پیچیده است، برای ساده‌تر کردن کار از الگوها استفاده کنید.

آرگومان -T/--template امکان مشخص کردن سبک‌های از پیش تعریف‌شده را فراهم می‌کند. نرم‌افزار Mercurial همراه با سبک‌های ماشین‌خوان cbor، json و xml عرضه می‌شود که به ترتیب خروجی‌های CBOR، JSON و XML را ارائه می‌دهند. این سبک‌ها برای تولید خروجی‌هایی که مستقیماً برای ماشین قابل خواندن هستند، بسیار کاربردی‌اند.

(برای سبک CBOR، به Mercurial نسخه 5.0 یا بالاتر نیاز است.)

مهم
سبک‌های json و xml آزمایشی در نظر گرفته می‌شوند. اگرچه ممکن است استفاده از آن‌ها برای به‌دست آوردن آسان خروجی ماشین‌خوان جذاب باشد، اما رفتار آن‌ها در نسخه‌های بعدی ممکن است تغییر کند.

این سبک‌ها همچنین ممکن است هنگام مواجهه با برخی رمزگذاری‌ها (encodings) رفتارهای غیرمنتظره‌ای نشان دهند. نرم‌افزار Mercurial مواردی همچون نام فایل‌ها را به صورت دنباله‌ای از بایت‌ها در نظر می‌گیرد و عادی‌سازی دنباله‌های خاصی از بایت‌ها به JSON یا XML با تنظیمات رمزگذاری خاص می‌تواند منجر به رفتارهای پیش‌بینی‌نشده شود.

اگر برای تعامل با Mercurial از سرور فرمان استفاده می‌کنید، به احتمال زیاد از یک کتابخانه/API موجود استفاده می‌کنید که جزئیات پیاده‌سازی سرور فرمان را انتزاعی می‌کند. در این صورت، این لایهٔ رابط ممکن است تجزیه (parsing) را برای شما انجام دهد و شما را از پیاده‌سازی دستی آن بی‌نیاز کند.

دستورها اغلب پرگویی (verbosity) خروجی متفاوتی دارند، حتی زمانی که از سبک‌های ماشین‌خوان (مانند -T json) استفاده می‌شود. افزودن -v/--verbose و --debug به آرگومان‌های دستور می‌تواند مقدار داده‌های ارائه‌شده توسط Mercurial را افزایش دهد.

یک روش جایگزین برای دریافت داده‌های مورد نیازتان، مشخص کردن صریح یک الگو (template) است.

مجموعه‌های بازبینی (Revision sets) یک زبان پرسمان تابعی برای انتخاب مجموعه‌ای از بازبینی‌ها است. آن را مانند SQL برای مخازن Mercurial در نظر بگیرید. revsetها برای پرس‌وجوی داده‌های خاص از مخازن سودمند هستند.

برای اطلاعات بیشتر hg help revsets را ببینید.

share extension
افزونهٔ share قابلیت‌هایی را برای به اشتراک‌گذاری داده‌های مخزن میان چندین نسخهٔ کاری فراهم می‌کند. این افزونه حتی می‌تواند هنگام شبیه‌سازی (cloning)، فضای ذخیره‌سازی را برای مخازنی که از نظر منطقی به هم مرتبط هستند به‌طور خودکار تجمیع (pool) کند.

پیکربندی افزونهٔ share می‌تواند به کاهش چشمگیر مصرف منابع، به‌ویژه در فضای دیسک و شبکه منجر شود. این موضوع مخصوصاً برای محیط‌های یکپارچه‌سازی مداوم (CI) صادق است.

برای اطلاعات بیشتر hg help -e share را ببینید.

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

در حال حاضر Mercurial از مخازن فرعی Mercurial، Git و Subversion پشتیبانی می‌کند.

مخازن فرعی از سه مؤلفه تشکیل شده‌اند:

1.
نسخه‌های checkout شدهٔ مخازن تودرتو. آن‌ها می‌توانند در هر کجای دایرکتوری کاری والد قرار گیرند.
2.
ارجاعات مخازن تودرتو. آن‌ها در فایل .hgsub تعریف می‌شوند که باید در ریشهٔ دایرکتوری کاری قرار گیرد و مشخص می‌کند که checkoutهای مخزن فرعی از کجا می‌آیند. به مخازن فرعی Mercurial به این صورت ارجاع داده می‌شود:
path/to/nested = https://example.com/nested/repo/path

مخازن فرعی Git و Subversion نیز پشتیبانی می‌شوند:

path/to/nested = [git]git://example.com/nested/repo/path
path/to/nested = [svn]https://example.com/nested/trunk/path

که در آن path/to/nested محل checkout به‌صورت نسبی نسبت به ریشهٔ والد Mercurial است، و https://example.com/nested/repo/path مسیر مخزن مبدأ است. منبع می‌تواند به یک مسیر در سیستم‌فایل نیز اشاره داشته باشد.

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

3.
وضعیت‌های مخازن تودرتو. آن‌ها در فایل .hgsubstate تعریف می‌شوند که در ریشهٔ دایرکتوری کاری قرار می‌گیرد و تمام اطلاعات لازم برای بازگرداندن مخازن فرعی به وضعیتی را که در یک مجموعه تغییرات (changeset) مخزن والد commit شده بودند، ثبت می‌کند. Mercurial هنگام commit کردن در مخزن والد، وضعیت مخازن تودرتو را به‌طور خودکار ذخیره می‌کند.
نکته
فایل .hgsubstate نباید به‌صورت دستی ویرایش شود.

اگر .hgsub وجود ندارد، آن را بسازید و به مخزن والد اضافه کنید. پروژه‌های خارجی را در مکانی از مخزن والد که می‌خواهید قرار گیرند clone یا checkout کنید. .hgsub را ویرایش کرده و ورودی مخزن فرعی را همان‌طور که در بالا توضیح داده شد اضافه کنید. در این مرحله، مخزن فرعی ردگیری می‌شود و ثبت (commit) بعدی وضعیت آن را در .hgsubstate ذخیره کرده و به مجموعه تغییرات ثبت‌شده پیوند می‌دهد.

مخازن فرعی به‌طور خودکار آخرین مجموعه تغییرات منابع خود را دنبال نمی‌کنند. در عوض، آن‌ها به مجموعه تغییراتی به‌روزرسانی می‌شوند که مطابق با مجموعه تغییرات checkout شده در مجموعه تغییرات سطح بالا است. بدین ترتیب توسعه‌دهندگان هنگام به‌روزرسانی همیشه مجموعه‌ای یکدست و سازگار از کدها و کتابخانه‌ها را دریافت می‌کنند.

بنابراین، به‌روزرسانی مخازن فرعی یک فرایند دستی است. کافی است مخزن فرعی هدف را در بازبینی (revision) دلخواه checkout کنید، آن را در مخزن سطح بالا بیازمایید، و سپس در مخزن والد commit کنید تا ترکیب جدید ثبت شود.

برای حذف یک مخزن فرعی از مخزن والد، ارجاع آن را از .hgsub حذف کرده، سپس فایل‌های آن را پاک کنید.

دستور add درون مخازن فرعی به‌صورت بازگشتی عمل نمی‌کند مگر اینکه -S/--subrepos مشخص شده باشد. با این حال، اگر مسیر کامل یک فایل در یک مخزن فرعی را مشخص کنید، حتی بدون تعیین -S/--subrepos نیز اضافه خواهد شد. مخازن فرعی Subversion در حال حاضر بدون هشدار نادیده گرفته می‌شوند.
دستور addremove به مخازن فرعی به‌صورت بازگشتی وارد نمی‌شود مگر اینکه -S/--subrepos مشخص شده باشد. با این حال، اگر مسیر کامل یک دایرکتوری در یک مخزن فرعی را مشخص کنید، addremove روی آن اجرا خواهد شد حتی بدون اینکه -S/--subrepos تعیین شده باشد. مخازن فرعی Git و Subversion یک هشدار چاپ کرده و ادامه می‌دهند.
دستور archive در مخازن فرعی به‌صورت بازگشتی عمل نمی‌کند مگر اینکه -S/--subrepos مشخص شده باشد.
مخازن فرعی Git تنها از تطابق دقیق فایل‌ها پشتیبانی می‌کنند. مخازن فرعی Subversion در حال حاضر نادیده گرفته می‌شوند.
دستور commit یک تصویر لحظه‌ای (snapshot) سازگار از وضعیت کل پروژه و مخازن فرعی آن ایجاد می‌کند. اگر هر یک از مخازن فرعی تغییر یافته باشند، Mercurial عملیات را متوقف (abort) می‌کند. می‌توان Mercurial را وادار کرد تا به جای توقف، تمام مخازن فرعی تغییریافته را با تعیین -S/--subrepos یا تنظیم "ui.commitsubrepos=True" در یک فایل پیکربندی commit کند (مشاهده کنید hg help config). پس از اینکه دیگر هیچ مخزن فرعی تغییریافته‌ای وجود نداشت، وضعیت آن‌ها را ضبط کرده و در نهایت آن را در مخزن والد ثبت (commit) می‌کند. گزینه --addremove نیز از گزینه -S/--subrepos تبعیت می‌کند. با این حال، مخازن فرعی Git و Subversion یک هشدار چاپ کرده و متوقف می‌شوند.
دستور diff در مخازن فرعی به‌صورت بازگشتی عمل نمی‌کند مگر اینکه -S/--subrepos مشخص شده باشد. با این حال، اگر مسیر کامل یک فایل یا دایرکتوری در یک مخزن فرعی را مشخص کنید، حتی بدون تعیین -S/--subrepos نیز تفاوت‌گیری (diff) انجام می‌شود. مخازن فرعی Subversion در حال حاضر بدون هشدار نادیده گرفته می‌شوند.
دستور files به مخازن فرعی به‌صورت بازگشتی وارد نمی‌شود مگر اینکه -S/--subrepos مشخص شده باشد. با این حال، اگر مسیر کامل یک فایل یا دایرکتوری در یک مخزن فرعی را مشخص کنید، حتی بدون تعیین -S/--subrepos نیز نمایش داده خواهد شد. مخازن فرعی Git و Subversion در حال حاضر بدون هشدار نادیده گرفته می‌شوند.
دستور forget در حال حاضر فقط تطابق‌های دقیق فایل را در مخازن فرعی پردازش می‌کند. مخازن فرعی Git و Subversion در حال حاضر بدون هشدار نادیده گرفته می‌شوند.
دستور incoming در مخازن فرعی به‌صورت بازگشتی عمل نمی‌کند مگر اینکه -S/--subrepos مشخص شده باشد. مخازن فرعی Git و Subversion در حال حاضر بدون هشدار نادیده گرفته می‌شوند.
دستور outgoing در مخازن فرعی به‌صورت بازگشتی عمل نمی‌کند مگر اینکه -S/--subrepos مشخص شده باشد. مخازن فرعی Git و Subversion در حال حاضر بدون هشدار نادیده گرفته می‌شوند.
دستور pull بازگشتی نیست زیرا پیش از اجرای hg update مشخص نیست چه چیزی باید دریافت شود. فهرست کردن و واکشی تمامی تغییرات مخازن فرعی که در مجموعه‌تغییرات واکشی‌شدهٔ مخزن والد به آن‌ها ارجاع شده است، در بهترین حالت سنگین و پرهزینه، و در مورد Subversion غیرممکن است.
هنگامی که مخزن والد در حال push شدن است، Mercurial به‌طور خودکار ابتدا تمام مخازن فرعی را push می‌کند. این کار تضمین می‌کند که تغییرات جدید مخزن فرعی هنگام ارجاع از سوی مخازن سطح بالا در دسترس باشند. عملیات push برای مخازن فرعی Subversion یک عملیات بی‌اثر (no-op) است.
دستور serve به مخازن فرعی به‌صورت بازگشتی وارد نمی‌شود مگر اینکه -S/--subrepos مشخص شده باشد. مخازن فرعی Git و Subversion در حال حاضر بدون هشدار نادیده گرفته می‌شوند.
دستور status به مخازن فرعی به‌صورت بازگشتی وارد نمی‌شود مگر اینکه -S/--subrepos مشخص شده باشد. تغییرات مخزن فرعی به‌صورت تغییرات معمولی Mercurial روی عناصر مخزن فرعی نمایش داده می‌شوند. مخازن فرعی Subversion در حال حاضر بدون هشدار نادیده گرفته می‌شوند.
دستور remove به مخازن فرعی به‌صورت بازگشتی وارد نمی‌شود مگر اینکه -S/--subrepos مشخص شده باشد. با این حال، اگر مسیر یک فایل یا دایرکتوری در یک مخزن فرعی را مشخص کنید، حتی بدون -S/--subrepos نیز حذف خواهد شد. مخازن فرعی Git و Subversion در حال حاضر بدون هشدار نادیده گرفته می‌شوند.
دستور update مخازن فرعی را به همان وضعیتی که در ابتدا در مجموعه تغییرات هدف commit شده بودند بازمی‌گرداند. اگر مجموعه تغییرات ثبت‌شده در مخزن فرعی فعلی در دسترس نباشد، Mercurial پیش از به‌روزرسانی ابتدا آن را pull می‌کند. این بدان معناست که به‌روزرسانی هنگام استفاده از مخازن فرعی ممکن است به دسترسی به شبکه نیاز داشته باشد.

مکان منبع یک زیرمخزن ممکن است در طول حیات یک پروژه تغییر کند و ارجاعات ذخیره‌شده در تاریخچهٔ مخزن والد را نامعتبر سازد. برای برطرف کردن این موضوع، می‌توان قواعد بازنویسی را در فایل hgrc مخزن والد یا در پیکربندی Mercurial تعریف کرد. برای جزئیات بیشتر بخش [subpaths] را در hgrc(5) ببینید.

ابزار Mercurial به شما امکان می‌دهد خروجی دستورها را از طریق الگوها سفارشی‌سازی کنید. شما می‌توانید یک الگو را مستقیماً ارسال کنید یا یک سبک الگوی (template-style) موجود را از طریق گزینهٔ --template از خط فرمان انتخاب نمایید.

شما می‌توانید خروجی را برای هر دستور «مشابه log» سفارشی‌سازی کنید: log، outgoing، incoming، tip، parents و heads.

برخی از سبک‌های توکار همراه با Mercurial بسته‌بندی شده‌اند. این سبک‌ها را می‌توان با hg log --template list فهرست کرد. مثال استفاده:

$ hg log -r1.0::1.1 --template changelog

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

$ hg log -r1 --template "{node}\n"
b56ce7b07c52de7d5fd79fb89701ea538af65746

رشته‌های درون آکولاد، کلیدواژه (keyword) نامیده می‌شوند. در دسترس بودن کلیدواژه‌ها به زمینهٔ دقیق الگو بستگی دارد. این کلیدواژه‌ها معمولاً برای الگودهی به یک دستور مشابه log در دسترس هستند:

_fast_rank
رتبهٔ یک changeset در صورت کش شدن.

رتبهٔ یک بازبینی (revision) اندازهٔ زیرگرافی است که آن بازبینی به عنوان یک سر (head) تعریف می‌کند. به بیان معادل، رتبهٔ بازبینی r اندازهٔ مجموعهٔ ancestors(r) با احتساب خودِ r است.

رشته. بوک‌مارک فعال، اگر با changeset مرتبط باشد.
نام مستعار برای {user}.
رشته. وضعیت بسط و تنصیف (bisection) مربوط به changeset.
فهرستی از رشته‌ها. هر بوک‌مارک مرتبط با changeset. همچنین 'active'، نام بوک‌مارک فعال را تنظیم می‌کند.
رشته. نام شاخه‌ای که changeset روی آن ثبت (commit) شده است.
عدد صحیح. تمام نیاکانی که در آخرین برچسب (tag) قرار ندارند.
فهرستی از رشته‌ها. فرزندان changeset.
مقدار "yes" اگر این changeset شاخه را می‌بندد، در غیر این صورت "no".
اطلاعات تاریخ. تاریخی که changeset در آن ثبت شده است.
رشته. متن توضیحات changeset.
رشته. آمار تغییرات با قالب زیر: "modified files: +added/-removed lines";
فهرستی از دیکشنری‌ها (dicts) شامل مدخل‌های کلید و مقدارِ فیلد 'extras' از این changeset.
فهرستی از رشته‌ها. فایل‌های اضافه‌شده توسط این changeset.
فهرستی از رشته‌ها. فایل‌های کپی‌شده در این changeset به همراه منابعشان.
فهرستی از رشته‌ها. مانند "file_copies" اما تنها در صورتی نمایش داده می‌شود که سوئیچ --copied تنظیم شده باشد.
فهرستی از رشته‌ها. فایل‌های حذف‌شده توسط این changeset.
فهرستی از رشته‌ها. فایل‌های تغییریافته توسط این changeset.
فهرستی از رشته‌ها. تمام فایل‌های تغییریافته، اضافه‌شده یا حذف‌شده توسط این changeset.
رشته. نویسه‌ای که گرهٔ changeset را در یک گراف بازبینی ASCII نمایش می‌دهد.
عدد صحیح. عرض گراف رسم‌شده توسط 'log --graph' یا صفر.
عدد صحیح. تکرار فعلی حلقه (شروع نمایه از 0).
فهرستی از رشته‌ها. برچسب‌های سراسری روی نزدیک‌ترین نیا با برچسب سراسریِ این changeset. اگر چنین برچسبی وجود نداشته باشد، فهرست شامل یک رشتهٔ تکی "null" خواهد بود.
عدد صحیح. طولانی‌ترین مسیر تا آخرین برچسب.
دیکشنری از فهرست‌ها. نام‌های متصل به این changeset به ازای هر فضای نام (namespace).
عدد صحیح. شماره بازبینی منفی changeset محلی در مخزن، که در جهت معکوس شمارش می‌شود.
رشته. هش شناسایی changeset، به عنوان یک رشتهٔ ۴۰ رقمی هگزادسیمال.
رشته. یک خلاصهٔ تک‌خطی برای ctx (بدون خط جدید انتهایی). الگوی پیش‌فرض را می‌توان در command-templates.oneline-summary بازنویسی و جایگزین کرد.
مقدار Changeset. والد اول changeset. مقدار {p1.rev} برای شمارهٔ بازبینی، و {p1.node} برای هش شناسایی.
مقدار Changeset. والد دوم changeset. مقدار {p2.rev} برای شمارهٔ بازبینی، و {p2.node} برای هش شناسایی..TP parents فهرستی از رشته‌ها. والدهای changeset در قالب "rev:node". اگر changeset تنها یک والد «طبیعی» (نسخهٔ بازبینی پیشین) داشته باشد، چیزی نمایش داده نمی‌شود.
فرهنگی (دیکشنری) از مکان‌های مخزن که در بخش [paths] فایل پیکربندی شما تعریف شده‌اند.
رشته. نام فازِ changeset.
رشته. دایرکتوری ریشهٔ مخزن جاری.
عدد صحیح. شمارهٔ نسخهٔ بازبینی changeset محلی در مخزن.
فهرستی از رشته‌ها. زیرمخزن‌های به‌روزشده در changeset.
فهرستی از رشته‌ها. تمام برچسب‌های مرتبط با changeset.
عدد صحیح. پهنای پایانهٔ جاری.
رشته. نویسندهٔ تغییرنیافتهٔ changeset.
رشته. میزان پرگویی خروجیِ جاری که شامل 'debug'، 'quiet'، 'verbose' یا '' است.

کلیدواژهٔ "date" خروجی قابل خواندن توسط انسان تولید نمی‌کند. اگر می‌خواهید از تاریخ در خروجی خود استفاده کنید، می‌توانید از یک فیلتر برای پردازش آن بهره ببرید. فیلترها توابعی هستند که بر اساس متغیر ورودی، رشته‌ای را بازمی‌گردانند. دقت داشته باشید هنگامی که یک فیلتر با ورودی رشته‌ای را روی متغیری شبیه به فهرست اِعمال می‌کنید، ابتدا از فیلتر stringify استفاده کنید. همچنین می‌توانید از زنجیره‌ای از فیلترها برای دستیابی به خروجی دلخواه استفاده کنید:

$ hg tip --template "{date|isodate}\n"
2008-08-21 18:22 +0000

فهرست فیلترها:

هر متنی. افزودن یک برچسب "<br />" از نوع XHTML پیش از انتهای هر خط به‌جز آخرین خط.
تاریخ. اختلاف تاریخ/زمان داده‌شده با تاریخ/زمان فعلی را به‌صورت خوانا برای انسان بازمی‌گرداند.
هر متنی. متن را به عنوان یک مسیر در نظر می‌گیرد و آخرین بخشِ مسیر را پس از جداسازی با جداکنندهٔ مسیر بازمی‌گرداند. برای نمونه، "foo/bar/baz" به "baz" و "foo/bar//" به "" تبدیل می‌شود.
هر شیئی. شیء را به بایت‌های CBOR سریال‌سازی می‌کند.
فهرستی از متن‌ها. با هر مورد از فهرست به عنوان نام فایل با جداکنندهٔ مسیر / رفتار کرده و طولانی‌ترین پیشوند دایرکتوری مشترک میان تمام موارد فهرست را بازمی‌گرداند. در صورتی که پیشوند مشترکی وجود نداشته باشد، یک رشتهٔ خالی برمی‌گرداند.

موارد فهرست نرمال‌سازی نمی‌شوند؛ یعنی با "foo/../bar" مانند فایل "bar" در دایرکتوری "foo/.." رفتار می‌شود. اسلش‌های ابتدایی نادیده گرفته می‌شوند.

برای نمونه، ["foo/bar/baz", "foo/baz/bar"] به "foo" و ["foo/bar", "baz"] به "" تبدیل می‌شود.

فهرست یا متن. طول را به عنوان یک عدد صحیح بازمی‌گرداند.
هر متنی. متن را به عنوان یک مسیر در نظر می‌گیرد و پس از جداسازی با جداکنندهٔ مسیر، آخرین بخشِ مسیر را حذف می‌کند.
هر متنی. نخستین رشته‌ای را که شبیه نشانی ایمیل است پیدا کرده و تنها بخش دامنهٔ آن را استخراج می‌کند. نمونه: User <user@example.com> به example.com تبدیل می‌شود.
هر متنی. نخستین رشته‌ای را که شبیه نشانی ایمیل است استخراج می‌کند. نمونه: User <user@example.com> به user@example.com تبدیل می‌شود.
هر متنی. بخش نام کاربری (user) یک نشانی ایمیل را بازمی‌گرداند.
هر متنی. نویسه‌های خاص XML/XHTML شامل "&"، "<" و ">" را با موجودیت‌های XML جایگزین کرده و نویسه‌های NUL را حذف می‌کند.
هر متنی. متن را طوری می‌شکند تا در ۶۸ ستون جای گیرد.
هر متنی. متن را طوری می‌شکند تا در ۷۶ ستون جای گیرد.
هر متنی. نخستین خط متن را بازمی‌گرداند.
هر متنی. یک شناسهٔ گره (node) دودویی Mercurial را به نمایش شانزده‌شانزدهی (hexadecimal) طولانی آن تبدیل می‌کند.
تاریخ. تاریخ را به عنوان یک جفت عدد بازمی‌گرداند: "1157407993 25200" (برچسب زمانی یونیکس، انحراف منطقهٔ زمانی).
تاریخ. تاریخ را در قالب ISO 8601 بازمی‌گرداند: "2009-08-18 13:00 +0200".
تاریخ. تاریخ را در قالب ISO 8601 به همراه ثانیه‌ها بازمی‌گرداند: "2009-08-18 13:00:13 +0200". همچنین فیلتر rfc3339date را ببینید.
هر شیئی. شیء را به متنی در قالب JSON سریال‌سازی می‌کند.
هر متنی. متن را به حروف کوچک تبدیل می‌کند.
هر متنی. اگر رشته خالی باشد، '(none)' را بازمی‌گرداند.
هر متنی. متن ورودی را به‌صورت توالی‌ای از موجودیت‌های XML بازمی‌گرداند.
هر متنی. نامِ پیش از نشانی ایمیل را با تفسیر آن مطابق RFC 5322 بازمی‌گرداند..TP reverse فهرست. ترتیب آیتم‌های فهرست را معکوس می‌کند.
هر متنی. تمام نویسه‌های «خاص» را، به‌جز @، اسکیپ می‌کند. اسلش‌های رو به جلو دو بار اسکیپ می‌شوند تا از بازگردانی زودهنگام اسکیپ آن‌ها توسط وب‌سرورها جلوگیری شود. برای مثال، "@foo bar/baz" به "@foo%20bar%252Fbaz" تبدیل می‌شود.
تاریخ. تاریخی با قالب تاریخ اینترنت مشخص‌شده در RFC 3339 را برمی‌گرداند: "2009-08-18T13:00:13+02:00".
تاریخ. تاریخی با همان قالب مورد استفاده در سرآیندهای ایمیل را برمی‌گرداند: "Tue, 18 Aug 2009 13:00:13 +0200".
هش changeset. شکل کوتاه یک هش changeset را برمی‌گرداند، یعنی یک رشته‌ی ۱۲ رقمی هگزادسیمال.
هر متنی. با label به عنوان وضعیت bisect برخورد کرده و یک تک‌نویسه نماینده‌ی وضعیت را برمی‌گرداند (G: خوب، B: بد، S: ردشده، U: آزمایش‌نشده، I: نادیده‌گرفته‌شده). اگر text یک وضعیت معتبر bisect نباشد، یک فاصله‌ی تکی برمی‌گرداند.
تاریخ. تاریخی مانند "2006-09-18" را برمی‌گرداند.
هر متنی. جداکننده‌ی بومی مسیر را با اسلش جایگزین می‌کند.
هر متنی. متن را به فهرستی از خطوط تقسیم می‌کند.
هر نوعی. با تبدیل مقادیر به متن و الحاق آن‌ها، مقدار را به متن تبدیل می‌کند.
متن را به عنوان مسیر در نظر گرفته و در صورت امکان یک سطح دایرکتوری را حذف می‌کند. برای مثال، "foo" و "foo/bar" به "foo" تبدیل می‌شوند.
هر متنی. متن را بازمی‌گرداند، به‌طوری که تمام خطوط غیرخالی به‌جز خط اول با یک نویسه‌ی تب آغاز می‌شوند.
هر متنی. متن را به حروف بزرگ تبدیل می‌کند.
هر متنی. تمام نویسه‌های «خاص» را اسکیپ می‌کند. برای مثال، "foo bar" به "foo%20bar" تبدیل می‌شود.
هر متنی. نمایشی کوتاه از یک نام کاربری یا نشانی ایمیل را برمی‌گرداند.
هر متنی. از رمزگذاری محلی نویسه‌ها به UTF-8 تبدیل می‌کند.

توجه داشته باشید که یک فیلتر چیزی جز یک فراخوانی تابع نیست، یعنی expr|filter معادل filter(expr) است..SS "توابع (FUNCTIONS)"

علاوه بر فیلترها، تعدادی تابع توکار پایه‌ای نیز وجود دارد:

گزینهٔ پیکربندی درخواستی در hgrc را به صورت یک رشته بازمی‌گرداند.
گزینهٔ پیکربندی درخواستی در hgrc را به صورت یک مقدار بولی بازمی‌گرداند.
گزینهٔ پیکربندی درخواستی در hgrc را به صورت یک عدد صحیح بازمی‌گرداند.
قالب‌بندی یک تاریخ. رشتهٔ قالب از قالب strftime در Python استفاده می‌کند. حالت پیش‌فرض یک قالب تاریخ یونیکس، شامل منطقهٔ زمانی است: "Mon Sep 04 15:13:13 2006 0700".
ساخت یک dict از جفت‌های کلید-مقدار. در صورتی که عبارتِ مقدار بتواند نامی بدون ابهام ارائه دهد، می‌توان از کلید صرف‌نظر کرد.
نمایش یک diff، به صورت اختیاری با مشخص کردن فایل‌هایی برای لحاظ کردن یا مستثنی کردن.
تمام فایل‌های مجموعه‌تغییر (changeset) جاری که با الگو مطابقت دارند. به hg help patterns مراجعه کنید.
پر کردن چندین پاراگراف با تورفتگی اختیاری. فیلتر "fill" را ببینید.
حذف عناصر خالی از یک list یا یک dict. اگر expr مشخص شده باشد، برای آزمایش خالی بودن روی هر عنصر اعمال می‌شود.
دریافت یک صفت/کلید از یک شیء. برخی از کلیدواژه‌ها از نوع‌های پیچیده هستند. این تابع امکان دریافت مقدار یک صفت را در این نوع‌ها فراهم می‌کند.
اجرای شرطی بر پایهٔ نتیجهٔ یک عبارت.
اجرای شرطی بر پایهٔ اینکه آیا مورد "needle" در "haystack" وجود دارد یا خیر.
اجرای شرطی بر پایهٔ اینکه آیا ۲ مورد با یکدیگر معادل هستند یا خیر.
ایجاد تورفتگی در تمام خطوط غیرخالی با نویسه‌های ارائه‌شده در رشتهٔ indentchars. پارامتر اختیاری سوم، در صورت وجود، تورفتگی را تنها برای خط نخست بازنویسی می‌کند.
اتصال موارد موجود در یک لیست با یک جداکننده.
اعمال یک برچسب (label) به محتوای تولیدشده. محتوایی که برچسب بر آن اعمال شده باشد می‌تواند مشمول پردازش‌های ثانویه مانند رنگ‌آمیزی خودکار شود. برای دریافت اثرات، برچسب‌ها باید دارای یک نقطه باشند، مانند log.secret یا branch.active.
برچسب‌های سراسری (global tags) مطابق با الگوی ارائه‌شده در جدیدترین نیاکان برچسب‌خوردهٔ سراسری این مجموعه‌تغییر. اگر چنین برچسبی وجود نداشته باشد، قالب "{tag}" به رشتهٔ "null" تبدیل می‌شود. برای نحو الگو به hg help revisions.patterns مراجعه کنید.
تبدیل یک تاریخ به منطقهٔ زمانی مشخص‌شده. پیش‌فرض، تاریخ محلی است.
بازگرداندن نویسنده (author)، به‌روزشده بر اساس مقدار تعیین‌شده در فایل .mailmap
بازگرداندن بیشینهٔ یک شیء تکرارپذیر (iterable)
بازگرداندن کمینهٔ یک شیء تکرارپذیر (iterable)
محاسبهٔ a mod b به‌گونه‌ای که a / b + a mod b == a باشد
تراز و پر کردن متن با یک نویسهٔ پرکننده.
تبدیل یک مسیر مطلقِ مخزن به یک مسیر در سیستم‌فایل که نسبت به دایرکتوری کاری جاری نسبی است.
اجرای یک پرس‌وجوی مجموعهٔ بازبینی (revset). به hg help revset مراجعه کنید.
قالب‌بندی reStructuredText.
جست‌وجو برای اولین متنی که با الگوی عبارت منظم مطابقت دارد. گروه‌ها به صورت {1}، {2}، ... در قالب‌های نگاشت‌شده با % در دسترس هستند.
افزودن یک جداکننده میان آرگومان‌های غیرخالی.
به دست آوردن کوتاه‌ترین نمایش از یک گره (node).
اگر مقدار آرگومان "text" با محتوای آرگومان "pattern" آغاز شود، آن را بازمی‌گرداند.
حذف نویسه‌ها از یک رشته. به‌طور پیش‌فرض، تمام فاصله‌های سفید ابتدا و انتهای رشته را حذف می‌کند.
انجام جایگزینی متن با استفاده از عبارت‌های باقاعده.
یافتن والدین rev در زیرگراف ارائه‌شده توسط revset.
بازگرداندن n-اُمین کلمه از یک رشته.

مجموعه محدودی از عملیات حسابی میانوند بر روی اعداد صحیح ارائه شده است:

+ برای جمع
- برای تفریق
* برای ضرب
/ برای تقسیم کف (تقسیم گرد شده به نزدیک‌ترین عدد صحیح به سمت -بی‌نهایت)

تقسیم از رابطه x = x / y + mod(x, y) پیروی می‌کند.

همچنین برای هر عبارتی که یک لیست برمی‌گرداند، یک عملگر لیست وجود دارد:

expr % "{template}"

همان‌طور که در مثال بالا مشاهده می‌شود، {template} به عنوان یک الگو تفسیر می‌شود. برای جلوگیری از تفسیر شدن آن، می‌توانید از نویسه گریز \{ یا پیشوند رشته خام، r'...' استفاده کنید.

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

  • در صورتی که expr مقداری غیر از لیست/دیکشنری برگرداند، expr.member تقریباً معادل expr % '{member}' است. مقدار بازگردانده شده به رشته تبدیل نمی‌شود.
  • dict.key دقیقاً همانند get(dict, 'key') است.

کلیدواژه‌ها و توابع جدید را می‌توان در بخش templatealias از یک فایل پیکربندی Mercurial تعریف کرد:

<alias> = <definition>

آرگومان‌هایی به شکل a1، a2 و غیره از نام مستعار درون تعریف جایگزین می‌شوند.

برای مثال،

[templatealias]
r = rev
rn = "{r}:{node|short}"
leftpad(s, w) = pad(s, w, ' ', True)

دو نماد مستعار r و rn و یک تابع مستعار leftpad() را تعریف می‌کند.

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

برای مثال،

[templates]
nodedate = "{node|short}: {date(date, "%Y-%m-%d")}\n"

الگویی به نام nodedate را تعریف می‌کند که می‌تواند به شکل زیر فراخوانی شود:

$ hg log -r . -Tnodedate

الگویی که در بخش templates تعریف شده است می‌تواند از یک الگوی دیگر نیز مورد ارجاع قرار گیرد:

$ hg log -r . -T "{rev} {nodedate}"

اما توجه داشته باشید که کلیدواژه‌ها نمی‌توانند توسط الگوها بازنویسی شوند. برای مثال، الگویی که به صورت templates.rev تعریف شده است نمی‌تواند به صورت {rev} ارجاع داده شود.

الگویی که در بخش templates تعریف شده است می‌تواند دارای زیرالگوهایی باشد که قبل، بعد، یا بین موارد درج می‌شوند:

[templates]
myjson = ' {dict(rev, node|short)|json}'
myjson:docheader = '\{\n'
myjson:docfooter = '\n}\n'
myjson:separator = ',\n'

چند نمونه از الگوهای خط فرمان:
  • قالب‌بندی فهرست‌ها، برای مثال فایل‌ها:
    $ hg log -r 0 --template "files:\n{files % '  {file}\n'}"
  • اتصال فهرست فایل‌ها با «, »:
    $ hg log -r 0 --template "files: {join(files, ', ')}\n"
  • اتصال فهرست فایل‌های پایان‌یافته با «.py» با «, »:
    $ hg log -r 0 --template "pythonfiles: {join(files('**.py'), ', ')}\n"
  • جداسازی آرگومان‌های غیرخالی با « »:
    $ hg log -r 0 --template "{separate(' ', node, bookmarks, tags}\n"
  • تغییر هر خط از توضیحات کامیت:
    $ hg log --template "{splitlines(desc) % '**** {line}\n'}"
  • قالب‌بندی تاریخ:
    $ hg log -r 0 --template "{date(date, '%Y')}\n"
  • نمایش تاریخ در زمان UTC:
    $ hg log -r 0 --template "{localdate(date, 'UTC')|date}\n"
  • نمایش توضیحات با تنظیم عرض پرکردن (fill-width) روی ۳۰ کاراکتر:
    $ hg log -r 0 --template "{fill(desc, 30)}"
  • استفاده از شرط برای بررسی شاخه پیش‌فرض (default):
    $ hg log -r 0 --template "{ifeq(branch, 'default', 'on the main branch',
    'on branch {branch}')}\n"
  • افزودن خط جدید در صورت خالی نبودن:
    $ hg tip --template "{if(author, '{author}\n')}"
  • برچسب‌گذاری خروجی برای استفاده با افزونه color:
    $ hg log -r 0 --template "{label('changeset.{phase}', node|short)}\n"
  • معکوس کردن فیلتر firstline، یعنی همه چیز به جز خط اول:
    $ hg log -r 0 --template "{sub(r'^.*\n?\n?', '', desc)}\n"
  • نمایش محتویات فیلد 'extra'، هر مورد در یک خط:
    $ hg log -r 0 --template "{join(extras, '\n')}\n"
  • نشانه‌گذاری بوک‌مارک فعال با '*':
    $ hg log --template "{bookmarks % '{bookmark}{ifeq(bookmark, active, '*')} '}\n"
  • یافتن تگ نسخه کاندید انتشار (RC) قبلی، فاصله و تغییرات از زمان آن تگ:
    $ hg log -r . --template "{latesttag('re:^.*-rc$') % '{tag}, {changes}, {distance}'}\n"
  • نشانه‌گذاری والد نسخه کاری (working copy) با '@':
    $ hg log --template "{ifcontains(rev, revset('.'), '@')}\n"
  • نمایش جزئیات بازبینی‌های والد (parent revisions):
    $ hg log --template "{revset('parents(%d)', rev) % '{desc|firstline}\n'}"
  • نمایش تنها توضیحات کامیتی که با «template» شروع می‌شوند:
    $ hg log --template "{startswith('template', firstline(desc))}\n"
  • چاپ اولین کلمه از هر خط پیام کامیت:
    $ hg log --template "{word(0, desc)}\n"

    نشانی‌های وب (URL) معتبر به این صورت هستند:

    local/filesystem/path[#revision]
    file://local/filesystem/path[#revision]
    http://[user[:pass]@]host[:port]/[path][#revision]
    https://[user[:pass]@]host[:port]/[path][#revision]
    ssh://[user@]host[:port]/[path][#revision]
    path://pathname

    مسیرها در سیستم‌فایل محلی می‌توانند به مخازن Mercurial یا به فایل‌های bundle (همان‌طور که توسط hg bundle یا hg incoming --bundle ایجاد می‌شوند) اشاره کنند. همچنین hg help paths را ببینید.

    یک شناسه اختیاری پس از # بیانگر یک شاخه (branch)، برچسب (tag) یا مجموعه تغییرات (changeset) خاص برای استفاده از مخزن دوردست است. همچنین hg help revisions را ببینید.

    برخی قابلیت‌ها، مانند ارسال (push) به نشانی‌های http:// و https://، تنها زمانی ممکن هستند که این ویژگی به‌طور صریح در کارساز دوردست Mercurial فعال شده باشد.

    توجه داشته باشید که امنیت نشانی‌های HTTPS به پیکربندی صحیح web.cacerts بستگی دارد.

    چند نکته درباره استفاده از SSH با Mercurial:

  • پروتکل SSH نیازمند یک حساب پوسته (shell) در دسترس روی دستگاه مقصد و وجود یک نسخه از hg در مسیر (path) دوردست یا تعیین‌شده با remotecmd است.
  • مسیر (path) به‌طور پیش‌فرض نسبت به دایرکتوری خانگی کاربر دوردست سنجیده می‌شود. برای مشخص کردن یک مسیر مطلق، از یک اسلش اضافی در ابتدای مسیر استفاده کنید:
    ssh://example.com//tmp/repository
  • ابزار Mercurial فشرده‌سازی اختصاصی خود را روی SSH به کار نمی‌گیرد؛ شیوه درست این است که آن را در ‎~/.ssh/config خود پیکربندی کنید، برای نمونه:
    Host *.mylocalnetwork.example.com
      Compression no
    Host *
      Compression yes

    به عنوان روش جایگزین، می‌توانید "ssh -C" را به عنوان دستور ssh در فایل پیکربندی خود یا با گزینه خط فرمان --ssh مشخص کنید.

تمام این نشانی‌ها می‌توانند در فایل پیکربندی شما با نام‌های مستعار مسیر (path aliases) تحت بخش [paths] به شکل زیر ذخیره شوند:

[paths]
alias1 = URL1
alias2 = URL2
...

سپس می‌توانید از این نام مستعار برای هر دستوری که از یک URL استفاده می‌کند بهره ببرید (برای نمونه با hg pull alias1 مانند hg pull URL1 رفتار خواهد شد).

دو نام مستعار مسیر ویژه هستند زیرا در صورت عدم ارائه URL به یک دستور، به عنوان پیش‌فرض استفاده می‌شوند:

هنگامی که با hg clone یک مخزن ایجاد می‌کنید، دستور clone مکان مخزن مبدأ را به عنوان مسیر 'default' مخزن جدید ذخیره می‌کند. سپس زمانی که مسیر را در دستورهای مشابه push و pull (از جمله incoming و outgoing) حذف کنید، از این مقدار استفاده می‌شود.
دستور push به دنبال مسیری با نام 'default-push' می‌گردد و در صورت تعریف هر دو، آن را بر 'default' ترجیح می‌دهد.

این نام‌های مستعار همچنین می‌توانند در طرح‌واره (scheme) path:// استفاده شوند:

[paths]
alias1 = URL1
alias2 = path://alias1
...

برای جزئیات درباره رفتار چنین "زیرمسیرهایی" (sub-path)، hg help config.paths را بررسی کنید..SH "افزونه‌ها (EXTENSIONS)"

این بخش شامل راهنمای افزونه‌هایی است که همراه با Mercurial توزیع می‌شوند. راهنمای سایر افزونه‌ها در سامانه‌ی راهنما در دسترس است.

اعمال تغییرات دایرکتوری کاری به تغییرگان‌ها (آزمایشی)

افزونه‌ی absorb دستوری فراهم می‌کند تا با استفاده از اطلاعات annotate، تکه‌های تغییریافته را به تغییرگان‌های (changesets) غیرعمومی متناظر الحاق (amend) کند.

[absorb]
# فقط بررسی حداکثر ۵۰ تغییرگان اخیر غیرعمومی
max-stack-size = 50
# افزودن نویز به کامیت‌های جدید برای جلوگیری از چرخه‌ی منسوخ‌شدگی
add-noise = 1
# تبدیل `amend --correlated` به یک میانبر برای دستور اصلی
amend-flag = correlated
[color]
absorb.description = yellow
absorb.node = blue bold
absorb.path = bold

ادغام اصلاحات در پشته‌ی تغییرگان‌های پیش‌نویس (draft):

hg absorb [OPTION] [FILE]...

دستور absorb هر تغییر در دایرکتوری کاری شما را تحلیل کرده و تلاش می‌کند خطوط تغییریافته را به تغییرگان‌هایی در پشته‌ی شما الحاق کند که نخستین‌بار آن خطوط را معرفی کرده‌اند.

اگر absorb نتواند برای یک تغییر، یک تغییرگان بدون ابهام برای الحاق بیابد، آن تغییر دست‌نخورده در دایرکتوری کاری باقی خواهد ماند. سپس می‌توان آن‌ها را با hg status یا hg diff مشاهده کرد. به عبارت دیگر، absorb چیزی در دایرکتوری کاری نمی‌نویسد.

تغییرگان‌های خارج از revsetِ ::. and not public() and not merge() تغییر نخواهند کرد.

تغییرگان‌هایی که پس از اعمال تغییرات خالی شوند حذف خواهند شد.

به‌طور پیش‌فرض، absorb کاری را که قصد انجام آن دارد نشان داده و برای تأیید سؤال می‌پرسد. اگر اطمینان دارید که تغییرات در جای درست جذب خواهند شد، hg absorb -a را برای اعمال فوری تغییرات اجرا کنید.

در صورت موفقیت 0، و اگر تمام تکه‌ها نادیده گرفته شوند و چیزی الحاق نشود، 1 را برمی‌گرداند.

گزینه‌ها:

-a, --apply-changes
اعمال تغییرات بدون درخواست تأیید
-p, --print-changes
همواره چاپ اینکه کدام تغییرگان‌ها توسط کدام تغییرات اصلاح شده‌اند
-i, --interactive
انتخاب تعاملی تکه‌هایی که باید اعمال شوند
-e, --edit-lines
ویرایش اینکه چه خطوطی به کدام تغییرگان‌ها تعلق دارند پیش از کامیت (آزمایشی)
-n, --dry-run
عملیاتی انجام نده، فقط خروجی را چاپ کن
نمایش با استفاده از فایل نگاشت الگو (منسوخ‌شده)
نمایش با الگو
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده

گزینه‌ی مشخص‌شده با [+] می‌تواند چندین بار مشخص شود.SS acl

قلاب‌هایی برای کنترل دسترسی به مخزن

این قلاب امکان مجاز یا رد کردن دسترسی نوشتن به شاخه‌ها و مسیرهای مشخصی از یک مخزن را هنگام دریافت مجموعه‌تغییرات (changesets) ورودی از طریق pretxnchangegroup و pretxncommit فراهم می‌کند.

اعتبارسنجی دسترسی بر اساس نام کاربری محلی در سیستمی که قلاب روی آن اجرا می‌شود تطبیق داده می‌شود، نه کامیت‌کنندهٔ (committer) مجموعه‌تغییرات اصلی (چرا که مورد اخیر صرفاً جنبهٔ اطلاع‌رسانی دارد).

قلاب acl بهتر است همراه با یک شل محدودشده مانند hgsh استفاده شود، تا از انجام هر کاری جز ارسال (push) یا دریافت (pull) توسط کاربران احرازهویت‌شده جلوگیری شود. این قلاب در صورتی که کاربران دسترسی تعاملی به شل داشته باشند ایمن نیست، زیرا می‌توانند قلاب را غیرفعال کنند. همچنین در صورتی که کاربران از راه دور از یک حساب مشترک استفاده کنند ایمن نیست، زیرا در این صورت راهی برای تشخیص آن‌ها از یکدیگر وجود ندارد.

ترتیب اجرای بررسی‌های دسترسی به شرح زیر است:

1.
فهرست رد برای شاخه‌ها (بخش acl.deny.branches)
2.
فهرست مجاز برای شاخه‌ها (بخش acl.allow.branches)
3.
فهرست رد برای مسیرها (بخش acl.deny)
4.
فهرست مجاز برای مسیرها (بخش acl.allow)

بخش‌های مجاز (allow) و رد (deny) جفت‌های کلید-مقدار می‌پذیرند.

از بخش‌های acl.deny.branches و acl.allow.branches برای برقراری کنترل دسترسی مبتنی بر شاخه استفاده کنید. کلیدها در این بخش‌ها می‌توانند یکی از موارد زیر باشند:

  • یک نام شاخه، یا
  • یک علامت ستاره (*)، برای تطبیق با هر شاخه‌ای؛

مقادیر متناظر می‌توانند یکی از موارد زیر باشند:

  • فهرستی جداشده با کاما از کاربران و گروه‌ها، یا
  • یک علامت ستاره (*)، برای تطبیق با هر کسی؛

می‌توانید پیشوند "!" را به نام یک کاربر یا گروه اضافه کنید تا مفهوم تطبیق معکوس شود.

از بخش‌های acl.deny و acl.allow برای برقراری کنترل دسترسی مبتنی بر مسیر استفاده کنید. کلیدها در این بخش‌ها یک الگوی زیردرخت (به‌طور پیش‌فرض با نحو glob) را می‌پذیرند. مقادیر متناظر از همان نحو سایر بخش‌های بالا پیروی می‌کنند.

از بخش‌های acl.deny.bookmarks و acl.allow.bookmarks برای برقراری کنترل دسترسی مبتنی بر بوک‌مارک استفاده کنید. کلیدها در این بخش‌ها می‌توانند یکی از موارد زیر باشند:

  • یک نام بوک‌مارک، یا
  • یک علامت ستاره (*)، برای تطبیق با هر بوک‌مارکی؛

مقادیر متناظر می‌توانند یکی از موارد زیر باشند:

  • فهرستی جداشده با کاما از کاربران و گروه‌ها، یا
  • یک علامت ستاره (*)، برای تطبیق با هر کسی؛

می‌توانید پیشوند "!" را به نام کاربر یا گروه اضافه کنید تا مفهوم تطبیق معکوس شود.

نکته: در تعاملات میان کلاینت‌ها و سرورهایی که از Mercurial 3.6+ استفاده می‌کنند، رد شدن عموماً کل ارسال (push) را رد خواهد کرد؛ اما در تعاملاتی که شامل کلاینت‌های قدیمی‌تر است، تراکنش‌های کامیت از قبل پذیرفته خواهند شد و فقط جابه‌جایی بوک‌مارک رد می‌شود..SS "گروه‌ها (Groups)"

نام‌های گروه باید دارای پیشوند نماد @ باشند. مشخص کردن نام یک گروه همان اثری را دارد که مشخص کردن همهٔ کاربران آن گروه دارد.

می‌توانید اعضای گروه را در بخش acl.groups تعریف کنید. اگر نام گروهی در آنجا تعریف نشده باشد و Mercurial تحت یک سیستم شبه-یونیکس (Unix-like) در حال اجرا باشد، فهرست کاربران از سیستم‌عامل گرفته خواهد شد. در غیر این صورت، یک استثنا (exception) صادر خواهد شد.

[hooks]
# اگر می‌خواهید محدودیت‌های دسترسی را در زمان commit بررسی کنید،
# از این مورد استفاده کنید:
pretxncommit.acl = python:hgext.acl.hook
# اگر می‌خواهید محدودیت‌های دسترسی را برای pull، push،
# bundle و serve بررسی کنید، از این مورد استفاده کنید.
pretxnchangegroup.acl = python:hgext.acl.hook
[acl]
# اجازه یا رد دسترسی برای تغییرات دریافتی تنها در صورتی که منبع آن‌ها
# در اینجا فهرست شده باشد؛ در غیر این صورت به آن‌ها اجازهٔ عبور دهید.
# منبع برای تمام دسترسی‌های از راه دور (http یا ssh) مقدار "serve" است،
# و هنگامی که دستورهای مربوطه به صورت محلی اجرا شوند "push"، "pull" یا
# "bundle" است.
# پیش‌فرض: serve
sources = serve
[acl.deny.branches]
# دسترسی همه به شاخهٔ frozen-branch رد شده است:
frozen-branch = *
# دسترسی یک کاربر نامناسب در همهٔ شاخه‌ها رد شده است:
* = bad-user
[acl.allow.branches]
# چند کاربر در branch-a مجاز هستند:
branch-a = user-1, user-2, user-3
# تنها یک کاربر در branch-b مجاز است:
branch-b = user-1
# مدیر سیستم (super user) در هر شاخه‌ای مجاز است:
* = super-user
# همه در branch-for-tests مجاز هستند:
branch-for-tests = *
[acl.deny]
# این فهرست ابتدا بررسی می‌شود. در صورت یافتن تطابق، acl.allow
# بررسی نمی‌شود. اگر acl.deny وجود نداشته باشد، به همهٔ کاربران دسترسی
# اعطا می‌شود.
# قالب برای هر دو فهرست: glob pattern = user, ..., @group, ...
# برای تطابق با همه، از یک ستاره برای کاربر استفاده کنید:
# my/glob/pattern = *
# کاربر user6 دسترسی نوشتن به هیچ فایلی نخواهد داشت:
** = user6
# گروه "hg-denied" دسترسی نوشتن به هیچ فایلی نخواهد داشت:
** = @hg-denied
# هیچ‌کس قادر به تغییر "DONT-TOUCH-THIS.txt" نخواهد بود، علیرغم
# اینکه همه قادر به تغییر تمام فایل‌های دیگر هستند. زیر را ببینید.
src/main/resources/DONT-TOUCH-THIS.txt = *
[acl.allow]
# اگر acl.allow وجود نداشته باشد، همهٔ کاربران به صورت پیش‌فرض مجازند
# خالی بودن acl.allow = هیچ کاربری مجاز نیست
# کاربر "doc_writer" دسترسی نوشتن به هر فایلی در پوشهٔ "docs"
# را دارد:
docs/** = doc_writer
# کاربر "jack" و گروه "designers" دسترسی نوشتن به هر فایلی در
# پوشهٔ "images" را دارند:
images/** = jack, @designers
# همه (به جز "user6" و "@hg-denied" - acl.deny در بالا را ببینید)
# دسترسی نوشتن به هر فایلی در پوشهٔ "resources" را خواهند داشت
# (به جز ۱ فایل. acl.deny را ببینید):
src/main/resources/** = *
.hgtags = release_engineer

فرض کنید شاخه‌ای وجود دارد که تنها یک کاربر (یا گروه) مشخص باید بتواند تغییرات را به آن ارسال (push) کند، و شما نمی‌خواهید دسترسی به شاخه‌های دیگری را که ممکن است ایجاد شوند محدود کنید.

پیشوند "!" به شما این امکان را می‌دهد تا از ارسال مجموعه‌تغییرات (changesetها) در یک شاخه یا مسیر مشخص توسط هر کسی به جز یک کاربر یا گروه معین جلوگیری کنید.

در مثال‌های زیر:
۱) دسترسی به شاخه "ring" را برای همه به جز کاربر "gollum" رد می‌کنیم
۲) دسترسی به شاخه "lake" را برای همه به جز اعضای گروه "hobbit" رد می‌کنیم
۳) دسترسی به یک فایل را برای همه به جز کاربر "gollum" رد می‌کنیم
[acl.allow.branches]
# Empty
[acl.deny.branches]
# 1) only 'gollum' can commit to branch 'ring';
# 'gollum' and anyone else can still commit to any other branch.
ring = !gollum
# 2) only members of the group 'hobbit' can commit to branch 'lake';
# 'hobbit' members and anyone else can still commit to any other branch.
lake = !@hobbit
# You can also deny access based on file paths:
[acl.allow]
# Empty
[acl.deny]
# 3) only 'gollum' can change the file below;
# 'gollum' and anyone else can still change any other file.
/misty/mountains/cave/ring = !gollum

ارائه دستور amend (آزمایشی)

این افزونه دستور amend را فراهم می‌کند که مشابه commit --amend است اما ویرایشگری را باز نمی‌کند.

اصلاح والد رونوشت کاری با تمام یا بخشی از تغییرات معوق مشخص‌شده:

hg amend [OPTION]... [FILE]...

مشابه hg commit --amend، اما استفاده مجدد از پیام کامیت بدون فراخوانی ویرایشگر، مگر اینکه --edit مشخص شده باشد.

برای جزئیات بیشتر به hg help commit مراجعه کنید.

گزینه‌ها:

-A, --addremove
علامت‌گذاری فایل‌های جدید/ناموجود به عنوان اضافه‌شده/حذف‌شده پیش از کامیت
-e, --edit
فراخوانی ویرایشگر برای پیام‌های کامیت
-i, --interactive
استفاده از حالت تعاملی
--close-branch
علامت‌گذاری یک شاخه به عنوان بسته‌شده و پنهان کردن آن از فهرست شاخه‌ها
-s, --secret
استفاده از فاز secret برای کامیت
استفاده از فاز draft برای کامیت
ذخیره یک یادداشت بر روی amend
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
استفاده از متن به عنوان پیام کامیت
خواندن پیام کامیت از فایل
ثبت تاریخ مشخص‌شده به عنوان تاریخ کامیت
ثبت کاربر مشخص‌شده به عنوان کامیت‌کننده
ثبت تاریخ فعلی به عنوان تاریخ کامیت
-U, --currentuser
ثبت کاربر فعلی به عنوان کامیت‌کننده

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد.SS automv

بررسی جابه‌جایی‌های ثبت‌نشده در زمان کامیت (آزمایشی)

این افزونه در زمان commit/amend بررسی می‌کند که آیا فایلی از فایل‌های کامیت‌شده از یک mv ثبت‌نشده ناشی می‌شود یا خیر.

آستانه‌ای که در آن یک فایل به عنوان جابه‌جایی در نظر گرفته می‌شود را می‌توان با گزینه پیکربندی automv.similarity تعیین کرد. این گزینه درصدی بین 0 (غیرفعال) و 100 (فایل‌ها باید یکسان باشند) می‌پذیرد؛ مقدار پیش‌فرض 95 است.

زیباسازی خروجی log -G با استفاده از نویسه‌های یونیکد (آزمایشی)

به یک ترمینال با پشتیبانی از UTF-8 و متن تک‌عرض (monospace) باریک نیاز است.

ثبت رویدادهای مخزن در یک جعبه سیاه (blackbox) برای اشکال‌زدایی

اطلاعات رویدادها را برای کمک به اشکال‌زدایی و عیب‌یابی مشکلات در .hg/blackbox.log ثبت می‌کند. رویدادهایی که ثبت می‌شوند را می‌توان از طریق کلیدهای پیکربندی blackbox.track و blackbox.ignore تنظیم کرد.

مثال‌ها:

[blackbox]
track = *
ignore = pythonhook
# گزینه dirty بسیار سنگین (کُند) است؛
# هر مدخل لاگ در صورتی که مخزن دست‌کاری شده (dirty) باشد، مانند :hg:`id` علامت `+` را نشان می‌دهد.
dirty = True
# ثبت منبع پیام‌های لاگ
logsource = True
[blackbox]
track = command, commandfinish, commandexception, exthook, pythonhook
[blackbox]
track = incoming
[blackbox]
# محدود کردن اندازه فایل لاگ
maxsize = 1.5 MB
# چرخش حداکثر N فایل لاگ هنگامی که فایل فعلی بیش از اندازه بزرگ شود
maxfiles = 3
[blackbox]
# گنجاندن میکروثانیه در ورودی‌های لاگ با %f (تابع datetime.datetime.strftime پایتون را ببینید)
date-format = %Y-%m-%d @ %H:%M:%S.%f

مشاهده رویدادهای اخیر مخزن:

hg blackbox [OPTION]...

مشاهده رویدادهای اخیر مخزن

گزینه‌ها:

تعداد رویدادها برای نمایش (پیش‌فرض: 10)

پیاده‌سازی انشعاب مبتنی بر نشانک (آزمایشی)

  • ایجاد شاخه‌های جدید را غیرفعال می‌کند (پیکربندی: enable_branches=False).
  • هنگام کامیت به یک نشانک فعال نیاز دارد (پیکربندی: require_bookmark=True).
  • نشانک فعال را هنگام بروزرسانی جابه‌جا نمی‌کند، بلکه فقط هنگام کامیت جابه‌جا می‌کند.
  • برای جابه‌جا کردن یک نشانک موجود به '--rev' نیاز دارد.
  • از نشانک‌های ویژه محافظت می‌کند (پیکربندی: protect=@).

دستورهای مرتبط با جریان کاری (flow)

ایجاد یک نشانک جدید
انتقال نشانک به بازنگری (fast-forward)
جابه‌جایی به نشانک
ارسال (push) نشانک فعال

قلاب‌ها برای یکپارچه‌سازی با سامانهٔ ردیابی باگ Bugzilla

این افزونهٔ قلاب، هنگامی که مجموعه‌تغییرهایی (changeset) که از طریق شناسهٔ Bugzilla به باگ‌ها ارجاع می‌دهند دیده شوند، دیدگاه‌هایی روی باگ‌ها در Bugzilla درج می‌کند. این دیدگاه با استفاده از سازوکار الگوی Mercurial قالب‌بندی می‌شود.

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

چهار حالت پایه برای دسترسی به Bugzilla فراهم شده است:

1.
دسترسی از طریق REST-API مربوط به Bugzilla. نیازمند Bugzilla نسخهٔ 5.0 یا بالاتر است.
2.
دسترسی از طریق رابط XMLRPC مربوط به Bugzilla. نیازمند Bugzilla نسخهٔ 3.4 یا بالاتر است.
3.
بررسی داده‌ها از طریق رابط XMLRPC مربوط به Bugzilla و ارسال تغییرات باگ از طریق ایمیل به رابط ایمیل Bugzilla. نیازمند Bugzilla نسخهٔ 3.4 یا بالاتر است.
4.
نوشتن مستقیم در پایگاه‌دادهٔ Bugzilla. تنها از نصب‌های Bugzilla که از MySQL استفاده می‌کنند پشتیبانی می‌شود. نیازمند Python MySQLdb است.

نوشتن مستقیم در پایگاه‌داده در برابر تغییرات شِما (schema) آسیب‌پذیر است و برای ارسال ایمیل‌های اعلان تغییر باگ، به یک اسکریپت contrib در Bugzilla متکی است. این اسکریپت با کاربری که Mercurial را اجرا می‌کند اجرا می‌شود، باید روی میزبانی که Bugzilla روی آن نصب است اجرا شود، و نیازمند مجوز خواندن جزئیات پیکربندی Bugzilla و نام کاربری و گذرواژهٔ لازم MySQL برای داشتن حق دسترسی کامل به پایگاه‌دادهٔ Bugzilla است. به این دلایل، این حالت دسترسی اکنون منسوخ در نظر گرفته می‌شود و در آینده برای نسخه‌های جدید Bugzilla به‌روزرسانی نخواهد شد. در این حالت دسترسی تنها افزودن دیدگاه‌ها پشتیبانی می‌شود.

دسترسی از طریق XMLRPC مستلزم تعیین نام کاربری و گذرواژهٔ Bugzilla در پیکربندی است. دیدگاه‌ها تحت آن نام کاربری افزوده می‌شوند. از آن‌جا که پیکربندی باید توسط تمامی کاربران Mercurial خواندنی باشد، توصیه می‌شود دسترسی‌های آن کاربر در Bugzilla به حداقل لازم برای افزودن دیدگاه محدود شود. علامت‌گذاری باگ‌ها به عنوان رفع‌شده نیازمند Bugzilla نسخهٔ 4.0 و بالاتر است.

دسترسی از طریق XMLRPC/email از XMLRPC برای پرس‌وجوی Bugzilla استفاده می‌کند، اما برای ثبت دیدگاه‌ها روی باگ‌ها، به رابط ایمیل Bugzilla ایمیل ارسال می‌کند. نشانی From: در ایمیل روی نشانی ایمیل کاربر Mercurial تنظیم می‌شود، به‌گونه‌ای که به نظر می‌رسد دیدگاه از سوی کاربر Mercurial ارسال شده است. در صورتی که ایمیل کاربر Mercurial توسط Bugzilla به عنوان کاربر Bugzilla شناخته نشود، ایمیل مرتبط با نام کاربری Bugzilla که برای ورود به Bugzilla استفاده شده، به‌جای آن به عنوان منبع دیدگاه استفاده می‌شود. علامت‌گذاری باگ‌ها به عنوان رفع‌شده در تمام نسخه‌های پشتیبانی‌شدهٔ Bugzilla کار می‌کند.

دسترسی از طریق REST-API مستلزم تعیین نام کاربری و گذرواژهٔ Bugzilla یا یک apikey در پیکربندی است. دیدگاه‌ها تحت نام کاربری ارائه‌شده یا کاربر مرتبط با apikey در Bugzilla ثبت می‌شوند.

موارد پیکربندی مشترک میان تمامی حالت‌های دسترسی:

نوع دسترسی مورد استفاده. مقادیر شناخته‌شده عبارتند از:

رابط Bugzilla REST-API، در Bugzilla نسخهٔ 5.0 و بالاتر.

رابط Bugzilla XMLRPC.

رابط‌های XMLRPC و ایمیل Bugzilla.

3.0

دسترسی MySQL، در Bugzilla نسخهٔ 3.0 و بالاتر.

2.18

دسترسی MySQL، در Bugzilla نسخهٔ 2.18 تا قبل از نسخهٔ 3.0 (شامل 3.0 نمی‌شود).

2.16

دسترسی MySQL، در Bugzilla نسخهٔ 2.16 تا قبل از نسخهٔ 2.18 (شامل 2.18 نمی‌شود).

عبارت باقاعده برای تطبیق شناسه‌های باگ جهت به‌روزرسانی در پیام کامیت مجموعه‌تغییر. این عبارت باید شامل یک گروه نام‌دار «()» به‌صورت <ids> باشد که شناسه‌های باگ را جداشده با نویسه‌های غیررقم در خود داشته باشد. همچنین می‌تواند شامل یک گروه نام‌دار <hours> با یک عدد ممیز شناور باشد که ساعات کار روی باگ را نشان می‌دهد. اگر هیچ گروه نام‌داری وجود نداشته باشد، فرض می‌شود که نخستین گروه «()» شامل شناسه‌های باگ است و زمان کار به‌روزرسانی نمی‌شود. عبارت پیش‌فرض با Bug 1234، Bug no. 1234، Bug number 1234، Bugs 1234,5678، Bug 1234 and 5678 و گونه‌های مختلف آن‌ها تطبیق می‌یابد، که به دنبال آن یک مقدار ساعت با پیشوند h یا hours می‌آید؛ مانند hours 1.5. تطبیق نسبت به بزرگی و کوچکی حروف حساس نیست.
عبارت باقاعده برای تطبیق شناسه‌های باگ به منظور علامت‌گذاری به عنوان رفع‌شده در پیام کامیت مجموعه‌تغییر. این باید شامل یک گروه نام‌دار «()» به‌صورت <ids>` باشد که شناسه‌های باگ را جداشده با نویسه‌های غیررقم در خود داشته باشد. همچنین می‌تواند شامل یک گروه نام‌دار ``<hours> با یک عدد ممیز شناور باشد که ساعات کار روی باگ را نشان می‌دهد. اگر هیچ گروه نام‌داری وجود نداشته باشد، فرض می‌شود نخستین گروه «()» شامل شناسه‌های باگ است و زمان کار به‌روزرسانی نمی‌شود. عبارت پیش‌فرض با Fixes 1234، Fixes bug 1234، Fixes bugs 1234,5678، Fixes 1234 and 5678 و گونه‌های مختلف آن‌ها تطبیق می‌یابد، که به دنبال آن یک مقدار ساعت با پیشوند h یا hours می‌آید؛ مانند hours 1.5. تطبیق نسبت به بزرگی و کوچکی حروف حساس نیست.
وضعیتی که هنگام علامت‌گذاری باگ به عنوان رفع‌شده روی آن تنظیم می‌شود. پیش‌فرض RESOLVED است.
راه‌حلی (resolution) که هنگام علامت‌گذاری باگ به عنوان رفع‌شده روی آن تنظیم می‌شود. پیش‌فرض FIXED است.
فایل شیوه‌نامه (style) برای استفاده هنگام قالب‌بندی دیدگاه‌ها.
الگوی مورد استفاده هنگام قالب‌بندی دیدگاه‌ها. در صورت تعیین، اولویت بالاتری نسبت به style دارد. افزون بر کلیدواژه‌های معمول Mercurial، این افزونه موارد زیر را تعریف می‌کند:
{bug}

شناسهٔ باگ در Bugzilla.

{root}

نام مسیر کامل مخزن Mercurial.

{webroot}

نام مسیر تفکیک‌شده و کوتاه‌شدهٔ مخزن Mercurial.

{hgweb}

نشانی URL پایه برای مرور مخازن Mercurial.

پیش‌فرض: changeset {node|short} in repo {root} refers to bug {bug}.\ndetails:\n\t{desc|tabindent}

تعداد نویسه‌های جداکنندهٔ مسیر که برای تولید {webroot} باید از ابتدای مسیر مخزن Mercurial ({root} در الگوها) حذف شوند. برای نمونه، مخزنی با {root} برابر با /var/local/my-project با مقدار strip برابر با 2، مقدار my-project را برای {webroot} تولید می‌کند. پیش‌فرض 0 است.
نشانی URL پایه برای مرور مخازن Mercurial. در الگوها با {hgweb} به آن ارجاع داده می‌شود.

موارد پیکربندی مشترک میان حالت‌های دسترسی XMLRPC+email و MySQL:

مسیر فایلی شامل نگاشت ایمیل کامیت‌کننده در Mercurial به ایمیل کاربر Bugzilla. در صورت تعیین، این فایل باید در هر خط شامل یک نگاشت باشد:.sp
committer = Bugzilla user

همچنین بخش [usermap] را ببینید.

بخش [usermap] برای مشخص‌کردن نگاشت‌های ایمیل ثبت‌کنندهٔ (committer) در Mercurial به ایمیل کاربر Bugzilla استفاده می‌شود. همچنین bugzilla.usermap را ببینید. شامل مدخل‌هایی به شکل committer = Bugzilla user است.

پیکربندی حالت دسترسی XMLRPC و REST-API:

نشانی اینترنتی (URL) پایه برای نصب Bugzilla. پیش‌فرض: http://localhost/bugzilla.
نام کاربری برای ورود به Bugzilla از طریق XMLRPC. پیش‌فرض bugs.
گذرواژه برای ورود به Bugzilla.

حالت دسترسی REST-API از گزینه‌های فهرست‌شده در بالا و همچنین موارد زیر استفاده می‌کند:

یک apikey تولیدشده روی نمونهٔ Bugzilla برای دسترسی به api. استفاده از apikey نیاز به ذخیرهٔ گزینه‌های user و password را برطرف می‌کند.

حالت دسترسی XMLRPC+email از موارد پیکربندی حالت دسترسی XMLRPC و همچنین موارد زیر استفاده می‌کند:

نشانی ایمیل Bugzilla.

علاوه بر این، تنظیمات ایمیل Mercurial باید پیکربندی شود. مستندات موجود در hgrc(5)، بخش‌های [email] و [smtp] را ببینید.

پیکربندی حالت دسترسی MySQL:

نام میزبانِ کارساز MySQL شامل پایگاه‌دادهٔ Bugzilla. پیش‌فرض localhost.
نام پایگاه‌دادهٔ Bugzilla در MySQL. پیش‌فرض bugs.
نام کاربری برای دسترسی به کارساز MySQL. پیش‌فرض bugs.
گذرواژه برای دسترسی به کارساز MySQL.
مهلت زمانی اتصال پایگاه‌داده (به ثانیه). پیش‌فرض 5.
نام کاربری یدکی Bugzilla برای ثبت دیدگاه‌ها با آن، چنانچه ثبت‌کنندهٔ تغییرات (changeset committer) به عنوان کاربر Bugzilla یافت نشود.
دایرکتوری نصب Bugzilla. در notify پیش‌فرض استفاده می‌شود. پیش‌فرض /var/www/html/bugzilla.
دستوری که برای ارسال ایمیل‌های اطلاع‌رسانیِ تغییر باگ توسط Bugzilla اجرا می‌شود. با استفاده از نگاشتی با ۳ کلید جایگزین می‌شود: bzdir، id (شناسه باگ) و user (ایمیل Bugzilla ثبت‌کننده). پیش‌فرض به نسخه بستگی دارد؛ از نگارش 2.18 به صورت "cd %(bzdir)s && perl -T contrib/sendbugmail.pl %(id)s %(user)s" است.

فعال‌سازی افزونه:

[extensions]
bugzilla =
[hooks]
# run bugzilla hook on every change pulled or pushed in here
incoming.bugzilla = python:hgext.bugzilla.hook

پیکربندی‌های نمونه:

پیکربندی نمونهٔ XMLRPC. این پیکربندی از Bugzilla در http://my-project.org/bugzilla استفاده کرده و با کاربر bugmail@my-project.org و گذرواژهٔ plugh وارد می‌شود. این تنظیم همراه با مجموعه‌ای از مخازن Mercurial در /var/local/hg/repos/ و با یک رابط وب در http://my-project.org/hg به کار می‌رود.

[bugzilla]
bzurl=http://my-project.org/bugzilla
user=bugmail@my-project.org
password=plugh
version=xmlrpc
template=Changeset {node|short} in {root|basename}.
         {hgweb}/{webroot}/rev/{node|short}\n
         {desc}\n
strip=5
[web]
baseurl=http://my-project.org/hg

پیکربندی نمونهٔ XMLRPC+email. این پیکربندی از Bugzilla در http://my-project.org/bugzilla استفاده کرده و با کاربر bugmail@my-project.org و گذرواژهٔ plugh وارد می‌شود. این تنظیم همراه با مجموعه‌ای از مخازن Mercurial در /var/local/hg/repos/ و با یک رابط وب در http://my-project.org/hg به کار می‌رود. دیدگاه‌های باگ به نشانی ایمیل Bugzilla یعنی bugzilla@my-project.org ارسال می‌شوند.

[bugzilla]
bzurl=http://my-project.org/bugzilla
user=bugmail@my-project.org
password=plugh
version=xmlrpc+email
bzemail=bugzilla@my-project.org
template=Changeset {node|short} in {root|basename}.
         {hgweb}/{webroot}/rev/{node|short}\n
         {desc}\n
strip=5
[web]
baseurl=http://my-project.org/hg
[usermap]
user@emaildomain.com=user.name@bugzilladomain.com

پیکربندی نمونهٔ MySQL. این پیکربندی دارای یک نسخهٔ نصب‌شدهٔ محلی از Bugzilla 3.2 در /opt/bugzilla-3.2 است. پایگاه‌دادهٔ MySQL روی localhost قرار دارد، نام پایگاه‌دادهٔ Bugzilla برابر با bugs است و به MySQL با نام کاربری MySQL برابر با bugs و گذرواژهٔ XYZZY دسترسی پیدا می‌شود. این تنظیم همراه با مجموعه‌ای از مخازن Mercurial در /var/local/hg/repos/ و با یک رابط وب در http://my-project.org/hg به کار می‌رود.

[bugzilla]
host=localhost
password=XYZZY
version=3.0
bzuser=unknown@domain.com
bzdir=/opt/bugzilla-3.2
template=Changeset {node|short} in {root|basename}.
         {hgweb}/{webroot}/rev/{node|short}\n
         {desc}\n
strip=5
[web]
baseurl=http://my-project.org/hg
[usermap]
user@emaildomain.com=user.name@bugzilladomain.com
تمام موارد فوق یادداشتی به این شکل به گزارش باگ Bugzilla اضافه می‌کنند:
Changeset 3b16791d6642 in repository-name.
http://my-project.org/hg/repository-name/rev/3b16791d6642
Changeset commit comment. Bug 1234.

پاک کردن محتوای فایل در یک بازنگری مشخص

دستور censor به Mercurial دستور می‌دهد تا تمام محتوای یک فایل را در یک بازنگری مشخص بدون به‌روزرسانی هش مجموعه تغییرات (changeset hash) پاک کند. این امر اجازه می‌دهد تا تاریخچهٔ موجود معتبر باقی بماند، در حالی که از دریافت داده‌های پاک‌شده در cloneها/pullهای بعدی جلوگیری می‌کند.

کاربردهای متداول censor به دلیل الزامات امنیتی یا قانونی است، از جمله:

* گذرواژه‌ها، کلیدهای خصوصی، داده‌های رمزنگاری
* داده‌ها/کدها/کتابخانه‌های دارای مجوزی که مدت اعتبار مجوز آن‌ها منقضی شده است
* اطلاعات شناسایی هویتی اشخاص (PII) یا سایر داده‌های محرمانه

گره‌های سانسورشده (censored nodes) می‌توانند هر زمان که داده‌های حذف‌شده نیاز به بازیابی فیزیکی (materialize) داشته باشند، عملیات معمول mercurial را مختل کنند. برخی از دستورها، مانند hg cat/hg revert، هنگامی که درخواست تولید داده‌های سانسورشده را دارند صرفاً با شکست مواجه می‌شوند. دستورهای دیگر، مانند hg verify و hg update، باید قادر به تحمل داده‌های سانسورشده باشند تا بتوانند به کارکرد معنادار خود ادامه دهند. این‌گونه دستورها تنها فایل سانسورشده را تحمل می‌کنند، چرا که داشتن نسخهٔ سانسورشده در یک checkout غیرعملی است. بازنگری‌های سر (head) فعلی مخزن بررسی می‌شوند؛ اگر بازنگری مورد نظر برای سانسور در هر یک از آن‌ها باشد، دستور لغو خواهد شد. می‌توانید این رفتار را با استفاده از گزینهٔ زیر پیکربندی کنید:

کنترل نحوهٔ واکنش هنگام دسترسی به محتوای سانسورشده. مقادیر پذیرفته‌شده: "abort"، "ignore". پیش‌فرض: abort.

چند دستور اطلاع‌رسانی مانند hg grep داده‌های سانسورشده را بدون قید و شرط نادیده می‌گیرند و صرفاً مواجهه با آن‌ها را گزارش می‌کنند.

hg censor -r REV [-t TEXT] [FILE]

گزینه‌ها:

سانسور فایل از بازنگری مشخص‌شده
بررسی اینکه سرهای (heads) مخزن متأثر نشده باشند (پیش‌فرض: True)
داده‌های جایگزین نشانگر حذف (tombstone)

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SS children

دستور برای نمایش مجموعه‌تغییرات فرزند (منسوخ‌شده)

این افزونه منسوخ شده است. در عوض باید از hg log -r "children(REV)" استفاده کنید.

نمایش فرزندان بازبینی داده‌شده یا دایرکتوری کاری:

hg children [-r REV] [FILE]

فرزندان بازبینی‌های دایرکتوری کاری را چاپ می‌کند. اگر بازبینی از طریق -r/--rev داده شود، فرزندان آن بازبینی چاپ خواهند شد. اگر یک آرگومان فایل داده شود، بازبینی‌ای که فایل آخرین بار در آن تغییر یافته است (پس از بازبینی دایرکتوری کاری یا آرگومانِ --rev در صورت ارائه) چاپ می‌شود.

لطفاً در عوض از hg log استفاده کنید:

hg children => hg log -r "children(.)"
hg children -r REV => hg log -r "children(REV)"

به hg help log و hg help revsets.children مراجعه کنید.

گزینه‌ها:

نمایش فرزندان بازبینی مشخص‌شده (پیش‌فرض: .)
نمایش با استفاده از فایل نگاشت قالب (منسوخ‌شده)
نمایش با قالب

دستور برای نمایش آمار مربوط به تاریخچهٔ مخزن

هیستوگرام تغییرات در مخزن:

hg churn [-d DATE] [-r REV] [--aliases FILE] [FILE]

این دستور یک هیستوگرام را نشان می‌دهد که بیانگر تعداد خطوط یا بازبینی‌های تغییریافته است و بر اساس قالب داده‌شده گروه‌بندی می‌شود. قالب پیش‌فرض تغییرات را بر پایهٔ پدیدآورنده گروه‌بندی می‌کند. از گزینهٔ --dateformat می‌توان برای گروه‌بندی نتایج بر اساس تاریخ استفاده کرد.

آمارها بر پایهٔ تعداد خطوط تغییریافته است، یا در صورتی که گزینهٔ --changesets مشخص شده باشد، بر اساس تعداد بازبینی‌های منطبق خواهد بود.

مثال‌ها:

# display count of changed lines for every committer
hg churn -T "{author|email}"
# display daily activity graph
hg churn -f "%H" -s -c
# display activity of developers by month
hg churn -f "%Y-%m" -s -c
# display count of lines changed in every year
hg churn -f "%Y" -s
# display count of lines changed in a time range
hg churn -d "2020-04 to 2020-09"

می‌توان با ارائهٔ یک فایل با قالب زیر، نشانی‌های ایمیل جایگزین را به یک نشانی اصلی نگاشت کرد:

<alias email> = <actual email>

چنین فایلی را می‌توان با گزینهٔ --aliases مشخص کرد، در غیر این صورت فایل .hgchurn در ریشهٔ دایرکتوری کاری جستجو خواهد شد. نام‌های مستعار از راست‌ترین «=» تفکیک می‌شوند.

گزینه‌ها:

شمارش نرخ برای بازبینی یا revset مشخص‌شده
شمارش نرخ برای بازبینی‌های منطبق با مشخصات تاریخ
قالب برای گروه‌بندی مجموعه‌تغییرات (منسوخ‌شده)
قالب برای گروه‌بندی مجموعه‌تغییرات (پیش‌فرض: {author|email})
قالب سازگار با strftime برای گروه‌بندی بر اساس تاریخ
-c, --changesets
شمارش نرخ بر اساس تعداد مجموعه‌تغییرات
-s, --sort
مرتب‌سازی بر اساس کلید (پیش‌فرض: مرتب‌سازی بر اساس تعداد)
نمایش جداگانهٔ خطوط اضافه‌شده/حذف‌شده
فایل حاوی نام‌های مستعار ایمیل
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده

گزینهٔ علامت‌گذاری‌شده با [+] می‌تواند چند بار مشخص شود.SS clonebundles

اعلام بسته‌های از پیش‌تولیدشده برای بذردهی عملیات‌های clone

«clonebundles» یک افزونهٔ سمت سرور است که برای اعلام وجود فایل‌های بستهٔ (bundle) از پیش‌تولیدشده و میزبانی‌شده در سرور خارجی به کارخواه‌هایی (clients) که در حال اجرای clone هستند به کار می‌رود تا عملیات clone سریع‌تر، قابل‌اطمینان‌تر و با مصرف منابع کمتری در سمت سرور انجام شود. «pullbundles» قابلیتی مرتبط برای ارسال فایل‌های بستهٔ از پیش‌تولیدشده به کارخواه‌ها به عنوان بخشی از عملیات pull است.

همتاسازی (Cloning) می‌تواند عملیاتی سنگین از نظر مصرف پردازنده (CPU) و ورودی/خروجی (I/O) در سرورها باشد. به‌طور سنتی، سرور در پاسخ به درخواست یک کارخواه برای clone، به‌صورت پویا بسته‌ای شامل تمام محتوای مخزن تولید کرده و آن را برای کارخواه ارسال می‌کند. هیچ حافظهٔ موقتی (caching) در سرور وجود ندارد و سرور ناچار است برای پاسخ به هر درخواست clone، همان بستهٔ خروجی تکراری را دوباره تولید کند. برای سرورهایی با مخازن بزرگ یا حجم بالای درخواست‌های clone، بار حاصل از این عملیات‌ها می‌تواند مقیاس‌پذیری سرور را دشوار و پرهزینه کند.

این افزونه به مدیران سرور امکان می‌دهد تا بارِ کاریِ پرهزینهٔ clone را به یک سرویس خارجی محول کنند (offload). بسته‌های از پیش‌تولیدشده همچنین اجازه می‌دهند از فشرده‌سازی‌های سنگین‌ترِ پردازنده استفاده شود که این امر نیازمندی‌های پهنای باند را به‌طور مؤثری کاهش می‌دهد.

نحوهٔ کارکرد clone bundles به این صورت است:

1.
مدیر سرور سازوکاری را برای دردسترس قرار دادن فایل‌های بسته روی یک سرویس میزبانی ایجاد می‌کند تا کارخواه‌های Mercurial بتوانند آن‌ها را دریافت کنند.
2.
یک فایل مانیفست حاوی نشانی‌های اینترنتی (URLs) بسته‌های موجود و برخی متاداده‌های اختیاری به مخزن Mercurial در سرور اضافه می‌شود.
3.
یک کارخواه عملیات clone را در برابر سروری که از clone bundles آگاه است آغاز می‌کند.
4.
کارخواه متوجه می‌شود که سرور در حال اعلام clone bundles است و مانیفستِ حاوی فهرست بسته‌های موجود را دریافت می‌کند.
5.
کارخواه بسته‌های موجود را بر اساس مواردی که پشتیبانی می‌کند و ترجیح می‌دهد، پالایش (فیلتر) و مرتب‌سازی می‌کند.
6.
کارخواه یک بستهٔ موجود را از URL مشخص‌شده توسط سرور بارگیری کرده و اعمال می‌کند.
7.
کارخواه مجدداً به سرور اصلی متصل می‌شود و معادل hg pull را برای دریافت تمام داده‌های مخزن که در بسته وجود ندارند اجرا می‌کند. (ممکن است مخزن در فاصلهٔ زمانی بین ایجاد بسته و شروع clone توسط کارخواه به‌روزرسانی شده باشد.) این فرایند ممکن است از «pullbundles» استفاده کند.

به جای اینکه سرور برای هر درخواست clone بسته‌های کامل مخزن را تولید کند، بسته‌های کامل را یک بار تولید کرده و متعاقباً از آن‌ها برای راه‌اندازی اولیهٔ همتاسازی‌های جدید استفاده مجدد می‌شود. سرور همچنان ممکن است در زمان clone داده‌هایی را انتقال دهد؛ با این حال، این داده‌ها تنها مواردی هستند که پس از ایجاد بسته، اضافه یا تغییر یافته‌اند. برای مخازن بزرگ و تثبیت‌شده، این امر می‌تواند بار سرور برای عملیات‌های clone را به کمتر از ۱٪ مقدار اولیه کاهش دهد.

نحوهٔ کارکرد pullbundles به این صورت است:

1.
یک فایل مانیفست حاوی فهرست بسته‌های موجود و توصیف بازبینی‌ها (revisions) به مخزن Mercurial در سرور اضافه می‌شود.
2.
یک کارخواه به اندازهٔ کافی جدید به سرور اطلاع می‌دهد که از دریافت‌های جزئی (partial pulls) پشتیبانی می‌کند و یک pull را آغاز می‌کند.
3.
اگر pull bundles روی سرور فعال باشد و مشاهده کند که کارخواه از partial pulls پشتیبانی می‌کند، مانیفست را برای یافتن یک pull bundle منطبق بررسی می‌کند. یک بسته زمانی منطبق محسوب می‌شود که قالب آن توسط کارخواه پشتیبانی شود، کارخواه از قبل بازبینی‌های لازم را داشته باشد و به مواردی از بسته نیز احتیاج داشته باشد.
4.
اگر حداقل یک بستهٔ منطبق وجود داشته باشد، سرور آن را به کارخواه ارسال می‌کند.
5.
کارخواه بسته را اعمال کرده و متوجه می‌شود که پاسخ سرور ناقص بوده است؛ سپس عملیات pull دیگری را آغاز می‌کند.

برای کارکرد صحیح، این افزونه موارد زیر را از مدیران سرور می‌طلبد:

  • تولید فایل‌های بسته از محتوای مخزن (معمولاً به‌صورت دوره‌ای، مانند یک بار در روز).
  • برای Clone bundles: یک سرور فایل که کارخواه‌ها دسترسی شبکه‌ای به آن دارند و Python از طریق سازوکار عادی مدیریت URL خود با آن ارتباط برقرار می‌کند (معمولاً یک سرور HTTP/HTTPS).
  • یک فرایند برای همگام نگه داشتن مانیفست بسته‌ها با فایل‌های بستهٔ موجود.

دقیق‌تر که بگوییم، استفاده از یک سرور میزبان فایل‌های ایستا اجباری نیست: یک مدیر سرور می‌تواند از سرویسی پویا برای واکشی داده‌های بسته استفاده کند. با این حال، سرویس‌های میزبانی فایل‌های ایستا ساده و مقیاس‌پذیر هستند و باید برای بیشتر نیازمندی‌ها کافی باشند.

فایل‌های بسته را می‌توان با دستور hg bundle تولید کرد. معمولاً از hg bundle --all برای تولید بسته از کل مخزن استفاده می‌شود.

گزینهٔ bundlespec با عنوان stream (راهنمای hg help bundlespec را ببینید) می‌تواند برای تولید یک streaming clonebundle ویژه استفاده شود که معمولاً با دستور hg bundle --all --type="none-streamv2" انجام می‌گیرد. این‌ها فایل‌های بسته‌ای هستند که تولید و مصرف آن‌ها بسیار بهینه (بخوانید: سریع) است. با این حال، حجم آن‌ها از قالب‌های سنتی بسته‌ها بیشتر است و نیازمند آن هستند که کارخواه‌ها دقیقاً از همان مجموعه قالب‌های ذخیره‌سازی دادهٔ مخزن که توسط مخزنِ تولیدکننده استفاده شده، پشتیبانی کنند. معمولاً یک سرور جدیدتر می‌تواند داده‌هایی سازگار با کارخواه‌های قدیمی‌تر ارائه دهد. با این حال، streaming clone bundles چنین تضمینی ندارند. مدیران سرور باید آگاه باشند که نسخه‌های جدیدتر Mercurial ممکن است streaming clone bundles نامتناسب و ناسازگار با نسخه‌های قدیمی‌تر Mercurial تولید کنند.

مدیر سرور مسئول ایجاد فایل .hg/clonebundles.manifest شامل فهرست فایل‌های بستهٔ موجود و مناسب برای بذردهی به همتاسازی‌ها است. اگر این فایل وجود نداشته باشد، مخزن در هنگام اتصال کارخواه‌ها، وجود clone bundles را اعلام نخواهد کرد. برای pull bundles، از فایل .hg/pullbundles.manifest استفاده می‌شود.

فایل مانیفست شامل فهرستی از مدخل‌ها است که با نویسهٔ خط جدید (n) از یکدیگر جدا شده‌اند.

هر خط در این فایل یک بستهٔ موجود را تعریف می‌کند. خطوط دارای قالب زیر هستند:

<URL> [<key>=<value>[ <key>=<value>]]

یعنی یک URL و در ادامه فهرستی اختیاری و جداشده با فاصله (space) از جفت‌های key=value که ویژگی‌های اضافی این بسته را توصیف می‌کنند. هم کلیدها و هم مقادیر به‌صورت URI کدگذاری (URI encoded) می‌شوند.

برای pull bundles، مقدار URL یک مسیر در داخل پوشهٔ .hg مخزن است.

کلیدهای با حروف بزرگ (UPPERCASE) برای استفادهٔ Mercurial رزرو شده‌اند و در زیر تعریف شده‌اند. تمام کلیدهای غیر بزرگ می‌توانند توسط پیکربندی‌های محلی استفاده شوند. یک نمونه استفاده از ویژگی‌های سفارشی، استفاده از مشخصهٔ datacenter برای مشخص کردن این است که یک فایل در کدام مرکز داده میزبانی می‌شود. سپس کارخواه‌ها می‌توانند سروری را در نزدیک‌ترین مرکز داده به خود ترجیح دهند.

کلیدهای رزروشدهٔ زیر در حال حاضر تعریف شده‌اند:

یک رشتهٔ «مشخصات بسته» (bundle specification) که نوع بسته را توصیف می‌کند.

این‌ها مقادیر رشته‌ای هستند که توسط آرگومان «--type» در دستور hg bundle پذیرفته می‌شوند.

این مقادیر در حالت سخت‌گیرانه (strict mode) تجزیه می‌شوند، به این معنی که باید به صورت «<compression>-<type>» باشند. برای جزئیات بیشتر به mercurial.exchange.parsebundlespec() مراجعه کنید.

دستور hg debugbundle --spec می‌تواند برای چاپ رشتهٔ مشخصات بسته برای یک فایل بسته استفاده شود. خروجی این دستور می‌تواند عیناً برای مقدار BUNDLESPEC استفاده شود (از قبل اسکیپ شده است).

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

مقدار واقعی، فراتر از مرحلهٔ پالایش تأثیری بر رفتار کارخواه ندارد: کارخواه‌ها همچنان نوع بسته را از سرآیند (header) فایل‌های بارگیری‌شده تشخیص می‌دهند.

استفاده از این کلید به شدت توصیه می‌شود، زیرا به کارخواه‌ها اجازه می‌دهد بسته‌های پشتیبانی‌نشده را به‌راحتی نادیده بگیرند. اگر این کلید تعریف نشود، یک کارخواه قدیمی ممکن است برای اعمال بسته‌ای که قادر به خواندن آن نیست تلاش کند..TP REQUIRESNI مشخص می‌کند که آیا برای اتصال به URL به قابلیت Server Name Indication (SNI) نیاز است یا خیر. قابلیت SNI به کارگزارها اجازه می‌دهد تا از چندین گواهی بر روی یک نشانی IP یکسان استفاده کنند. این ویژگی تا حدی در CDNها و دیگر ارائه‌دهندگان میزبانی متداول است. نگارش‌های قدیمی‌تر Python از SNI پشتیبانی نمی‌کنند. تعریف این مشخصه به کلاینت‌های دارای نگارش‌های قدیمی‌تر Python امکان می‌دهد تا این ورودی را بدون مواجهه با خطای نامفهوم SSL در زمان برقراری اتصال فیلتر کنند.

اگر این مشخصه تعریف شده باشد، اعلان یک URL جایگزین بدون SNI ضروری است؛ در غیر این صورت ممکن است کلاینت‌هایی که نگارش‌های قدیمی Python را اجرا می‌کنند قادر به شبیه‌سازی (clone) با استفاده از سازوکار clonebundles نباشند.

مقدار باید "true" باشد.

این مقدار، نیازمندی‌های حافظهٔ مورد انتظار برای رمزگشایی بار داده (payload) را مشخص می‌کند. مقادیر می‌توانند پسوندهایی برای اندازه‌های بایت رایج داشته باشند؛ مانند "64MB".

این کلید اغلب برای دسته‌های فشرده‌شده با zstd استفاده می‌شود که از سطح فشرده‌سازی / اندازهٔ پنجرهٔ (window size) بالا بهره می‌برند و ممکن است برای رمزگشایی به بیش از ۱۰۰ مگابایت حافظه نیاز داشته باشند.

برای دسته‌های pull استفاده می‌شود. این ورودی شامل هش‌های changeset مربوط به سرهای (heads) محتوای بسته است که با ; از هم جدا شده‌اند.
برای دسته‌های pull استفاده می‌شود. این ورودی شامل هش‌های changeset مربوط به ریشه‌های محتوای بسته است که با ; از هم جدا شده‌اند. اگر بسته بدون --base ایجاد شده باشد، می‌توان از این مورد صرف‌نظر کرد.

مانیفست‌ها می‌توانند شامل چندین ورودی باشند. با فرض تعریف متادیتا، کلاینت‌ها ورودی‌هایی را که پشتیبانی نمی‌کنند از مانیفست فیلتر خواهند کرد. ورودی‌های باقی‌مانده را می‌توان به صورت اختیاری بر اساس ترجیحات کلاینت (گزینهٔ پیکربندی ui.clonebundleprefers) مرتب کرد. سپس کلاینت تلاش می‌کند دسته را از نخستین URL موجود در فهرست باقی‌مانده واکشی کند.

خطاها در هنگام بارگیری دسته، کل عملیات clone را با شکست مواجه خواهند کرد: کلاینت‌ها به طور خودکار به clone سنتی بازگشت (fall back) نمی‌کنند. دلیل این امر آن است که اگر یک کارگزار از دسته‌های clone استفاده می‌کند، احتمالاً به این دلیل است که این ویژگی برای کمک به مقیاس‌پذیری آن ضروری است. به عبارت دیگر، این فرض وجود دارد که بار clone به سرویس دیگری واگذار خواهد شد و کارگزار Mercurial مسئولیتی در قبال پاسخگویی به این بار clone ندارد. اگر آن سرویس دیگر دچار مشکل شود و کلاینت‌ها به صورت انبوه به کارگزار اصلی Mercurial بازگردند، بار اضافی clone می‌تواند به دلیل بار غیرمنتظره کارگزار را زیر فشار شدید قرار داده و عملاً آن را از دسترس خارج کند. بازنگشتن خودکار کلاینت‌ها به شبیه‌سازی از کارگزار اصلی، از بروز این سناریو جلوگیری می‌کند.

از آنجا که در صورت بروز خرابی در سرویس میزبانی دسته، هیچ بازگشت خودکاری به کارگزار Mercurial وجود ندارد، مهم است که مدیران کارگزار، سرویس میزبانی دسته را از نظر دسترس‌پذیری و توافق‌نامه‌های سطح خدمات (SLA) به عنوان امتدادی از کارگزار Mercurial در نظر بگیرند: اگر سرویس میزبانی دسته از کار بیفتد، امکان clone کردن برای کلاینت‌ها نیز از دست می‌رود. نکته: در هنگام بروز خرابی، کلاینت‌ها پیامی مشاهده خواهند کرد که نحوهٔ دور زدن سازوکار clone bundles را به آن‌ها اطلاع می‌دهد. بنابراین مدیران کارگزار باید برای این موضوع آماده باشند که برخی افراد در زمان خرابی این دستورالعمل‌ها را دنبال کنند، که در نتیجه هنگام خرابی سرویس میزبانی دسته، بار بیشتری به سمت کارگزار اصلی Mercurial هدایت خواهد شد.

در صورتی که مخازن از طریق SSH در دسترس باشند، انتقال درون‌خطی clonebundles امکان‌پذیر است. این کار نیاز به راه‌اندازی یک کارگزار HTTPS خارجی را برطرف کرده و منجر به همان کنترل دسترسی می‌شود که پیش‌تر برای راه‌اندازی SSH وجود داشته است.

دسته‌های clonebundles درون‌خطی باید در دایرکتوری .hg/bundle-cache قرار داده شوند. به یک clonebundle در مسیر .hg/bundle-cache/mybundle.bundle در فایل clonebundles.manifest با عنوان peer-bundle-cache://mybundle.bundle ارجاع داده می‌شود.

امکان تنظیم Mercurial وجود دارد تا در زمان در دسترس بودن محتوای جدید به اندازهٔ کافی، دسته‌های کلون را به صورت خودکار بازتولید کند.

Mercurial این فرایند را به صورت ناهمگام (asynchronous) انجام خواهد داد. فهرست تعریف‌شده از bundle-type تولید، بارگذاری و اعلان خواهد شد. دسته‌های قدیمی‌تر با جایگزین شدن دسته‌های جدیدتر، از رده خارج می‌شوند..SS تولید بسته‌ها (Bundles Generation):

این افزونه می‌تواند چندین گونهٔ مختلف از بستهٔ کلون (clone bundle) را تولید کند. هر گونهٔ متفاوت توسط «bundle-spec» مورد استفاده‌اش تعریف می‌شود:

[clone-bundles]
auto-generate.formats= zstd-v2, gzip-v2

برای جزئیات دربارهٔ گزینه‌های موجود، hg help bundlespec را ببینید.

به‌طور پیش‌فرض، زمانی که ۵٪ از محتوای مخزن یا حداقل ۱۰۰۰ بازبینی (revision) در بسته‌های ذخیره‌شده در حافظهٔ پنهان موجود نباشد، بسته‌های جدید تولید می‌شوند. این رفتار را می‌توان با گزینهٔ clone-bundles.trigger.below-bundled-ratio (پیش‌فرض 0.95) و گزینهٔ clone-bundles.trigger.revs (پیش‌فرض 1000) کنترل کرد:

[clone-bundles]
trigger.below-bundled-ratio=0.95
trigger.revs=1000

این منطق می‌تواند به‌صورت دستی با استفاده از دستور admin::clone-bundles-refresh، یا در صورت تنظیم clone-bundles.auto-generate.on-change روی yes، با هر تغییر در مخزن به‌طور خودکار اجرا شود:

[clone-bundles]
auto-generate.on-change=yes
auto-generate.formats= zstd-v2, gzip-v2

ساده‌ترین راه برای ارائهٔ بستهٔ تولیدشده از طریق پروتکل Mercurial است. با این حال، این روش کارآمدترین راه نیست، چرا که درخواست‌ها همچنان توسط سرور اصلی پاسخ داده می‌شوند. این روش در مواردی که فرایند احراز هویت پیچیده است یا در حال حاضر یک سامانهٔ آینه‌ای (mirror) کارآمد استفاده می‌شود، مفید خواهد بود. برای جزئیات دربارهٔ clonebundleهای درون‌خطی، بخش inline clonebundles در بالا را ببینید.

برای ارائهٔ خودکار بستهٔ تولیدشده از طریق clonebundle درون‌خطی، کافی است گزینهٔ زیر را تنظیم کنید:

auto-generate.serve-inline=yes

فعال کردن این گزینه، بارگذاری مدیریت‌شده و ارائه را که در زیر توضیح داده شده است غیرفعال می‌کند.

این روش کارآمدترین راه برای ارائهٔ بسته‌های کلون تولیدشده به‌صورت خودکار است، اما به مقداری پیکربندی اولیه نیاز دارد.

بسته‌های تولیدشده باید از طریق یک نشانی اینترنتی (URL) «عمومی» در دسترس کاربران قرار گیرند. این کار باید از طریق پیکربندی clone-bundles.upload-command انجام شود. مقدار این پیکربندی باید یک دستور پوسته (shell) باشد. این دستور از طریق متغیر $HGCB_BUNDLE_PATH به مسیر فایل بسته دسترسی خواهد داشت؛ و نام پایه (basename) مورد انتظار در URL «عمومی» در این بخش قابل دسترسی است:

[clone-bundles]
upload-command=sftp put $HGCB_BUNDLE_PATH       sftp://bundles.host/clone-bundles/$HGCB_BUNDLE_BASENAME

حتی اگر فایل از قبل بارگذاری شده باشد، این دستور همچنان باید با موفقیت پایان یابد.

پس از بارگذاری، فایل باید در یک URL تعریف‌شده توسط clone-bundles.url-template در دسترس باشد.

هنگامی که بسته‌های جدید تولید می‌شوند، بسته‌های قدیمی‌تر دیگر مورد نیاز نبوده و می‌توان آن‌ها را از فضای ذخیره‌سازی حذف کرد. این کار از طریق پیکربندی clone-bundles.delete-command انجام می‌شود. نشانی اینترنتی (URL) دست‌ساخته‌ای که باید حذف شود، از طریق متغیر محیطی $HGCB_BUNDLE_URL به دستور داده می‌شود.

[clone-bundles] delete-command=sftp rm sftp://bundles.host/clone-bundles/$HGCB_BUNDLE_BASENAME

اگر فایل از قبل حذف شده باشد، دستور همچنان باید با موفقیت به پایان برسد.

پاک کردن حافظه‌های موقت (cache) بسته‌های clone موجود:

hg admin::clone-bundles-clear

برای جزئیات در مورد نحوهٔ تولید مجدد آن‌ها، hg help admin::clone-bundles-refresh را ببینید.

این دستور فقط روی بسته‌هایی که در حال حاضر در دسترس هستند تأثیر می‌گذارد و روی بسته‌هایی که به‌صورت ناهمگام در حال تولید هستند تأثیری نخواهد داشت.

تولید بسته‌های clone بر اساس پیکربندی:

hg admin::clone-bundles-refresh

این دستور منطق تولید خودکار را اجرا کرده، بسته‌های منسوخ را حذف و در صورت نیاز بسته‌های جدیدی تولید می‌کند. برای جزئیات در مورد نحوهٔ پیکربندی این قابلیت، hg help -e clone-bundles را ببینید.

گزینه‌ها:

شروع تولید بسته در پس‌زمینه

بستن headهای دلخواه بدون checkout کردن اولیهٔ آن‌ها

بستن بازبینی‌های head داده‌شده:

hg close-head [OPTION]... [REV]...

این معادل checkout کردن هر بازبینی در یک درخت تمیز و اجرای hg commit --close-branch است، با این تفاوت که دایرکتوری کاری را تغییر نمی‌دهد.

پیام commit باید با -l یا -m مشخص شود.

گزینه‌ها:

استفاده از متن به‌عنوان پیام commit
خواندن پیام commit از فایل
ثبت تاریخ مشخص‌شده به‌عنوان تاریخ commit
ثبت کاربر مشخص‌شده به‌عنوان commitکننده
بازبینی مورد نظر برای بررسی

گزینهٔ علامت‌گذاری‌شده با [+] می‌تواند چندین بار مشخص شود

نام‌های مستعار: close-heads

یک پرچم جدید extras را به commit اضافه می‌کند (پیشرفته)

وارد کردن بازبینی‌ها از مخازن خارجی VCS به Mercurial

تبدیل یک مخزن خارجی SCM به یک مخزن Mercurial.:

hg convert [OPTION]... SOURCE [DEST [REVMAP]]

قالب‌های مجاز مبدأ [شناسه‌ها]:

  • Mercurial [hg]
  • CVS [cvs]
  • Darcs [darcs]
  • git [git]
  • Subversion [svn]
  • Monotone [mtn]
  • GNU Arch [gnuarch]
  • Bazaar [bzr]
  • Perforce [p4]

قالب‌های مجاز مقصد [شناسه‌ها]:

  • Mercurial [hg]
  • Subversion [svn] (تاریخچه روی شاخه‌ها نگهداری نمی‌شود)

اگر هیچ بازبینی مشخص نشود، تمام بازبینی‌ها تبدیل خواهند شد. در غیر این صورت، convert تنها تا بازبینی نام‌برده‌شده (که در قالبی قابل فهم برای مبدأ ارائه شده است) را وارد می‌کند.

اگر نام دایرکتوری مقصدی مشخص نشده باشد، پیش‌فرض آن نام پایه (basename) مبدأ به‌همراه -hg افزوده به انتهای آن خواهد بود. اگر مخزن مقصد وجود نداشته باشد، ایجاد خواهد شد.

به‌طور پیش‌فرض، تمام مبدأها به‌جز Mercurial از --branchsort استفاده خواهند کرد. Mercurial از --sourcesort برای حفظ ترتیب شماره‌های بازبینی اصلی استفاده می‌کند. حالت‌های مرتب‌سازی تأثیرات زیر را دارند:

تبدیل از بازبینی والد به فرزند در صورت امکان، که به این معنی است شاخه‌ها معمولاً یکی پس از دیگری تبدیل می‌شوند. این حالت مخازن فشرده‌تری ایجاد می‌کند.
مرتب‌سازی بازبینی‌ها بر اساس تاریخ. مخازن تبدیل‌شده گزارش تغییرات (changelog) خوش‌نماتری دارند، اما اغلب به‌میزان قابل‌توجهی (یک مرتبه بزرگی) بزرگ‌تر از نمونه‌های ایجادشده با --branchsort هستند.
تلاش برای حفظ ترتیب بازبینی‌های مبدأ، تنها توسط مبدأهای Mercurial پشتیبانی می‌شود.
تلاش برای انتقال بازبینی‌های بسته‌شده به نزدیک‌ترین حالت ممکن به شاخه‌های والد، تنها توسط مبدأهای Mercurial پشتیبانی می‌شود.

اگر REVMAP مشخص نشود، در یک مکان پیش‌فرض قرار می‌گیرد (به‌طور پیش‌فرض <dest>/.hg/shamap). مورد REVMAP یک فایل متنی ساده است که شناسه کامیت هر مبدأ را به شناسه مقصد برای آن بازبینی نگاشت می‌کند، به این صورت:

<source ID> <destination ID>

اگر فایل وجود نداشته باشد، به‌طور خودکار ایجاد می‌شود. این فایل با رونوشت‌برداری از هر کامیت به‌روزرسانی می‌شود، بنابراین می‌توان اجرای hg convert را متوقف کرد و برای رونوشت‌برداری از کامیت‌های جدید، آن را به‌طور مکرر اجرا نمود.

فایل authormap یک فایل متنی ساده است که پدیدآورنده هر کامیتِ مبدأ را به پدیدآورنده کامیتِ مقصد نگاشت می‌کند. این فایل برای SCMهای مبدأ که از نام‌های کاربری یونیکس برای شناسایی پدیدآورندگان استفاده می‌کنند (مانند CVS) مفید است. در هر خط یک نگاشت پدیدآورنده قرار می‌گیرد و قالب خط به‌صورت زیر است:

source author = destination author

خط‌های خالی و خط‌هایی که با # آغاز می‌شوند نادیده گرفته می‌شوند.

فایل filemap فایلی است که امکان پالایش و نگاشت دوباره فایل‌ها و دایرکتوری‌ها را فراهم می‌کند. هر خط می‌تواند حاوی یکی از دستورالعمل‌های زیر باشد:

include path/to/file-or-dir
exclude path/to/file-or-dir
rename path/to/source path/to/destination

خط‌های توضیح با # شروع می‌شوند. یک مسیر مشخص‌شده زمانی مطابقت دارد که برابر با نام نسبی کامل یک فایل یا یکی از دایرکتوری‌های والد آن باشد. دستورالعمل include یا exclude با طولانی‌ترین مسیر منطبق اعمال می‌شود، بنابراین ترتیب خط‌ها اهمیتی ندارد.

دستورالعمل include باعث می‌شود یک فایل، یا تمام فایل‌های زیر یک دایرکتوری، در مخزن مقصد گنجانده شوند. در صورتی که هیچ عبارت include وجود نداشته باشد، پیش‌فرض گنجاندن همه‌چیز است. اگر عبارتی از نوع include وجود داشته باشد، هیچ چیز دیگری گنجانده نمی‌شود. دستورالعمل exclude باعث حذف فایل‌ها یا دایرکتوری‌ها می‌شود. دستورالعمل rename در صورت تبدیل یک فایل یا دایرکتوری، نام آن را تغییر می‌دهد. برای تغییر نام از یک زیردایرکتوری به ریشه مخزن، از . به‌عنوان مسیر مقصد استفاده کنید.

گزینه --full تضمین می‌کند که مجموعه‌تغییرهای تبدیل‌شده دقیقاً حاوی فایل‌های درست با محتوای درست باشند. این گزینه تبدیل کاملی از تمام فایل‌ها انجام می‌دهد، نه فقط مواردی که تغییر یافته‌اند. فایل‌هایی که از قبل درست هستند، تغییر نخواهند کرد. از این قابلیت می‌توان برای اعمال تغییرات filemap هنگام تبدیل افزایشی استفاده کرد. این گزینه در حال حاضر تنها برای Mercurial و Subversion پشتیبانی می‌شود.

فایل splicemap فایلی است که اجازه درج تاریخچه ساختگی را می‌دهد و به شما امکان می‌دهد والدین یک بازبینی را مشخص کنید. این قابلیت زمانی مفید است که برای نمونه بخواهید به یک ادغام Subversion دو والد بدهید، یا دو تاریخچه ناپیوسته را به یکدیگر پیوند بزنید (graft). هر ورودی شامل یک کلید (key) است که پس از آن یک فاصله و سپس یک یا دو مقدار جداشده با ویرگول می‌آید:

key parent1, parent2

کلید، همان شناسه بازبینی در سامانه کنترل نسخه مبدأ است که والدین آن باید اصلاح شوند (همان قالب کلید در .hg/shamap). مقادیر، شناسه‌های بازبینی (در هر یک از سامانه‌های کنترل نسخه مبدأ یا مقصد) هستند که باید به‌عنوان والدین جدید آن گره استفاده شوند. برای نمونه، اگر "release-1.0" را در "trunk" ادغام کرده‌اید، باید بازبینی موجود در "trunk" را به‌عنوان والد اول و بازبینی روی شاخه "release-1.0" را به‌عنوان والد دوم مشخص کنید..sp فایل branchmap به شما امکان می‌دهد هنگام وارد کردن یک شاخه از هر مخزن خارجی، نام آن را تغییر دهید. هنگامی که این فایل همراه با یک splicemap استفاده شود، ترکیبی قدرتمند برای اصلاح حتی بدترین مخازن با مدیریت نامناسب و تبدیل آن‌ها به مخازن خوش‌ساختار Mercurial فراهم می‌آورد. فایل branchmap شامل خطوطی با این فرمت است:

original_branch_name new_branch_name

که در آن “original_branch_name” نام شاخه در مخزن مبدأ، و “new_branch_name” نام شاخه در مخزن مقصد است. هیچ فاصله و نویسهٔ خالی (whitespace) در نام شاخهٔ جدید مجاز نیست. این قابلیت می‌تواند (برای نمونه) برای انتقال کد در یک مخزن از “default” به یک شاخهٔ نام‌گذاری‌شده استفاده شود.

مبدأ Mercurial گزینه‌های پیکربندی زیر را شناسایی می‌کند که می‌توانید آن‌ها را از طریق خط فرمان با --config تنظیم کنید:

نادیده گرفتن خطاهای یکپارچگی (integrity) هنگام خواندن. از این گزینه برای اصلاح مخازن Mercurial دارای revlogهای گم‌شده، از طریق تبدیل از و به Mercurial استفاده کنید. پیش‌فرض False است.
ذخیرهٔ شناسهٔ بازبینی (revision ID) اصلی در changeset (شناسه‌های مقصد را مجبور به تغییر می‌کند). این گزینه یک آرگومان بولی می‌پذیرد و پیش‌فرض آن False است.
مشخص کردن بازبینی اولیهٔ Mercurial. پیش‌فرض 0 است.
مجموعهٔ بازبینی (revset) مشخص‌کنندهٔ بازبینی‌های مبدأ برای تبدیل.

گزینه‌های زیر را می‌توان با --config استفاده کرد:

مشخص می‌کند که آیا شناسه کامیت اصلی Bazaar در متاداده‌های کامیت مقصد ذخیره شود یا خیر. پیش‌فرض True است.

مبدأ CVS از یک محیط کاری یا سندباکس (یعنی یک رونوشت دریافت‌شده یا checked-out) از CVS برای تعیین نقطهٔ شروع آنچه که تبدیل خواهد شد، استفاده می‌کند. دسترسی مستقیم به فایل‌های مخزن لازم نیست، مگر اینکه مخزن به صورت :local: باشد. فرایند تبدیل از دایرکتوری سطح بالایی در سندباکس برای یافتن مخزن CVS استفاده کرده و سپس از دستورهای CVS rlog برای یافتن فایل‌های قابل تبدیل بهره می‌برد. این بدان معناست که مگر در صورت ارائهٔ یک filemap، تمام فایل‌های زیر دایرکتوری شروع تبدیل خواهند شد، و هرگونه سازمان‌دهی مجدد دایرکتوری‌ها در سندباکس CVS نادیده گرفته می‌شود.

گزینه‌های زیر را می‌توان با --config استفاده کرد:

برای غیرفعال کردن ذخیرهٔ لاگ راه دور در حافظهٔ موقت (caching)، به منظور آزمایش و اشکال‌زدایی، روی False تنظیم کنید. پیش‌فرض True است.
مشخص کردن حداکثر زمان مجاز (به ثانیه) بین کامیت‌هایی با کاربر و پیام لاگ یکسان در یک changeset منفرد. زمانی که فایل‌های بسیار بزرگی به عنوان بخشی از یک changeset ثبت شده باشند، ممکن است مقدار پیش‌فرض به اندازهٔ کافی طولانی نباشد. پیش‌فرض 60 است.
نام کدگذاری مورد استفاده برای تبدیل کدگذاری (transcoding) پیام‌های لاگ CVS را مشخص می‌کند. می‌توان چندین نام کدگذاری را به عنوان یک فهرست مشخص کرد (ببینید hg help config.Syntax)، اما به ازای هر مدخل لاگ CVS تنها اولین کدگذاری قابل‌قبول در فهرست استفاده می‌شود. این تبدیل کدگذاری پیش از قلاب cvslog که در زیر آمده اجرا می‌گردد.
یک عبارت باقاعده (regular expression) را مشخص می‌کند که پیام‌های لاگ کامیت با آن تطبیق داده می‌شوند. در صورت تطابق، فرایند تبدیل یک بازبینی ساختگی درج می‌کند که شاخه‌ای را که این پیام لاگ در آن رخ می‌دهد با شاخهٔ مشخص‌شده در عبارت باقاعده ادغام می‌نماید. پیش‌فرض {{mergetobranch ([-\w]+)}} است.
یک عبارت باقاعده (regular expression) را مشخص می‌کند که پیام‌های لاگ کامیت با آن تطبیق داده می‌شوند. در صورت تطابق، فرایند تبدیل تازه‌ترین بازبینی روی شاخهٔ مشخص‌شده در عبارت باقاعده را به عنوان والد دوم changeset اضافه می‌کند. پیش‌فرض {{mergefrombranch ([-\w]+)}} است.
استفاده از زمان محلی (به صورتی که توسط متغیر محیطی TZ تعیین می‌شود) برای تاریخ/زمان changeset. پیش‌فرض False است (استفاده از UTC).
مشخص کردن یک تابع Python که در انتهای جمع‌آوری لاگ CVS فراخوانی شود. فهرستی از مدخل‌های لاگ به تابع ارسال می‌شود، و تابع می‌تواند مدخل‌ها را درجا (in-place) تغییر دهد، یا به آن‌ها اضافه یا از آن‌ها حذف کند.
مشخص کردن یک تابع Python که پس از محاسبهٔ changesetها از روی لاگ CVS فراخوانی شود. فهرستی از مدخل‌های changeset به تابع ارسال می‌شود، و تابع می‌تواند changesetها را درجا (in-place) تغییر دهد، یا به آن‌ها اضافه یا از آن‌ها حذف کند.

یک دستور اضافی به نام “debugcvsps” در Mercurial امکان اجرای کد ادغام changeset داخلی را بدون انجام تبدیل فراهم می‌آورد. پارامترها و خروجی آن مشابه دستور cvsps 2.1 است. لطفاً برای جزئیات بیشتر به راهنمای این دستور مراجعه کنید..SS منبع Subversion

منبع Subversion ساختارهای سنتی trunk/branches/tags را شناسایی می‌کند. به‌طور پیش‌فرض، نشانی URL منبع ارائه‌شدهٔ svn://repo/path/ به‌عنوان یک شاخهٔ منفرد تبدیل می‌شود. اگر svn://repo/path/trunk وجود داشته باشد، جایگزین شاخهٔ پیش‌فرض می‌شود. اگر svn://repo/path/branches وجود داشته باشد، زیردایرکتوری‌های آن به‌عنوان شاخه‌های احتمالی فهرست می‌شوند. اگر svn://repo/path/tags وجود داشته باشد، برای برچسب‌هایی که به شاخه‌های تبدیل‌شده ارجاع می‌دهند، جست‌وجو می‌شود. مقادیر پیش‌فرض trunk، branches و tags را می‌توان با گزینه‌های زیر بازنویسی کرد. آن‌ها را روی مسیرهای نسبی نسبت به نشانی URL منبع تنظیم کنید، یا برای غیرفعال کردن تشخیص خودکار، آن‌ها را خالی بگذارید.

گزینه‌های زیر را می‌توان با --config تنظیم کرد:

مشخص کردن دایرکتوری حاوی شاخه‌ها. پیش‌فرض branches است.
مشخص کردن دایرکتوری حاوی برچسب‌ها. پیش‌فرض tags است.
مشخص کردن نام شاخهٔ اصلی (trunk). پیش‌فرض trunk است.
استفاده از زمان محلی (همان‌طور که توسط متغیر محیطی TZ مشخص شده است) برای تاریخ/زمان مجموعه‌تغییرها (changeset). پیش‌فرض False است (استفاده از UTC).

تاریخچهٔ منبع می‌تواند به‌جای اینکه به‌طور کامل تبدیل شود، از یک بازبینی (revision) مشخص شروع و دریافت گردد. فقط تبدیل‌های تک‌شاخه پشتیبانی می‌شوند.

مشخص کردن شمارهٔ بازبینی آغازین Subversion. پیش‌فرض 0 است.

واردکنندهٔ Git کامیت‌ها را از تمام شاخه‌های دردسترس (ارجاعات در refs/heads) و مخازن دوردست (ارجاعات در refs/remotes) به Mercurial تبدیل می‌کند. شاخه‌ها با حذف پیشوند 'refs/heads' به بوک‌مارک‌هایی (bookmarks) با همان نام تبدیل می‌شوند. زیرماژول‌های (submodules) گیت به مخازن فرعی (subrepos) گیت در Mercurial تبدیل می‌شوند.

گزینه‌های زیر را می‌توان با --config تنظیم کرد:

مشخص می‌کند که فایل‌های تغییریافته در یک کامیت چقدر باید شبیه باشند تا به‌عنوان تغییرنام یا رونوشت وارد شوند، به‌صورت درصدی بین 0 (غیرفعال) و 100 (فایل‌ها باید یکسان باشند). برای مثال، 90 بدین معناست که یک جفت حذف/افزودن درصورتی‌که بیش از ۹۰٪ فایل تغییر نکرده باشد، به‌عنوان تغییرنام در نظر گرفته خواهد شد. پیش‌فرض 50 است.
هنگام تشخیص رونوشت‌ها، به‌جای بررسی فقط فایل‌های تغییریافته، تمام فایل‌های موجود در رونوشت کاری (working copy) را بررسی می‌کند. این کار برای پروژه‌های بزرگ بسیار سنگین است و تنها زمانی کارآمد خواهد بود که convert.git.similarity بزرگ‌تر از 0 باشد. پیش‌فرض False است.
تشخیص تغییرنام و رونوشت را تا این تعداد فایل تغییریافته در یک کامیت انجام می‌دهد. افزایش این مقدار تشخیص تغییرنام و رونوشت را دقیق‌تر می‌کند اما محاسبات را در پروژه‌های بزرگ به‌شدت کُند خواهد کرد. این گزینه تنها زمانی کارآمد است که convert.git.similarity بزرگ‌تر از 0 باشد. پیش‌فرض 400 است.
فهرست اقداماتی که هنگام پردازش مقادیر پدیدآورنده (author) و ثبت‌کننده (committer) باید انجام شود.

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

مقدار messagedifferent درصورتی‌که ثبت‌کنندهٔ Git با پدیدآورنده متفاوت باشد، یک خط committer: ... را به پیام کامیت الحاق می‌کند. پیشوند آن خط را می‌توان با استفاده از نحو messagedifferent=<prefix> مشخص کرد؛ مانند messagedifferent=git-committer:. هنگامی که یک پیشوند مشخص شده باشد، همیشه یک فاصله بین پیشوند و مقدار درج خواهد شد.

messagealways مانند messagedifferent عمل می‌کند، با این تفاوت که همیشه منجر به الحاق یک خط committer: ... به پیام کامیت می‌شود. این مقدار مانعة‌الجمع با messagedifferent است.

dropcommitter ارجاعات به ثبت‌کننده را حذف خواهد کرد. فقط ارجاعات به پدیدآورنده باقی خواهند ماند. اقداماتی که ارجاعاتی به ثبت‌کننده اضافه می‌کنند، با فعال بودن این گزینه بی‌اثر خواهند بود.

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

پیش‌فرض messagedifferent است.

فهرست کلیدهای اضافی از فراداده‌های کامیت برای رونوشت در مقصد. برخی از مخازن Git فراداده‌های اضافی را در کامیت‌ها ذخیره می‌کنند. به‌طور پیش‌فرض، این فراداده‌های غیرپیش‌فرض در طول تبدیل از دست خواهند رفت. تنظیم این گزینهٔ پیکربندی می‌تواند این فراداده‌ها را حفظ کند. برخی از کلیدهای توکار مانند parent و branch مجاز به رونوشت شدن نیستند.
ارجاعات دوردست (remote refs) به‌عنوان بوک‌مارک‌هایی با convert.git.remoteprefix به‌عنوان پیشوند و به‌دنبال آن یک / تبدیل می‌شوند. پیش‌فرض 'remote' است.
اینکه آیا شناسهٔ کامیت اصلی Git در فراداده‌های کامیت مقصد ذخیره شود یا خیر. پیش‌فرض True است.
فایل‌های .gitmodules در سطح ریشه یا فایل‌های با حالت 160000 را که نشان‌دهندهٔ یک زیرماژول است، تبدیل نمی‌کند. پیش‌فرض False است.

واردکنندهٔ Perforce (P4) می‌تواند یک مسیر depot در p4 یا مشخصات یک کلاینت (client specification) را به عنوان مبدأ دریافت کند. این ابزار تمام فایل‌های موجود در مبدأ را به یک مخزن مسطح (flat) مرکوریال تبدیل می‌کند و برچسب‌ها (labels)، شاخه‌ها (branches) و یکپارچه‌سازی‌ها (integrations) را نادیده می‌گیرد. توجه داشته باشید هنگامی که یک مسیر depot داده می‌شود، معمولاً باید یک دایرکتوری مقصد مشخص کنید، زیرا در غیر این صورت ممکن است نام مقصد به صورت ...-hg تعیین شود.

گزینه‌های زیر را می‌توان با --config تنظیم کرد:

کدگذاری مورد استفاده هنگام رمزگشایی خروجی استاندارد ابزار خط فرمان Perforce را مشخص می‌کند. پیش‌فرض، کدگذاری پیش‌فرض سیستم است.
نسخهٔ (revision) اولیهٔ Perforce را مشخص می‌کند (شمارهٔ changelist در Perforce).

مقصد Mercurial زیرمخزن‌های مرکوریال را در دایرکتوری مقصد تشخیص داده و در صورتی که زیرمخزن‌های مقصد حاوی فایل <dest>/<sub>/.hg/shamap باشند، فایل .hgsubstate را به‌طور خودکار به‌روزرسانی می‌کند. تبدیل یک مخزن دارای زیرمخزن، مستلزم تبدیل یک مخزن در هر نوبت و از پایین به بالا است.

مثالی که نحوهٔ تبدیل یک مخزن با زیرمخزن‌ها را نشان می‌دهد:

# تا convert هنگام مواجهه با یک مقصد غیرخالی نوع را تشخیص دهد
$ hg init converted
$ hg convert orig/sub1 converted/sub1
$ hg convert orig/sub2 converted/sub2
$ hg convert orig converted

گزینه‌های زیر پشتیبانی می‌شوند:

شاخه‌های مبدأ را در کلون‌های جداگانه توزیع می‌کند. پیش‌فرض False است.
نام شاخه برای نسخه‌های تگ، که پیش‌فرض آن default است.
نام شاخه‌ها را حفظ می‌کند. پیش‌فرض True است.
رشتهٔ داده‌شده را به عنوان مقدار اضافی 'convert_source' در هر کامیت ایجاد شده در مخزن مقصد ثبت می‌کند. پیش‌فرض None است.
فقط با مبدأهای mercurial کار می‌کند. باعث می‌شود convert از بهبود کارایی در فهرست فایل‌های تغییریافته در کامیت‌ها جلوگیری کند، در صورتی که چنین بهبودی باعث تغییر هش (hash) یک کامیت شود. پیش‌فرض False است.

تمام انواع مقصد گزینه‌های زیر را می‌پذیرند:

تگ‌ها را از مخزن مبدأ به مخزن مقصد تبدیل نمی‌کند. پیش‌فرض False است.

تاریخ‌های کامیت اصلی به‌طور پیش‌فرض حفظ نمی‌شوند.

تاریخ‌های کامیت اصلی را با تنظیم اجباری مشخصه‌های بازبینی svn:date حفظ می‌کند. این گزینه خطرناک (DANGEROUS) است و ممکن است برخی از عملکردهای subversion را برای مخزن حاصل مختل کند (مانند پالایش بازبینی‌ها با محدوده‌های زمانی در svn log)، زیرا هیچ تضمینی وجود ندارد که تاریخ‌های کامیت اصلی به‌صورت اکیداً صعودی باشند.

برای کارکرد تنظیم تاریخ‌های کامیت، مخزن مقصد باید دارای قلاب pre-revprop-change پیکربندی‌شده باشد تا اجازهٔ تنظیم مشخصه‌های بازبینی svn:date را بدهد. برای جزئیات بیشتر به مستندات Subversion مراجعه کنید.

گزینه‌ها:

نام فایل نگاشت نام‌های کاربری (منسوخ‌شده) (به‌جای آن از --authormap استفاده کنید)
نوع مخزن مبدأ
نوع مخزن مقصد
وارد کردن تا بازبینی مبدأ REV
نگاشت مجدد نام‌های کاربری با استفاده از این فایل
نگاشت مجدد نام فایل‌ها با استفاده از محتویات فایل
اعمال تغییرات filemap با تبدیل مجدد همهٔ فایل‌ها
پیوند زدن تاریخچهٔ ساخته‌شده در جای خود
تغییر نام شاخه‌ها هنگام تبدیل
تلاش برای مرتب‌سازی مجموعه‌تغییرها بر اساس شاخه‌ها
تلاش برای مرتب‌سازی مجموعه‌تغییرها بر اساس تاریخ
حفظ ترتیب مجموعه‌تغییرهای مبدأ
تلاش برای بازآرایی بازبینی‌های بسته‌شده

گزینهٔ علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد

مدیریت خودکار خط‌های جدید در فایل‌های مخزن

این افزونه به شما امکان می‌دهد نوع پایان خط‌ها (CRLF یا LF) مورد استفاده در مخزن و پوشهٔ کاری محلی را مدیریت کنید. از این طریق می‌توانید پایان خط‌های CRLF را در Windows و LF را در Unix/Mac داشته باشید، و به این ترتیب به همه اجازه دهید از پایان خط‌های بومی سیستم‌عامل خود استفاده کنند.

این افزونه پیکربندی خود را از یک فایل پیکربندی نسخه‌بندی‌شدهٔ .hgeol واقع در ریشهٔ پوشهٔ کاری می‌خواند. فایل .hgeol از همان نحو دیگر فایل‌های پیکربندی Mercurial استفاده می‌کند. این فایل دارای دو بخش [patterns] و [repository] است.

بخش [patterns] مشخص می‌کند که پایان خط‌ها چگونه باید بین پوشهٔ کاری و مخزن تبدیل شوند. قالب توسط یک الگوی فایل مشخص می‌شود. نخستین تطابق استفاده می‌شود، بنابراین الگوهای خاص‌تر را در ابتدا قرار دهید. پایان خط‌های موجود عبارتند از LF، CRLF و BIN.

فایل‌هایی با قالب اعلام‌شدهٔ CRLF یا LF همواره با همان قالب واکشی (checkout) و در مخزن ذخیره می‌شوند، و فایل‌هایی که دودویی (BIN) اعلام شده‌اند بدون تغییر باقی می‌مانند. افزون بر این، native نامی مستعار برای واکشی با پایان خط پیش‌فرض پلتفرم است: LF در Unix (شامل Mac OS X) و CRLF در Windows. توجه داشته باشید که BIN (عدم تغییر در پایان خط‌ها) رفتار پیش‌فرض Mercurial است؛ این مقدار تنها در صورتی نیاز است که بخواهید یک الگوی عمومی‌تر بعدی را بازنویسی کنید.

بخش اختیاری [repository] پایان خط‌های مورد استفاده برای فایل‌های ذخیره‌شده در مخزن را مشخص می‌کند. این بخش یک تنظیم منفرد دارد، native، که پایان خط ذخیره‌سازی را برای فایل‌هایی که در بخش [patterns] به‌صورت native اعلام شده‌اند، تعیین می‌کند. این تنظیم می‌تواند روی LF یا CRLF تنظیم شود. مقدار پیش‌فرض LF است. برای نمونه، این بدان معناست که در Windows، فایل‌هایی که به‌عنوان native پیکربندی شده‌اند (به‌طور پیش‌فرض CRLF) هنگام ذخیره در مخزن به LF تبدیل خواهند شد. فایل‌هایی که در بخش [patterns] به‌صورت LF، CRLF یا BIN اعلام شده‌اند، همواره همان‌گونه که هستند در مخزن ذخیره می‌شوند.

نمونه فایل نسخه‌بندی‌شدهٔ .hgeol:

[patterns]
**.py = native
**.vcproj = CRLF
**.txt = native
Makefile = LF
**.jpg = BIN
[repository]
native = LF
نکته
قوانین نخستین بار زمانی اعمال می‌شوند که فایل‌ها در پوشهٔ کاری دست‌کاری (touch) شوند، برای نمونه با به‌روزرسانی به null و بازگشت به tip جهت دست‌کاری تمام فایل‌ها.

این افزونه از یک بخش اختیاری [eol] استفاده می‌کند که هم از فایل‌های پیکربندی معمول Mercurial و هم از فایل .hgeol خوانده می‌شود، که دومی اولویت بالاتری نسبت به اولی دارد. می‌توانید از این بخش برای واپایش رفتار کلی استفاده کنید. سه تنظیم وجود دارد:

  • eol.native (پیش‌فرض os.linesep) را می‌توان روی LF یا CRLF تنظیم کرد تا تفسیر پیش‌فرض native برای واکشی بازنویسی شود. این می‌تواند مثلاً با hg archive در Unix استفاده شود تا بایگانی‌ای ایجاد شود که در آن فایل‌ها پایان خط‌های مخصوص Windows داشته باشند.
  • eol.only-consistent (پیش‌فرض True) را می‌توان روی False تنظیم کرد تا افزونه فایل‌های با EOLهای ناهمخوان را تبدیل کند. ناهمخوان به این معنی است که هر دو پایان خط CRLF و LF در فایل وجود دارند. با چنین فایل‌هایی معمولاً با این فرض که پایان خط‌های ترکیبی عمدی هستند دست‌کاری صورت نمی‌گیرد.
  • eol.fix-trailing-newline (پیش‌فرض False) را می‌توان روی True تنظیم کرد تا اطمینان حاصل شود که فایل‌های تبدیل‌شده با یک نویسهٔ EOL پایان می‌یابند (بسته به الگوهای پیکربندی‌شده یا \n یا \r\n).

این افزونه پالایه‌های cleverencode: و cleverdecode: را درست همانند افزونهٔ منسوخ‌شدهٔ win32text ارائه می‌دهد. این بدان معناست که می‌توانید win32text را غیرفعال و eol را فعال کنید و پالایه‌های شما همچنان کار خواهند کرد. تنها تا زمانی که یک فایل .hgeol آماده کنید به این پالایه‌ها نیاز خواهید داشت.

قلاب‌های win32text.forbid* ارائه‌شده توسط افزونهٔ win32text در یک قلاب منفرد به نام eol.checkheadshook تجمیع شده‌اند. این قلاب پایان خط‌های مورد انتظار را از فایل .hgeol جستجو می‌کند، بدین معنا که قبل از استفاده از قلاب ابتدا باید به یک فایل .hgeol مهاجرت کنید. eol.checkheadshook فقط headها را بررسی می‌کند؛ بازبینی‌های نامعتبر میانی ارسال (push) خواهند شد. برای منع کامل آن‌ها، از قلاب eol.checkallhook استفاده کنید. بهتر است از این قلاب‌ها به‌عنوان قلاب‌های pretxnchangegroup استفاده شود.

برای اطلاعات بیشتر در مورد الگوهای glob استفاده‌شده، hg help patterns را ببینید..SS extdiff

دستوری برای مقایسه نسخه‌ها با استفاده از برنامه‌های خارجی

افزونه‌ی extdiff در Mercurial به شما امکان می‌دهد از برنامه‌های خارجی برای مقایسه‌ی نسخه‌ها، یا مقایسه‌ی یک نسخه با دایرکتوری کاری استفاده کنید. برنامه‌های diff خارجی با مجموعه‌ای قابل‌پیکربندی از گزینه‌ها و دو آرگومان غیرگزینه‌ای فراخوانی می‌شوند: مسیرهایی به دایرکتوری‌های حاوی تصویر لحظه‌ای (snapshot) از فایل‌ها برای مقایسه.

اگر بیش از یک فایل در حال مقایسه باشد و نسخه «فرزند» (child) همان دایرکتوری کاری باشد، هر تغییری که در برنامه diff خارجی ایجاد شود، از دایرکتوری موقت به دایرکتوری کاری بازگردانده (کپی) خواهد شد.

افزونه‌ی extdiff همچنین به شما اجازه می‌دهد دستورهای diff جدیدی را پیکربندی کنید، تا نیازی نباشد همواره hg extdiff -p kdiff3 را تایپ کنید.

[extdiff]
# افزودن دستور جدید که GNU diff(1) را در حالت 'context diff' اجرا می‌کند
cdiff = gdiff -Nprc5
## یا روش قدیمی:
#cmd.cdiff = gdiff
#opts.cdiff = -Nprc5
# افزودن دستور جدیدی به نام meld، که meld را اجرا می‌کند (نیازی به ذکر دو باره نیست). اگر
# فایل اجرایی meld در دسترس نباشد، از ابزار meld در [merge-tools]
# در صورت موجود بودن استفاده خواهد شد
meld =
# افزودن دستور جدیدی به نام vimdiff، که gvimdiff را همراه با افزونه DirDiff اجرا می‌کند
# (ببینید: http://www.vim.org/scripts/script.php?script_id=102). کاربران غیر
# انگلیسی‌زبان، حتماً عبارت "let g:DirDiffDynamicDiffText = 1" را در فایل
# .vimrc خود قرار دهید
vimdiff = gvim -f "+next" \
          "+execute 'DirDiff' fnameescape(argv(0)) fnameescape(argv(1))"

آرگومان‌های ابزار می‌توانند شامل متغیرهایی باشند که در زمان اجرا بسط می‌یابند:

$parent1, $plabel1 - نام فایل، برچسب توصیفی والد نخست
$child,   $clabel  - نام فایل، برچسب توصیفی نسخه فرزند
$parent2, $plabel2 - نام فایل، برچسب توصیفی والد دوم
$root              - ریشه مخزن
$parent نام مستعاری برای $parent1 است.

هنگامی که هیچ آرگومانی در [extdiff] مشخص نشده باشد، افزونه‌ی extdiff بخش‌های [diff-tools] و [merge-tools] شما را برای یافتن آرگومان‌های ابزار diff بررسی خواهد کرد.

[extdiff]
kdiff3 =
[diff-tools]
kdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child

اگر برنامه‌ای دارای یک رابط کاربری گرافیکی باشد، اطلاع دادن آن به Mercurial می‌تواند سودمند باشد. این کار از اجرای اشتباه برنامه در یک محیط صرفاً متنی ترمینال (مانند یک نشست ترمینال SSH) جلوگیری می‌کند، و موجب می‌شود hg extdiff --per-file به جای باز کردن تفاوت فایل‌ها به صورت یکی‌یکی، تفاوت چندین فایل را هم‌زمان باز کند (اگر همچنان می‌خواهید تفاوت فایل‌ها را تک‌تک باز کنید، می‌توانید از گزینه --confirm استفاده کنید).

اعلام این که یک ابزار دارای رابط گرافیکی است، با قرار دادن پرچم gui در کنار محل تعیین diffargs امکان‌پذیر است:

[diff-tools]
kdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child
kdiff3.gui = true

شما می‌توانید مانند دستور معمول hg diff از گزینه‌های -I/-X و فهرستی از نام‌های فایل یا دایرکتوری استفاده کنید. افزونه‌ی extdiff فقط از فایل‌های مورد نیاز تصویر لحظه‌ای می‌گیرد، بنابراین اجرای برنامه diff خارجی در عمل بسیار سریع خواهد بود (دست‌کم سریع‌تر از مقایسه‌ی کل درخت)..SS دستورها

استفاده از برنامه‌ای بیرونی برای مقایسهٔ مخزن (یا فایل‌های انتخاب‌شده):

hg extdiff [OPT]... [FILE]...

نمایش تفاوت‌های بین بازبینی‌ها برای فایل‌های مشخص‌شده، با استفاده از یک برنامهٔ بیرونی. برنامهٔ پیش‌فرض مورد استفاده diff با گزینه‌های پیش‌فرض «-Npru» است.

برای انتخاب برنامه‌ای دیگر، از گزینهٔ -p/--program استفاده کنید. نام دو دایرکتوری برای مقایسه به این برنامه ارسال خواهد شد، مگر اینکه گزینهٔ --per-file مشخص شده باشد (پایین را ببینید). برای ارسال گزینه‌های اضافی به برنامه، از -o/--option استفاده کنید. این گزینه‌ها پیش از نام دایرکتوری‌ها یا فایل‌های مورد مقایسه فرستاده خواهند شد.

گزینه‌های --from، --to و --change به همان شیوه‌ای کار می‌کنند که در hg diff عمل می‌کنند.

گزینهٔ --per-file برنامهٔ بیرونی را به‌جای یک بار روی دو دایرکتوری، به‌صورت مکرر روی تک‌تک فایل‌ها برای مقایسه اجرا می‌کند. به‌طور پیش‌فرض، این کار یکی‌یکی انجام می‌شود، به‌طوری که مقایسهٔ فایل بعدی در برنامهٔ بیرونی تنها زمانی باز می‌شود که برنامهٔ بیرونی قبلی (برای مقایسهٔ فایل قبلی) بسته شده باشد. اگر برنامهٔ بیرونی رابط گرافیکی داشته باشد، می‌تواند همهٔ مقایسه‌های فایل را به‌جای یکی پس از دیگری، هم‌زمان باز کند. برای کسب اطلاعات دربارهٔ چگونگی اعلام داشتن رابط گرافیکی به Mercurial، دستور hg help -e extdiff را ببینید.

گزینهٔ --confirm پیش از هر بار فراخوانی برنامهٔ بیرونی از کاربر تایید می‌گیرد. اگر --per-file مشخص نشده باشد، این گزینه نادیده گرفته می‌شود.

گزینه‌ها:

برنامهٔ مقایسه برای اجرا
ارسال گزینه به برنامهٔ مقایسه
بازبینی (منسوخ‌شده)
بازبینی مبدا برای مقایسه
بازبینی مقصد برای مقایسه
تغییر ایجادشده توسط بازبینی
مقایسهٔ هر فایل به‌جای تصویر لحظه‌ای بازبینی‌ها
درخواست تایید از کاربر پیش از هر فراخوانی برنامهٔ بیرونی
مقایسهٔ وصله‌ها برای دو بازبینی
شامل‌کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی‌کردن نام‌های منطبق با الگوهای داده‌شده
پیمایش بازگشتی در زیرمخزن‌ها

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SS factotum

احراز هویت HTTP با factotum

این افزونه به ابزار factotum(4) در پلتفرم‌های Plan 9 from Bell Labs اجازه می‌دهد تا اطلاعات احراز هویت را برای دسترسی HTTP فراهم کند. مدخل‌های پیکربندی مشخص‌شده در بخش auth و همچنین اطلاعات احراز هویت ارائه‌شده در URL مخزن کاملاً پشتیبانی می‌شوند. اگر هیچ پیشوندی مشخص نشده باشد، مقدار "*" در نظر گرفته خواهد شد.

به‌طور پیش‌فرض، کلیدها به این صورت مشخص می‌شوند:

proto=pass service=hg prefix=<prefix> user=<username> !password=<password>

اگر افزونه factotum قادر به خواندن کلید لازم نباشد، کلید به‌صورت تعاملی درخواست خواهد شد.

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

[factotum]
executable = /bin/auth/factotum
mountpoint = /mnt/factotum
service = hg

مدخل executable مسیر کامل فایل باینری factotum را مشخص می‌کند. مدخل mountpoint مسیر سرویس فایل factotum را تعیین می‌نماید. در نهایت، مدخل service نام سرویس مورد استفاده هنگام خواندن کلیدها را کنترل می‌کند.

پیاده‌سازی دیگری از annotate که ممکن است سریع‌تر باشد (آزمایشی)

افزونه fastannotate دستور 'fastannotate' را فراهم می‌کند که از ساختار داده linelog به عنوان یک لایه حافظه موقت (cache) بهره می‌برد و انتظار می‌رود در صورت وجود حافظه موقت، سریع‌تر از 'annotate' اصلی باشد.

در بیشتر موارد، برای دستیابی به بیشترین کارایی، fastannotate به پیکربندی‌ای نیاز دارد که در آن mainbranch اشاره‌گری باشد که همیشه رو به جلو حرکت می‌کند.

استفاده از fastannotate همراه با linkrevcache سرعت ساخت حافظه موقت annotate را بسیار افزایش می‌دهد. پیش از "debugbuildannotatecache"، دستور "debugbuildlinkrevcache" را اجرا کنید.

[fastannotate]
# تعیین سر شاخه اصلی. linelog داخلی فقط شامل «mainbranch» خطی
# (با نادیده گرفتن p2) خواهد بود. از آنجا که linelog بدون بازسازی
# نمی‌تواند به عقب برگردد، این مقدار باید چیزی باشد که همیشه به جلو
# حرکت می‌کند؛ معمولاً «master» یا «@».
mainbranch = master
# fastannotate از حالت‌های مختلفی برای ارائه قابلیت خود پشتیبانی می‌کند.
# فهرستی از ترکیب‌ها:
# - fastannotate: ارائه قابلیت از طریق دستور "fastannotate" که همه چیز
#   را به کارآمدترین شکل مدیریت کرده و قابلیت‌های اضافه‌ای مانند
#   --deleted و غیره را ارائه می‌دهد.
# - fctx: جایگزینی پیاده‌سازی fctx.annotate. توجه:
#     a. نسبت به دستور "fastannotate" کارایی کمتری دارد
#     b. دسترسی به پیاده‌سازی قدیمی annotate (بدون اثرات جانبی
#        روی دیسک) را عملاً غیرممکن می‌سازد
#     c. مستلزم "hgweb" است.
# - hgweb: جایگزینی پیاده‌سازی annotate مربوط به hgweb. در تضاد با "fctx".
# (پیش‌فرض: fastannotate)
modes = fastannotate
# قالب پیش‌فرض هنگامی که هیچ پرچم قالبی استفاده نشده است (پیش‌فرض: number)
defaultformat = changeset, user, date
# ارائه حافظه موقت annotate از طریق wire protocol (پیش‌فرض: False)
# نکته: دایرکتوری .hg/fastannotate قابل‌حمل است - می‌توان آن را rsync کرد
server = True
# ساخت حافظه موقت annotate بر حسب تقاضا برای هر درخواست کلاینت (پیش‌فرض: True)
# غیرفعال کردن آن می‌تواند پاسخ سرور را سریع‌تر کند؛ مناسب برای زمانی که یک
# cronjob حافظه موقت را می‌سازد.
serverbuildondemand = True
# به‌روزرسانی حافظه موقت محلی annotate از راه دور بر حسب تقاضا
client = False
# مسیر مورد استفاده هنگام اتصال به سرور دوردست (پیش‌فرض: default)
remotepath = default
# حداقل طول تاریخچه یک فایل که برای واکشی linelog از سرور مورد نیاز است (پیش‌فرض: 10)
clientfetchthreshold = 10
# برای حالت "fctx"، صرف‌نظر از گزینه خط فرمان، همیشه تغییر نام‌ها دنبال شود.
# این مورد سازگاری عقبروی (BC) با دستور اصلی است اما فضای مورد نیاز برای
# حافظه موقت annotate را کاهش می‌دهد و برای راه‌اندازی کلاینت-سرور مفید است زیرا
# سرور فقط حافظه موقت annotate را با گزینه‌های پیش‌فرض (یعنی همراه با follow)
# ارائه می‌دهد. بر حالت "fastannotate" تأثیری ندارد. (پیش‌فرض: True)
forcefollow = True
# برای حالت "fctx"، فایل‌ها همیشه به عنوان فایل متنی در نظر گرفته شوند تا از بررسی
# "isbinary" صرف‌نظر شود. این کار با دستور "fastannotate" سازگار است و در صورت
# استفاده از remotefilelog می‌تواند به جلوگیری از واکشی فایل کمک کند. (پیش‌فرض: True)
forcetext = True
# برای کارایی بهتر از مخزن unfiltered استفاده شود.
unfilteredrepo = True
# فدا کردن درستی در برخی موارد نادر برای کارایی بیشتر. این مورد بر درستی
# حافظه موقت annotate در حال ساخت تأثیری ندارد. این گزینه آزمایشی
# است و ممکن است در آینده حذف شود (پیش‌فرض: False)
perfhack = True

صادر کردن مخازن به صورت جریان git fast-import

صادر کردن مخزن به صورت جریان git fast-import:

hg fastexport [OPTION]... [REV]...

این دستور به شما امکان می‌دهد یک مخزن را به عنوان یک جریان متنی خوانا برای انسان برون‌ریزی کنید. این خروجی می‌تواند از طریق لوله‌کشی (pipe) به برنامه‌های واردسازی متناظر مانند “git fast-import” هدایت شود. با استفاده از فایل‌های نشانه‌ها (marks) می‌توان برون‌ریزی‌های افزایشی (incremental dumps) ایجاد کرد.

گزینه‌ها:

بازبینی‌ها برای صادر کردن
فایل نشانه‌های قدیمی جهت خواندن
فایل نشانه‌های جدید جهت نوشتن
نگاشت مجدد نام‌های کاربری با استفاده از این فایل

[+] گزینه‌های نشانه‌گذاری‌شده را می‌توان چندین بار مشخص کرد

دریافت (pull)، به‌روزرسانی و ادغام در یک دستور (منسوخ‌شده)

دریافت تغییرات از یک مخزن دوردست، و در صورت نیاز ادغام تغییرات جدید.:

hg fetch [SOURCE]

این دستور تمام تغییرات را از مخزن موجود در مسیر یا نشانی وب (URL) مشخص‌شده یافته و آن‌ها را به مخزن محلی اضافه می‌کند.

اگر تغییرات دریافت‌شده یک سرشاخه (head) جدید اضافه کنند، آن سرشاخه به‌طور خودکار ادغام شده و نتیجه ادغام ثبت (commit) می‌شود. در غیر این صورت، دایرکتوری کاری به‌روزرسانی می‌شود تا تغییرات جدید را در بر گیرد.

هنگامی که ادغام لازم باشد، دایرکتوری کاری ابتدا با تغییرات تازه دریافت‌شده به‌روزرسانی می‌شود. سپس تغییرات محلی در تغییرات دریافت‌شده ادغام می‌گردند. برای تغییر ترتیب ادغام، از --switch-parent استفاده کنید.

برای فهرستی از قالب‌های معتبر برای -d/--date، hg help dates را ببینید.

در صورت موفقیت، مقدار 0 را برمی‌گرداند.

گزینه‌ها:

یک بازبینی مشخص که مایل به دریافت (pull) آن هستید
فراخوانی ویرایشگر متن برای پیام‌های ثبت (commit)
--force-editor
ویرایش پیام ثبت (منسوخ‌شده)
تعویض والدین (parents) هنگام ادغام
استفاده از متن به عنوان پیام ثبت
خواندن پیام ثبت از فایل
ثبت تاریخ مشخص‌شده به عنوان تاریخ ثبت (commit)
ثبت کاربر مشخص‌شده به عنوان ثبت‌کننده (committer)
مشخص کردن دستور ssh برای استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
عدم اعتبارسنجی گواهی سرور (نادیده گرفتن پیکربندی web.cacerts)

[+] گزینه‌های نشانه‌گذاری‌شده را می‌توان چندین بار مشخص کرد.SS fix

بازنویسی محتوای فایل در مجموعه‌تغییرها یا رونوشت کاری (آزمایشی)

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

ابزارهای اصلاح‌کننده در دایرکتوری ریشهٔ مخزن اجرا می‌شوند. این امر به آن‌ها اجازه می‌دهد تا فایل‌های پیکربندی را از رونوشت کاری بخوانند، یا حتی در رونوشت کاری بنویسند. رونوشت کاری برای تطابق با بازبینی در حال اصلاح به‌روزرسانی نمی‌شود. در واقع، چندین بازبینی ممکن است به صورت هم‌روند اصلاح شوند. تغییراتِ نوشته‌شده در رونوشت کاری به بازبینی در حال اصلاح افزوده (amend) نمی‌شوند؛ ابزارهای اصلاح‌کننده همواره باید محتوای نیازمند اصلاح را از stdin خوانده و محتوای اصلاح‌شدهٔ فایل را به stdout بنویسند.

در اینجا نمونه‌ای از پیکربندی آمده است که موجب می‌شود hg fix اصلاحات قالب‌بندی خودکار را روی خطوط تغییریافته در کدهای C++ اعمال کند:

[fix]
clang-format:command=clang-format --assume-filename={rootpath}
clang-format:linerange=--lines={first}:{last}
clang-format:pattern=set:**.cpp or **.hpp

زیرگزینهٔ :command بخش نخست دستور شل را که برای اصلاح یک فایل استفاده خواهد شد تشکیل می‌دهد. محتوای فایل از طریق ورودی استاندارد ارسال می‌شود و محتوای اصلاح‌شدهٔ فایل در خروجی استاندارد مورد انتظار است. هرگونه خروجی در خطای استاندارد به عنوان هشدار نمایش داده خواهد شد. اگر وضعیت خروج غیرصفر باشد، فایل دست‌نخورده باقی می‌ماند. اگر وضعیت خروج غیرصفر باشد اما خروجی خطای استانداردی وجود نداشته باشد، یک هشدار جایگزین نمایش داده می‌شود. برخی از مقادیر می‌توانند در دستور جایگزین شوند:

{rootpath}  مسیر فایل در حال اصلاح، نسبت به ریشهٔ مخزن
{basename}  نام فایل در حال اصلاح، بدون مسیر دایرکتوری

اگر زیرگزینهٔ :linerange تنظیم شده باشد، ابزار تنها در صورتی اجرا خواهد شد که خطوط تغییریافته‌ای در یک فایل وجود داشته باشد. مقدار این زیرگزینه به ازای هر محدوده از خطوط تغییریافته در فایل، یک‌بار به انتهای دستور شل افزوده می‌شود. برخی از مقادیر می‌توانند در دستور جایگزین شوند:

{first}   شمارهٔ خط بر مبنای ۱ برای نخستین خط در محدودهٔ تغییریافته
{last}    شمارهٔ خط بر مبنای ۱ برای آخرین خط در محدودهٔ تغییریافته

بخش‌های حذف‌شده از یک فایل توسط :linerange نادیده گرفته می‌شوند، زیرا هیچ محدودهٔ خط متناظری در نسخه‌ای که در حال اصلاح است وجود ندارد.

به‌طور پیش‌فرض، ابزارهایی که :linerange را تعیین کرده‌اند تنها در صورتی اجرا می‌شوند که دست‌کم یک محدوده از خطوط تغییریافته وجود داشته باشد. این رفتار برای جلوگیری از رخدادهای ناخواسته مانند اجرای یک ابزار قالب‌بندی کد است که به طور غیرمنتظره کل فایل را بازقالب‌بندی کند. اگر چنین ابزاری نیاز به اجرا روی فایل‌های بدون تغییر داشته باشد، باید زیرگزینهٔ :skipclean را برابر با false قرار دهد.

زیرگزینهٔ :pattern مشخص می‌کند کدام فایل‌ها به هر ابزار پیکربندی‌شده فرستاده شوند. برای مقادیر ممکن، hg help patterns را ببینید. با این حال، همهٔ الگوها نسبت به ریشهٔ مخزن هستند، حتی اگر آن متن بگوید نسبت به دایرکتوری کاری جاری می‌باشند. اگر آرگومان‌های فایلی به hg fix داده شود، اشتراک این الگوها به کار گرفته می‌شود.

همچنین یک محدودیت قابل‌پیکربندی برای بیشینهٔ اندازهٔ فایلی که توسط hg fix پردازش می‌شود وجود دارد:

[fix]
maxfilesize = 2MB

در حالت عادی، اجرای ابزارهای پیکربندی‌شده پس از یک شکست (که با وضعیت خروج غیرصفر مشخص می‌شود) ادامه می‌یابد. همچنین می‌توان آن را به‌گونه‌ای پیکربندی کرد که پس از نخستین شکست متوقف (abort) شود، به طوری که اگر ابزاری با شکست مواجه شد هیچ فایلی تحت تأثیر قرار نگیرد. این توقف همچنین موجب خروج hg fix با وضعیتی غیرصفر خواهد شد:

[fix]
failure = abort

هنگامی که چندین ابزار برای تأثیرگذاری روی یک فایل پیکربندی شده باشند، آن‌ها با ترتیبی که توسط زیرگزینهٔ :priority تعیین شده است اجرا می‌شوند. زیرگزینهٔ priority برای هر ابزار یک مقدار پیش‌فرض صفر دارد. ابزارها به ترتیب اولویت نزولی اجرا می‌شوند. ترتیب اجرای ابزارهایی با اولویت یکسان نامشخص است. برای نمونه، می‌توانید از ابزارهای 'sort' و 'head' برای نگه‌داشتن تنها ۱۰ عدد کوچک‌تر در یک فایل متنی استفاده کنید و اطمینان یابید که 'sort' پیش از 'head' اجرا می‌شود:

[fix]
sort:command = sort -n
head:command = head -n 10
sort:pattern = numbers.txt
head:pattern = numbers.txt
sort:priority = 2
head:priority = 1

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

هر ابزار اصلاح‌کننده مجاز است علاوه بر محتوای اصلاح‌شدهٔ فایل، مقداری متاداده نیز برگرداند. متاداده باید پیش از محتوای فایل در stdout قرار گیرد و با یک بایت صفر از محتوای فایل جدا شود. متاداده به عنوان یک مقدار JSON تجزیه می‌شود (بنابراین باید با کدگذاری UTF-8 بوده و شامل هیچ بایت صفری نباشد). از ابزار اصلاح‌کننده انتظار می‌رود این کدگذاری متاداده را تنها در صورتی تولید کند که زیرگزینهٔ :metadata روی true تنظیم شده باشد:

[fix]
tool:command = tool --prepend-json-metadata
tool:metadata = true

مقادیر متاداده به قلاب‌ها فرستاده می‌شوند که می‌توانند برای چاپ خلاصه‌ها یا انجام کارهای دیگر پس از اصلاح به کار روند. قلاب‌های پشتیبانی‌شده عبارتند از:

"postfixfile"
  یک‌بار برای هر فایل در هر بازبینی که ابزارهای اصلاح‌کننده تغییری در محتوای فایل
  ایجاد کرده باشند اجرا می‌شود. "$HG_REV" و "$HG_PATH" را برای شناسایی فایل،
  و "$HG_METADATA" را با نگاشتی از نام‌های ابزارها به مقادیر متاداده از ابزارهای
  اصلاح‌کننده‌ای که بر فایل تأثیر گذاشته‌اند ارائه می‌دهد. ابزارهای اصلاح‌کننده‌ای
  که بر فایل تأثیر نگذاشته‌اند مقدار None دارند. تنها ابزارهای اجراشده در متاداده
  حضور دارند.
"postfix"
  یک‌بار پس از رسیدگی به تمام فایل‌ها و بازبینی‌ها اجرا می‌شود. "$HG_REPLACEMENTS"
  را همراه با اطلاعاتی دربارهٔ اینکه چه بازبینی‌هایی ایجاد و منسوخ شده‌اند ارائه
  می‌دهد. مقدار بولی "$HG_WDIRWRITTEN" را برای مشخص کردن اینکه آیا فایلی در
  رونوشت کاری به‌روزرسانی شده است یا خیر فراهم می‌کند. فهرست "$HG_METADATA" را
  برای نگاشت نام‌های ابزارهای اصلاح‌کننده به فهرستی از مقادیر متادادهٔ بازگردانده‌شده
  از اجراهایی که فایلی را تغییر داده‌اند، ارائه می‌دهد. این مقدار، همان متاداده‌هایی
  را که پیش‌تر به قلاب "postfixfile" فرستاده شده بودند تجمیع می‌کند.

می‌توانید با استفاده از پیکربندی fix.extra-bin-paths فهرستی از دایرکتوری‌ها را برای جستجوی دستور ابزار مشخص کنید..SS دستورها

بازنویسی محتوای فایل در مجموعه‌تغییرها یا دایرکتوری کاری:

hg fix [OPTION]... [FILE]...

ابزارهای پیکربندی‌شده را برای اصلاح محتوای فایل‌ها اجرا می‌کند. (برای جزئیات درباره پیکربندی ابزارها، hg help -e fix را ببینید.) تنها بر فایل‌های دارای تغییر اثر می‌گذارد، مگر آنکه آرگومان‌های فایل مشخص شده باشند. تنها بر خطوط تغییریافته فایل‌ها اثر می‌گذارد، مگر آنکه از پرچم --whole استفاده شود. برخی ابزارها ممکن است بدون توجه به --whole همواره بر کل فایل اثر بگذارند.

اگر --working-dir استفاده شود، فایل‌های دارای تغییرات ثبت‌نشده در رونوشت کاری اصلاح خواهند شد. توجه داشته باشید که هیچ پشتیبانی‌ای تهیه نمی‌شود.

اگر بازبینی‌ها با --source مشخص شوند، آن بازبینی‌ها و نوادگان آن‌ها بررسی می‌شوند و ممکن است با بازبینی‌های جدیدی که محتوای فایل اصلاح‌شده دارند جایگزین گردند. با گنجاندن خودکار نوادگان، نیازی به ادغام، پایه‌ریزی مجدد یا فرگشت نخواهد بود. اگر یکی از نیاکانِ رونوشت کاری گنجانده شده باشد، خود رونوشت کاری نیز اصلاح خواهد شد و به والد اصلاح‌شده به‌روزرسانی می‌شود.

هنگام تعیین این‌که کدام خطوط از هر فایل در هر بازبینی اصلاح شوند، کل مجموعه بازبینی‌های در حال اصلاح در نظر گرفته می‌شود تا اصلاحات اعمال‌شده در بازبینی‌های پیشین در بازبینی‌های بعدی فراموش نشوند. می‌توان از پرچم --base برای نادیده گرفتن این رفتار پیش‌فرض استفاده کرد، هرچند معمولاً انجام این کار مطلوب نیست.

گزینه‌ها:

اصلاح تمام بازبینی‌های غیرعمومی و غیرمنسوخ
بازبینی‌ها برای مقایسه (diff) در برابر آن‌ها (انتخاب خودکار را لغو می‌کند و بر هر بازبینی در حال اصلاح اعمال می‌شود)
بازبینی‌ها برای اصلاح (پیشرفته)
اصلاح بازبینی‌های مشخص‌شده و نوادگان آن‌ها
اصلاح دایرکتوری کاری
همیشه تمام خطوط یک فایل اصلاح شود

گزینه مشخص‌شده با [+] را می‌توان چندین بار مشخص کرد

عملیات وضعیت (status) سریع‌تر با پایشگر فایل Watchman (آزمایشی)

برنامه نظارت بر فایل Watchman را با Mercurial ادغام می‌کند تا نتایج وضعیت سریع‌تری تولید کند.

در یک سیستم لینوکس مشخص، برای یک مخزن واقعی با بیش از 400,000 فایل میزبانی‌شده روی ext4، دستور عادی hg status حدود 1.3 ثانیه طول می‌کشد. در همان سیستم، با fsmonitor حدود 0.3 ثانیه زمان می‌برد.

پایشگر fsmonitor نیازی به پیکربندی ندارد -- در صورت لزوم Watchman را از مخزن شما مطلع خواهد کرد. شما باید Watchman را از https://facebook.github.io/watchman نصب کرده و اطمینان حاصل کنید که در PATH شما قرار دارد.

پایشگر fsmonitor با افزونه‌های largefiles و eol ناسازگار است، و در صورت فعال بودن هر یک از آن‌ها خود را غیرفعال خواهد کرد.

گزینه‌های پیکربندی زیر وجود دارند:

[fsmonitor]
mode = {off, on, paranoid}

هنگامی که mode = off باشد، fsmonitor خود را غیرفعال خواهد کرد (مشابه حالتی که افزونه اصلاً بارگذاری نشده است). هنگامی که mode = on باشد، fsmonitor فعال خواهد بود (پیش‌فرض). هنگامی که mode = paranoid باشد، fsmonitor هم از Watchman و هم از سامانه فایل استعلام می‌گیرد و اطمینان حاصل می‌کند که نتایج همخوانی دارند.

[fsmonitor]
timeout = (float)

مقداری بر حسب ثانیه که مشخص می‌کند fsmonitor چه مدت منتظر بازگرداندن نتایج توسط Watchman بماند. مقدار پیش‌فرض 2.0 است.

[fsmonitor]
blacklistusers = (list of userids)

فهرستی از نام‌های کاربری که fsmonitor برای آن‌ها خود را به‌طور کامل غیرفعال خواهد کرد.

[fsmonitor]
walk_on_invalidate = (boolean)

این‌که آیا در زمان باطل شدن وضعیت حافظه موقت (مانند زمانی که Watchman بازراه‌اندازی شده یا قوانین .hgignore تغییر یافته‌اند)، کل مخزن توسط خودمان پیمایش شود یا خیر. پیمایش مخزن در این حالت می‌تواند منجر به رقابت بر سر I/O با Watchman شود. برای مخازن بزرگ توصیه می‌شود این مقدار روی false تنظیم شود. در صورتی که سامانه فایل بسیار سریعی دارید که می‌تواند از سربار IPC برای دریافت داده‌های نتایج کل مخزن از Watchman پیشی بگیرد، ممکن است تمایل داشته باشید این مقدار را روی true تنظیم کنید. مقدار پیش‌فرض false است.

[fsmonitor]
warn_when_unused = (boolean)

این‌که آیا در طول عملیات‌های خاصی که در آن‌ها fsmonitor برای کارایی سودمند خواهد بود اما فعال نشده است، هشداری چاپ شود یا خیر.

[fsmonitor]
warn_update_file_count = (integer)
# or when mercurial is built with rust support
warn_update_file_count_rust = (integer)

اگر warn_when_unused تنظیم شده باشد و fsmonitor فعال نباشد، در صورتی که این تعداد فایل ایجاد شود، در حین به‌روزرسانی‌های دایرکتوری کاری هشداری چاپ خواهد شد..SS git

اعطای قابلیت کار با مخازن Git به Mercurial. (آزمایشی)

این قابلیت در حال حاضر به‌شدت آزمایشی است. احتمالاً مانند رامپل‌استیلت‌اسکین فرزند ارشد شما را خواهد بلعید و غیره.

تلاش برای نگاشت دستورات git به دستورات Mercurial

تلاش می‌کند تا یک دستور داده‌شده‌ی git را به یک دستور Mercurial نگاشت کند:

$ hg githelp -- git checkout master hg update master

اگر یک دستور ناشناخته یا ترکیب پارامترهای نامعتبر شناسایی شود، خطایی ایجاد می‌شود.

معادل Mercurial دستورِ git داده‌شده را پیشنهاد می‌دهد:

hg githelp

کاربرد: hg githelp -- <git command>

نام‌های مستعار: git

دستورهایی برای امضا و بررسی صحت مجموعه‌تغییرها (changesets)

بررسی صحت تمامی امضاهای موجود برای یک بازنگری (revision) خاص:

hg sigcheck REV

بررسی صحت تمامی امضاهایی که ممکن است برای یک بازنگری خاص وجود داشته باشد

افزودن یک امضا برای بازنگری فعلی یا مشخص‌شده:

hg sign [OPTION]... [REV]...

اگر هیچ بازنگری‌ای مشخص نشود، والد دایرکتوری کاری استفاده می‌شود، یا در صورتی که هیچ بازنگری‌ای دریافت (checkout) نشده باشد، از tip استفاده خواهد شد.

از تنظیمات پیکربندی gpg.cmd می‌توان برای مشخص کردن دستور اجرایی استفاده کرد. یک کلید پیش‌فرض را می‌توان با gpg.key مشخص نمود.

برای دیدن فهرستی از قالب‌های معتبر برای -d/--date، hg help dates را ببینید.

گزینه‌ها:

-l, --local
محلی کردن امضا
-f, --force
امضا کردن حتی اگر sigfile تغییر یافته باشد
عدم ثبت (commit) فایل sigfile پس از امضا
شناسه کلید برای امضا کردن با آن
استفاده از متن مشخص‌شده به‌عنوان پیام ثبت (commit message)
-e, --edit
فراخوانی ویرایشگر برای پیام‌های ثبت
ثبت تاریخ مشخص‌شده به‌عنوان تاریخ ثبت
ثبت کاربر مشخص‌شده به‌عنوان ثبت‌کننده (committer)

فهرست‌کردن changesetهای امضاشده:

hg sigs

فهرست‌کردن changesetهای امضاشده

دستوری برای مشاهدهٔ نمودارهای ویرایش از درون پوسته (منسوخ‌شده)

قابلیت‌های این افزونه از نگارش 2.3 به هستهٔ اصلی Mercurial افزوده شده است. لطفاً به‌جای آن از hg log -G ... استفاده کنید.

این افزونه گزینهٔ --graph را به دستورهای incoming، outgoing و log اضافه می‌کند. هنگامی که این گزینه مشخص شود، نمایشی اسکی (ASCII) از نمودار ویرایش‌ها نیز نشان داده می‌شود.

نمایش تاریخچهٔ ویرایش‌ها در کنار نمودار ویرایشی بر پایهٔ ASCII:

hg glog [OPTION]... [FILE]

چاپ تاریخچهٔ ویرایش‌ها در کنار نمودار ویرایشی رسم‌شده با نویسه‌های ASCII.

گره‌هایی که با نویسهٔ @ چاپ می‌شوند، والدهای دایرکتوری کاری هستند.

این یک نام مستعار برای hg log -G است.

گزینه‌ها:

-f, --follow
دنبال‌کردن تاریخچهٔ changeset یا تاریخچهٔ فایل از میان رونوشت‌ها و تغییرنام‌ها
--follow-first
تنها دنبال‌کردن والد نخست در changesetهای ادغام (منسوخ‌شده)
نمایش ویرایش‌های منطبق بر مشخصات تاریخ
نمایش فایل‌های رونوشت‌شده
انجام جست‌وجوی بدون توجه به بزرگی و کوچکی حروف برای متن داده‌شده
نمایش ویرایش یا revset مشخص‌شده
شامل‌کردن ویرایش‌هایی که در آن‌ها فایل‌ها حذف شده‌اند
-m, --only-merges
تنها نمایش ادغام‌ها (منسوخ‌شده)
ویرایش‌های ثبت‌شده توسط کاربر
تنها نمایش changesetهای درون شاخهٔ نام‌گذاری‌شدهٔ مشخص (منسوخ‌شده)
نمایش changesetهای درون شاخهٔ نام‌گذاری‌شدهٔ مشخص
عدم نمایش ویرایش یا هر یک از نیاکان آن
-p, --patch
نمایش وصله (patch)
استفاده از قالب گسترش‌یافتهٔ diff در git
محدودکردن تعداد تغییرات نمایش‌داده‌شده
عدم نمایش ادغام‌ها
خروجی خلاصهٔ تغییرات به سبک diffstat
نمایش DAG (گراف جهت‌دار بدون دور) ویرایش‌ها
نمایش با استفاده از فایل نگاشت الگو (منسوخ‌شده)
نمایش با استفاده از الگو
شامل‌کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی‌کردن نام‌های منطبق با الگوهای داده‌شده

گزینهٔ علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SS hgk

مرور مخزن به صورت گرافیکی

افزونهٔ hgk امکان مرور تاریخچهٔ یک مخزن را به صورت گرافیکی فراهم می‌کند. این افزونه به Tcl/Tk نسخهٔ 8.4 یا بالاتر نیاز دارد. (Tcl/Tk به همراه Mercurial توزیع نمی‌شود.)

برنامهٔ hgk از دو بخش تشکیل شده است: یک اسکریپت Tcl که وظیفهٔ نمایش و پرس‌وجوی اطلاعات را بر عهده دارد، و یک افزونه برای Mercurial به نام hgk.py که قلاب‌هایی (hooks) را برای دریافت اطلاعات در اختیار hgk می‌گذارد. hgk در پوشهٔ contrib یافت می‌شود، و افزونه در مخزن hgext عرضه شده است و باید فعال شود.

دستور hg view اسکریپت Tcl مربوط به hgk را اجرا خواهد کرد. برای کارکرد صحیح این دستور، hgk باید در مسیر جستجوی شما باشد. در غیر این صورت، می‌توانید مسیر منتهی به hgk را در فایل پیکربندی خود مشخص کنید:

[hgk]
path = /location/of/hgk

برنامهٔ hgk می‌تواند از افزونهٔ extdiff برای مصورسازی بازبینی‌ها استفاده کند. با فرض اینکه قبلاً دستور vdiff افزونهٔ extdiff را پیکربندی کرده‌اید، فقط کافی است خطوط زیر را اضافه کنید:

[hgk]
vdiff=vdiff

اکنون منوی زمینه‌ایِ بازبینی‌ها، ورودی‌های اضافه‌ای را برای اجرای vdiff روی بازبینی‌های اشاره‌شده یا انتخاب‌شده نمایش می‌دهد.

اجرای نمایشگر تعاملی تاریخچه:

hg view [-l LIMIT] [REVRANGE]

اجرای نمایشگر تعاملی تاریخچه

گزینه‌ها:

محدود کردن تعداد تغییرات نمایش‌داده‌شده

برجسته‌سازی نحو برای hgweb (نیازمند Pygments)

این افزونه به کتابخانهٔ برجسته‌سازی نحو Pygments وابسته است: http://pygments.org

گزینه‌های پیکربندی زیر وجود دارند:

[web]
pygments_style = <style> (default: colorful)
highlightfiles = <fileset> (default: size('<5M'))
highlightonlymatchfilename = <bool> (default False)

گزینهٔ highlightonlymatchfilename فایل‌ها را فقط در صورتی برجسته می‌کند که نوع آن‌ها از روی نام فایل قابل شناسایی باشد. زمانی که این گزینه فعال نباشد (پیش‌فرض)، Pygments تلاش زیادی برای تشخیص نوع فایل از روی محتوای آن می‌کند و از هر تطابقی (حتی تطابق‌هایی با امتیاز اطمینان پایین) استفاده خواهد شد..SS histedit

ویرایش تعاملی تاریخچه

با نصب این افزونه، Mercurial یک دستور جدید دریافت می‌کند: histedit. نحوه استفاده با فرض تاریخچه زیر به شرح زیر است:

@  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42
|    Add delta
|
o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42
|    Add gamma
|
o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42
|    Add beta
|
o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42
     Add alpha

اگر دستور hg histedit c561b4e977df را اجرا کنید، باز شدن فایل زیر را در ویرایشگر خود خواهید دید:

pick c561b4e977df Add beta
pick 030b686bedc4 Add gamma
pick 7c2fd3b9020c Add delta
# Edit history between c561b4e977df and 7c2fd3b9020c
#
# Commits are listed from least to most recent
#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but allow edits before making new commit
#  f, fold = use commit, but combine it with the one above
#  r, roll = like fold, but discard this commit's description and date
#  d, drop = remove commit from history
#  m, mess = edit commit message without changing commit content
#  b, base = checkout changeset and apply further changesets from there
#

در این فایل، خطوطی که با # شروع می‌شوند نادیده گرفته خواهند شد. شما باید برای هر بازبینی (revision) در تاریخچه خود یک قاعده تعیین کنید. برای مثال، اگر قصد داشتید gamma را پیش از beta اضافه کنید و سپس می‌خواستید delta را در همان بازبینی beta قرار دهید، فایل را مجدداً به این شکل سازماندهی می‌کردید:

pick 030b686bedc4 Add gamma
pick c561b4e977df Add beta
fold 7c2fd3b9020c Add delta
# Edit history between c561b4e977df and 7c2fd3b9020c
#
# Commits are listed from least to most recent
#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but allow edits before making new commit
#  f, fold = use commit, but combine it with the one above
#  r, roll = like fold, but discard this commit's description and date
#  d, drop = remove commit from history
#  m, mess = edit commit message without changing commit content
#  b, base = checkout changeset and apply further changesets from there
#

در این مرحله ویرایشگر را می‌بندید و histedit شروع به کار می‌کند. هنگامی که یک عملیات fold تعیین می‌کنید، histedit هنگام ادغام آن بازبینی‌ها یک ویرایشگر باز می‌کند و به شما امکان می‌دهد تا پیام کامیت را مرتب و ویرایش کنید:

Add beta
***
Add delta

پیام کامیت را مطابق میل خود ویرایش کنید، سپس ویرایشگر را ببندید. تاریخ استفاده‌شده برای کامیت، تاریخ متأخرتر میان این دو کامیت خواهد بود. برای این مثال، فرض کنیم پیام کامیت به Add beta and delta. تغییر یافته است. پس از اجرای histedit و فرصت یافتن آن برای حذف بازبینی‌های قدیمی یا موقت مورد نیازش، تاریخچه به شکل زیر درمی‌آید:

@  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42
|    Add beta and delta.
|
o  1   081603921c3f   2009-04-27 18:04 -0500   durin42
|    Add gamma
|
o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42
     Add alpha

توجه داشته باشید که histedit تا زمانی که تمام عملیات ویرایش کامل نشده باشد، هیچ بازبینی‌ای را (حتی موارد موقت خود را) حذف نمی‌کند، بنابراین احتمالاً پس از اتمام کار، چندین عملیات strip انجام خواهد داد. برای مثال بالا، مجبور شد دو بار strip را اجرا کند. عملیات strip بسته به عوامل مختلف می‌تواند کند باشد، بنابراین ممکن است لازم باشد کمی صبور باشید. می‌توانید با دادن پرچم --keep بازبینی‌های اصلی را حفظ کنید.

عملیات edit شما را به خط فرمان بازمی‌گرداند و امکان می‌دهد آزادانه فایل‌ها را ویرایش کنید، یا حتی با استفاده از hg record برخی تغییرات را به عنوان یک کامیت مجزا ثبت کنید. پس از پایان کار، هر تغییر اعمال‌نشده (uncommitted) باقی‌مانده نیز کامیت خواهد شد. پس از اتمام، دستور hg histedit --continue را برای تکمیل این مرحله اجرا کنید. اگر تغییرات کامیت‌نشده وجود داشته باشد، پیام کامیت جدید از شما خواسته خواهد شد، اما پیام کامیت پیش‌فرض همان پیام اصلی بازبینی ویرایش‌شده (edit) خواهد بود و تاریخ کامیت اصلی نیز حفظ خواهد شد.

عملیات message به شما این امکان را می‌دهد که پیام کامیت را بدون تغییر محتوای آن بازنگری کنید. این یک میانبر برای انجام edit و بلافاصله پس از آن hg histedit --continue` است.

اگر histedit هنگام جابه‌جایی یک بازبینی (در حین مدیریت pick یا fold) با یک تداخل (conflict) مواجه شود، به شکلی مشابه با edit متوقف خواهد شد با این تفاوت که پس از اتمام کار، از شما پیامی برای کامیت درخواست نخواهد کرد. اگر در این نقطه به این نتیجه رسیدید که سازماندهی مجدد تاریخچه کار بسیار زیادی می‌برد، یا اشتباهی مرتکب شده‌اید، می‌توانید از hg histedit --abort استفاده کنید تا تغییرات جدید ایجادشده لغو شوند و به وضعیت پیش از اقدام به ویرایش تاریخچه بازگردید.

اگر از مخزن نمونه ویرایش‌شده با histedit در بالا یک کلون تهیه کنیم و چهار تغییر دیگر به آن بیفزاییم، به طوری که تاریخچه زیر حاصل شود:

@  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan
|    Add theta
|
o  5   140988835471   2009-04-27 18:04 -0500   stefan
|    Add eta
|
o  4   122930637314   2009-04-27 18:04 -0500   stefan
|    Add zeta
|
o  3   836302820282   2009-04-27 18:04 -0500   stefan
|    Add epsilon
|
o  2   989b4d060121   2009-04-27 18:04 -0500   durin42
|    Add beta and delta.
|
o  1   081603921c3f   2009-04-27 18:04 -0500   durin42
|    Add gamma
|
o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42
     Add alpha

اگر hg histedit --outgoing را روی مخزن کلون‌شده اجرا کنید، معادل اجرای hg histedit 836302820282 خواهد بود. اگر قصد ارسال (push) به مخزنی را دارید که Mercurial مرتبط بودن آن با مخزن مبدأ را تشخیص نمی‌دهد، می‌توانید گزینه --force را اضافه کنید..SS پیکربندی (Config)

خطوط قواعد histedit به‌طور پیش‌فرض به ۸۰ نویسه کوتاه می‌شوند. شما می‌توانید با تنظیم طولی متفاوت در فایل پیکربندی خود، این رفتار را سفارشی‌سازی کنید:

[histedit]
linelen = 120      # truncate rule lines at 120 characters

خلاصه یک تغییر نیز می‌تواند سفارشی‌سازی شود:

[histedit]
summary-template = '{rev} {bookmarks} {desc|firstline}'

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

دستور hg histedit تلاش می‌کند به‌طور خودکار یک بازنگری (revision) پایه مناسب را برای استفاده انتخاب کند. برای تغییر اینکه از کدام بازنگری پایه استفاده شود، یک revset در فایل پیکربندی خود تعریف کنید:

[histedit]
defaultrev = only(.) & draft()

به‌طور پیش‌فرض هر بازنگری ویرایش‌شده باید در دستورات histedit وجود داشته باشد. برای حذف بازنگری، باید از عملیات drop استفاده کنید. شما می‌توانید با افزودن تنظیمات زیر، حذف (drop) را برای کامیت‌های ناموجود به‌صورت ضمنی پیکربندی کنید:

[histedit]
dropmissing = True

به‌طور پیش‌فرض، histedit پس از هر اقدام (action) تراکنش را می‌بندد. برای اهداف کارایی و عملکرد، می‌توانید histedit را طوری پیکربندی کنید که در کل فرایند histedit از یک تراکنش واحد استفاده کند. هشدار: اگر histedit به‌طور غیرمنتظره متوقف شود، این تنظیم خطر از دست رفتن کارهایی که در histedit انجام داده‌اید را به‌طور چشمگیری افزایش می‌دهد:

[histedit]
singletransaction = True

ویرایش تعاملی تاریخچه مجموعه‌تغییرات (changeset):

hg histedit [OPTIONS] ([ANCESTOR] | --outgoing [URL])

این دستور به شما امکان می‌دهد یک سری خطی از changesetها را ویرایش کنید (تا و شامل دایرکتوری کاری که باید تمیز باشد). شما می‌توانید:

  • pick برای مرتب‌سازی [مجدد] یک changeset
  • drop برای کنار گذاشتن changeset
  • mess برای بازنویسی پیام کامیت changeset
  • fold برای ترکیب آن با changeset قبلی (با استفاده از تاریخ متأخرتر)
  • roll شبیه به fold، اما با نادیده‌گرفتن توضیحات و تاریخ این کامیت
  • edit برای ویرایش این changeset (با حفظ تاریخ)
  • base برای وارسی (checkout) changeset و اعمال مجموعه‌تغییرات بعدی از آنجا

روش‌های متعددی برای انتخاب changeset ریشه وجود دارد:

  • مشخص کردن مستقیم ANCESTOR
  • استفاده از --outgoing -- که اولین changeset خطی خواهد بود که در مقصد گنجانده نشده است. (نگاه کنید به hg help config.paths.default-push)
  • در غیر این صورت، مقدار گزینه پیکربندی "histedit.defaultrev" به عنوان یک revset برای انتخاب بازنگری پایه در زمانی که ANCESTOR مشخص نشده است، استفاده می‌شود. اولین بازنگری برگردانده‌شده توسط revset استفاده می‌شود. به‌طور پیش‌فرض، این کار تاریخچه قابل ویرایشی را انتخاب می‌کند که مختص نیاکان دایرکتوری کاری است.

اگر از --outgoing استفاده کنید، در صورتی که بازنگری‌های ارسالی (outgoing) مبهم باشند، این دستور متوقف (abort) خواهد شد؛ برای نمونه، اگر چندین شاخه شامل بازنگری‌های ارسالی وجود داشته باشد.

در چنین شرایط مبهمی، به جای --outgoing از "min(outgoing() and ::.)" یا مشخصات revset مشابه استفاده کنید تا بازنگری هدفِ ویرایش دقیقاً مشخص شود. برای جزئیات بیشتر درباره انتخاب بازنگری‌ها، hg help revsets را ببینید.

مثال‌ها:

  • تعدادی تغییر اعمال شده است. بازنگری ۳ دیگر مورد نیاز نیست.

    شروع ویرایش تاریخچه از بازنگری ۳:

    hg histedit -r 3

    یک ویرایشگر باز می‌شود که شامل فهرست بازنگری‌ها همراه با اقدامات مشخص‌شده است:

    pick 5339bf82f0ca 3 Zworgle the foobar
    pick 8ef592ce7cc4 4 Bedazzle the zerlog
    pick 0a9639fcda9d 5 Morgify the cromulancy

    اطلاعات اضافی درباره اقدامات قابل انجام در زیر فهرست بازنگری‌ها نمایش داده می‌شود.

    برای حذف بازنگری ۳ از تاریخچه، اقدام مربوط به آن (در ابتدای خط مربوطه) به 'drop' تغییر داده می‌شود:

    drop 5339bf82f0ca 3 Zworgle the foobar
    pick 8ef592ce7cc4 4 Bedazzle the zerlog
    pick 0a9639fcda9d 5 Morgify the cromulancy
  • تعدادی تغییر اعمال شده است. بازنگری‌های ۲ و ۴ باید با هم جابه‌جا شوند.

    شروع ویرایش تاریخچه از بازنگری ۲:

    hg histedit -r 2
    ویرایشگری باز می‌شود که حاوی فهرست بازبینی‌ها همراه با اقدامات مشخص‌شده است:
    pick 252a1af424ad 2 Blorb a morgwazzle
    pick 5339bf82f0ca 3 Zworgle the foobar
    pick 8ef592ce7cc4 4 Bedazzle the zerlog

    برای جابه‌جایی بازبینی‌های ۲ و ۴، خطوط مربوط به آن‌ها در ویرایشگر جابه‌جا می‌شوند:

    pick 8ef592ce7cc4 4 Bedazzle the zerlog
    pick 5339bf82f0ca 3 Zworgle the foobar
    pick 252a1af424ad 2 Blorb a morgwazzle

در صورت موفقیت مقدار 0، و در صورتی که مداخله کاربر لازم باشد (نه تنها برای دستور عمدی “edit”، بلکه برای حل تعارض‌های پیش‌بینی‌نشده) مقدار 1 بازگردانده می‌شود.

گزینه‌ها:

خواندن ویرایش‌های تاریخچه از فایل مشخص‌شده
-c, --continue
ادامه دادن ویرایشی که هم‌اکنون در جریان است
--edit-plan
ویرایش فهرست اقدامات باقی‌مانده
-k, --keep
پس از تکمیل ویرایش، گره‌های قدیمی حذف (strip) نشوند
لغو ویرایشِ در حال انجام
-o, --outgoing
مجموعه‌تغییرهایی که در مقصد یافت نمی‌شوند
-f, --force
اجبار به بررسی موارد ارسالی (outgoing) حتی برای مخازن نامرتبط
نخستین بازبینی جهت ویرایش
نمایش با استفاده از الگو

گزینه‌های علامت‌گذاری‌شده با [+] می‌توانند چندین بار مشخص شوند

مجموعه‌ای از قلاب‌های ساده برای کارهای متداول (آزمایشی)

این افزونه تعدادی قلاب ساده را برای مدیریت مسائلی که معمولاً در مخازنی با مشارکت‌کنندگان بسیار رخ می‌دهد، ارائه می‌دهد: - اطلاع‌رسانی از طریق ایمیل هنگام انتقال مجموعه‌تغییرها از فاز draft به public - اطلاع‌رسانی از طریق ایمیل هنگام منسوخ شدن مجموعه‌تغییرها - اعمال اجباری فاز draft برای تمام مجموعه‌تغییرهای ورودی - اعمال سیاست عدم ادغام شاخه‌ها (no-branch-merge) - اعمال سیاست جلوگیری از چندسر بودن شاخه‌ها (no-multiple-heads)

پیاده‌سازی این قلاب‌ها ممکن است تغییر کند؛ برای نمونه، اینکه به‌صورت قلاب‌های جداگانه پیاده شوند یا به‌عنوان گزینه در افزونه notify ادغام گردند. با این حال، برنامه‌ریزی شده است که خود قابلیت به‌صورت بلندمدت پشتیبانی شود..SS journal

ردیابی موقعیت‌های پیشین بوک‌مارک‌ها (آزمایشی)

این افزونه دستور جدیدی اضافه می‌کند: hg journal، که نشان می‌دهد بوک‌مارک‌ها قبلاً در کجا قرار داشته‌اند.

نمایش موقعیت پیشین بوک‌مارک‌ها و رونوشت کاری:

hg journal [OPTION]... [BOOKMARKNAME]

از journal برای مشاهده کامیت‌های پیشینی که بوک‌مارک‌ها و رونوشت کاری به آن‌ها اشاره می‌کردند استفاده می‌شود. به‌طور پیش‌فرض، موقعیت‌های پیشین برای رونوشت کاری نمایش داده می‌شوند. مشخص کردن نام یک بوک‌مارک، تمام موقعیت‌های پیشین آن بوک‌مارک را نشان خواهد داد. از سوییچ --all برای نمایش موقعیت‌های پیشین همه بوک‌مارک‌ها و رونوشت کاری استفاده کنید؛ در این صورت هر سطر شامل نام بوک‌مارک، یا '.' برای رونوشت کاری نیز خواهد بود.

اگر name با re: آغاز شود، باقی‌مانده نام به عنوان یک عبارت منظم (regular expression) در نظر گرفته می‌شود. برای تطبیق نامی که واقعاً با re: آغاز می‌شود، از پیشوند literal: استفاده کنید.

به‌طور پیش‌فرض، hg journal تنها هش کامیت و دستوری را که در آن زمان در حال اجرا بوده است نمایش می‌دهد. گزینه -v/--verbose هش قبلی، کاربر و زمانی را که این اتفاق رخ داده است نشان می‌دهد.

از -c/--commits برای خروجی دادن اطلاعات گزارش (log) مربوط به هر هش کامیت استفاده کنید؛ در این مرحله می‌توانید از سوییچ‌های معمول --patch، --git، --stat و --template برای تغییر خروجی گزارش آن‌ها استفاده نمایید.

از دستور hg journal -T json می‌توان برای تولید خروجی ماشین‌خوان استفاده کرد.

گزینه‌ها:

نمایش تاریخچه برای تمام نام‌ها
-c, --commits
نمایش فراداده‌های کامیت
-p, --patch
نمایش وصله (patch)
استفاده از قالب diff گسترش‌یافته git
محدود کردن تعداد تغییرات نمایش‌داده‌شده
خروجی خلاصه‌ای از تغییرات به سبک diffstat
نمایش با استفاده از فایل نگاشت الگو (منسوخ‌شده)
نمایش با الگو

گسترش کلیدواژه‌ها در فایل‌های ردیابی‌شده

این افزونه کلیدواژه‌های $Keywords$ مشابه RCS/CVS یا سفارشی‌سازی‌شده را در فایل‌های متنی ردیابی‌شده که توسط پیکربندی شما انتخاب شده‌اند، گسترش می‌دهد.

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

کلیدواژه‌ها به داده‌های مجموعه تغییرات (changeset) مربوط به آخرین تغییر نسبت به والد پوشه کاری هر فایل گسترش می‌یابند.

پیکربندی در بخش‌های [keyword]، [keywordset] و [keywordmaps] از فایل‌های hgrc انجام می‌شود.

مثال:

[keyword]
# expand keywords in every python file except those matching "x*"
**.py =
x*    = ignore
[keywordset]
# prefer svn- over cvs-like default keywordmaps
svn = True
نکته
هر چه در الگوهای نام فایل خود دقیق‌تر باشید، در مخازن بزرگ افت سرعت کمتری خواهید داشت.

برای بررسی و نمایش نگاشت الگوها و گسترش [keywordmaps]، دستور hg kwdemo را اجرا کنید. برای فهرستی از الگوها و فیلترهای موجود، hg help templates را ببینید.

سه فیلتر الگوی تاریخ دیگر نیز ارائه شده است:

"2006/09/18 15:13:13"

"2006-09-18 15:13:13Z"

"2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)"

نگاشت‌های پیش‌فرض الگو (قابل مشاهده با hg kwdemo -d) را می‌توان با کلیدواژه‌ها و الگوهای سفارشی جایگزین کرد. مجدداً، hg kwdemo را برای کنترل نتایج تغییرات پیکربندی خود اجرا کنید.

پیش از تغییر یا غیرفعال‌سازی کلیدواژه‌های فعال، باید hg kwshrink را اجرا کنید تا از ذخیره شدن کلیدواژه‌های گسترش‌یافته در تاریخچه تغییرات جلوگیری شود.

برای اجبار به گسترش پس از فعال‌سازی آن، یا اعمال تغییر در پیکربندی، دستور hg kwexpand را اجرا کنید.

گسترش‌هایی که بیش از یک خط را در بر می‌گیرند و گسترش‌های افزایشی، مانند $Log$ در CVS، پشتیبانی نمی‌شوند. نگاشت الگوی کلیدواژه "Log = {desc}" به اولین سطر شرح مجموعه تغییرات (changeset) گسترش می‌یابد..SS دستورها (Commands)

چاپ پیکربندی [keywordmaps] و یک نمونه بسط:

hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]...

نمایش نگاشت‌های قالب کلیدواژه فعلی، سفارشی یا پیش‌فرض و بسط‌های آن‌ها.

گسترش پیکربندی فعلی با مشخص کردن نگاشت‌ها به عنوان آرگومان و استفاده از -f/--rcfile برای خواندن یک فایل hgrc خارجی.

برای غیرفعال کردن پیکربندی فعلی از -d/--default استفاده کنید.

برای اطلاعات درباره قالب‌ها و فیلترها به hg help templates مراجعه کنید.

گزینه‌ها:

-d, --default
نمایش نگاشت‌های قالب کلیدواژه پیش‌فرض
خواندن نگاشت‌ها از rcfile

بسط کلیدواژه‌ها در دایرکتوری کاری:

hg kwexpand [OPTION]... [FILE]...

پس از فعال‌سازی (یا فعال‌سازی مجدد) بسط کلیدواژه اجرا شود.

اگر فایل‌های داده‌شده حاوی تغییرات محلی باشند، kwexpand از اجرا خودداری می‌کند.

گزینه‌ها:

شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده

گزینه با علامت [+] را می‌توان چندین بار مشخص کرد

نمایش فایل‌های پیکربندی‌شده برای بسط کلیدواژه:

hg kwfiles [OPTION]... [FILE]...

فهرست کردن فایل‌هایی در دایرکتوری کاری که با الگوهای پیکربندی [keyword] مطابقت دارند.

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

برای چگونگی ساخت الگوها هم جهت در بر گرفتن و هم مستثنی کردن فایل‌ها، به hg help keyword مراجعه کنید.

به همراه -A/--all و -v/--verbose، کدهای مورد استفاده برای نمایش وضعیت فایل‌ها عبارتند از:

K = نامزد بسط کلیدواژه
k = نامزد بسط کلیدواژه (ردیابی‌نشده)
I = نادیده‌گرفته‌شده
i = نادیده‌گرفته‌شده (ردیابی‌نشده)

گزینه‌ها:

-A, --all
نمایش پرچم‌های وضعیت کلیدواژه برای همه فایل‌ها
-i, --ignore
نمایش فایل‌های مستثنی‌شده از بسط
-u, --unknown
فقط نمایش فایل‌های ناشناخته (ردیابی‌نشده)
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده

گزینه با علامت [+] را می‌توان چندین بار مشخص کرد.SS kwshrink

بازگرداندن کلیدواژه‌های گسترش‌یافته در دایرکتوری کاری:

hg kwshrink [OPTION]... [FILE]...

باید پیش از تغییر دادن/غیرفعال کردن کلیدواژه‌های فعال اجرا شود.

اگر فایل‌های ارائه‌شده حاوی تغییرات محلی باشند، kwshrink از اجرا خودداری می‌کند.

گزینه‌ها:

شامل کردن نام‌های مطابق با الگوهای ارائه‌شده
مستثنی کردن نام‌های مطابق با الگوهای ارائه‌شده

گزینه‌ای که با [+] علامت‌گذاری شده را می‌توان چند بار مشخص کرد

ردگیری فایل‌های باینری بزرگ

فایل‌های باینری بزرگ معمولاً چندان فشرده‌پذیر نیستند، مقایسه تفاضلی (diff) روی آن‌ها کارآمد نیست و اصلاً امکان ادغام (merge) ندارند. این‌گونه فایل‌ها توسط ساختار ذخیره‌سازی Mercurial (موسوم به revlog) که بر اساس دلتاهای باینری فشرده‌شده کار می‌کند، به‌طور کارآمد مدیریت نمی‌شوند؛ ذخیره فایل‌های باینری بزرگ به‌صورت فایل‌های عادی Mercurial موجب هدررفت پهنای باند و فضای دیسک شده و مصرف حافظه Mercurial را افزایش می‌دهد. افزونه largefiles با افزودن یک لایه متمرکز کلاینت-سرور بر روی Mercurial این مشکلات را حل می‌کند: فایل‌های بزرگ در یک مخزن متمرکز (central store) در جایی درون شبکه نگهداری می‌شوند و شما تنها بازبینی‌هایی (revisions) را واکشی می‌کنید که در زمان لازم به آن‌ها نیاز دارید.

عملکرد largefiles به این صورت است که برای هر فایل بزرگ، یک «فایل جانشین» (standin file) در دایرکتوری .hglf/ نگهداری می‌کند. جانشین‌ها حجم کمی دارند (۴۱ بایت: یک هش SHA-1 به همراه نویسه خط جدید) و توسط Mercurial ردگیری می‌شوند. بازبینی‌های فایل بزرگ با هش SHA-1 محتوایشان شناسایی می‌شوند که درون فایل جانشین نوشته می‌شود. افزونه largefiles از این شناسه بازبینی برای دریافت/ارسال (get/put) بازبینی‌های فایل بزرگ از/به مخزن متمرکز استفاده می‌کند. این امر هم در فضای دیسک و هم در پهنای باند صرفه‌جویی می‌کند، چرا که هنگام clone یا pull کردن نیازی به دریافت تمام تاریخچه بازبینی‌های فایل‌های بزرگ ندارید.

برای شروع یک مخزن جدید یا افزودن فایل‌های باینری بزرگ تازه، کافی است گزینه --large را به دستور hg add خود اضافه کنید. برای نمونه:

$ dd if=/dev/urandom of=randomdata count=2000
$ hg add --large randomdata
$ hg commit -m "add randomdata as a largefile"

هنگامی که مجموعه‌تغییری (changeset) را که باعث افزودن/تغییر دادن فایل‌های بزرگ می‌شود به یک مخزن راه دور push می‌کنید، بازبینی‌های فایل بزرگ آن نیز به همراهش بارگذاری خواهند شد. توجه داشته باشید که برای کارکرد این قابلیت، Mercurial سمت سرور یا راه دور نیز باید افزونه largefiles را فعال داشته باشد.

هنگامی که مجموعه‌تغییری موثر بر فایل‌های بزرگ را از یک مخزن راه دور pull می‌کنید، فایل‌های بزرگ مربوط به آن مجموعه‌تغییر به‌طور پیش‌فرض دریافت نخواهند شد. با این حال، وقتی به چنین بازبینی‌ای update می‌کنید، هر فایل بزرگی که مورد نیاز آن بازبینی باشد دانلود و کش می‌شود (در صورتی که قبلاً هرگز دانلود نشده باشد). بنابراین یک راه برای دریافت فایل‌های بزرگ هنگام pull، استفاده از گزینه --update است که رونوشت کاری (working copy) شما را به آخرین بازبینی دریافت‌شده به‌روزرسانی می‌کند (و در نتیجه فایل‌های بزرگ جدید را دانلود می‌نماید).

اگر می‌خواهید فایل‌های بزرگی را دریافت کنید که فعلاً برای update به آن‌ها نیازی ندارید، می‌توانید از pull با گزینه --lfrev یا دستور hg lfpull استفاده کنید.

اگر می‌دانید که در حال pull کردن از مکانی غیرپیش‌فرض هستید و می‌خواهید تمام فایل‌های بزرگ متناظر با مجموعه‌تغییرهای جدید را به‌طور هم‌زمان دانلود کنید، می‌توانید عملیات pull را با --lfrev "pulled()" انجام دهید.

اگر تنها می‌خواهید مطمئن شوید که فایل‌های بزرگ مورد نیاز برای merge یا rebase با سرشاخه‌های (heads) جدیدی را که در حال pull کردن آن‌ها هستید در اختیار خواهید داشت، می‌توانید با پرچم --lfrev "head(pulled())" عملیات pull را اجرا کنید تا پیشاپیش هر فایل بزرگی را که در سرشاخه‌های دریافتی جدید است دانلود نمایید.

به خاطر داشته باشید که اکنون ممکن است برای update کردن به مجموعه‌تغییرهایی که قبلاً به آن‌ها به‌روزرسانی نکرده‌اید، دسترسی به شبکه الزامی باشد. ماهیت افزونه largefiles ایجاب می‌کند که دیگر تضمینی برای محلی بودن صرف عملیات به‌روزرسانی (updating) وجود نداشته باشد.

اگر از قبل فایل‌های بزرگی دارید که بدون افزونه largefiles توسط Mercurial ردگیری می‌شوند، برای بهره‌مندی از مزایای largefiles باید مخزن خود را تبدیل کنید. این کار با دستور hg lfconvert انجام می‌شود:

$ hg lfconvert --size 10 oldrepo newrepo

در مخازنی که از قبل حاوی largefile هستند، هر فایل جدیدی با حجم بیشتر از 10MB به‌طور خودکار به‌عنوان یک largefile اضافه می‌شود. برای تغییر دادن این آستانه، مقدار largefiles.minsize را در فایل پیکربندی Mercurial خود روی حداقل اندازه بر حسب مگابایت برای ردگیری به‌عنوان largefile تنظیم کنید، یا از گزینه --lfsize در دستور add استفاده نمایید (این گزینه نیز بر حسب مگابایت است):

[largefiles]
minsize = 2
$ hg add --lfsize 2

گزینه پیکربندی largefiles.patterns به شما اجازه می‌دهد فهرستی از الگوهای نام فایل را مشخص کنید (نگاه کنید به hg help patterns) که باید همواره به‌عنوان largefile ردگیری شوند:

[largefiles]
patterns =
  *.jpg
  re:.*\.(png|bmp)$
  library.zip
  content/audio/*

فایل‌هایی که با یکی از این الگوها مطابقت داشته باشند، صرف‌نظر از اندازه‌شان، به‌عنوان largefile اضافه خواهند شد.

گزینه‌های پیکربندی largefiles.minsize و largefiles.patterns برای مخازنی که هنوز حاوی هیچ largefile نیستند نادیده گرفته می‌شوند. برای افزودن نخستین largefile به یک مخزن، باید صریحاً این کار را با ارسال پرچم --large به دستور hg add انجام دهید..SS دستورها (Commands)

تبدیل یک مخزن عادی به یک مخزن largefiles:

hg lfconvert SOURCE DEST [FILE ...]

مخزن SOURCE را به یک مخزن جدید DEST تبدیل می‌کند که کاملاً مشابه SOURCE است، با این تفاوت که برخی فایل‌ها به عنوان largefiles تبدیل می‌شوند: به طور مشخص، هر فایلی که با هر PATTERN مطابقت داشته باشد یا اندازه‌اش بالاتر از آستانهٔ حداقل اندازه باشد، به صورت largefile تبدیل خواهد شد. اندازه‌ای که برای تعیین ردگیری یا عدم ردگیری یک فایل به عنوان largefile استفاده می‌شود، اندازهٔ نخستین نسخه از آن فایل است. حداقل اندازه می‌تواند با --size یا در پیکربندی به صورت largefiles.size مشخص شود.

پس از اجرای این دستور، باید مطمئن شوید که largefiles در هر جایی که قصد ارسال (push) مخزن جدید به آن را دارید، فعال باشد.

از --to-normal برای تبدیل دوبارهٔ largefiles به فایل‌های عادی استفاده کنید؛ پس از این کار، مخزن DEST را می‌توان به کلی بدون largefiles استفاده کرد.

گزینه‌ها:

حداقل اندازه (به مگابایت) برای تبدیل فایل‌ها به largefiles
--to-normal
تبدیل از یک مخزن largefiles به یک مخزن عادی

دریافت (pull) فایل‌های largefiles برای بازبینی‌های مشخص‌شده از مبدأ مشخص:

hg lfpull -r REV... [-e CMD] [--remotecmd CMD] [SOURCE]

فایل‌های largefiles که در دسته‌تغییرات (changeset) محلی به آن‌ها ارجاع داده شده اما در سطح محلی موجود نیستند را دریافت کرده و از مخزن دوردست به حافظهٔ موقت (cache) محلی می‌آورد.

اگر SOURCE مشخص نشود، مسیر 'default' استفاده خواهد شد. برای اطلاعات بیشتر hg help urls را ببینید.

چند مثال:

  • دریافت largefiles برای تمام سرشاخه‌ها (branch heads):
    hg lfpull -r "head() and not closed()"
  • دریافت largefiles در شاخهٔ پیش‌فرض:
    hg lfpull -r "branch(default)"

گزینه‌ها:

دریافت largefiles برای این بازبینی‌ها
مشخص کردن دستور ssh جهت استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
عدم اعتبارسنجی گواهی سرور (نادیده گرفتن پیکربندی web.cacerts)

گزینهٔ دارای علامت [+] را می‌توان چندین بار مشخص کرد.SS lfs

lfs - پشتیبانی از فایل‌های حجیم (آزمایشی)

این افزونه امکان ردیابی فایل‌های حجیم در خارج از فضای ذخیره‌سازی عادی مخزن و نگهداری آن‌ها بر روی یک سرور متمرکز را، مشابه افزونهٔ largefiles، فراهم می‌کند. هنگام برقراری ارتباط با سرور از پروتکل git-lfs استفاده می‌شود، بنابراین می‌توان از زیرساخت‌های موجود git بهره برد. اگرچه فایل‌ها در خارج از مخزن ذخیره می‌شوند، یکپارچگی آن‌ها همچنان به همان شیوهٔ فایل‌های عادی بررسی و اعتبارسنجی می‌شود.

فایل‌های ذخیره‌شده در خارج از مخزن بنا بر نیاز (on demand) بارگیری می‌شوند که این امر زمان clone کردن و احتمالاً مصرف دیسک محلی را کاهش می‌دهد. این قابلیت گردش‌کارهای بنیادین را در یک DVCS تغییر می‌دهد، بنابراین پیش از به‌کارگیری آن باید بررسی دقیق صورت گیرد. می‌توان از hg convert برای تبدیل مخازن LFS به مخازن معمولی که دیگر نیازی به این افزونه ندارند، بدون تغییر دادن شناسه‌های کامیت (commit hashes)، استفاده کرد. این ویژگی اجازه می‌دهد در صورتی که گردش‌کار متمرکز دست‌وپاگیر شود، افزونه غیرفعال گردد. با این حال، نسخه‌های clone پیش و پس از تبدیل نمی‌توانند با یکدیگر ارتباط برقرار کنند، مگر اینکه این افزونه روی هر دو فعال باشد.

برای شروع یک مخزن جدید، یا افزودن فایل‌های LFS به یک مخزن موجود، کافی است همان‌طور که در ادامه توضیح داده شده، یک فایل .hglfs در دایرکتوری ریشهٔ مخزن ایجاد کنید. معمولاً این فایل باید تحت کنترل نسخه قرار گیرد تا تنظیمات با دستورهای push و pull به مخازن دیگر منتقل شوند. در طول هر کامیت، Mercurial به این فایل رجوع می‌کند تا مشخص کند آیا یک فایلِ اضافه‌شده یا تغییریافته باید در خارج از مخزن ذخیره شود یا خیر. نوع ذخیره‌سازی به مشخصات فایل در هر کامیت بستگی دارد. فایلی که در نزدیکی آستانهٔ اندازه قرار دارد، ممکن است بنا به نیاز بین LFS و ذخیره‌سازی معمولی جابه‌جا شود.

علاوه بر این، می‌توان هر دو نوع مخازن معمولی و مخازن تحت کنترل largefile را با استفاده از hg convert و گزینهٔ پیکربندی lfs.track که در ادامه شرح داده شده به LFS تبدیل کرد. سپس باید فایل .hglfs ایجاد و اضافه شود تا گزینش‌های بعدی LFS را کنترل کند. در این حالت نیز شناسه‌های هش بدون تغییر باقی می‌مانند. مخازن LFS و غیر-LFS از این رو قابل تشخیص هستند که در صورت غیرفعال بودن این افزونه، مخزن LFS اجرای هر فرمانی را متوقف (abort) خواهد کرد.

فایل‌های LFS کامیت‌شده به‌صورت محلی نگهداری می‌شوند تا زمانی که مخزن push شود. پیش از push کردن داده‌های عادی مخزن، فایل‌های LFS که توسط کامیت‌های خروجی ردیابی شده‌اند، به‌طور خودکار روی سرور مرکزی پیکربندی‌شده بارگذاری می‌شوند. هنگام اجرای hg pull یا hg clone هیچ فایل LFSی منتقل نمی‌شود. در عوض، در صورتی که نسخهٔ میان‌حافظه‌شده (cached) به‌صورت محلی یافت نشود، فایل‌ها بنا بر نیاز و به محض نیاز به خوانده شدن بارگیری می‌شوند. هم کامیت کردن و هم بارگیری یک فایل LFS، فایل را به یک usercache پیوند می‌دهد تا دسترسی‌های بعدی سریع‌تر شود. تنظیمات پیکربندی usercache که در ادامه آمده را ببینید.

این افزونه پیکربندی خود را از فایل پیکربندی نسخه‌بندی‌شدهٔ .hglfs واقع در ریشهٔ دایرکتوری کاری می‌خواند. فایل .hglfs از همان نحو (syntax) سایر فایل‌های پیکربندی Mercurial استفاده می‌کند و دارای یک بخش واحد، یعنی [track] است.

بخش [track] مشخص می‌کند چه فایل‌هایی به‌صورت LFS ذخیره شوند (یا نشوند). هر خط با یک الگوی فایل به عنوان کلید، همراه با یک مقدار گزاره (predicate) مشخص می‌شود. نخستین تطبیق الگوی فایل اعمال می‌شود، بنابراین الگوهای خاص‌تر را در ابتدا قرار دهید. گزاره‌های موجود عبارتند از all()، none() و size(). برای مورد آخر راهنمای «hg help filesets.size» را ببینید.

نمونه فایل نسخه‌بندی‌شدهٔ .hglfs:

[track]
# هیچ Makefile یا فایل پایتونی، در هیچ کجا، LFS نخواهد بود
**Makefile = none()
**.py = none()
**.zip = all()
**.exe = size(">1MB")
# قاعدهٔ فراگیر برای هر چیزی که در بالا مطابقت نیافته است
** = size(">10MB")

پیکربندی‌ها:

[lfs]
# نقطه پایانی دوردست. چندین پروتکل پشتیبانی می‌شوند:
# - http(s)://user:pass@example.com/path
#   نقطه پایانی git-lfs
# - file:///tmp/path
#   سامانه فایل محلی، معمولاً برای آزمایش
# در صورت تنظیم نشدن، lfs فرض می‌کند مخزن دوردست ذخیره‌سازی اشیای بزرگ (blob)
# را نیز برای آدرس‌های http(s) مدیریت می‌کند. در غیر این صورت، lfs هنگامی که ملزم به
# استفاده از این مقدار باشد، اعلان تعیین آن را می‌دهد.
# (پیش‌فرض: تنظیم‌نشده)
url = https://example.com/repo.git/info/lfs
# فایل‌هایی که باید در LFS ردیابی شوند. آزمون‌های مسیر عبارتند از "**.extname" برای
# پسوند فایل‌ها، و "path:under/some/directory" برای پیشوند مسیر. هر دو
# نسبت به ریشهٔ مخزن سنجیده می‌شوند.
# اندازهٔ فایل را می‌توان با مجموعه فایل‌های "size()" آزمود، و آزمون‌ها را می‌توان
# با عملگرهای fileset ترکیب کرد. (ببینید: "hg help filesets.operators".)
#
# چند مثال:
# - all()                       # همه‌چیز
# - none()                      # هیچ‌چیز
# - size(">20MB")               # بزرگ‌تر از 20MB
# - !**.txt                     # هر چیزی غیر از فایل‌های *.txt
# - **.zip | **.tar.gz | **.7z  # برخی انواع فایل‌های فشرده
# - path:bin                    # فایل‌های زیرمسیر "bin" در ریشهٔ پروژه
# - (**.php & size(">2MB")) | (**.js & size(">5MB")) | **.tar.gz
#     | (path:bin & !path:/bin/README) | size(">1GB")
# (پیش‌فرض: none())
#
# در صورت وجود یک فایل ردیابی‌شدهٔ '.hglfs' این مورد نادیده گرفته می‌شود، و این تنظیم
# در نهایت منسوخ و حذف خواهد شد.
track = size(">10M")
# تعداد دفعات تلاش مجدد قبل از انصراف از انتقال یک شیء
retry = 5
# دایرکتوری محلی برای ذخیره فایل‌های lfs جهت اشتراک‌گذاری در cloneهای محلی.
# در صورت تنظیم نشدن، میان‌حافظه در مکانی وابسته به سیستم‌عامل قرار می‌گیرد.
usercache = /path/to/global/cache

ارسال داده‌های ui.log() به یک زیرپردازش (آزمایشی)

این افزونه به شما امکان می‌دهد برای هر رویداد ui.log() یک دستور شل تعیین کنید و تمام آرگومان‌های باقی‌مانده را به‌عنوان متغیرهای محیطی به آن دستور بفرستید.

آرگومان‌های مکانی یک پیام لاگ می‌سازند که در متغیر محیطی MSG1 ارسال می‌شود. هر آرگومان کلیدواژه‌ای به‌صورت یک متغیر OPT_UPPERCASE_KEY تنظیم می‌شود (بنابراین کلید با حروف بزرگ نوشته شده و پیشوند OPT_ به آن اضافه می‌شود). نام رویداد اصلی در متغیر محیطی EVENT ارسال شده و شناسه فرایند برنامه mercurial در HGPID قرار می‌گیرد.

بنابراین با فرض فراخوانی ui.log('foo', 'bar %s ', 'baz', spam='eggs')، اسکریپتی که برای رویداد `foo پیکربندی شده است می‌تواند انتظار محیطی با MSG1=bar baz و OPT_SPAM=eggs را داشته باشد.

اسکریپت‌ها در بخش [logtoprocess] پیکربندی می‌شوند و هر کلید، نام یک رویداد است. برای مثال:

[logtoprocess]
commandexception = echo "$MSG1" > /var/log/mercurial_exceptions.log

پیام هشدار و traceback هر فراخوانی ناموفق دستور را ثبت خواهد کرد.

اسکریپت‌ها به‌صورت ناهمگام به‌عنوان پردازش‌های دیمن (daemon) مستقل اجرا می‌شوند؛ mercurial تضمین نمی‌کند که آن‌ها به‌طور تمیز خارج شوند.

مدیریت پشته‌ای از وصله‌ها

این افزونه به شما امکان می‌دهد با پشته‌ای از وصله‌ها در یک مخزن Mercurial کار کنید. این افزونه دو پشته از وصله‌ها را مدیریت می‌کند - تمام وصله‌های شناخته‌شده، و وصله‌های اعمال‌شده (زیرمجموعه‌ای از وصله‌های شناخته‌شده).

وصله‌های شناخته‌شده به‌صورت فایل‌های وصله در دایرکتوری .hg/patches نمایش داده می‌شوند. وصله‌های اعمال‌شده هم فایل‌های وصله و هم changeset هستند.

وظایف رایج (برای جزئیات بیشتر از hg help COMMAND استفاده کنید):

create new patch                          qnew
import existing patch                     qimport
print patch series                        qseries
print applied patches                     qapplied
add known patch to applied stack          qpush
remove patch from applied stack           qpop
refresh contents of top applied patch     qrefresh

به‌طور پیش‌فرض، mq در صورت لزوم به‌طور خودکار از وصله‌های git استفاده می‌کند تا از دست رفتن تغییرات حالت فایل، سوابق رونوشت، فایل‌های باینری یا ایجاد و حذف فایل‌های خالی جلوگیری شود. این رفتار را می‌توان با تنظیم زیر پیکربندی کرد:

[mq]
git = auto/keep/yes/no

اگر روی 'keep' تنظیم شود، mq از پیکربندی بخش [diff] پیروی کرده در حالی که وصله‌های git موجود را هنگام qrefresh حفظ می‌کند. اگر روی 'yes' یا 'no' تنظیم شود، mq بخش [diff] را نادیده گرفته و همیشه وصله‌های git یا معمولی تولید می‌کند که در حالت دوم ممکن است داده‌ها از دست بروند.

ممکن است مطلوب باشد که changesetهای mq در فاز secret نگه داشته شوند (ببینید: hg help phases)، که می‌توان آن را با تنظیم زیر فعال کرد:

[mq]
secret = True

شما به‌طور پیش‌فرض یک صف وصله به نام «patches» را مدیریت خواهید کرد. می‌توانید با دستور hg qqueue صف‌های وصله مستقل دیگری ایجاد کنید.

اگر دایرکتوری کاری حاوی فایل‌های کامیت‌نشده باشد، qpush ،qpop و qgoto فوراً لغو می‌شوند. اگر از -f/--force استفاده شود، تغییرات نادیده گرفته می‌شوند. تنظیم:

[mq]
keepchanges = True

باعث می‌شود آن‌ها طوری رفتار کنند که گویی --keep-changes ارسال شده است، و تغییرات محلی بدون تداخل حفظ خواهند شد. در صورت ارسال گزینه‌های ناسازگار مانند -f/--force یا --exact، این تنظیم نادیده گرفته می‌شود.

این افزونه در گذشته دستور strip را ارائه می‌داد. این دستور اکنون در افزونه strip قرار دارد..SS دستورها (Commands)

کلون کردن هم‌زمان مخزن اصلی و مخزن وصله:

hg qclone [OPTION]... SOURCE [DEST]

اگر مبدأ محلی باشد، در مقصد هیچ وصله‌ای اعمال نخواهد شد. اگر مبدأ دوردست باشد، این دستور نمی‌تواند اعمال شدن وصله‌ها در مبدأ را بررسی کند، بنابراین نمی‌تواند تضمین کند که در مقصد هیچ وصله‌ای اعمال نشده باشد. اگر مخزن دوردستی را کلون می‌کنید، از پیش مطمئن شوید که هیچ وصله‌ای بر روی آن اعمال نشده است.

مخزن وصلهٔ مبدأ به‌طور پیش‌فرض در <src>/.hg/patches جستجو می‌شود. برای تغییر آن از -p <url> استفاده کنید.

دایرکتوری وصله باید یک مخزن تودرتوی Mercurial باشد، همان‌طور که توسط hg init --mq ایجاد می‌شود.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

استفاده از پروتکل pull برای کپی کردن فراداده
-U, --noupdate
دایرکتوری‌های کاری جدید به‌روزرسانی نشوند
استفاده از انتقال فشرده‌نشده (سریع در شبکه محلی / LAN)
مکان مخزن وصلهٔ مبدأ
مشخص کردن دستور ssh مورد استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
عدم تأیید گواهی سرور (نادیده گرفتن پیکربندی web.cacerts)

راه‌اندازی یک مخزن صف جدید (منسوخ‌شده):

hg qinit [-c]

مخزن صف به‌طور پیش‌فرض نسخه‌بندی‌نشده است. اگر -c/--create-repo مشخص شود، qinit یک مخزن تودرتوی جداگانه برای وصله‌ها ایجاد خواهد کرد (همچنین qinit -c می‌تواند بعداً برای تبدیل یک مخزن وصلهٔ نسخه‌بندی‌نشده به یک مخزن نسخه‌بندی‌شده اجرا شود). می‌توانید از qcommit برای ثبت تغییرات در این مخزن صف استفاده کنید.

این دستور منسوخ شده است. بدون -c، عملکرد آن به‌طور ضمنی توسط سایر دستورهای مربوطه انجام می‌شود. با -c، به‌جای آن از hg init --mq استفاده کنید.

گزینه‌ها:

-c, --create-repo
ایجاد مخزن صف

ثبت تغییرات در مخزن صف (منسوخ‌شده):

hg qcommit [OPTION]... [FILE]...

این دستور منسوخ شده است؛ به جای آن از hg commit --mq استفاده کنید.

گزینه‌ها:

-A, --addremove
علامت‌گذاری فایل‌های جدید/ناموجود به عنوان اضافه‌شده/حذف‌شده پیش از ثبت
--close-branch
علامت‌گذاری سرشاخه به عنوان بسته‌شده
اصلاح والد دایرکتوری کاری
-s, --secret
استفاده از فاز محرمانه برای ثبت
استفاده از فاز پیش‌نویس برای ثبت
-e, --edit
فراخوانی ویرایشگر برای پیام‌های ثبت
--force-close-branch
بستن اجباری شاخه از یک مجموعه تغییرات (changeset) غیر سرشاخه (پیشرفته)
-i, --interactive
استفاده از حالت تعاملی
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
استفاده از متن به عنوان پیام ثبت
خواندن پیام ثبت از فایل
ثبت تاریخ مشخص‌شده به عنوان تاریخ ثبت
ثبت کاربر مشخص‌شده به عنوان ثبت‌کننده
پیمایش بازگشتی در زیرمخزن‌ها

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد

نام‌های مستعار: qci

ایجاد یک وصله جدید:

hg qnew [-e] [-m TEXT] [-l FILE] PATCH [FILE]...

دستور qnew یک وصله جدید در بالای وصله‌ای که در حال حاضر اعمال شده است (در صورت وجود) ایجاد می‌کند. وصله با تمام تغییرات ثبت‌نشده در دایرکتوری کاری مقداردهی اولیه می‌شود. همچنین می‌توانید از -I/--include، -X/--exclude و/یا فهرستی از فایل‌ها پس از نام وصله استفاده کنید تا تنها تغییرات فایل‌های منطبق به وصله جدید افزوده شوند و باقی موارد به عنوان تغییرات اعمال‌نشده باقی بمانند.

گزینه‌های -u/--user و -d/--date می‌توانند به ترتیب برای تنظیم کاربر و تاریخ (مشخص‌شده) استفاده شوند. گزینه‌های -U/--currentuser و -D/--currentdate کاربر را روی کاربر فعلی و تاریخ را روی تاریخ فعلی تنظیم می‌کنند.

گزینه‌های -e/--edit، -m/--message یا -l/--logfile سرآیند وصله و همچنین پیام کامیت را مشخص می‌کنند. اگر هیچ‌کدام تعیین نشوند، سرآیند خالی بوده و پیام کامیت '[mq]: PATCH' خواهد بود.

از گزینه -g/--git برای نگه‌داشتن وصله در قالب تفاضل گسترش‌یافته گیت (git extended diff) استفاده کنید. برای اطلاعات بیشتر در مورد دلیل اهمیت این موضوع جهت حفظ تغییرات مجوزها و اطلاعات رونوشت/تغییر نام، مبحث راهنمای diffs را مطالعه کنید.

در صورت ایجاد موفقیت‌آمیز وصله جدید، مقدار 0 بازگردانده می‌شود.

گزینه‌ها:

-e, --edit
فراخوانی ویرایشگر برای پیام‌های کامیت
-f, --force
وارد کردن تغییرات کامیت‌نشده (منسوخ‌شده)
استفاده از قالب تفاضل گسترش‌یافته گیت (git extended diff)
-U, --currentuser
افزودن "From: <current user>" به وصله
افزودن "From: <USER>" به وصله
افزودن "Date: <current date>" به وصله
افزودن "Date: <DATE>" به وصله
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
استفاده از متن به عنوان پیام کامیت
خواندن پیام کامیت از فایل

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SS qrefresh

به‌روزرسانی وصله فعلی:

hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]...

اگر هرگونه الگوی فایل ارائه شود، وصله تازه‌سازی‌شده تنها شامل تغییراتی خواهد بود که با آن الگوها مطابقت دارند؛ باقی تغییرات در دایرکتوری کاری باقی خواهند ماند.

اگر -s/--short مشخص شود، فایل‌هایی که هم‌اکنون در وصله قرار دارند دقیقاً مانند فایل‌های منطبق تازه‌سازی می‌شوند و در وصله باقی می‌مانند.

اگر -e/--edit مشخص شود، Mercurial ویرایشگر پیکربندی‌شده شما را باز خواهد کرد تا پیامی وارد کنید. در صورتی که qrefresh ناموفق باشد، نسخه پشتیبانی از پیام خود را در .hg/last-message.txt خواهید یافت.

دستورهای hg add/remove/copy/rename طبق معمول کار می‌کنند، با این حال ممکن است بخواهید برای ردگیری رونوشت‌ها و تغییر نام‌ها از وصله‌های سبک git (-g/--git یا [diff] git=1) استفاده کنید. برای اطلاعات بیشتر درباره قالب git diff، موضوع راهنمای diffs را ببینید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-e, --edit
فراخوانی ویرایشگر برای پیام‌های کامیت
استفاده از قالب diff گسترش‌یافته git
-s, --short
تازه‌سازی تنها فایل‌هایی که از قبل در وصله هستند و فایل‌های مشخص‌شده
-U, --currentuser
افزودن/به‌روزرسانی فیلد نویسنده در وصله با کاربر فعلی
افزودن/به‌روزرسانی فیلد نویسنده در وصله با کاربر داده‌شده
افزودن/به‌روزرسانی فیلد تاریخ در وصله با تاریخ فعلی
افزودن/به‌روزرسانی فیلد تاریخ در وصله با تاریخ داده‌شده
شامل‌کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی‌کردن نام‌های منطبق با الگوهای داده‌شده
استفاده از متن به عنوان پیام کامیت
خواندن پیام کامیت از فایل

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد

ادغام وصله‌های نام‌برده در وصله فعلی:

hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH...

وصله‌ها نباید هنوز اعمال شده باشند. هر وصله به ترتیبی که ارائه شده به صورت متوالی روی وصله فعلی اعمال خواهد شد. اگر همه وصله‌ها با موفقیت اعمال شوند، وصله فعلی با وصله تجمیعی جدید تازه‌سازی می‌شود و وصله‌های ادغام‌شده حذف خواهند شد. با -k/--keep، فایل‌های وصله ادغام‌شده پس از آن حذف نمی‌شوند.

سرآیند هر وصله ادغام‌شده به سرآیند وصله فعلی الحاق می‌شود و با یک سطر شامل * * * جدا خواهد شد.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-e, --edit
فراخوانی ویرایشگر برای پیام‌های کامیت
-k, --keep
نگه‌داشتن فایل‌های وصله ادغام‌شده
استفاده از متن به عنوان پیام کامیت
خواندن پیام کامیت از فایل

نمایش وصله‌های از قبل اعمال‌شده:

hg qapplied [-1] [-s] [PATCH]

در صورت موفقیت 0 بازمی‌گرداند.

گزینه‌ها:

-1, --last
تنها وصله اعمال‌شده قبلی را نشان می‌دهد
-s, --summary
چاپ خط اول سرآیند وصله

حذف وصله‌ها از صف:

hg qdelete [-k] [PATCH]...

وصله‌ها نباید اعمال شده باشند، و مشخص کردن دست‌کم یک وصله الزامی است. شناسه‌های دقیق وصله‌ها باید ارائه شوند. با گزینه -k/--keep، فایل‌های وصله در دایرکتوری وصله نگه‌داری می‌شوند.

برای متوقف کردن مدیریت یک وصله و انتقال آن به تاریخچه دائمی، از دستور hg qfinish استفاده کنید.

گزینه‌ها:

-k, --keep
نگه‌داشتن فایل وصله
توقف مدیریت یک بازبینی (منسوخ‌شده)

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد

نام‌های مستعار: qremove qrm

انتقال وصله‌های اعمال‌شده به تاریخچه مخزن:

hg qfinish [-a] [REV]...

با خارج کردن بازبینی‌های مشخص‌شده (متناظر با وصله‌های اعمال‌شده) از کنترل mq و انتقال آن‌ها به تاریخچه عادی مخزن، کار آن‌ها را نهایی می‌کند.

یک محدوده بازبینی یا گزینه -a/--applied را می‌پذیرد. اگر --applied مشخص شده باشد، تمام بازبینی‌های اعمال‌شده mq از کنترل mq خارج می‌شوند. در غیر این صورت، بازبینی‌های داده‌شده باید در ابتدای پشته وصله‌های اعمال‌شده باشند.

این دستور به‌ویژه زمانی مفید است که تغییرات شما در یک مخزن بالادستی (upstream) اعمال شده باشند، یا قصد ارسال (push) تغییرات خود را به بالادست داشته باشید.

در صورت موفقیت 0 بازمی‌گرداند.

گزینه‌ها:

-a, --applied
نهایی کردن تمام مجموعه‌تغییرهای (changesets) اعمال‌شده

اعمال (push) یا واگردانی (pop) وصله‌ها تا قرار گرفتن وصلهٔ مشخص‌شده در بالای پشته:

hg qgoto [OPTION]... PATCH

در صورت موفقیت ۰ بازمی‌گرداند.

گزینه‌ها:

--keep-changes
تحمل تغییرات محلیِ غیرمتداخل
-f, --force
رونویسی روی تمام تغییرات محلی
عدم ذخیرهٔ نسخه‌های پشتیبان فایل‌ها

تنظیم یا نمایش نگه‌بان‌ها (guards) برای یک وصله:

hg qguard [-l] [-n] [PATCH] [-- [+GUARD]... [-GUARD]...]

نگه‌بان‌ها مشخص می‌کنند که آیا یک وصله می‌تواند اعمال شود یا خیر. یک وصلهٔ بدون نگه‌بان همیشه اعمال می‌شود. یک وصله با یک نگه‌بان مثبت ("+foo") تنها در صورتی اعمال می‌شود که دستور hg qselect آن را فعال کرده باشد. یک وصله با یک نگه‌بان منفی ("-foo") در صورتی که دستور hg qselect آن را فعال کرده باشد، هرگز اعمال نمی‌شود.

بدون آرگومان، نگه‌بان‌های فعال کنونی را چاپ می‌کند. با آرگومان، نگه‌بان‌ها را برای وصلهٔ مشخص‌شده تنظیم می‌کند.

نکته
مشخص کردن نگه‌بان‌های منفی اکنون به '--' نیاز دارد.

برای تنظیم نگه‌بان‌ها روی وصله‌ای دیگر:

hg qguard other.patch -- +2.6.17 -stable

در صورت موفقیت ۰ بازمی‌گرداند.

گزینه‌ها:

-l, --list
فهرست کردن تمام وصله‌ها و نگه‌بان‌ها
-n, --none
حذف تمام نگه‌بان‌ها

چاپ سرآیند بالاترین وصله یا وصلهٔ مشخص‌شده:

hg qheader [PATCH]

در صورت موفقیت ۰ بازمی‌گرداند..SS qnext

چاپ نام وصلهٔ بعدی قابل اِعمال:

hg qnext [-s]

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-s, --summary
چاپ خط نخست سرآیند وصله

برداشتن وصلهٔ جاری از پشته:

hg qpop [-a] [-f] [PATCH | INDEX]

بدون آرگومان، بالاترین وصله را از پشته برمی‌دارد. اگر نام یک وصله داده شود، تا زمانی که وصلهٔ نام‌برده در بالای پشته قرار گیرد، به برداشتن وصله‌ها ادامه می‌دهد.

به‌طور پیش‌فرض، اگر دایرکتوری کاری حاوی تغییرات ثبت‌نشده باشد، عملیات لغو می‌شود. با --keep-changes، تنها در صورتی عملیات لغو می‌شود که فایل‌های ثبت‌نشده با فایل‌های وصله‌شده هم‌پوشانی داشته باشند. با -f/--force، از تغییرات ایجادشده در چنین فایل‌هایی نسخهٔ پشتیبان تهیه شده و تغییرات نادیده گرفته می‌شوند.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-a, --all
برداشتن تمام وصله‌ها
نام صف برای برداشتن وصله (منسوخ‌شده)
--keep-changes
تحمل تغییرات محلی بدون تداخل
-f, --force
نادیده گرفتن هرگونه تغییر محلی در فایل‌های وصله‌شده
عدم ذخیرهٔ نسخه‌های پشتیبان فایل‌ها

چاپ نام وصلهٔ اِعمال‌شدهٔ قبلی:

hg qprev [-s]

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-s, --summary
چاپ خط نخست سرآیند وصله

اعمال وصلهٔ بعدی بر روی پشته:

hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]

به‌طور پیش‌فرض، اگر دایرکتوری کاری حاوی تغییرات ثبت‌نشده باشد، عملیات لغو می‌شود. با --keep-changes، تنها در صورتی لغو می‌شود که فایل‌های ثبت‌نشده با فایل‌های وصله‌شده هم‌پوشانی داشته باشند. با -f/--force، از تغییرات ثبت‌نشده نسخهٔ پشتیبان تهیه شده و وصله روی آن‌ها اعمال می‌شود.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

--keep-changes
تحمل تغییرات محلیِ بدون تعارض
-f, --force
اعمال بر روی تغییرات محلی
-e, --exact
اعمال وصلهٔ هدف روی والد ثبت‌شده‌اش
-l, --list
درج نام وصله در متن کامیت
-a, --all
اعمال تمام وصله‌ها
-m, --merge
ادغام از صفی دیگر (منسوخ‌شده)
نام صف ادغام (منسوخ‌شده)
تغییر ترتیب سری وصله‌ها و اعمال تنها همین وصله
ذخیره نکردن نسخه‌های پشتیبان فایل‌ها

مدیریت چندین صف وصله:

hg qqueue [OPTION] [QUEUE]

از جابه‌جایی بین صف‌های وصلهٔ مختلف، و همچنین ایجاد صف‌های وصلهٔ جدید و حذف صف‌های موجود پشتیبانی می‌کند.

حذف نام صف یا مشخص کردن -l/--list، صف‌های ثبت‌شده را نمایش می‌دهد - به‌طور پیش‌فرض صف وصله‌های «normal» ثبت شده است. صف فعال کنونی با «(active)» مشخص خواهد شد. مشخص کردن --active تنها نام صف فعال را چاپ می‌کند.

برای ایجاد یک صف جدید، از -c/--create استفاده کنید. صف به‌طور خودکار فعال می‌شود، مگر در حالتی که وصله‌هایی از صف فعال کنونی روی مخزن اعمال شده باشد؛ در این حالت، صف تنها ایجاد شده و تغییر صف با شکست مواجه خواهد شد.

برای حذف یک صف موجود، از --delete استفاده کنید. شما نمی‌توانید صف فعال کنونی را حذف کنید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-l, --list
فهرست کردن تمام صف‌های موجود
چاپ نام صف فعال
-c, --create
ایجاد صف جدید
تغییر نام صف فعال
حذف ارجاع به صف
حذف صف، و پاک کردن دایرکتوری وصله

تغییر نام یک وصله:

hg qrename PATCH1 [PATCH2]

با یک آرگومان، نام وصلهٔ فعلی را به PATCH1 تغییر می‌دهد. با دو آرگومان، نام PATCH1 را به PATCH2 تغییر می‌دهد.

در صورت موفقیت 0 بازمی‌گرداند.

نام‌های مستعار: qmv

بازیابی وضعیت صف ذخیره‌شده توسط یک بازبینی (منسوخ‌شده):

hg qrestore [-d] [-u] REV

این دستور منسوخ شده است، به‌جای آن از hg rebase استفاده کنید.

گزینه‌ها:

-d, --delete
حذف مدخل ذخیره‌سازی
-u, --update
به‌روزرسانی دایرکتوری کاری صف

ذخیرهٔ وضعیت فعلی صف (منسوخ‌شده):

hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]

این دستور منسوخ شده است، به‌جای آن از hg rebase استفاده کنید.

گزینه‌ها:

-c, --copy
کپی کردن دایرکتوری وصله
نام دایرکتوری کپی
-e, --empty
پاک کردن فایل وضعیت صف
-f, --force
اجبار در کپی
استفاده از متن به‌عنوان پیام ثبت
خواندن پیام ثبت از فایل

تنظیم یا چاپ وصله‌های دارای محافظ برای اعمال (push):

hg qselect [OPTION]... [GUARD]...

از دستور hg qguard برای تنظیم یا چاپ محافظ‌ها (guards) روی وصله استفاده کنید، سپس با استفاده از qselect مشخص کنید که mq از کدام محافظ‌ها استفاده کند. یک وصله در صورتی اعمال (push) خواهد شد که هیچ محافظی نداشته باشد یا یکی از محافظ‌های مثبت آن با محافظ انتخاب‌شدهٔ فعلی مطابقت داشته باشد، اما اگر هر یک از محافظ‌های منفی با محافظ فعلی تطابق داشته باشد اعمال نخواهد شد. برای مثال:

qguard foo.patch -- -stable    (negative guard)
qguard bar.patch    +stable    (positive guard)
qselect stable

این دستور محافظ «stable» را فعال می‌کند. mq وصلهٔ foo.patch را نادیده می‌گیرد (زیرا تطابق منفی دارد) اما bar.patch را اعمال می‌کند (زیرا تطابق مثبت دارد).

بدون آرگومان، محافظ‌های فعال فعلی را چاپ می‌کند. با یک آرگومان، محافظ فعال را تنظیم می‌کند.

برای غیرفعال‌کردن محافظ‌ها از -n/--none استفاده کنید (به آرگومان دیگری نیاز نیست). هنگامی که هیچ محافظی فعال نباشد، وصله‌های دارای محافظ مثبت نادیده گرفته می‌شوند و وصله‌های دارای محافظ منفی اعمال می‌گردند.

دستور qselect می‌تواند محافظ‌های روی وصله‌های اعمال‌شده را تغییر دهد. این دستور به‌طور پیش‌فرض وصله‌های محافظت‌شده را واگردانی (pop) نمی‌کند. از --pop برای واگردانی تا پیش از نخستین وصلهٔ اعمال‌شده‌ای که محافظت نشده است استفاده کنید. از --reapply (که متضمن --pop است) برای اعمال مجدد بعدی تا وصلهٔ کنونی استفاده کنید، اما وصله‌های دارای محافظ نادیده گرفته می‌شوند.

از -s/--series برای چاپ فهرستی از تمام محافظ‌های موجود در فایل series استفاده کنید (به آرگومان دیگری نیاز نیست). برای اطلاعات بیشتر از -v استفاده کنید.

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-n, --none
غیرفعال‌کردن تمام محافظ‌ها
-s, --series
فهرست‌کردن تمام محافظ‌ها در فایل series
واگردانی (pop) تا پیش از نخستین وصلهٔ اعمال‌شدهٔ محافظت‌شده
واگردانی (pop)، سپس اعمال مجدد وصله‌ها

چاپ کامل فایل series:

hg qseries [-ms]

در صورت موفقیت 0 را برمی‌گرداند.

گزینه‌ها:

-m, --missing
چاپ وصله‌هایی که در series نیستند
-s, --summary
چاپ سطر نخست سرآیند (header) وصله

چاپ نام وصلهٔ فعلی:

hg qtop [-s]

در صورت موفقیت ۰ برمی‌گرداند.

گزینه‌ها:

-s, --summary
چاپ اولین خط سرآیند وصله

چاپ وصله‌هایی که هنوز اعمال نشده‌اند:

hg qunapplied [-1] [-s] [PATCH]

در صورت موفقیت ۰ برمی‌گرداند.

گزینه‌ها:

-1, --first
تنها نمایش اولین وصله
-s, --summary
چاپ اولین خط سرآیند وصله

تفاضل (diff) وصلهٔ فعلی و تغییرات پس از آن:

hg qdiff [OPTION]... [FILE]...

یک تفاضل (diff) را نمایش می‌دهد که شامل وصلهٔ فعلی و همچنین هرگونه تغییری است که از زمان آخرین بازآوری (refresh) در دایرکتوری کاری ایجاد شده است (در نتیجه نشان می‌دهد که وصلهٔ فعلی پس از یک qrefresh به چه شکل در خواهد آمد).

اگر فقط می‌خواهید تغییرات اعمال‌شده از آخرین qrefresh را ببینید، از hg diff استفاده کنید، یا اگر می‌خواهید تغییرات ایجاد شده توسط وصلهٔ فعلی را بدون احتساب تغییرات پس از qrefresh مشاهده کنید، از hg export qtip استفاده نمایید.

در صورت موفقیت ۰ برمی‌گرداند.

گزینه‌ها:

-a, --text
رفتار با تمام فایل‌ها به عنوان فایل متنی
استفاده از قالب تفاضل گسترش‌یافتهٔ git (پیش‌فرض: diff.git)
تولید تفاضل‌های باینری در حالت git (پیش‌فرض)
حذف تاریخ‌ها از سرآیندهای diff
حذف پیشوندهای a/ و b/ از نام فایل‌ها
-p, --show-function
نمایش تابعی که هر تغییر در آن واقع شده است (پیش‌فرض: diff.showfunc)
تولید تفاضلی که تغییرات را خنثی (undo) می‌کند
نادیده گرفتن فاصله‌های خالی هنگام مقایسهٔ خطوط
-b, --ignore-space-change
نادیده گرفتن تغییرات در تعداد فاصله‌های خالی
-B, --ignore-blank-lines
نادیده گرفتن تغییراتی که تمامی خطوط آن‌ها خالی است
نادیده گرفتن فاصله‌های خالی در انتهای خط (EOL)
تعداد خطوط متنی پیرامون (context) برای نمایش
خروجی خلاصه‌ای از تغییرات به سبک diffstat
تولید تفاضل‌ها به صورت نسبی با زیردایرکتوری
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده

گزینه‌های نشان‌دار با [+] را می‌توان چندین بار مشخص کرد.SS وارد کردن/صادر کردن تغییرات (Change import/export)

وارد کردن یک وصله یا changeset موجود:

hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... [FILE]...

وصله بعد از آخرین وصله اعمال‌شده در سری (series) درج می‌شود. اگر هیچ وصله‌ای اعمال نشده باشد، qimport وصله را به ابتدای سری اضافه می‌کند.

وصله همان نام فایل منبع خود را خواهد داشت، مگر اینکه با -n/--name نام جدیدی به آن بدهید.

می‌توانید یک وصله موجود در دایرکتوری وصله را با پرچم -e/--existing ثبت کنید.

با استفاده از -f/--force، وصله موجود با همان نام بازنویسی خواهد شد.

یک changeset موجود می‌تواند با -r/--rev تحت کنترل mq قرار گیرد (برای نمونه، qimport --rev . -n patch بازبینی فعلی را تحت کنترل mq قرار می‌دهد). با -g/--git، وصله‌های واردشده با --rev از قالب git diff استفاده خواهند کرد. برای کسب اطلاعات درباره اینکه چرا این موضوع برای حفظ اطلاعات تغییر نام/رونوشت و تغییرات مجوزها اهمیت دارد، به مبحث راهنمای diffs مراجعه کنید. از hg qfinish برای حذف changesetها از کنترل mq استفاده کنید.

برای وارد کردن یک وصله از ورودی استاندارد، علامت - را به عنوان فایل وصله ارسال کنید. هنگام وارد کردن از ورودی استاندارد، نام وصله باید با استفاده از پرچم --name مشخص شود.

برای وارد کردن یک وصله موجود هم‌زمان با تغییر نام آن:

hg qimport -e existing-patch -n new-name

در صورت موفقیت‌آمیز بودن وارد کردن، مقدار 0 را برمی‌گرداند.

گزینه‌ها:

-e, --existing
وارد کردن فایل موجود در دایرکتوری وصله
نام فایل وصله
-f, --force
بازنویسی فایل‌های موجود
قرار دادن بازبینی‌های موجود تحت کنترل mq
استفاده از قالب diff گسترش‌یافته git
-P, --push
اجرای qpush پس از وارد کردن

گزینه مشخص‌شده با [+] را می‌توان چندین بار مشخص کرد

ایجاد کلون‌هایی که داده‌های تاریخچه را برای زیرمجموعه‌ای از فایل‌ها دریافت می‌کنند (آزمایشی)

تنها سرور کل مخزن را نگهداری می‌کند: کلون‌های narrow تاریخچه کامل تعداد کمتری از فایل‌ها را در مخزن خود خواهند داشت..SS مفاهیم (Concepts)

افزونهٔ narrow تعدادی از مفاهیم را معرفی می‌کند که در ادامه به تفصیل شرح داده شده‌اند.

یک شکل (shape) برای تعریف مجموعه‌ای از مسیرها جهت در نظر گرفتن برای کلاینت‌های سرور narrow استفاده می‌شود؛ و این کار را در تمام طول تاریخچه انجام می‌دهد، صرف‌نظر از وضعیت این فایل‌ها در سرشاخه‌های (heads) مخزن (برای مثال حذف شده باشند).

تا نسخهٔ Mercurial 7.2، تنها دامنهٔ محدودی از تمامی ویژگی‌های برنامه‌ریزی‌شدهٔ مرتبط با شکل پیاده‌سازی شده است. ارتباط مستقیم با شکل‌ها تنها توسط مدیران سرور انجام می‌گیرد. از آن‌ها می‌توان برای تولید narrowspecها (که توسط کلاینت‌ها استفاده می‌شوند) و ساخت clonebundleهای جریانی narrow استفاده کرد.

این بدان معناست که تا نسخهٔ Mercurial 7.2، کلاینت‌ها هیچ شناختی از شکل‌ها ندارند و برای استفاده از یک clonebundle جریانی برای شکلی مشخص، باید مجموعه الگوهای narrow توسط مدیران سرور در اختیار آن‌ها قرار گیرد:

$ hg clone server --narrow --narrowspec NARROW_SPEC_FILE

هر شکل با یک مجموعهٔ نرمال‌سازی‌شده و کمینه از مسیرهای گنجانده‌شده (included) و مستثنی‌شده (excluded) در store مخزن مطابقت دارد. این نرمال‌سازی تضمین می‌کند که بتوانیم یک اثر انگشت (fingerprint) استخراج کنیم؛ به این معنی که دو شکل با اثر انگشت یکسان، با مجموعه مسیرهای یکسانی مطابقت دارند.

بررسی اثر انگشت یک کلون narrow را می‌توان با اجرای دستور زیر انجام داد:

$ hg admin::narrow-client --store-fingerprint

در حال حاضر، ما پایداری اثر انگشت‌ها را تضمین نمی‌کنیم. پیش از آنکه شکل‌ها را از حالت آزمایشی خارج کنیم، طرحی برای نسخه‌بندی اثر انگشت خواهیم داشت تا امکان تغییرات در آینده بدون ایجاد سردرگمی فراهم شود.

شاردها در سمت سرور برای تکه‌تکه کردن store به کار می‌روند. هر شارد به‌صورت مجموعه‌ای از مسیرهایی که شامل می‌شود تعریف می‌شود: فایل‌ها یا دایرکتوری‌هایی که با هر مسیر مطابقت داشته باشند، در آن شارد گنجانده خواهند شد. علاوه بر این، شاردها مانعة‌الجمع (mutually exclusive) هستند، بدین معنی که یک فایل مشخص در هر لحظه تنها می‌تواند در یک شارد و فقط در یک شارد قرار گیرد. هنگامی که مسیر یک شارد با یک دایرکتوری مطابقت دارد، آن شارد شامل تمام فایل‌های موجود در درخت آن دایرکتوری خواهد بود، به جز فایل‌هایی که با یک شارد تو در توی عمیق‌تر مطابقت داشته باشند.

با فرض store زیر، که تمامی فایل‌های شناخته‌شده در طول تاریخچهٔ مخزن را نشان می‌دهد:

.
├── file1
├── file2
└── foo
    └── bar
        ├── baz
        │   ├── file1
        │   └── file2
        └── confidential
            ├── confidential-file1
            └── confidential-file2

می‌توان شاردهای زیر را تعریف کرد:

* ``foo``، که شامل ``foo`` است
* ``foo.confidential``، که شامل ``foo/bar/confidential`` است

این بدان معنا خواهد بود که شارد foo شامل موارد زیر است:

* ``foo/bar/baz/file1``
* ``foo/bar/baz/file2``

و شارد foo.confidential شامل موارد زیر است:

* ``foo/bar/confidential/confidential-file1``
* ``foo/bar/confidential/confidential-file2``

در این مثال، file1 و file2 در هیچ شارد تعریف‌شدهٔ صریحی قرار ندارند. در نتیجه، آن‌ها در شارد ضمنی base قرار می‌گیرند.

توجه به این نکته مهم است که افزودن یک شارد جدید (برای مثال شاردی که شامل file1 و file2 باشد)، مسیرهای آن را از هر شاردی که پیش‌تر شامل آن‌ها بوده است حذف می‌کند (در این مورد، تنها base).

در سمت سرور، شاردها برای تعریف شکل‌ها استفاده می‌شوند که مجموعه‌هایی از شاردها هستند. هر شکل، شاردهایی را که شامل می‌شود تعریف می‌کند و در نتیجه محتویات تمامی شاردهای دیگر را مستثنی می‌سازد.

برای ساده‌سازی ایجاد شکل‌ها، می‌توانیم با تعریف وابستگی‌های صریح بین شاردها، آن‌ها را با یکدیگر ترکیب کنیم. در مثال بالا، می‌توانیم یک foo.full تعریف کنیم (که خودش نیازی به تعریف هیچ مسیری ندارد)، اما به هر دوی foo و foo.confidential نیاز دارد، که در نتیجه شاردی با زیردرخت کامل store مربوط به foo در اختیار ما می‌گذارد.

توجه داشته باشید که مجموعه مسیرها در رونوشت کاری (working copy) فعلی ممکن است تنها زیرمجموعه‌ای از store باشد. در این مثال، می‌توان تصور کرد که foo/bar/confidential-module به فایل‌های موجود در foo/bar/confidential تقسیم شده و از رونوشت کاری حذف شده است.

علاوه بر شارد ضمنی base، شارد ضمنی .hg-files نیز وجود دارد که شامل مسیرهای ویژه‌ای است که توسط Mercurial استفاده می‌شوند:

* ``.hgignore``
* ``.hgtags``
* ``.hgsub``
* ``.hgsubstate``

این شارد به‌طور خودکار در هر Shape گنجانده می‌شود تا اطمینان حاصل شود که Mercurial داده‌های لازم برای کار روی هر بازبینی (revision) را در اختیار دارد..SS "Narrowspec (قدیمی)"

نکته: narrowspec در شکل فعلی خود، از Mercurial 7.2، طی چند نسخه آینده Mercurial به نفع سامانه Shape به تدریج کنار گذاشته خواهد شد. بخش Shapes در برابر narrowspec در ادامه را ببینید.

narrowspec یک پیکربندی سمت کلاینت است که از عبارت‌هایی برای مطابقت با فایل‌ها و/یا پوشه‌های راه‌دور که باید به کلاینت واکشی (pull) شوند تشکیل شده است. narrowspec دارای عبارت‌های include و exclude است که در آن موارد exclude همواره بر include اولویت دارند: بدین معنی که اگر فایلی با یک عبارت exclude مطابقت داشته باشد، حتی در صورت مطابقت با یک عبارت include نیز مستثنی خواهد شد. مستثنی کردن فایل‌هایی که هرگز شامل نشده بودند هیچ تأثیری ندارد.

هر مدخل شامل‌شده یا مستثنی‌شده در قالب شرح داده‌شده در hg help patterns است، اما فقط می‌تواند از path: یا rootfilesin: استفاده کند، مگر هنگام استفاده از Shard و Shape که تنها می‌توانید از path: استفاده کنید.

narrowspec در سال ۲۰۱۸ در کنار افزونه آزمایشی narrow معرفی شد. این قابلیت به کلاینت امکان می‌داد دقیقاً آنچه را که از سرور می‌خواهد انتخاب کند، و سرور صرفاً با الگوهایی که کلاینت درخواست می‌کرد همراهی می‌نمود.

مگر اینکه این انعطاف‌پذیری در آینده برای کسی واقعاً مهم شود، رویکرد فعلی به سمت منسوخ کردن استفاده از narrowspec و حذف کامل پشتیبانی از آن در نسخه‌های بعدی به نفع store shapes است.

در اینجا مزایای store shapes آمده است:

* امکان تعریف clonebundles برای الگوهای معمول
* امکان تو در تو کردن و ترکیب کلی includeها و excludeها
* امکان تولید اثرانگشت (fingerprint) برای الگوهای معادل
* امکان الزام توافق سرور و کلاینت روی الگوها
* کلاینت‌ها از تغییرات روی سرور آگاه شده و الگوهایشان نامعتبر می‌شود
* امکان ساخت یک سامانه دسترسی قوی بر روی store shapes
* حل برخی از مشکلات قدیمی (مانند تجزیه CLI)

برخی از این موارد می‌توانستند (و قبلاً نیز شده‌اند) بر روی پیاده‌سازی اولیه سوار شوند، اما به دستاورد چندانی نمی‌رسیدیم.

در Mercurial 7.2، فایل .hg/store/server-shapes یک فایل TOML است که باید مستقیماً توسط مدیران سرور narrow ایجاد و ویرایش شود.

هشدار: استفاده از دستور اختصاصی hg برای ویرایش پیکربندی shapes در نسخه‌های آتی، به محض اینکه چنین دستوری وجود داشته باشد، اجباری خواهد شد؛ زیرا تغییر shapes می‌تواند منجر به خرابی (گاهی غافلگیرکننده) کلاینت شود.

قالب فعلی (آزمایشی!) به شرح زیر است:

* ``version`` (الزامی): مقدار آن باید ``0`` باشد
* ``shards`` (الزامی): فهرستی از <shardconfig>
* <shardconfig>:
  * ``name`` (الزامی): نام رسمی (canonical) برای این shard.
  * ``paths`` (اختیاری): فهرستی از مسیرهای UTF8 مرتبط با این shard،
      نسبت به ریشه مخزن.
  * ``requires`` (اختیاری): فهرستی از نام‌های shardهایی که این
      shard به آن‌ها وابسته است.
  * ``shape`` (اختیاری): اگر ``true`` باشد، این یک shape قابل دسترسی برای کاربر است.

محدودیت‌ها:

* نام‌های shard باید درون پیکربندی یکتا باشند
* نام‌های shard تنها باید شامل بایت‌هایی باشند که حروف و ارقام کوچک
  ascii، نقطه یا خط پیوند هستند
* ``full``، ``base`` و ``.hg-files`` نام‌های رزروشده shard هستند
* هر <shardconfig> باید یکی از ``requires`` یا ``paths``، یا هر دو را تعریف کند
* وابستگی‌های shard نمی‌توانند یک چرخه تشکیل دهند
* یک مسیر معین نمی‌تواند در بیش از یک shard قرار گیرد
* ``paths`` باید فهرستی از مسیرهای UTF8 باشد. پشتیبانی از مسیرهای غیر UTF8 در
  نسخه‌های آتی از طریق فیلد ``encoded_paths`` اضافه خواهد شد
* ``paths`` باید فهرستی از مسیرهای معتبر از نظر نحو نسبت به ریشه
  مخزن باشد (بدون ``\n``، ``\r`` یا ``\x00``، بدون اسلش‌های متوالی، بدون
  اسلش در ابتدا یا انتها، و غیره)

مثال:

version = 0
[[shards]]
name = "foo"
paths = ["foo", "bar.txt", "baz/nested"]
shape = true
[[shards]]
name = "subproject1"
paths = ["subproject1", "utils/only-this-dir"]
[[shards]]
name = "backend"
paths = ["subproject2"]
requires = ["subproject1"]
shape = true
[[shards]]
name = "full-stack"
requires = ["backend", "foo"]
shape = true

مدیران سرور به‌صورت دستی (و احتمالاً مکرر) clonebundleهای جریانی (streaming) را برای هر shape ایجاد کرده و آن‌ها را همراه با اثر انگشتشان (fingerprint) در مانیفست clonebundle سرور قرار می‌دهند. در نسخه‌های آینده، clonebundleهای غیرجریانی نیز پشتیبانی خواهند شد و فرایند تولید آن‌ها خودکارتر خواهد شد.

می‌توانید بسته‌ها را به روش زیر تولید کنید:
$ hg bundle --all --type"none-v2;stream-v2;shape=my-shape" ../bundle.hg
$ bundlespec="$(hg debugbundle --spec ../bundle.hg)"
$ # [move bundle to static server or to `.hg/bundle-cache` for inline serving]
$ bundleentry="https://static.com/bundle.hg BUNDLESPEC=$bundlespec"
$ # [or use inline SSH clonebundles]
$ bundleentry="peer-bundle-cache://bundle.hg BUNDLESPEC=$bundlespec"
$ echo $bundleentry >> .hg/clonebundles.manifest

می‌توانید الگوهای include و exclude را برای هر shape استخراج کرده و آن‌ها را به‌صورت دستی به کلاینت‌ها بدهید:

$ hg admin::narrow-server --shape-narrow-patterns my-shape
[exclude]
path:foo
path:bar

کلاینت‌ها سپس می‌توانند هنگام انجام یک کلون جریانی باریک (narrow stream clone) از الگوهای مذکور استفاده کنند، که اثر انگشت حاصل از الگوها را با اثر انگشت clonebundleهای سرور تطبیق می‌دهد:

$ hg clone --narrow --narrowspec $NARROWSPECFILE

TODO: توضیح پیکربندی فعلی سمت کلاینت و چگونگی تکامل احتمالی آن (ذخیره shape، اثر انگشت و غیره).

نمایش یا تغییر narrowspec جاری:

hg tracked [OPTIONS]... [REMOTE]

بدون آرگومان، ورودی‌های narrowspec جاری را خط به خط نمایش می‌دهد. هر خط به‌ترتیب با پیشوند 'I' یا 'X' برای الگوهای گنجانده‌شده (included) یا مستثنی‌شده (excluded) مشخص می‌شود.

مشخصهٔ narrowspec شامل عبارت‌هایی برای تطبیق با فایل‌ها و/یا دایرکتوری‌های دوردست است که باید به کلاینت شما pull شوند. مشخصهٔ narrowspec دارای عبارت‌های include و exclude است، به‌طوری که exclude همیشه بر include اولویت دارد: بدین معنا که اگر فایلی با یک عبارت exclude تطبیق یابد، حتی در صورت تطبیق با یک عبارت include نیز کنار گذاشته خواهد شد. مستثنی کردن فایل‌هایی که هرگز include نشده بودند، هیچ اثری ندارد.

هر ورودی include یا exclude به قالبی است که در 'hg help patterns' شرح داده شده است.

گزینه‌ها به شما امکان می‌دهند عبارت‌های گنجانده‌شده و مستثنی‌شده را اضافه یا حذف کنید.

در صورت تعیین --clear، تمام includeها و excludeهای قبلی نادیده گرفته شده (DROPPED) و با موارد جدید مشخص‌شده در --addinclude و --addexclude جایگزین می‌شوند. اگر --clear بدون هیچ گزینهٔ دیگری مشخص شود، narrowspec خالی خواهد بود و با هیچ فایلی تطبیق نخواهد یافت.

در صورت تعیین --auto-remove-includes، آن دسته از includeهایی که با هیچ‌یک از فایل‌های تغییریافته توسط کامیت‌های محلی قابل مشاهده فعلی (مواردی که با مخزن دوردست به اشتراک گذاشته نشده‌اند) تطبیق ندارند، به مجموعه includeهای مشخص‌شده صریح برای حذف اضافه خواهند شد.

گزینهٔ --import-rules مسیر فایلی حاوی قوانین را می‌پذیرد که به شما امکان می‌دهد قوانین --addinclude و --addexclude را به‌صورت دسته‌جمعی اضافه کنید. همانند سایر سوئیچ‌های include و exclude، تغییرات بلافاصله اعمال می‌شوند.

گزینه‌ها:

مسیرهای جدید برای گنجاندن (include)
مسیرهای قدیمی که دیگر نباید شامل شوند
انتخاب خودکار includeهای استفاده‌نشده برای حذف
مسیرهای جدید برای مستثنی کردن (exclude)
وارد کردن narrowspecها از یک فایل
مسیرهای قدیمی که دیگر نباید مستثنی شوند
تعیین جایگزینی narrowspec موجود
--force-delete-local-changes
اجبار به حذف تغییرات محلی هنگام محدودسازی (narrowing)
پشتیبان‌گیری از تغییرات محلی هنگام محدودسازی (پیش‌فرض: True)
--update-working-copy
به‌روزرسانی نسخه کاری (working copy) در صورت تغییر مخزن ذخیره‌سازی
مشخص کردن دستور ssh برای استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
عدم بررسی اعتبار گواهی سرور (نادیده گرفتن پیکربندی web.cacerts)

گزینه‌های نشانه‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SS notify

قلاب‌هایی برای ارسال اعلان‌های پوش (push) ایمیلی

این افزونه قلاب‌هایی را برای ارسال اعلان‌های ایمیلی هنگام ارسال یا دریافت مجموعه‌تغییرها (changesets) توسط مخزن محلی پیاده‌سازی می‌کند.

ابتدا افزونه را همان‌طور که در hg help extensions توضیح داده شده است فعال کنید، و قلابی را که می‌خواهید اجرا شود ثبت نمایید. قلاب‌های incoming و changegroup هنگام دریافت مجموعه‌تغییرها اجرا می‌شوند، در حالی که قلاب‌های outgoing برای مجموعه‌تغییرهای ارسال‌شده به مخزنی دیگر هستند:

[hooks]
# یک ایمیل برای هر مجموعه‌تغییر دریافتی
incoming.notify = python:hgext.notify.hook
# یک ایمیل برای تمام مجموعه‌تغییرهای دریافتی
changegroup.notify = python:hgext.notify.hook
# یک ایمیل برای تمام مجموعه‌تغییرهای ارسالی
outgoing.notify = python:hgext.notify.hook

این کار قلاب‌ها را ثبت می‌کند. برای فعال‌سازی اعلان‌ها، مشترکان باید به مخازن اختصاص داده شوند. بخش [usersubs] چندین مخزن را به یک دریافت‌کنندهٔ مشخص نگاشت می‌کند. بخش [reposubs] چندین دریافت‌کننده را به یک مخزن منفرد نگاشت می‌کند:

[usersubs]
# کلید ایمیل مشترک است، مقدار فهرستی از الگوهای مخزن است که با کاما جدا شده‌اند
user@host = pattern
[reposubs]
# کلید الگوی مخزن است، مقدار فهرستی از ایمیل‌های مشترکان است که با کاما جدا شده‌اند
pattern = user@host

یک pattern (الگو) یک glob است که مسیر مطلق یک مخزن را مطابقت می‌دهد، و می‌تواند به‌طور اختیاری با یک عبارت revset ترکیب شود. عبارت revset، در صورت وجود، با یک علامت هش (#) از glob جدا می‌شود. مثال:

[reposubs]
*/widgets#branch(release) = qa-team@example.com

این پیکربندی هر زمان که یک مجموعه‌تغییر روی شاخهٔ release اعلانی را در هر مخزنی که نام آن به widgets ختم می‌شود فعال کند، پیامی به qa-team@example.com ارسال می‌کند.

به منظور قرار دادن آن‌ها تحت مدیریت مستقیم کاربر، بخش‌های [usersubs] و [reposubs] می‌توانند در یک فایل hgrc جداگانه قرار گرفته و با ارجاع گنجانده شوند:

[notify]
config = /path/to/subscriptionsfile

اعلان‌ها تا زمانی که مقدار notify.test بر روی False تنظیم نشود ارسال نخواهند شد؛ بخش زیر را ببینید.

محتوای اعلان‌ها را می‌توان با مدخل‌های پیکربندی زیر تنظیم کرد:

اگر برابر با True باشد، پیام‌ها به جای ارسال، در stdout چاپ می‌شوند. پیش‌فرض: True.
فهرستی جداشده با فاصله از منابع تغییرات. اعلان‌ها تنها زمانی فعال می‌شوند که منبع یک مجموعه‌تغییر در این فهرست باشد. منابع می‌توانند این موارد باشند:
serve

مجموعه‌تغییرهای دریافت‌شده از طریق http یا ssh

pull

مجموعه‌تغییرهای دریافت‌شده از طریق hg pull

unbundle

مجموعه‌تغییرهای دریافت‌شده از طریق hg unbundle

push

مجموعه‌تغییرهای ارسالی یا دریافتی از طریق hg push

bundle

مجموعه‌تغییرهای ارسالی از طریق hg unbundle

پیش‌فرض: serve.

تعداد اسلش‌های ابتدایی برای حذف از مسیرهای url. به‌طور پیش‌فرض، اعلان‌ها با مسیر مطلق خود به مخازن ارجاع می‌دهند. notify.strip به شما امکان می‌دهد آن‌ها را به مسیرهای نسبی تبدیل کنید. برای مثال، notify.strip=3 مسیر /long/path/repository را به repository تبدیل می‌کند. پیش‌فرض: 0.
دامنهٔ پیش‌فرض ایمیل برای فرستنده یا دریافت‌کنندگانی که دامنهٔ صریحی ندارند. همچنین هنگام استفاده از notify.messageidseed برای بخش دامنهٔ Message-Id استفاده می‌شود.
ایجاد سرایندهای (headers) تعینی و یکتای Message-Id برای نامه‌ها بر اساس seed و شناسهٔ بازنگری نخستین کامیت در مجموعه‌تغییر.
فایل استایل (style) مورد استفاده هنگام قالب‌بندی ایمیل‌ها.
قالب (template) مورد استفاده هنگام قالب‌بندی ایمیل‌ها.
قالب مورد استفاده هنگام اجرا به‌عنوان قلاب incoming، که اولویت بالاتری نسبت به notify.template دارد.
قالب مورد استفاده هنگام اجرا به‌عنوان قلاب outgoing، که اولویت بالاتری نسبت به notify.template دارد.
قالب مورد استفاده هنگام اجرا به‌عنوان قلاب changegroup، که اولویت بالاتری نسبت به notify.template دارد.
حداکثر تعداد خطوط تفاوت (diff) برای درج در ایمیل اعلان. مقدار را 0 بگذارید تا diff غیرفعال شود، یا -1 تا کل آن درج گردد. پیش‌فرض: 300.
حداکثر تعداد خطوط diffstat برای درج در ایمیل اعلان. مقدار را -1 بگذارید تا کل آن درج گردد. پیش‌فرض: -1.
حداکثر تعداد نویسه‌ها در خط موضوع (subject) ایمیل. پیش‌فرض: 67.
تنظیم روی True برای گنجاندن diffstat پیش از محتوای diff. پیش‌فرض: True.
در صورت تنظیم، مقدار diff.showfunc را برای محتوای diff نادیده می‌گیرد. پیش‌فرض: None.
اگر True باشد، اعلان‌ها برای مجموعه‌تغییرهای ادغام (merge) ارسال می‌شوند. پیش‌فرض: True.
در صورت تنظیم، نامه‌ها به جای ارسال، به این فایل mbox الحاق می‌شوند. پیش‌فرض: None.
در صورت تنظیم، از ثبت‌کنندهٔ (committer) نخستین مجموعه‌تغییر در یک changegroup برای فیلد "From" ایمیل اعلان استفاده می‌کند. اگر تنظیم نشده باشد، کاربر را از مخزن ارسال‌کننده (pushing repo) برمی‌دارد. پیش‌فرض: False..TP notify.reply-to-predecessor (آزمایشی) در صورت تنظیم و چنانچه changeset دارای یک سلف (predecessor) در مخزن باشد، تلاش می‌کند ایمیل اعلان را در یک رشته (thread) با سلف پیوند دهد. این کار سرآیند "In-Reply-To" را با ارجاع به سلف دارای کوچک‌ترین شماره بازبینی به ایمیل اعلان اضافه می‌کند. رشته‌های ایمیل همچنان ممکن است گسسته شوند، به‌ویژه هنگامی که changesetها ادغام (folded) شوند.

این گزینه باید در ترکیب با notify.messageidseed استفاده شود.

در صورت تنظیم، مدخل‌های زیر نیز برای سفارشی‌سازی اعلان‌ها استفاده خواهند شد:

نشانی ایمیل From که در صورت نیافتن هیچ نشانی در محتوای ایمیل تولیدشده، استفاده می‌شود.
نشانی وب (URL) ریشه مخزن برای ترکیب با مسیرهای مخزن هنگام ایجاد ارجاع‌ها. همچنین notify.strip را ببینید.

مرور خروجی دستور با یک صفحه‌بند (pager) خارجی (منسوخ‌شده)

فعال‌سازی اجباری صفحه‌بندی برای دستورهای جداگانه‌ای که معمولاً با گزینه attend-<command> درخواست صفحه‌بندی نمی‌کنند. این تنظیم بر گزینه‌های ignore و مقادیر پیش‌فرض ارجحیت دارد:

[pager]
attend-cat = false

دستوری برای ارسال changesetها به صورت (مجموعه‌ای از) ایمیل‌های وصله

این مجموعه با یک پیام مقدمه به شکل «[PATCH 0 of N]» آغاز می‌شود که کل مجموعه را شرح می‌دهد.

هر ایمیل وصله دارای یک خط موضوع (Subject) به شکل «... [PATCH M of N]» است که از خط اول شرح changeset به عنوان متن موضوع استفاده می‌کند. پیام شامل دو یا سه بخش در بدنه است:

  • شرح changeset.
  • [اختیاری] نتیجه اجرای diffstat روی وصله.
  • خود وصله، همان‌طور که توسط hg export تولید شده است.

هر پیام با استفاده از سرآیندهای In-Reply-To و References به اولین پیام در مجموعه ارجاع می‌دهد، بنابراین در برنامه‌های ایمیل‌خوان و خبرخوان رشته‌ای (threaded) و در بایگانی‌های ایمیل به صورت یک توالی نمایش داده می‌شوند.

برای پیکربندی سایر پیش‌فرض‌ها، بخشی مانند این را به فایل پیکربندی خود اضافه کنید:

[email]
from = My Name <my@email>
to = recipient1, recipient2, ...
cc = cc1, cc2, ...
bcc = bcc1, bcc2, ...
reply-to = address1, address2, ...

اگر نیاز به لغو تنظیمات نشانی سراسری [email] دارید، از [patchbomb] به عنوان نام بخش پیکربندی استفاده کنید.

سپس می‌توانید از دستور hg email برای ارسال مجموعه‌ای از changesetها در قالب یک patchbomb استفاده کنید.

شما همچنین می‌توانید گزینه method را در بخش email طوری پیکربندی کنید که یک ارسال‌کننده سازگار با sendmail باشد، یا بخش [smtp] را پر کنید تا افزونه patchbomb بتواند patchbombها را مستقیماً از خط فرمان به‌طور خودکار ارسال کند. برای جزئیات به بخش‌های [email] و [smtp] در hgrc(5) مراجعه کنید.

به‌طور پیش‌فرض، اگر سرآیند To یا CC را از طریق پیکربندی یا خط فرمان تعیین نکنید، hg email برای دریافت آن اعلان درخواست (prompt) نمایش می‌دهد. می‌توانید این رفتار را با تعیین یک مقدار خالی لغو کنید تا هرگز درخواستی مطرح نشود:

[email]
cc =

می‌توانید درج پیش‌فرض پیام مقدمه را با گزینه پیکربندی patchbomb.intro کنترل کنید. این پیکربندی همواره توسط پرچم‌های خط فرمان مانند --intro و --desc بازنویسی می‌شود:

[patchbomb]
intro=auto   # include introduction message if more than 1 patch (default)
intro=never  # never include an introduction message
intro=always # always include an introduction message

می‌توانید قالبی برای پرچم‌هایی که باید به پیشوندهای موضوع اضافه شوند تعیین کنید. پرچم‌های تعیین‌شده با گزینه --flag به صورت کلیدواژه {flags} برون‌ریزی می‌شوند:

[patchbomb]
flagtemplate = "{separate(' ',
                          ifeq(branch, 'default', '', branch|upper),
                          flags)}"

می‌توانید با تنظیم patchbomb.confirm روی true، patchbomb را طوری تنظیم کنید که همیشه درخواست تایید کند..SS دستورها (Commands)

ارسال مجموعه‌تغییرها از طریق ایمیل:

hg email [OPTION]... [DEST]...

به‌طور پیش‌فرض، diffها در قالبی که توسط hg export تولید می‌شود، یکی در هر پیام فرستاده می‌شوند. این مجموعه با یک پیش‌گفتار به صورت «[PATCH 0 of N]» آغاز می‌شود که کل مجموعه را شرح می‌دهد.

هر ایمیل وصله دارای یک خط موضوع (Subject) به صورت «... [PATCH M of N]» است که از نخستین خط شرح مجموعه‌تغییر به عنوان متن موضوع استفاده می‌کند. پیام شامل دو یا سه بخش است. نخست، شرح مجموعه‌تغییر.

با گزینهٔ -d/--diffstat، در صورت نصب بودن برنامهٔ diffstat، نتیجهٔ اجرای diffstat روی وصله درج می‌شود.

در پایان، خود وصله، همان‌طور که توسط hg export تولید شده است.

با گزینه‌های -d/--diffstat یا --confirm، خلاصه‌ای نهایی از تمام پیام‌ها به شما نمایش داده می‌شود و پیش از ارسال پیام‌ها، تأییدیه خواسته خواهد شد.

به‌طور پیش‌فرض وصله برای بازبینی آسان به‌صورت متن در بدنهٔ ایمیل قرار می‌گیرد. استفاده از گزینهٔ -a/--attach در عوض یک ضمیمه برای وصله ایجاد می‌کند. با -i/--inline یک ضمیمهٔ درون‌خطی ایجاد خواهد شد. با ترکیب گزینه‌های -a/--attach یا -i/--inline با گزینهٔ --body، می‌توانید وصله را هم به‌صورت متن در بدنهٔ ایمیل و هم به‌صورت یک ضمیمهٔ معمولی یا درون‌خطی قرار دهید.

با -B/--bookmark مجموعه‌تغییرهای قابل دسترس توسط نشانک (bookmark) مشخص‌شده انتخاب می‌شوند.

با -o/--outgoing، ایمیل‌ها برای وصله‌هایی تولید می‌شوند که در مخزن مقصد یافت نمی‌شوند (یا فقط آن‌هایی که نیاکان بازبینی‌های مشخص‌شده هستند، در صورتی که بازبینی‌ای ارائه شده باشد).

با -b/--bundle، مجموعه‌تغییرها همانند --outgoing انتخاب می‌شوند، اما یک ایمیل واحد حاوی یک بستهٔ (bundle) دودویی Mercurial به‌صورت ضمیمه ارسال خواهد شد. از گزینهٔ پیکربندی patchbomb.bundletype برای کنترل نوع بسته، مشابه hg bundle --type استفاده کنید.

با -m/--mbox، به‌جای پیش‌نمایش هر پیام patchbomb در یک صفحه‌بند (pager) یا ارسال مستقیم پیام‌ها، یک فایل صندوق پستی (mailbox) یونیکس شامل ایمیل‌های وصله ایجاد خواهد شد. این فایل صندوق پستی را می‌توان با هر کلاینت ایمیلی که از فایل‌های mbox یونیکس پشتیبانی می‌کند، پیش‌نمایش کرد.

با -n/--test، تمام مراحل اجرا خواهند شد، اما ایمیلی ارسال نمی‌شود. از شما نشانی ایمیل گیرنده، یک موضوع و یک پیام پیش‌گفتار در شرح وصله‌های patchbomb خواسته می‌شود. سپس هنگامی که همه‌چیز انجام شد، پیام‌های patchbomb نمایش داده می‌شوند.

در صورتی که ارسال ایمیل با شکست مواجه شود، یک نسخهٔ پشتیبان از پیام پیش‌گفتار مجموعهٔ خود را در .hg/last-email.txt خواهید یافت.

رفتار پیش‌فرض این دستور را می‌توان از طریق پیکربندی سفارشی‌سازی کرد. (برای جزئیات به hg help patchbomb مراجعه کنید)

مثال‌ها:

hg email -r 3000          # send patch 3000 only
hg email -r 3000 -r 3001  # send patches 3000 and 3001
hg email -r 3000:3005     # send patches 3000 through 3005
hg email 3000             # send patch 3000 (deprecated)
hg email -o               # send all patches not in default
hg email -o DEST          # send all patches not in DEST
hg email -o -r 3000       # send all ancestors of 3000 not in default
hg email -o -r 3000 DEST  # send all ancestors of 3000 not in DEST
hg email -B feature       # send all ancestors of feature bookmark
hg email -b               # send bundle of all patches not in default
hg email -b DEST          # send bundle of all patches not in DEST
hg email -b -r 3000       # bundle of all ancestors of 3000 not in default
hg email -b -r 3000 DEST  # bundle of all ancestors of 3000 not in DEST
hg email -o -m mbox &&    # generate an mbox file...
  mutt -R -f mbox         # ... and view it with mutt
hg email -o -m mbox &&    # generate an mbox file ...
  formail -s sendmail \   # ... and use formail to send from the mbox
    -bm -t < mbox         # ... using sendmail

پیش از استفاده از این دستور، باید email را در hgrc خود فعال کنید. برای جزئیات به بخش [email] در hgrc(5) مراجعه کنید.

گزینه‌ها:

استفاده از قالب diff گسترش‌یافتهٔ git
حذف سرآیند وصلهٔ hg
-o, --outgoing
ارسال تغییراتی که در مخزن مقصد یافت نمی‌شوند
-b, --bundle
ارسال تغییرات ناموجود در مقصد به‌صورت یک بستهٔ دودویی
ارسال تغییراتی که تنها از طریق نشانک داده‌شده در دسترس هستند
نام فایل ضمیمهٔ بسته (پیش‌فرض: bundle)
یک بازبینی برای ارسال
اجرا حتی در صورتی که مخزن دوردست نامرتبط باشد (همراه با -b/--bundle)
تعیین یک مجموعه‌تغییر پایه به‌جای مقصد (همراه با -b/--bundle)
ارسال یک ایمیل پیش‌گفتار برای یک وصلهٔ تکی
ارسال وصله‌ها به‌صورت متن درون‌خطی پیام (پیش‌فرض)
-a, --attach
ارسال وصله‌ها به‌صورت ضمیمه
-i, --inline
ارسال وصله‌ها به‌صورت ضمیمه‌های درون‌خطی
نشانی‌های ایمیل دریافت‌کنندگان رونوشت پنهان (Bcc)
نشانی‌های ایمیل دریافت‌کنندگان رونوشت (Cc)
درخواست تأیید پیش از ارسال
-d, --diffstat
افزودن خروجی diffstat به پیام‌ها
استفاده از تاریخ داده‌شده به‌عنوان تاریخ ارسال
استفاده از فایل داده‌شده به‌عنوان شرح مجموعه
نشانی ایمیل فرستنده.TP -n, --test چاپ پیام‌هایی که ارسال خواهند شد
نوشتن پیام‌ها در پرونده mbox به‌جای ارسال آن‌ها
نشانی‌های رایانامه‌ای که پاسخ‌ها باید به آن‌ها ارسال شوند
موضوع نخستین پیام (مقدمه یا تک‌پچ)
شناسه پیامی که باید به آن پاسخ داده شود
پرچم‌هایی برای افزودن به پیشوندهای موضوع
نشانی‌های رایانامه گیرندگان
مشخص کردن دستور ssh برای استفاده
مشخص کردن دستور hg برای اجرا در سمت دوردست
عدم اعتبارسنجی گواهی سرور (نادیده گرفتن پیکربندی web.cacerts)

گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد

یکپارچه‌سازی ساده با Phabricator (آزمایشی)

این افزونه یک دستور phabsend را برای ارسال پشته‌ای از مجموعه‌تغییرها به Phabricator، دستور phabread را برای چاپ پشته‌ای از بازبینی‌ها در قالبی مناسب برای hg import، و دستور phabupdate را برای به‌روزرسانی دسته‌جمعی وضعیت‌ها ارائه می‌دهد.

همچنین یک نمای «phabstatus» برای hg show فراهم شده است؛ این نما اطلاعات وضعیت دیفرانسیل‌های Phabricator مرتبط با مجموعه‌تغییرهای ناتمام را نمایش می‌دهد.

به‌طور پیش‌فرض، Phabricator نیازمند Test Plan است که ممکن است مانع از ارسال برخی مجموعه‌تغییرها شود. این الزام را می‌توان با تغییر دادن پیکربندی differential.require-test-plan-field در سمت سرور غیرفعال کرد.

پیکربندی:

[phabricator]
# نشانی وب Phabricator
url = https://phab.example.com
# شناسه مخزن (callsign). اگر یک مخزن دارای نشانی https://$HOST/diffusion/FOO باشد، آن‌گاه
# شناسه آن "FOO" است.
callsign = FOO
# دستور curl برای استفاده. در صورت عدم تنظیم (پیش‌فرض)، از کتابخانه داخلی HTTP برای
# برقراری ارتباط استفاده می‌شود. در صورت تنظیم، از دستور مشخص‌شده curl استفاده می‌شود. این گزینه
# زمانی مفید است که نیاز به مشخص کردن گزینه‌های پیشرفته‌ای داشته باشید که به‌سادگی
# توسط کتابخانه داخلی پشتیبانی نمی‌شوند.
curlcmd = curl --connect-timeout 2 --retry 3 --silent
# تلاش مجدد برای دستور ناموفق به تعداد N بار (پیش‌فرض 0). برای استفاده از افزونه
# بر روی اتصال‌های ناپایدار مفید است.
#
# بین هر تلاش مجدد، به میزان `retry.interval` ثانیه منتظر می‌مانیم.
# (پیش‌فرض ۱ ثانیه).
retry = 3
retry.interval = 10
# گزینه retry می‌تواند به‌خوبی با گزینه http.timeout ترکیب شود.
#
# برای مثال، جهت صرف‌نظر کردن از درخواست http پس از ۲۰ ثانیه:
[http]
timeout=20
[auth]
example.schemes = https
example.prefix = phab.example.com
# توکن API. آن را از https://$HOST/conduit/login دریافت کنید
example.phabtoken = cli-xxxxxxxxxxxxxxxxxxxxxxxxxxxx

وارد کردن وصله‌ها از Phabricator برای Differential Revisionهای مشخص‌شده:

hg phabimport DREVSPEC... [OPTIONS]

وصله‌ها خوانده شده و با شروع از والد دایرکتوری کاری اعمال می‌شوند.

برای چگونگی مشخص کردن DREVSPEC به hg help phabread مراجعه کنید.

گزینه‌ها:

وارد کردن وابستگی‌ها نیز
مسیر به یک فایل vcr. اگر وجود نداشته باشد، یک رونوشت vcr جدید ضبط می‌کند، در غیر این صورت تمام درخواست‌های http را با استفاده از فایل vcr مشخص‌شده شبیه‌سازی (mock) می‌کند. (پیشرفته)

چاپ وصله‌ها از Phabricator به شکلی مناسب برای وارد کردن:

hg phabread DREVSPEC... [OPTIONS]

شناسه DREVSPEC می‌تواند هویت یک Differential Revision مانند D123 یا صرفاً عدد 123 باشد. همچنین می‌تواند شامل عملگرهای رایج مانند +، -، &، (، ) برای پرس‌وجوهای پیچیده باشد. پیشوند : می‌تواند برای انتخاب یک پشته استفاده شود. اگر چند مقدار DREVSPEC داده شود، نتیجه اجتماع مقادیر ارزیابی‌شده به‌طور جداگانه خواهد بود. در حال حاضر تلاشی برای مرتب‌سازی مجدد مقادیر برای اعمال از والد به فرزند انجام نمی‌شود.

وضعیت‌های abandoned، accepted، closed، needsreview و needsrevision می‌توانند برای پالایش وصله‌ها بر اساس وضعیت به کار روند. به دلایل کارایی، آن‌ها فقط زیرمجموعه‌ای از انتخاب‌های غیر وضعیتی را نشان می‌دهند و نمی‌توانند به‌تنهایی استفاده شوند.

برای نمونه، :D6+8-(2+D4) یک پشته تا D6 به علاوه D8 را انتخاب کرده و D2 و D4 را مستثنی می‌کند. :D9 & needsreview ویرایش‌های «Needs Review» را در یک پشته تا D9 انتخاب می‌کند.

اگر --stack مشخص شود، اطلاعات وابستگی‌ها را دنبال کرده و تمام وصله‌ها را می‌خواند. این معادل عملگر : است.

گزینه‌ها:

خواندن وابستگی‌ها
مسیر به یک فایل vcr. اگر وجود نداشته باشد، یک رونوشت vcr جدید ضبط می‌کند، در غیر این صورت تمام درخواست‌های http را با استفاده از فایل vcr مشخص‌شده شبیه‌سازی (mock) می‌کند. (پیشرفته)

بارگذاری changesetها در Phabricator:

hg phabsend REV [OPTIONS]

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

برای نخستین بار بارگذاری changesetها، برچسب‌های محلی برای حفظ این ارتباط ایجاد می‌شوند. پس از بار نخست، phabsend اطلاعات obsstore و برچسب‌ها را بررسی می‌کند تا متوجه شود که آیا باید یک Differential Revision موجود را به‌روزرسانی کند یا موردی جدید بسازد.

اگر --amend تنظیم شده باشد، پیام‌های کامیت را به‌روزرسانی می‌کند تا نشانی URL مربوط به Differential Revision را در بر داشته باشند، و برچسب‌های مرتبط را حذف می‌کند. این مشابه کاری است که arcanist انجام می‌دهد و در جریان‌های کاری ارسال توسط مؤلف (author-push) مطلوب‌تر است. در غیر این صورت، از برچسب‌های محلی برای ثبت ارتباط با Differential Revision استفاده می‌شود.

گزینه --confirm به شما امکان می‌دهد تا changesetها را قبل از ارسال تایید کنید. همچنین می‌توانید عبارت زیر را به فایل پیکربندی خود اضافه کنید تا به عنوان رفتار پیش‌فرض در نظر گرفته شود:

[phabsend]
confirm = true

به‌طور پیش‌فرض، برای هر کامیت انتخاب‌شده یک بازبینی جداگانه ایجاد می‌شود و همان رابطه والد/فرزند را در Phabricator خواهد داشت. اگر --fold تنظیم شده باشد، چندین کامیت در یک بازبینی واحد تجمیع می‌شوند، درست مانند اینکه تغییرات از والد اولین ویرایش تا آخرین ویرایش مقایسه (diff) شده باشد. پیام‌های کامیت در فیلد خلاصه (summary) در Phabricator به یکدیگر متصل می‌شوند.

دستور phabsend بخش obsstore و ارتباط فوق را بررسی می‌کند تا تصمیم بگیرد آیا یک Differential Revision موجود را به‌روزرسانی کند یا مورد جدیدی ایجاد نماید.

گزینه‌ها:

ویرایش‌ها برای ارسال
به‌روزرسانی پیام‌های کامیت (پیش‌فرض: True)
مشخص کردن بازبین‌ها
مشخص کردن بازبین‌های مسدودکننده
افزودن یک دیدگاه به ویرایش‌هایی با Diffهای جدید/به‌روزشده
درخواست تایید پیش از ارسال
ترکیب ویرایش‌ها در یک بازبینی واحد
مسیر به یک فایل vcr. اگر وجود نداشته باشد، یک رونوشت vcr جدید ضبط می‌کند، در غیر این صورت تمام درخواست‌های http را با استفاده از فایل vcr مشخص‌شده شبیه‌سازی (mock) می‌کند. (پیشرفته)

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SS phabupdate

به‌روزرسانی دسته‌ای Differential Revision:

hg phabupdate [DREVSPEC...| -r REV...] [OPTIONS]

‏DREVSPEC بازبینی‌ها را انتخاب می‌کند. برای نحوه استفاده، hg help phabread را ببینید.

گزینه‌ها:

پذیرش بازبینی‌ها
رد بازبینی‌ها
درخواست بازبینی برای بازبینی‌ها
رها کردن بازبینی‌ها
بازپس‌گیری بازبینی‌ها
بستن بازبینی‌ها
بازگشایی مجدد بازبینی‌ها
برنامه‌ریزی تغییرات برای بازبینی‌ها
انصراف از بازبینی‌کننده بودن برای بازبینی‌ها
تصاحب بازبینی‌ها
ثبت نظر بر روی آخرین بازبینی
بازبینی محلی جهت به‌روزرسانی
مسیر یک فایل vcr. در صورت عدم وجود، یک رونوشت vcr جدید ضبط خواهد شد؛ در غیر این صورت، تمامی درخواست‌های http با استفاده از فایل vcr مشخص‌شده شبیه‌سازی خواهند شد. (پیشرفته)

دستوری برای حذف فایل‌های ردگیری‌نشده از دایرکتوری کاری (منسوخ‌شده)

قابلیت این افزونه از نسخه 5.7 در هسته اصلی Mercurial گنجانده شده است. لطفاً به جای آن از hg purge ... استفاده کنید. اکنون hg purge --confirm پیش‌فرض است، مگر اینکه افزونه برای سازگاری عقبرو فعال شده باشد.

دستوری برای انتقال مجموعه‌ای از بازبینی‌ها به یک نیای متفاوت

این افزونه به شما امکان می‌دهد مجموعه‌تغییرات را در یک مخزن موجود Mercurial بازپایه‌ریزی (rebase) کنید.

برای اطلاعات بیشتر: https://mercurial-scm.org/wiki/RebaseExtension.SS "دستورها (Commands)"

انتقال مجموعه‌تغییر (و نوادگان آن) به شاخه‌ای دیگر:

hg rebase [[-s REV]... | [-b REV]... | [-r REV]...] [-d REV] [OPTION]...

دستور rebase از ادغام‌های مکرر برای پیوند زدن مجموعه‌تغییرها از بخشی از تاریخچه (مبدأ) به بخشی دیگر (مقصد) استفاده می‌کند. این کار می‌تواند برای خطی‌سازی تغییرات محلی نسبت به درخت اصلی توسعه مفید باشد.

کامیت‌های منتشرشده را نمی‌توان rebase کرد (ببینید: hg help phases). برای رونوشت گرفتن از کامیت‌ها، ببینید: hg help graft.

اگر مجموعه‌تغییر مقصد را مشخص نکنید (-d/--dest)، دستور rebase از همان منطق hg merge برای گزینش مقصد استفاده خواهد کرد. اگر شاخهٔ فعلی دقیقاً شامل یک سرشاخه (head) دیگر باشد، به‌طور پیش‌فرض با آن سرشاخه ادغام می‌شود. در غیر این صورت، باید یک نسخهٔ بازنگری صریح که باید با آن ادغام صورت گیرد مشخص شود. (مجموعه‌تغییر مقصد با rebase تغییر نمی‌کند، بلکه مجموعه‌تغییرهای جدید به عنوان نوادگان آن افزوده می‌شوند.)

روش‌های انتخاب مجموعه‌تغییرها به شرح زیر است:

1.
انتخاب صریح آن‌ها با استفاده از --rev.
2.
استفاده از --source برای انتخاب یک مجموعه‌تغییر ریشه و دربرگرفتن همهٔ نوادگان آن.
3.
استفاده از --base برای انتخاب یک مجموعه‌تغییر؛ دستور rebase نیاکان و نوادگان آن‌ها را که جزو نیاکان مقصد نیستند، پیدا خواهد کرد.
4.
اگر هیچ‌یک از گزینه‌های --rev، --source یا --base را مشخص نکنید، دستور rebase مانند حالت بالا از --base . استفاده خواهد کرد.

اگر از --source یا --rev استفاده شود، می‌توان از نام‌های ویژهٔ SRC و ALLSRC در --dest استفاده کرد. مقصد به ازای هر نسخهٔ بازنگری مبدأ محاسبه می‌شود؛ به طوری که SRC با آن نسخهٔ بازنگری مبدأ تکی و ALLSRC با تمام نسخه‌های بازنگری مبدأ جایگزین خواهد شد.

دستور rebase مجموعه‌تغییرهای اصلی را از بین خواهد برد، مگر اینکه از --keep استفاده کنید. همچنین نشانک‌های شما را جابه‌جا خواهد کرد (حتی اگر از این گزینه استفاده کنید).

برخی مجموعه‌تغییرها در صورتی که تغییری ایجاد نکنند (برای مثال ادغام‌ها از شاخهٔ مقصد) ممکن است کنار گذاشته شوند.

برخلاف merge، اگر در نوک شاخهٔ یک شاخهٔ نام‌گذاری‌شده با دو سرشاخه (head) باشید، rebase کاری انجام نخواهد داد. باید مبدأ و/یا مقصد را به‌طور صریح مشخص کنید.

اگر برای خودکارسازی تصمیم‌گیری‌های ادغام/تداخل نیاز به استفاده از یک ابزار دارید، می‌توانید آن را با --tool مشخص کنید؛ ببینید: hg help merge-tools. به عنوان یک نکتهٔ هشدار: این ابزار زمانی که فایلی حذف شده باشد برای میانجی‌گری به کار گرفته نخواهد شد؛ در حال حاضر هیچ قلابی (hook) برای این منظور در دسترس نیست.

اگر یک فرآیند rebase برای حل دستی تداخل متوقف شود، می‌توان آن را با --continue/-c ادامه داد، با --abort/-a لغو کرد، یا با --stop متوقف ساخت.

مثال‌ها:

  • انتقال «تغییرات محلی» (کامیت جاری به عقب تا نقطهٔ انشعاب) به نوک شاخهٔ فعلی پس از یک pull:
    hg rebase
  • انتقال یک مجموعه‌تغییر تکی به شاخهٔ stable:
    hg rebase -r 5f493448 -d stable
  • پیوند زدن یک کامیت و همهٔ نوادگان آن به بخشی دیگر از تاریخچه:
    hg rebase --source c0c3 --dest 4cf9
  • انتقال (rebase) همه چیز در شاخه‌ای که با یک نشانک مشخص شده روی شاخهٔ default:
    hg rebase --base myfeature --dest default
  • تجمیع توالی‌ای از تغییرات در یک کامیت واحد:
    hg rebase --collapse -r 1520:1525 -d .
  • انتقال یک شاخهٔ نام‌گذاری‌شده ضمن حفظ نام آن:
    hg rebase -r "branch(featureX)" -d 1.3 --keepbranches
  • تثبیت مجموعه‌تغییرهای یتیم (orphaned) به منظور خطی به نظر رسیدن تاریخچه:
    hg rebase -r 'orphan()-obsolete()' -d 'first(max((successors(max(roots(ALLSRC) & ::SRC)^)-obsolete())::) + max(::((roots(ALLSRC) & ::SRC)^)-obsolete()))'

گزینه‌های پیکربندی:

اگر گزینهٔ پیکربندی زیر را تنظیم کنید، می‌توانید rebase را ملزم به داشتن مقصد کنید:

[commands]
rebase.requiredest = True

به‌طور پیش‌فرض، rebase پس از هر کامیت تراکنش را می‌بندد. برای اهداف مربوط به کارایی، می‌توانید rebase را طوری پیکربندی کنید که در تمام طول فرآیند rebase از یک تراکنش واحد استفاده کند. هشدار: این تنظیم در صورت لغو غیرمنتظرهٔ rebase، خطر جدی از دست رفتن کارهایی که در rebase انجام داده‌اید را به همراه دارد:

[rebase]
singletransaction = True

به‌طور پیش‌فرض، rebase روی رونوشت کاری می‌نویسد، اما می‌توانید آن را برای کارایی بهتر طوری پیکربندی کنید که در حافظه اجرا شود. هنگامی که rebase والد(های) رونوشت کاری (همان «مجموعه‌تغییرهای در حال حاضر بررسی‌شده») را جابه‌جا نمی‌کند، این حالت حتی در صورت تغییریافته (dirty) بودن رونوشت کاری نیز ممکن است اجازهٔ اجرای آن را بدهد:

[rebase]
experimental.inmemory = True
مقادیر بازگشتی:

در صورت موفقیت 0، و اگر موردی برای rebase وجود نداشته باشد یا تداخل‌های حل‌نشده‌ای باقی مانده باشند، مقدار 1 بازگردانده می‌شود.

گزینه‌ها:
انتقال (rebase) مجموعه تغییرات (changeset) مشخص‌شده و نوادگان آن‌ها
انتقال (rebase) همه موارد از نقطه انشعابِ changeset مشخص‌شده
انتقال (rebase) این بازبینی‌ها (revision)
انتقال (rebase) بر روی changeset مشخص‌شده
ادغام (collapse) مجموعه تغییراتِ rebase شده
استفاده از متن به عنوان پیام کامیتِ ادغام (collapse)
-e, --edit
فراخوانی ویرایشگر برای پیام‌های کامیت
خواندن پیام کامیت ادغام (collapse) از فایل
-k, --keep
نگه‌داشتن مجموعه تغییرات (changeset) اصلی
نگه‌داشتن نام‌های اصلی شاخه‌ها
(منسوخ‌شده)
-i, --interactive
(منسوخ‌شده)
مشخص کردن ابزار ادغام (merge tool)
توقف rebase دچار وقفه شده
-c, --continue
ادامه دادن یک rebase دچار وقفه شده
-a, --abort
لغو یک rebase دچار وقفه شده
انجام خودکار rebase برای بازبینی‌های یتیم در revset مشخص‌شده (آزمایشی)
-n, --dry-run
اقدامات را انجام نده، فقط خروجی را چاپ کن
نمایش با استفاده از الگو (template)
پرسش برای تایید پیش از اعمال اقدامات
گزینه‌های دارای علامت [+] را می‌توان چندین بار مشخص کرد.SS record

دستورهایی برای انتخاب تعاملی تغییرات جهت commit/qrefresh (منسوخ‌شده)

قابلیت ارائه‌شده توسط این افزونه به هسته اصلی Mercurial به عنوان
hg commit --interactive
منتقل شده است.

ثبت تعاملی یک وصله (patch) جدید:

hg qrecord [OPTION]... PATCH [FILE]...

برای اطلاعات بیشتر و نحوه استفاده، hg help qnew و hg help record را ببینید.

انتخاب تعاملی تغییرات برای ثبت (commit):

hg record [OPTION]... [FILE]...

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

برای فهرستی از قالب‌های معتبر برای -d/--date، hg help dates را ببینید.

در صورت استفاده از رابط متنی (به hg help config مراجعه کنید)، برای هر فایل تغییریافته پرسیده می‌شود که آیا تغییرات ثبت شوند یا خیر، و برای فایل‌هایی با چندین تغییر، در مورد اعمال هر تغییر سوال خواهد شد. برای هر پرسش، پاسخ‌های زیر امکان‌پذیر است:

y - ثبت این تغییر
n - نادیده گرفتن این تغییر
e - ویرایش دستی این تغییر
s - نادیده گرفتن تغییرات باقی‌مانده این فایل
f - ثبت تغییرات باقی‌مانده این فایل
d - پایان، نادیده گرفتن تغییرات و فایل‌های باقی‌مانده
a - ثبت تمام تغییرات در تمام فایل‌های باقی‌مانده
q - خروج، بدون ثبت هیچ تغییری
? - نمایش راهنما

این دستور هنگام ثبت یک ادغام (merge) در دسترس نیست.

گزینه‌ها:

-A, --addremove
علامت‌گذاری فایل‌های جدید/ناموجود به عنوان اضافه‌شده/حذف‌شده پیش از ثبت
--close-branch
علامت‌گذاری یک head شاخه به عنوان بسته‌شده
اصلاح والد دایرکتوری کاری
-s, --secret
استفاده از فاز secret برای ثبت
استفاده از فاز draft برای ثبت
-e, --edit
فراخوانی ویرایشگر برای پیام‌های ثبت
--force-close-branch
بستن اجباری شاخه از یک changeset غیر از سرشاخه (head) (پیشرفته)
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
استفاده از متن مشخص‌شده به عنوان پیام ثبت
خواندن پیام ثبت از فایل
ثبت تاریخ مشخص‌شده به عنوان تاریخ ثبت
ثبت کاربر مشخص‌شده به عنوان committer
پیمایش بازگشتی در زیرمخزن‌ها
نادیده گرفتن فاصله‌های خالی هنگام مقایسه خطوط
-b, --ignore-space-change
نادیده گرفتن تغییرات در میزان فاصله‌های خالی
-B, --ignore-blank-lines
نادیده گرفتن تغییراتی که تمام خطوط آن‌ها خالی است
نادیده گرفتن تغییرات در فاصله‌های خالی انتهای خط (EOL)

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد..SS releasenotes

تولید یادداشت‌های انتشار از پیام‌های کامیت (آزمایشی)

نگهداری فایل‌هایی که جزئیات تغییرات یک پروژه بین انتشارها را مشخص می‌کنند، امری رایج است. نگهداری این فایل‌ها می‌تواند دشوار و زمان‌بر باشد. دستور hg releasenotes ارائه‌شده توسط این افزونه، با خودکارسازی این فرایند، آن را ساده‌تر می‌کند.

تجزیهٔ یادداشت‌های انتشار از پیام‌های کامیت و ذخیره در یک فایل خروجی:

hg releasenotes [-r REV] [-c] FILE

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

یادداشت‌های انتشار در پیام‌های کامیت به‌صورت دستورالعمل‌های (directives) ReStructuredText تعریف می‌شوند. این دستورالعمل‌ها به شکل زیر هستند:

.. directive:: title
   content

هر directive با یک بخش در فایل خروجی یادداشت‌های انتشار (که خود ساختار ReStructuredText دارد) مطابقت داده می‌شود. برای مثال، دستورالعمل .. feature:: به بخش New Features نگاشت می‌شود.

دستورالعمل‌های یادداشت انتشار می‌توانند به‌صورت کوتاه‌نوشت (short-form) یا بلندنوشت (long-form) باشند. در حالت کوتاه‌نوشت، title حذف شده و یادداشت انتشار به‌صورت یک فهرست نشانه‌دار (bullet list) رندر می‌شود. در حالت بلندنوشت، یک زیربخش با عنوان title به آن بخش اضافه می‌گردد.

آرگومان FILE فایل خروجی را مشخص می‌کند که یادداشت‌های انتشار جمع‌آوری‌شده در آن نوشته شوند. قالب این فایل بدین صورت است:

Section 1
=========
...
Section 2
=========
...

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

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

Section
=======
* Release note 1
* Release note 2

اگر یک بخش دارای یادداشت‌های بلندنوشت باشد، زیربخش‌ها در خروجی درج می‌شوند:

Section
=======
Note 1 Title
------------
Description of the first long-form note.
Note 2 Title
------------
Description of the second long-form note.

اگر آرگومان FILE به یک فایل موجود اشاره کند، آن فایل برای یافتن یادداشت‌های انتشاری که قالبی همانند خروجی این دستور دارند تجزیه می‌شود. یادداشت‌های برگرفته از پیام‌های کامیت پردازش‌شده، با این مجموعهٔ تجزیه‌شده ادغام (merged) خواهند شد.

در طول ادغام یادداشت‌های انتشار:

  • موارد تکراری به‌طور خودکار نادیده گرفته می‌شوند
  • مواردی که متفاوت هستند، در صورتی که میزان شباهت آن‌ها فراتر از یک مقدار آستانه (threshold) باشد، به‌طور خودکار نادیده گرفته می‌شوند.

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

گزینهٔ -c/--check پیام کامیت را برای admonitionهای نامعتبر بررسی می‌کند.

گزینهٔ -l/--list فهرستی از admonitionهای موجود و در دسترس را به همراه عنوان آن‌ها به کاربر نمایش می‌دهد. این فهرست شامل admonitionهای سفارشی (در صورت وجود) نیز می‌شود.

گزینه‌ها:

بازبینی‌ها (revisions) جهت پردازش برای یادداشت‌های انتشار
-c, --check
بررسی اعتبار admonitionها (در صورت وجود)
-l, --list
فهرست کردن admonitionهای موجود به همراه عنوان آن‌ها

پیوندهای سخت (hardlinks) بین نسخه‌های شبیه‌سازی‌شده مخزن را مجدداً ایجاد می‌کند

ایجاد مجدد پیوندهای سخت بین دو مخزن:

hg relink [ORIGIN]

هنگامی که مخازن به‌صورت محلی شبیه‌سازی می‌شوند، فایل‌های داده آن‌ها پیوند سخت (hardlink) می‌شوند تا تنها فضای یک مخزن منفرد را اشغال کنند.

متأسفانه، دریافت‌های (pull) بعدی در هر یک از مخازن، پیوندهای سخت را برای تمامی فایل‌های دستخوش تغییر توسط مجموعه‌تغییرات (changesets) جدید می‌شکند، حتی اگر هر دو مخزن در نهایت تغییرات یکسانی را دریافت کرده باشند.

به همین ترتیب، دادن --rev به “hg clone” مانع از استفاده از هرگونه پیوند سخت شده و منجر به تهیه یک نسخه کپی کامل از مخزن مبدأ می‌شود.

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

این مخزن مجدداً پیوند داده خواهد شد تا فضا را با ORIGIN، که باید روی همان دیسک محلی باشد، به اشتراک بگذارد. در صورت حذف ORIGIN، ابتدا به دنبال “default-relink” و سپس “default” در [paths] می‌گردد.

در حین اجرای دستور از انجام هرگونه عملیات خواندن روی این مخزن خودداری کنید. (هر دو مخزن در برابر نوشتن قفل خواهند شد.)

افزونه remotefilelog باعث می‌شود Mercurial محتویات فایل‌ها را به‌صورت تنبلانه (lazy) دریافت کند (آزمایشی)

این افزونه شدیداً آزمایشی (HIGHLY EXPERIMENTAL) است. هیچ ضمانتی برای سازگاری عقبروی (BACKWARDS COMPATIBILITY) وجود ندارد. این بدان معناست که مخازن ایجادشده با این افزونه ممکن است تنها با نسخه دقیق همین افزونه/Mercurial که استفاده شده بود قابل استفاده باشند. این افزونه برای جلوگیری از خراب شدن مخزن تلاش می‌کند تا این محدودیت را اعمال کند.

افزونه remotefilelog از طریق دریافت تنبلانه محتویات فایل‌ها و ذخیره آن‌ها در یک حافظه موقت (cache) روی کلاینت به جای ذخیره در revlogها کار می‌کند. این کار اجازه می‌دهد تا تاریخچه‌های بسیار حجیم تنها به‌صورت جزئی منتقل شوند و کار با آن‌ها آسان‌تر گردد.

پیکربندی‌ها:

packs.maxchainlen بیشینه طول زنجیره دلتا را در فایل‌های pack تعیین می‌کند

packs.maxpacksize بیشینه اندازه فایل pack را مشخص می‌کند

remotefilelog.backgroundprefetch در صورت True بودن، پیش‌واکشی را در پس‌زمینه اجرا می‌کند

update، و در سایر دستورهای استفاده‌کننده از آن‌ها دریافت شوند را مشخص می‌کند. با pullprefetch متفاوت است.

remotefilelog.gcrepack در صورت True بودن، بازیافت حافظه (garbage collection) را هنگام repack انجام می‌دهد

بازیافت (garbage collected) شود مشخص می‌کند

remotefilelog.repackonhggc در صورت True بودن، repack را هنگام اجرای hg gc اجرا می‌کند

مشخص می‌کند که پس از آن دیگر پیش‌واکشی نمی‌شود.

برحسب ثانیه پس از عملیاتی که والد رونوشت کاری (working copy parent) را تغییر می‌دهد، مشخص می‌کند

برای در نظر گرفته شدن به عنوان بخشی از یک نسل محدود می‌کند. به‌ویژه، حداقل تعداد فایل‌های بسته > gencountlimit.

نسل از فایل‌های بسته داده. برای مثال، فهرست ['100MB','1MB'] یا ['1MB', '100MB'] به سه نسل منجر می‌شود: [0, 1MB)، [1MB, 100MB) و [100MB, infinity).

گنجانده شدن در یک repack افزایشی داده.

اینکه در یک repack افزایشی داده در نظر گرفته شود.

برای گنجانده شدن در یک repack افزایشی داده.

مورد نیاز برای در نظر گرفته شدن به عنوان بخشی از یک نسل را محدود می‌کند. به‌ویژه، حداقل تعداد فایل‌های بسته > gencountlimit.

نسل از فایل‌های بسته تاریخچه. برای مثال، فهرست ['100MB', '1MB'] یا ['1MB', '100MB'] به سه نسل منجر می‌شود: [0, 1MB)، [1MB, 100MB) و [100MB, infinity).

گنجانده شدن در یک repack افزایشی تاریخچه.

برای اینکه در یک repack افزایشی تاریخچه در نظر گرفته شود.

بسته برای گنجانده شدن در یک repack افزایشی تاریخچه.

پس‌زمینه

remotefilelog.cachepath مسیر حافظه موقت (cache)

remotefilelog.cacheprocess فایل باینری جهت فراخوانی برای دریافت داده‌های فایل

remotefilelog.debug فعال‌سازی خروجی اشکال‌زدایی (debug) مخصوص remotefilelog

remotefilelog.excludepattern الگوی فایل‌هایی که باید از دریافت‌ها (pulls) مستثنی شوند

remotefilelog.includepattern الگوی فایل‌هایی که باید در دریافت‌ها (pulls) گنجانده شوند

دریافت‌های تک‌فایلی نمایش داده شود

remotefilelog.getfilesstep تعداد فایل‌های درخواستی در یک RPC واحد

فایل‌ها از نخ‌ها (threads) استفاده می‌کند، در غیر این صورت از دریافت خوش‌بینانه (optimistic) استفاده می‌کند

باید به‌جای حالت تنبل (lazy)، مشتاقانه (eagerly) بارگیری شوند

داده‌ها از سایر مخازن در یک ذخیره‌ساز مشترک استفاده می‌شود. remotefilelog.server اگر درست (true) باشد، قابلیت‌های سمت سرور را فعال می‌کند

remotefilelog.servercachepath مسیر ذخیره‌سازی موقت (کَش) blobها در سرور

پیش‌واکشی بازبینی‌های فایل از سرور:

hg prefetch [OPTIONS] [FILE...]

بازبینی‌های فایل را برای revهای مشخص‌شده پیش‌واکشی کرده و آن‌ها را در کَش محلی remotefilelog ذخیره می‌کند. اگر هیچ rev مشخص نشده باشد، بازبینی پیش‌فرض استفاده می‌شود که اجتماع dot،‏ draft،‏ pullprefetch و bgprefetchrev است. می‌توان از نام‌ها یا الگوهای فایل برای محدود کردن فایل‌های بارگیری‌شده استفاده کرد.

در صورت موفقیت 0 برمی‌گرداند.

گزینه‌ها:

پیش‌واکشی بازبینی‌های مشخص‌شده
اجرای repack پس از prefetch
بازبینی‌ای (rev) که فرض می‌شود از قبل محلی است
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد

جمع‌آوری زباله (garbage collect) در کَش‌های filelog کلاینت و سرور:

hg gc [REPO...]

جمع‌آوری زباله در کَش‌های filelog کلاینت و سرور

hg repack [OPTIONS]

گزینه‌ها:

اجرا در یک فرایند پس‌زمینه
انجام repack افزایشی
تنها بسته‌ها (packها) بازبسته‌بندی شوند (صرف‌نظر از اشیاء منفرد)
hg verifyremotefilelogs <directory>

گزینه‌ها:

-d, --decompress
ابتدا filelogها را از حالت فشرده خارج می‌کند

نمایش remotebookmarkها و remotebranchها در واسط کاربری (آزمایشی)

به‌طور پیش‌فرض هر دو مورد remotebookmarks و remotebranches فعال هستند. گزینه‌های پیکربندی برای کنترل جداگانه آن‌ها به شرح زیر است.

گزینه‌های پیکربندی برای تغییر رفتار پیش‌فرض:

مقداری بولی (Boolean) برای فعال یا غیرفعال کردن نمایش remotebookmarkها (پیش‌فرض: True)
مقداری بولی (Boolean) برای فعال یا غیرفعال کردن نمایش remotebranchها (پیش‌فرض: True)
نام همتایی (peer) که remotebookmarkهای آن باید به فضای نام سطح بالا (top-level) منتقل شوند (پیش‌فرض: 'default')

گسترش طرح‌واره‌ها (schemes) با میان‌برهایی برای مجموعه‌های مخازن (repository swarms)

این افزونه به شما اجازه می‌دهد میان‌برهایی را برای URLهای والد با تعداد زیادی مخزن تعیین کنید تا مانند یک طرح‌واره عمل کنند؛ برای مثال:

[schemes]
py = http://code.python.org/hg

پس از آن می‌توانید به این صورت از آن استفاده کنید:

hg clone py://trunk/

علاوه بر این، امکان پشتیبانی از طرح‌واره‌های پیچیده‌تر نیز وجود دارد، برای مثال طرح‌واره‌ای که در Google Code استفاده می‌شد:

[schemes]
gcode = http://{1}.googlecode.com/hg

ساختار نگارشی (syntax) از قالب‌های Mercurial برگرفته شده است، و شما به تعداد نامحدودی متغیر دسترسی دارید که با {1} شروع شده و با {2}، {3} و الی آخر ادامه می‌یابند. این متغیرها بخش‌هایی از URL داده‌شده را که با / جدا شده‌اند دریافت می‌کنند. هر آنچه به‌صورت {part} مشخص نشده باشد، صرفاً به انتهای URL افزوده خواهد شد.

برای راحتی، این افزونه به‌طور پیش‌فرض این طرح‌واره‌ها را اضافه می‌کند:

[schemes]
py = http://hg.python.org
bb = https://bitbucket.org
bb+ssh = ssh://hg@bitbucket.org/
gcode = https://{1}.googlecode.com/hg
kiln = https://{1}.kilnhg.com/Repo

می‌توانید با تعریف یک طرح‌وارهٔ جدید با همان نام، طرح‌واره‌های پیش‌فرض را بازنویسی (override) کنید..SS دستورها

اشتراک‌گذاری تاریخچه‌ای مشترک میان چندین دایرکتوری کاری

افزونهٔ share دستور جدید hg share را برای ایجاد یک دایرکتوری کاری تازه معرفی می‌کند. این دستور شبیه به hg clone است، اما شامل کپی کردن یا پیوند دادن فضای ذخیره‌سازی مخزن نمی‌شود. این قابلیت امکان کار موازی روی شاخه‌ها یا تغییرات مختلف را بدون تحمیل هزینه از نظر فضای دیسک فراهم می‌سازد.

نکته: عملیات‌های مخرب یا افزونه‌هایی مانند hg rollback باید با احتیاط استفاده شوند چرا که می‌توانند به مشکلات گیج‌کننده‌ای منجر شوند.

هنگامی که این افزونه فعال باشد، hg clone می‌تواند طوری پیکربندی شود که فضای ذخیره‌سازی را به‌طور خودکار در میان چندین کلون به اشتراک بگذارد/تجمیع کند. این حالت عملاً hg clone را به hg clone + hg share تبدیل می‌کند. مزیت استفاده از این حالت، مدیریت خودکار مسیرهای ذخیره‌سازی و تجمیع هوشمند مخازن مرتبط است.

گزینه‌های پیکربندی share. زیر بر این ویژگی تأثیر می‌گذارند:

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

نحوهٔ ساخته شدن نام دایرکتوری‌ها در share.pool.

مقدار «identity» به این معنی است که نام از نخستین مجموعه تغییرات (changeset) در مخزن مشتق می‌شود. در این حالت، ریموت‌های مختلف در صورتی که مجموعه تغییرات اولیه/ریشهٔ یکسان داشته باشند، فضای ذخیره‌سازی را به اشتراک می‌گذارند. در این حالت، مخزن مشترک محلی تجمیعی از تمامی مخازن دوردست یافت‌شده خواهد بود.

مقدار «remote» به این معنی است که نام از مسیر یا نشانی وب (URL) مخزن مبدأ مشتق می‌شود. در این حالت، فضای ذخیره‌سازی تنها زمانی به اشتراک گذاشته می‌شود که مسیر یا نشانی وب درخواست‌شده در دستور hg clone دقیقاً با مخزنی که پیش‌تر کلون شده است مطابقت داشته باشد.

حالت نام‌گذاری پیش‌فرض «identity» است.

به اشتراک‌گذاری پیش‌نیازها و پیکربندی‌های مخزن مبدأ با اشتراک‌ها:

به‌طور پیش‌فرض، ایجاد یک مخزن مشترک تنها به اشتراک‌گذاری یک تاریخچهٔ مشترک را فعال می‌کند و پیش‌نیازها و پیکربندی‌ها را میان آن‌ها به اشتراک نمی‌گذارد. این امر ممکن است در برخی موارد به مشکلاتی منجر شود؛ برای نمونه زمانی که قالب ذخیره‌سازی را در یک مخزن ارتقا می‌دهید اما پیکربندی‌های مربوطه را در اشتراک‌ها تنظیم نمی‌کنید.

تنظیم format.exp-share-safe = True امکان به اشتراک‌گذاری پیکربندی‌ها و پیش‌نیازها را فراهم می‌کند. این تنظیم تنها بر اشتراک‌هایی اعمال می‌شود که پس از فعال‌سازی این گزینهٔ پیکربندی ایجاد شده‌اند.

برای فعال‌سازی این مورد در اشتراک‌های موجود، گزینهٔ پیکربندی را فعال کرده و عمل reshare را انجام دهید.

جهت انجام reshare برای اشتراک‌های موجود، اطمینان حاصل کنید که دایرکتوری کاری شما تمیز است و هیچ فایل ردگیری‌نشده‌ای (untracked) وجود ندارد، سپس آن share را حذف کرده و یک share جدید بسازید.

ایجاد یک مخزن مشترک جدید:

hg share [-U] [-B] SOURCE [DEST]

مقداردهی اولیهٔ یک مخزن و دایرکتوری کاری جدید که تاریخچهٔ خود (و به‌طور اختیاری نشانک‌ها/bookmarks) را با مخزن دیگری به اشتراک می‌گذارد.

نکته
استفاده از rollback یا افزونه‌هایی که تاریخچه را تخریب یا دستکاری می‌کنند (مانند mq، rebase و غیره) می‌تواند در کلون‌های مشترک باعث سردرگمی قابل توجهی شود. به‌ویژه، اگر دو کلون مشترک هر دو به یک مجموعه تغییرات (changeset) به‌روزرسانی شده باشند و یکی از آن‌ها آن مجموعه تغییرات را با rollback از بین ببرد، کلون دیگر ناگهان از کار خواهد افتاد: تمامی عملیات‌ها با خطای «abort: working directory has unknown parent» متوقف خواهند شد. تنها راهکار شناخته‌شده، استفاده از debugsetparents روی کلون آسیب‌دیده است تا آن را به مجموعه تغییراتی که هنوز وجود دارد بازنشانی کند.

گزینه‌ها:

-U, --noupdate
دایرکتوری کاری ایجاد نشود
-B, --bookmarks
نشانک‌ها (bookmarks) نیز به اشتراک گذاشته شوند
اشاره به مبدأ با استفاده از یک مسیر نسبی

تبدیل یک مخزن اشتراکی به یک مخزن عادی:

hg unshare

داده‌های store را به مخزن رونوشت کرده و داده‌های sharedpath را حذف می‌کند.

دستور یکپارچه برای نمایش اطلاعات گوناگون مخزن (آزمایشی)

این افزونه دستور hg show را ارائه می‌دهد، که دستوری متمرکز برای نمایش داده‌های پرکاربرد مخزن و نماهای مختلف آن داده‌ها است.

گزینه‌های پیکربندی زیر می‌توانند بر عملکرد این دستور تأثیر بگذارند.

فهرستی از رشته‌ها که نام‌های مستعار را برای نماها ثبت می‌کنند؛ به عنوان مثال، s به‌طور مؤثر گزینه‌های پیکربندی alias.s<view> = show <view> را برای تمام نماها تنظیم می‌کند؛ یعنی hg swork دستور hg show work را اجرا خواهد کرد.

نام‌های مستعاری که با موارد ثبت‌شدهٔ موجود تداخل داشته باشند، اعمال نخواهند شد.

نمایش اطلاعات گوناگون مخزن:

hg show VIEW

نمای درخواست‌شده از داده‌های مخزن نمایش داده می‌شود.

اگر هیچ نمایی درخواست نشود، فهرستی از نماهای دردسترس نشان داده شده و اجرای دستور لغو می‌شود.

نکته
هیچ تضمینی برای سازگاری با نسخه‌های پیشین (backwards compatibility) در خروجی این دستور وجود ندارد. ممکن است خروجی در هر نسخهٔ آیندهٔ Mercurial تغییر کند.

مصرف‌کنندگانی که خواهان خروجی پایدار از دستور هستند باید قالبی را از طریق -T/--template مشخص کنند.

فهرست نماهای دردسترس:

bookmarks نشانک‌ها و مجموعه تغییرات (changeset) مرتبط با آن‌ها

stack خط کاری کنونی

work مجموعه تغییراتی که به پایان نرسیده‌اند

گزینه‌ها:

نمایش با استفاده از قالب مشخص‌شده

امکان وارسی تنک (sparse checkout) در دایرکتوری کاری (آزمایشی)

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

این افزونه اجازه می‌دهد دایرکتوری کاری تنها شامل زیرمجموعه‌ای از فایل‌های یک بازبینی (revision) باشد. این ویژگی امکان اضافه یا مستثنی کردن صریح فایل‌ها یا دایرکتوری‌های خاص را فراهم می‌سازد. کارایی بسیاری از عملیات‌های مخزن با تعداد فایل‌های موجود در دایرکتوری کاری نسبت مستقیم دارد؛ بنابراین بارگذاری تنها یک زیرمجموعه از فایل‌ها در دایرکتوری کاری می‌تواند کارایی را بهبود بخشد..SS فایل‌های پیکربندی تنک (Sparse Config Files)

مجموعه فایل‌هایی که بخشی از یک sparse checkout هستند، توسط یک فایل پیکربندی تنک (sparse config file) تعریف می‌شوند. این فایل ۳ مورد را مشخص می‌کند: includeها (فایل‌هایی که باید در sparse checkout گنجانده شوند)، excludeها (فایل‌هایی که باید از sparse checkout مستثنی شوند)، و profileها (پیوندها به سایر فایل‌های پیکربندی).

قالب فایل با خط جدید (newline) جدا می‌شود. خط‌های خالی و خط‌هایی که با # آغاز می‌شوند نادیده گرفته خواهند شد.

خط‌هایی که با %include `` آغاز می‌شوند، نشان‌دهنده یک فایل پیکربندی تنک دیگر برای گنجاندن هستند؛ مانند: ``%include tests.sparse. نام فایل نسبت به ریشه مخزن سنجیده می‌شود.

خط‌های ویژه [include] و [exclude] به ترتیب نشان‌دهنده بخش موارد گنجانده‌شده و مستثنی‌شده پس از خود هستند. قرار دادن [include] پس از [exclude] غیرمجاز است.

خط‌های غیرویژه شبیه به الگوهای فایلی هستند که باید به موارد گنجانده‌شده یا مستثنی‌شده افزوده شوند. نحو این خط‌ها در hg help patterns مستند شده است. الگوها به‌طور پیش‌فرض به‌صورت glob: تفسیر می‌شوند و با ریشه مخزن مطابقت داده می‌شوند.

الگوهای استثنا (exclusion) بر الگوهای گنجاندن (inclusion) اولویت دارند. بنابراین حتی اگر فایلی به‌طور صریح گنجانده شده باشد، یک مدخل [exclude] می‌تواند آن را حذف کند.

برای نمونه، فرض کنید مخزنی با ۳ دایرکتوری دارید: frontend/، backend/ و tools/. دایرکتوری‌های frontend/ و backend/ مربوط به پروژه‌های متفاوتی هستند و نامعمول است که فردی در حال کار روی یکی، به فایل‌های دیگری نیاز داشته باشد. اما tools/ شامل فایل‌های مشترک بین هر دو پروژه است. فایل‌های پیکربندی تنک شما ممکن است شبیه به این باشند:

# frontend.sparse
frontend/**
tools/**
# backend.sparse
backend/**
tools/**

فرض کنید اندازه backend رشد می‌کند، یا دایرکتوری‌ای با هزاران فایل وجود دارد که می‌خواهید آن را مستثنی کنید. می‌توانید نمایه (profile) را برای مستثنی کردن فایل‌های خاصی تغییر دهید:

[include]
backend/**
tools/**
[exclude]
tools/tests/**

دستوری برای تقسیم یک changeset به مواردی کوچک‌تر (آزمایشی)

تقسیم یک changeset به مواردی کوچک‌تر:

hg split [--no-rebase] [[-r] REV]

به‌طور مکرر تغییرات و پیام ثبت (commit message) را برای changesetهای جدید درخواست می‌کند تا زمانی که چیزی در changeset اصلی باقی نماند.

اگر --rev مشخص نشده باشد، والد دایرکتوری کاری تقسیم می‌شود.

به‌طور پیش‌فرض، نوادگان متصل و منسوخ‌نشده (non-obsoleted) را بر روی changeset جدید rebase می‌کند. برای جلوگیری از rebase از --no-rebase استفاده کنید.

گزینه‌ها:

revision برای تقسیم
rebase کردن نوادگان پس از تقسیم (پیش‌فرض: True)
ثبت تاریخ مشخص‌شده به‌عنوان تاریخ commit
ثبت کاربر مشخص‌شده به‌عنوان committer

پاک‌کردن مجموعه‌تغییرها و نوادگان آن‌ها از تاریخچه (منسوخ‌شده)

قابلیت‌های این افزونه از نگارش ۵.۷ در هستهٔ Mercurial گنجانده شده است. لطفاً به‌جای آن از hg debugstrip ... استفاده کنید.

این افزونه به شما اجازه می‌دهد مجموعه‌تغییرها و تمام نوادگان آن‌ها را از مخزن حذف کنید. برای جزئیات بیشتر، راهنمای دستور را ببینید.

hg strip [-k] [-f] [-B bookmark] [-r] REV...

گزینه‌ها:

حذف نسخهٔ مشخص‌شده (اختیاری؛ می‌توان نسخه‌ها را بدون این گزینه نیز تعیین کرد)
-f, --force
اجبار در حذف مجموعه‌تغییرها، دور ریختن تغییرات ثبت‌نشده (بدون پشتیبان‌گیری)
بستهٔ پشتیبان ذخیره نشود
بستهٔ پشتیبان ذخیره نشود (منسوخ‌شده)
نادیده گرفته می‌شود (منسوخ‌شده)
-k, --keep
دایرکتوری کاری در طول عملیات حذف تغییر داده نشود
حذف نسخه‌هایی که تنها از نشانک داده‌شده قابل دسترسی هستند
صرفاً حذف مجموعه‌تغییرها از تاریخچهٔ نمایان (آزمایشی)
بازگرداندن وضعیت موفقیت حتی اگر هیچ نسخه‌ای حذف نشود

گزینه‌های علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد

دستور پیوند زدن مجموعه‌تغییرها از شاخه‌ای دیگر

این افزونه به شما اجازه می‌دهد تغییرات را به نسخهٔ والد دیگری، احتمالاً در مخزنی دیگر، پیوند بزنید (transplant کنید). این پیوند با استفاده از وصله‌های 'diff' انجام می‌شود.

وصله‌های پیوندزده‌شده در مسیر .hg/transplant/transplants، به عنوان نگاشتی از هش مجموعه‌تغییر به هش آن در مخزن مبدأ ثبت می‌شوند.

پیوند زدن مجموعه‌تغییرها از شاخه‌ای دیگر:

hg transplant [-s REPO] [-b BRANCH [-a]] [-p REV] [-m REV] [REV]...

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

اگر همه‌چیز در همان مخزن است، استفاده از دستور graft را مد نظر قرار دهید - این دستور از ادغام‌ها استفاده می‌کند و معمولاً نتیجهٔ بهتری می‌دهد. اگر مجموعه‌تغییرها منتشر نشده‌اند و می‌خواهید به‌جای رونوشت، آن‌ها را منتقل کنید، از افزونهٔ rebase استفاده کنید.

اگر --log مشخص شود، یادداشتی با قالب زیر به انتهای پیام‌های گزارش اضافه خواهد شد:

(transplanted from CHANGESETHASH)

می‌توانید با استفاده از گزینهٔ --filter پیام ثبت تغییرات (changelog) را بازنویسی کنید. آرگومان آن با پیام فعلی به صورت $1 و وصله به صورت $2 فراخوانی می‌شود.

گزینهٔ --source/-s مخزن دیگری را برای انتخاب مجموعه‌تغییرها مشخص می‌کند، درست همان‌طور که گویی موقتاً دریافت (pull) شده است. اگر --branch/-b مشخص شده باشد، این نسخه‌ها هنگام تصمیم‌گیری برای پیوند زدن مجموعه‌تغییرها به عنوان رأس (head) استفاده می‌شوند؛ درست مانند اینکه فقط این نسخه‌ها دریافت شده باشند. اگر --all/-a مشخص شود، تمام نسخه‌ها تا رأس‌های مشخص‌شده با --branch پیوند زده خواهند شد.

مثال:

•
پیوند زدن تمام تغییرات تا REV بر روی نسخهٔ فعلی شما:
hg transplant --branch REV --all

می‌توانید به دلخواه مجموعه‌تغییرهای پیوندزده‌شدهٔ منتخب را به عنوان مجموعه‌تغییرهای ادغام علامت‌گذاری کنید. برای پیوند زدن نیاکانِ یک پیوند ادغام‌شده از شما سؤالی پرسیده نخواهد شد، و می‌توانید نوادگان آن‌ها را به‌جای پیوند زدن، به طور عادی ادغام کنید.

مجموعه‌تغییرهای ادغام را می‌توان با فراخوانی hg transplant --parent و مشخص‌کردن مجموعه‌تغییر والد مناسب، مستقیماً پیوند زد.

اگر هیچ ادغام یا نسخه‌ای مشخص نشود، hg transplant یک مرورگر تعاملی مجموعه‌تغییر را آغاز خواهد کرد.

اگر اعمال یک مجموعه‌تغییر با شکست مواجه شود، می‌توانید ادغام را دستی اصلاح کرده و سپس با فراخوانی hg transplant --continue/-c کار را از جایی که متوقف شده بود ادامه دهید.

گزینه‌ها:

پیوند زدن مجموعه‌تغییرها از REPO
استفاده از این مجموعه‌تغییر مبدأ به عنوان رأس
-a, --all
دریافت تمام مجموعه‌تغییرها تا نسخه‌های مشخص‌شده در --branch
نادیده گرفتن REV
ادغام در REV
انتخاب والد هنگام پیوند زدن ادغام
-e, --edit
فراخوانی ویرایشگر روی پیام‌های ثبت
افزودن اطلاعات پیوند به پیام گزارش
متوقف کردن عملیات جاری پیوند
-c, --continue
ادامه دادن نشست پیوند قبلی پس از رفع تداخل‌ها --filter <CMD> فیلتر کردن changesetها از طریق دستور

گزینهٔ علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد

لغو کامیت (uncommit) بخشی یا کل یک changeset محلی (آزمایشی)

این دستور اثر یک کامیت محلی را خنثی کرده و فایل‌های متأثر را به وضعیت کامیت‌نشدهٔ آن‌ها بازمی‌گرداند. این بدان معناست که فایل‌های تغییریافته، اضافه‌شده یا حذف‌شده در changeset بدون تغییر باقی خواهند ماند و در نتیجه در دایرکتوری کاری همچنان به‌صورت تغییریافته، اضافه‌شده و حذف‌شده باقی می‌مانند.

لغو تازه‌ترین عملیات amend روی changeset جاری:

hg unamend

این دستور به نسخهٔ پیشین یک changeset بازمی‌گردد و دایرکتوری کاری را در همان وضعیتی که پیش از اجرای hg amend قرار داشت رها می‌کند (برای نمونه، فایل‌هایی که در قالب amend تغییر یافته بودند، در hg status به عنوان تغییریافته علامت‌گذاری می‌شوند)

لغو کامیت بخشی یا همهٔ یک changeset محلی:

hg uncommit [OPTION]... [FILE]...

این دستور اثر یک کامیت محلی را خنثی کرده و فایل‌های متأثر را به وضعیت کامیت‌نشدهٔ آن‌ها بازمی‌گرداند. این بدان معناست که فایل‌های تغییریافته یا حذف‌شده در changeset دست‌نخورده باقی می‌مانند و در نتیجه در دایرکتوری کاری همچنان به‌صورت تغییریافته باقی خواهند ماند.

اگر هیچ فایلی مشخص نشود، کامیت هرس (prune) خواهد شد، مگر آنکه --keep داده شده باشد.

گزینه‌ها:

اجازه دادن به کامیت خالی پس از uncommit
اجازه دادن به uncommit با وجود تغییرات معوق
ذخیرهٔ یک یادداشت هنگام uncommit
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
استفاده از متن به عنوان پیام کامیت
خواندن پیام کامیت از فایل
ثبت تاریخ مشخص‌شده به عنوان تاریخ کامیت
ثبت کاربر مشخص‌شده به عنوان کامیت‌کننده
ثبت تاریخ جاری به عنوان تاریخ کامیت
-U, --currentuser
ثبت کاربر جاری به عنوان کامیت‌کننده

گزینهٔ علامت‌گذاری‌شده با [+] را می‌توان چندین بار مشخص کرد.SS win32mbcs

اجازه استفاده از مسیرهای MBCS با کدگذاری‌های دارای مشکل

برخی کدگذاری‌های MBCS به دلیل بایت‌های کدگذاری‌شده‌شان برای برخی از عملیات‌های مسیر (مانند تفکیک مسیر، تبدیل بزرگی/کوچکی حروف، و غیره) مناسب نیستند. ما چنین کدگذاری‌هایی (مانند shift_jis و big5) را «کدگذاری دارای مشکل» می‌نامیم. از این افزونه می‌توان برای رفع مشکل این کدگذاری‌ها با پوشش دادن (wrapping) برخی توابع جهت تبدیل به رشته Unicode پیش از انجام عملیات مسیر استفاده کرد.

این افزونه برای موارد زیر مفید است:

  • کاربران ویندوز ژاپنی که از کدگذاری shift_jis استفاده می‌کنند.
  • کاربران ویندوز چینی که از کدگذاری big5 استفاده می‌کنند.
  • تمام کاربرانی که از یک مخزن با یکی از کدگذاری‌های دارای مشکل روی سیستم‌فایل غیرحساس به بزرگی و کوچکی حروف (case-insensitive) استفاده می‌کنند.

این افزونه برای موارد زیر نیاز نیست:

  • هر کاربری که در مسیرها فقط از نویسه‌های ASCII استفاده می‌کند.
  • هر کاربری که از هیچ‌یک از کدگذاری‌های دارای مشکل استفاده نمی‌کند.

توجه داشته باشید که محدودیت‌هایی در استفاده از این افزونه وجود دارد:

  • باید در یک مخزن تنها از یک کدگذاری استفاده کنید.
  • اگر مسیر مخزن به 0x5c ختم شود، .hg/hgrc قابل خواندن نیست.
  • افزونه win32mbcs با افزونه fixutf8 سازگار نیست.

به‌طور پیش‌فرض، win32mbcs از encoding.encoding تعیین‌شده توسط Mercurial استفاده می‌کند. می‌توانید کدگذاری را از طریق گزینه پیکربندی مشخص کنید:

[win32mbcs]
encoding = sjis

این گزینه برای کاربرانی که می‌خواهند با پیام لاگ UTF-8 کامیت کنند مفید است.

انجام تبدیل خودکار خط جدید (منسوخ‌شده)

منسوخ‌شدن: افزونه win32text هر کاربر را ملزم می‌کند تا افزونه را برای هر کلون بارها و بارها پیکربندی کند، زیرا پیکربندی هنگام کلون کردن کپی نمی‌شود.

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

برای انجام تبدیل خودکار خط جدید، استفاده کنید از:

[extensions]
win32text =
[encode]
** = cleverencode:
# or ** = macencode:
[decode]
** = cleverdecode:
# or ** = macdecode:

در صورت عدم انجام تبدیل، برای اطمینان از اینکه تصادفاً CRLF/CR را کامیت نکنید:

[hooks]
pretxncommit.crlf = python:hgext.win32text.forbidcrlf
# or pretxncommit.cr = python:hgext.win32text.forbidcr

برای انجام همین بررسی روی یک سرور جهت جلوگیری از push یا pull شدن CRLF/CR:

[hooks]
pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf
# or pretxnchangegroup.cr = python:hgext.win32text.forbidcr

کشف و اعلان مخازن در شبکه محلی

افزونهٔ zeroconf نمونه‌های hg serve را از طریق DNS-SD اعلان می‌کند تا بتوان بدون دانستن آدرس IP سرور، آن‌ها را با استفاده از دستور hg paths کشف کرد.

برای اینکه به دیگران اجازه دهید مخزن شما را کشف کنند، hg serve را در مخزن خود اجرا کنید:
$ cd test
$ hg serve

می‌توانید مخازن دارای Zeroconf را با اجرای hg paths پیدا کنید:

$ hg paths
zc-test = http://example.com:8000/test

/etc/mercurial/hgrc, $HOME/.hgrc, .hg/hgrc

این فایل شامل مقادیر پیش‌فرض و پیکربندی است. مقادیر موجود در .hg/hgrc بر مقادیر $HOME/.hgrc اولویت دارند و این‌ها نیز بر تنظیمات اعمال‌شده در پیکربندی سراسری /etc/mercurial/hgrc اولویت دارند. برای جزئیات محتوا و قالب این فایل‌ها، hgrc(5) را ببینید.

.hgignore

این فایل شامل عبارات باقاعده (یک مورد در هر خط) است که نام فایل‌هایی را که باید توسط hg نادیده گرفته شوند توصیف می‌کند. برای جزئیات، hgignore(5) را ببینید.

.hgsub

این فایل مکان تمام زیرمخزن‌ها را تعریف کرده و مشخص می‌کند که دریافت‌های زیرمخزن از کجا آمده‌اند. برای جزئیات، hg help subrepos را ببینید.

.hgsubstate

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

.hgtags

این فایل حاوی مقادیر هش changeset و نام‌های متنی برچسب‌ها است (هر کدام با فاصله از یکدیگر جدا شده‌اند) که متناظر با نسخه‌های برچسب‌خوردهٔ محتوای مخزن هستند. محتوای فایل با استفاده از UTF-8 کدگذاری شده است.

.hg/last-message.txt

این فایل توسط hg commit استفاده می‌شود تا در صورت شکست خوردن کامیت، یک نسخهٔ پشتیبان از پیام کامیت را ذخیره کند.

.hg/localtags

از این فایل می‌توان برای تعریف برچسب‌های محلی که بین مخازن به اشتراک گذاشته نمی‌شوند استفاده کرد. قالب فایل مانند .hgtags است، اما با استفاده از کدگذاری محلی سیستم کدگذاری می‌شود.

برخی دستورها (مانند revert) فایل‌های پشتیبانی ایجاد می‌کنند که به .orig ختم می‌شوند؛ اگر فایل .orig از قبل وجود داشته باشد و توسط Mercurial ردگیری نشود، رونویسی خواهد شد.

احتمالاً موارد زیادی وجود دارد؛ لطفاً در صورت یافتن، آن‌ها را به فهرست پستی (به بخش Resources در زیر مراجعه کنید) ارسال کنید..SH "همچنین ببینید (SEE ALSO)"

hgignore(5), hgrc(5)

نوشته‌شده توسط Olivia Mackall <olivia@selenic.com>

وب‌گاه اصلی: https://mercurial-scm.org

مخزن کد منبع: https://www.mercurial-scm.org/repo/hg

فهرست پستی: https://www.mercurial-scm.org/mailman/listinfo/mercurial

کپی‌رایت (C) 2005-2026 Olivia Mackall. استفاده آزاد از این نرم‌افزار تحت شرایط پروانه عمومی همگانی گنو (GNU General Public License) نسخه ۲ یا هر نسخهٔ بالاتر مجاز است.

Olivia Mackall <olivia@selenic.com>

سازمان: Mercurial