فهرست

جست‌وجوی ابزارهاگزارش تغییرات

برای جابه‌جایی برای باز کردنمسئله را توضیح دهید، نه نام ابزار را

متن‌های پیکربندی را بدون خطوط زمینه مقایسه کنید

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

سمت چپ مقایسه. خط‌نوهای CRLF و CR پیش از مقایسهٔ خطوط به LF یکسان‌سازی می‌شوند.

سمت راست. یک خط تغییریافته به‌صورت یک حذف و یک افزودن نشان داده می‌شود، همان‌طور که دیف یکپارچه ایجاب می‌کند.

خطوط بدون تغییری که پیرامون هر ویرایش نشان داده می‌شوند. ویرایش‌های نزدیک به هم، وقتی زمینه‌شان هم‌پوشانی داشته باشد، ادغام می‌شوند.

خلاصهٔ تغییرات
۲ خط افزوده و ۲ خط حذف شد
خطوط اضافه‌شده
۲
خطوط حذف‌شده
۲
خطوط بدون تغییر
۲
قطعه‌های تغییر
۲

پچ دیف یکپارچه

app.conf.patch · ۱۱۱ B

یک پچ استاندارد --- / +++ با محدوده‌های @@، زمینهٔ انتخاب‌شده و نشانگرهای صریح نبودِ خط‌نوی پایانی.

اسکریپت کامل ویرایش خطی

حذف‌شده1host=localhost
اضافه‌شده1host=127.0.0.1
بدون تغییر22port=3000
بدون تغییر33mode=development
حذف‌شده4cache=false
اضافه‌شده4cache=true
نکات اصلی
  1. زمینهٔ صفر تغییری در این نمی‌دهد که کدام خطوط اضافه یا حذف شده‌اند؛ فقط مقدار محتوای بدون تغییر پیرامون آن‌ها را تغییر می‌دهد.

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

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

چگونگی کار

مراحل انجام کار

  1. خط‌نوهای CRLF و CR تنها را به LF یکسان‌سازی کنید و ثبت کنید که آیا آخرین خط منطقی هر سند خط‌نوی پایانی دارد یا نه.
  2. یک ماتریس طولانی‌ترین زیردنبالهٔ مشترک را روی متن کامل هر خط به‌علاوهٔ وضعیت پایان آن بسازید و هرگاه چند اسکریپت کمینه برابر باشند، حذف را بر درج مقدم بدارید.
  3. هر ویرایش را به اندازهٔ تعداد درخواستی خطوط زمینهٔ بدون تغییر گسترش دهید و محدوده‌هایی را که به هم می‌رسند یا هم‌پوشانی دارند در قطعه‌های دیف یکپارچه ادغام کنید.
  4. برچسب‌های پاک‌سازی‌شدهٔ --- و +++، محدوده‌های دقیق @@ به‌صورت شروع,تعداد و پیشوندهای فاصله، منها یا به‌علاوه را در یک پچ قابل دانلود بنویسید.

فرض‌ها

  • مقایسه خطی است و پس از یکسان‌سازی خط‌نو دقیق انجام می‌شود؛ تفاوت‌های فضای خالی، بزرگی و کوچکی حروف و نرمال‌سازی یونیکد نادیده گرفته نمی‌شوند.
  • هر طرف به ۲۰۰۰ نویسه محدود است تا ماتریس درجه‌دوم طولانی‌ترین زیردنبالهٔ مشترک در مرورگر محدود بماند.
  • ممکن است بیش از یک کمینه‌اسکریپت ویرایش وجود داشته باشد. تقدم حذف در برابری‌ها این خروجی را تکرارپذیر می‌کند، اما از نظر ریاضی یگانه و ممتاز نیست.
  • پچی که از نظر نحوی درست است همچنان می‌تواند روی فایل سومی که محتوای پیرامونش تغییر کرده شکست بخورد؛ این ابزار پچ‌ها را اعمال یا ادغام نمی‌کند.

پرسش‌های رایج

آیا یک دیف یکپارچه با زمینهٔ صفر هنوز یک پچ معتبر است؟

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

چه زمانی بهتر است خطوط زمینه را نگه دارم؟

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

منابع

  • Comparing and Merging Files — GNU Diffutils 3.12Free Software Foundationبررسی‌شده در مربوط به سرآیندهای یکپارچه، قطعه‌ها، محدوده‌ها، زمینه و خطوط ناقص
  • diff — compare two filesThe Open Groupبررسی‌شده در مربوط به مقایسهٔ خطی و اصطلاحات قابل‌حمل diff

روش کامل، مثال محاسبه‌شده و همهٔ فرض‌های این نتیجه در این صفحه آمده است: دیف‌ساز متن.