HG(LOG) HG(LOG)

hg log - نمایش تاریخچه بازبینی‌های کل مخزن یا فایل‌ها

hg log [OPTION]... [FILE]

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

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

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

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

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

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

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

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

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

چند مثال:

  • مجموعه‌های تغییرات با توضیحات کامل و فهرست فایل‌ها:
    hg log -v
  • مجموعه‌های تغییرات نیاکان دایرکتوری کاری:
    hg log -f
  • ۱۰ کامیت آخر در شاخه فعلی:
    hg log -l 10 -b .
  • مجموعه‌های تغییراتی که تمامی اصلاحات یک فایل، از جمله موارد حذفی را نمایش می‌دهند:
    hg log --removed file.c
  • تمام مجموعه‌های تغییراتی که به یک دایرکتوری مربوط می‌شوند، همراه با diffها، به استثنای ادغام‌ها:
    hg log -Mp lib/
  • تمام شماره‌های بازبینی منطبق با یک کلیدواژه:
    hg log -k bug --template "{rev}\n"
  • شناسه هش کامل والد دایرکتوری کاری:
    hg log -r . --template "{node}\n"
  • فهرست کردن قالب‌های لاگ موجود:
    hg log -T list
  • بررسی اینکه آیا یک changeset مشخص در یک انتشار برچسب‌خورده وجود دارد یا خیر:
    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 به همراه وصله (patch):
    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 را برمی‌گرداند.

دنبال کردن تاریخچه changeset، یا تاریخچه فایل در میان رونوشت‌ها و تغییر نام‌ها
تنها دنبال کردن والد نخست changesetهای ادغام (منسوخ‌شده)
نمایش بازبینی‌های منطبق با مشخصات تاریخ
نمایش فایل‌های رونوشت‌شده
انجام جستجوی غیرحساس به بزرگی و کوچکی حروف برای یک متن مشخص
بازبینی‌ها برای انتخاب یا دنبال کردن از آن‌ها
دنبال کردن بازه خطوط فایل مشخص‌شده (آزمایشی)
شامل کردن بازبینی‌هایی که در آن‌ها فایل‌ها حذف شده‌اند
نمایش تنها ادغام‌ها (منسوخ‌شده) (به جای آن از -r "merge()" استفاده کنید)
بازبینی‌های کامیت‌شده توسط کاربر
نمایش تنها changesetهای درون شاخه نام‌گذاری‌شده مشخص (منسوخ‌شده)
نمایش changesetهای درون شاخه نام‌گذاری‌شده مشخص
نمایش changesetهای درون نشانک مشخص
عدم نمایش بازبینی یا هر یک از نیاکان آن
نمایش وصله (patch)
استفاده از قالب diff گسترش‌یافته git
محدود کردن تعداد تغییرات نمایش‌داده‌شده
عدم نمایش ادغام‌ها
خروجی خلاصه تغییرات به سبک diffstat
نمایش DAG بازبینی‌ها
نمایش با استفاده از فایل نگاشت قالب (منسوخ‌شده)
نمایش با قالب
شامل کردن نام‌های منطبق با الگوهای مشخص‌شده
مستثنی کردن نام‌های منطبق با الگوهای مشخص‌شده

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

history