HG(DIFF) HG(DIFF)

hg diff - نمایش تفاوت‌های مخزن (یا فایل‌های انتخاب‌شده)

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

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

تفاوت‌های میان فایل‌ها با استفاده از قالب یکپارچه تفاوت (unified diff format) نمایش داده می‌شوند.

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

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

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

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

از گزینهٔ -g/--git برای تولید تفاوت‌ها در قالب تفاوت گسترش‌یافتهٔ 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                  # compare against first parent
    hg diff --from 9353^ --to 9353   # same using revset syntax
    hg diff --from 9353^2 --to 9353  # compare against the second parent

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

نسخه (منسوخ‌شده)
نسخه مبدأ برای مقایسه
نسخه مقصد برای مقایسه
تغییر ایجادشده توسط نسخه
فقط تغییر ایجادشده توسط نسخهٔ انتخاب‌شده را مقایسه می‌کند (آزمایشی)
در نظر گرفتن تمام فایل‌ها به عنوان فایل متنی
استفاده از قالب تفاوت گسترش‌یافتهٔ git (پیش‌فرض: diff.git)
تولید تفاوت‌های باینری در حالت git (پیش‌فرض)
حذف تاریخ‌ها از سرآیندهای diff
حذف پیشوندهای /a و /b از نام فایل‌ها
نمایش تابعی که هر تغییر در آن قرار دارد (پیش‌فرض: diff.showfunc)
تولید تفاوتی که تغییرات را معکوس (خنثی) می‌کند
نادیده‌گرفتن فاصله‌های خالی هنگام مقایسه خطوط
نادیده‌گرفتن تغییرات در میزان فاصله‌های خالی
نادیده‌گرفتن تغییراتی که تمام خطوط آن‌ها خالی است
نادیده‌گرفتن تغییرات فاصله‌های خالی در انتهای خطوط (EOL)
تعداد خطوط زمینه‌ای (context) برای نمایش
نمایش خلاصه‌ای از تغییرات در سبک diffstat
تولید تفاوت‌ها نسبت به زیردایرکتوری
شامل کردن نام‌های منطبق با الگوهای داده‌شده
مستثنی کردن نام‌های منطبق با الگوهای داده‌شده
پیمایش بازگشتی در زیرمخزن‌ها

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