Diff چیست و چطور تفاوت دو متن را پیدا میکند؟
Diff روشی برای پیدا کردن کوتاهترین فهرست تغییرات است که یک متن را به متن دیگر تبدیل میکند. پایهٔ آن «طولانیترین زیردنبالهٔ مشترک» یا LCS است: بیشترین تعداد خطوطی که در هر دو نسخه با همان ترتیب وجود دارند پیدا میشود و هر چیزی بیرون از این اسکلت مشترک، حذف یا اضافه علامت میخورد. این ابزار از الگوریتم مایرز استفاده میکند؛ همان الگوریتمی که git diff بهطور پیشفرض به کار میبرد و برای متنهایی با چند ده هزار خط و تغییرات معمولی در کسری از ثانیه نتیجه میدهد.
نتیجه به شکل «diff یکپارچه» نمایش داده میشود؛ همان قالبی که در Git و دستور diff -u میبینید. خطوطی که فقط در نسخهٔ قدیمی بودهاند با علامت منفی و پسزمینهٔ قرمز، خطوطی که فقط در نسخهٔ جدید آمدهاند با علامت مثبت و پسزمینهٔ سبز، و خطوط مشترک بدون علامت نشان داده میشوند. یک خط ویرایششده در Diff خطی به شکل یک حذف و یک اضافه دیده میشود؛ این ابزار علاوه بر آن، کلمههایی را که داخل همان خط عوض شدهاند پررنگتر نشان میدهد تا لازم نباشد دو خط بلند را با چشم مقایسه کنید.