مقارنة النصوص (Diff)

تعمل في المتصفح التنسيق

مقارنة سريعة بين نصّين بخوارزمية Myers مع عرض موحّد (unified) وعرض جنباً إلى جنب، وخيارَي تجاهل المسافات البيضاء وتجاهل حالة الأحرف، وملف تصحيح (patch) قابل للتنزيل.

الخصوصية: تعمل هذه الأداة بالكامل في متصفحك. لا تغادر بياناتك جهازك أبداً.
جارٍ تحميل الأداة…

كيف تعمل مقارنة النصوص (diff)؟

تجد المقارنة أصغر مجموعة من الإضافات والحذوفات التي تحوّل نصاً إلى آخر، عادة سطراً بسطر، وتعرضها بصيغة يمكن للقارئ أو الأداة تطبيقها: الصيغة الموحّدة تضع «-» أمام الأسطر المحذوفة و«+» أمام المضافة تحت ترويسة تحدد أرقام الأسطر. واختلافات المسافات ونهايات الأسطر (CRLF مقابل LF، والمسافات الزائدة) اختلافات حقيقية بالنسبة للمقارنة ما لم تُؤمر بتجاهلها، ولهذا تحتاج مقارنة الناتج المتوقع بالفعلي غالباً إلى تطبيع أولاً.

في ملف patch الموحّد تحدد كل ترويسة @@ أين يبدأ المقطع وكم سطراً يشغل في كل ملف؛ وتحتها تدل المسافة على سطر سياق، والعلامة - على سطر محذوف، والعلامة + على سطر مضاف.

باتش موحّد

الجزء 1:--- a/original.txt
الجزء 2:+++ b/modified.txt
@@ الجزء 3:-2,4 الجزء 4:+2,5 @@
الجزء 5:   host: api.mutqan.sa
الجزء 6:-  port: 8080
الجزء 7:+  port: 8443
الجزء 5:   timeout: 30s
الجزء 7:+  tls: true
الجزء 5: features:
  1. 1الملف الأصليقبل git apply ضع مسار ملفك هنا بدل original.txt مع إبقاء البادئة a/
  2. 2الملف المعدّلالمسار نفسه مع إبقاء البادئة b/
  3. 3الأصلي: 4 أسطر بدءاً من السطر 2تُحتسب فيه أسطر السياق والأسطر المحذوفة
  4. 4المعدّل: 5 أسطر بدءاً من السطر 2تُحتسب فيه أسطر السياق والأسطر المضافة
  5. 5سطر سياق (مسافة)لم يتغيّر؛ ويحدد «أسطر سياق الباتش» عدد هذه الأسطر حول كل تغيير
  6. 6سطر محذوف (-)موجود في الأصلي فقط
  7. 7سطر مضاف (+)موجود في المعدّل فقط

بداية «باتش موحّد» الذي تنتجه الأداة لمثالها («تحميل مثال»)، مع ضبط «أسطر سياق الباتش» على 1؛ والقيمة الافتراضية 3.

كيفية استخدام مقارنة النصوص (Diff)

  1. الصق النص الأصلي في حقل «النص الأصلي» والنص المعدّل في حقل «النص المعدّل».
  2. اختر «الأسطر» أو «الكلمات» وأي خيارات تجاهل تريدها.
  3. اضغط «مقارنة» لعرض العرض الموحّد والجدول جنباً إلى جنب وملف patch.
  4. نزّل ملف patch، واستبدل original.txt وmodified.txt في سطرَي --- و+++ بمسار ملفك، ثم طبّقه باستخدام git apply أو patch -p1.

مزايا مقارنة النصوص (Diff)

  • وضع الأسطر مع عرض موحّد وجدول جنباً إلى جنب وملف patch موحّد قابل للتنزيل
  • وضع الكلمات مع إبراز الإدراج/الحذف داخل السطر، وهو مناسب للنصوص النثرية
  • خيارا تجاهل المسافات البيضاء وتجاهل حالة الأحرف
  • نسبة التشابه المئوية وعدد الأسطر المضافة / المحذوفة / غير المتغيرة
  • يعالج الملفات الكبيرة بسرعة عبر التقسيم المعتمد على أسطر الارتكاز (anchors) للمدخلات كثيرة التغييرات
  • عدد أسطر السياق في ملف patch قابل للضبط

مثال على مقارنة النصوص (Diff)

مقارنة ملفَّي إعدادات

الإدخال:

Left:  port: 8080
       logging: info
Right: port: 8443
       tls: true
       logging: warn

النتيجة:

- port: 8080
- logging: info
+ port: 8443
+ tls: true
+ logging: warn
Similarity 0%

الأسئلة الشائعة حول مقارنة النصوص (Diff)

ما الخوارزمية المستخدمة؟

خوارزمية Myers O(ND) لأقصر سلسلة تعديلات — وهي العائلة نفسها التي يستخدمها git. تُقسَّم المدخلات الكبيرة جداً أو شديدة الاختلاف عند أسطر ارتكاز فريدة حتى تبقى النتائج سريعة ومقروءة.

هل يمكنني الحصول على ملف patch؟

نعم. ناتج «ملف patch الموحّد» (Unified patch) بصيغة unified diff القياسية (مقاطع --- / +++ / @@). يسمّي سطرا الترويسة الملفين a/original.txt وb/modified.txt، ويأخذ git apply المسار منهما، لذا استبدل الاسمين بمسار ملفك (مع إبقاء البادئتين a/ وb/) قبل تشغيل git apply أو patch -p1.

ما وظيفة خيار «تجاهل المسافات البيضاء» (Ignore whitespace)؟

تُعامل الأسطر التي لا تختلف إلا في المسافات أو علامات الجدولة أو المسافة البادئة على أنها متطابقة. اجمعه مع «تجاهل حالة الأحرف» (Ignore case) للحصول على مقارنة لا تفرّق بين الأحرف الكبيرة والصغيرة.

كيف يختلف وضع الكلمات عن وضع الأسطر؟

يحاذي وضع الكلمات الكلمات المفردة وعلامات الترقيم ويعرض الإدراجات والحذوفات داخل السطر، وهو مثالي للنصوص النثرية والترجمات. أما وضع الأسطر فأفضل للكود وملفات الإعدادات.

هل يوجد حد للحجم؟

يمكن أن يصل حجم كل نص إلى 2 ميغابايت. ويقتصر وضع الكلمات على 400,000 حرف في المجموع لأنه يعمل على مستوى تفصيلي أدق بكثير.

ملاحظات تقنية

تُقارن الأسطر بخوارزمية Myers بعد إزالة البادئة واللاحقة المشتركتين. وعندما تتجاوز مسافة التعديل ميزانية محددة، يبحث المحرك عن الأسطر الفريدة في كلا الجانبين، ويحسب أطول متتالية متزايدة من مواضعها، ثم يكرر العملية بين أسطر الارتكاز تلك — وهي الفكرة نفسها في patience diff — مما يُبقي النتائج مقروءة للمستندات شديدة الاختلاف.

المراجع