DIFFT(1) DIFFT(1)

difft - ابزار مقایسهٔ ساختاری فایل‌ها با درک نحو

difft [OPTIONS] OLD-PATH NEW-PATH

difft [OPTIONS] DIRECTORY-ONE DIRECTORY-TWO

difft [OPTIONS] FILE-WITH-CONFLICTS

difft --list-languages

difft --help

برنامهٔ difftastic (difft) یک ابزار خط فرمانی برای مقایسه است که فایل‌ها را بر اساس نحو (syntax) آن‌ها مقایسه می‌کند، نه به‌صورت سطر به سطر. ابزار difftastic تفاضل‌های دقیقی تولید می‌کند که خواندن آن‌ها برای انسان آسان‌تر است.

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

side-by-side: نمایش فایل قبلی و فایل بعدی در دو ستون جداگانه، به‌طوری که شماره سطرها بر اساس محتوای تغییرنیافته هم‌تراز می‌شوند. اگر یک تغییر منحصراً شامل افزودن یا منحصراً شامل حذف کردن باشد، از یک ستون استفاده می‌کند.

side-by-side-show-both: همانند side-by-side است، اما همواره از دو ستون استفاده می‌کند.

inline: یک نمایش تک‌ستونی، شبیه‌تر به نحوهٔ نمایش سنتی تفاضل (diff).

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

در صورت وجود تغییرات نحوی در هر یک از فایل‌ها، وضعیت خروج را برابر با 1 قرار می‌دهد. برای فایل‌هایی که زبانی برای آن‌ها تشخیص داده نشده است (مانند زبان‌های پشتیبانی‌نشده یا فایل‌های باینری)، در صورت وجود هرگونه تغییر بایتی، وضعیت خروج را تنظیم می‌کند.
اگر تعداد گره‌های گراف ساختاری در حافظه از این مقدار فراتر رود، از مقایسهٔ سطر‌محور استفاده می‌کند.
اطلاعات راهنما را چاپ می‌کند.
هنگام مقایسه، کامنت‌ها (توضیحات کد) را نادیده می‌گیرد.
تمام زبان‌های پشتیبانی‌شده توسط difftastic را به همراه پسوندهای آن‌ها چاپ می‌کند.
این الگوی glob را به این زبان مرتبط می‌کند و تشخیص پیش‌فرض زبان را لغو می‌نماید. برای نمونه:

$ difft --override=’*.c:C++’ old.c new.c

برای مشاهدهٔ فهرست نام‌های زبان‌ها، --list-languages را ببینید. نام زبان‌ها بدون حساسیت به بزرگی و کوچکی حروف تطبیق داده می‌شوند. بازنویسی‌ها همچنین می‌توانند زبان “text” را تعیین کنند تا با فایل به‌عنوان متن ساده رفتار شود.

این آرگومان می‌تواند بیش از یک بار مشخص شود. برای نمونه:

$ difft --override=`CustomFile:json' --override=’*.c:text’ old.c new.c

برای پیکربندی چندین مورد بازنویسی با استفاده از متغیرهای محیطی، difftastic همچنین DFT_OVERRIDE_1 تا DFT_OVERRIDE_9 را می‌پذیرد.

$ export DFT_OVERRIDE=`CustomFile:json' $ export DFT_OVERRIDE_1=`.c:text’ $ export DFT_OVERRIDE_2=’.js:javascript jsx'

هنگامی که چندین بازنویسی تعیین شده باشد، نخستین بازنویسی منطبق اعمال خواهد شد.

اگر تعداد خطاهای تجزیه از این مقدار بیشتر شود، از مقایسهٔ سطر‌محور استفاده می‌کند.
در صورتی که فایلی تغییر نکرده باشد، هیچ چیزی نمایش نمی‌دهد.
هنگام مقایسهٔ دایرکتوری، نتایج را مرتب‌شده بر اساس مسیر خروجی می‌دهد. این حالت کندتر است.
پیش از مقایسه، تمامی نویسه‌های بازگشت به ابتدای سطر (carriage return یا CR) را حذف می‌کند. این گزینه می‌تواند هنگام کار با فایل‌های ویندوز حاوی CRLF (یعنی ***) مفید باشد.
برجسته‌سازی نحو را فعال یا غیرفعال می‌کند.
هر نویسهٔ تب (tab) را معادل این تعداد فاصله در نظر می‌گیرد.
اطلاعات نسخه را چاپ می‌کند.
هنگام محاسبهٔ شکست خطوط، از این تعداد ستون استفاده می‌کند. در صورت عدم تعیین، difftastic پهنای ترمینال را تشخیص خواهد داد.

یک فایل منفرد را با tree-sitter تجزیه کرده و درخت نحو difftastic را نمایش می‌دهد.
یک فایل منفرد را با tree-sitter تجزیه کرده و درخت تجزیهٔ tree-sitter را نمایش می‌دهد.

راهنمای کامل HTML در این نشانی در دسترس است: https://difftastic.wilfred.me.uk/introduction.

مشکلات گیت‌هاب را در این نشانی ببینید: https://github.com/Wilfred/difftastic/issues.

Wilfred Hughes me@wilfred.me.uk