العربية

أدوات المطور · مقارنة النص

ما يتجاهله "تجاهل المسافة البيضاء" حقًا في اختلافات النص سطرًا تلو الآخر

· كيف يعمل

فرق النص سير عمل المطور مسافة بيضاء

تمت محاذاة مراجعتين للنص مع تغييرات المسافة البادئة ولكن تم الحفاظ على تعديلات المحتوى
الرسم التوضيحي المتجه الأصلي ToolAcre

يفصل أنواع المسافات البيضاء التي يمكن للمقارنة تطبيعها بعيدًا، بدءًا من المسافة البادئة إلى عمليات التشغيل الداخلية، ويحذر من الأماكن التي تحمل فيها المسافات البيضاء معنى ويجب عدم تجاهلها.

تم تغيير كل سطر، ولكن لم يحدث أي شيء بالفعل - يتم فتحه بملف تمت إعادة المسافة البادئة له من علامات التبويب إلى المسافات التي تظهر كجدار من الاختلافات

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

أربعة أنواع من اختلافات المسافات البيضاء — تفصل بين المسافة البادئة والمسافات اللاحقة وعمليات التشغيل الداخلية والأسطر الفارغة، نظرًا لأن كل منها يحدث بسبب أداة أو عادة مختلفة

تحدث تغييرات المسافة البيضاء في عدة أماكن. غالبًا ما تأتي المسافة البادئة من التنسيق؛ المسافات الزائدة من نسخة/paste; قد تؤدي المسافات أو علامات التبويب المتكررة داخل السطر إلى فصل الكلمات أو الأعمدة؛ سطر فارغ قد يقسم الكتل. يقوم خيار تجاهل المسافة البيضاء في ToolAcre بقص كل سطر وطي كل تشغيل داخلي للمسافة البيضاء إلى مسافة واحدة للمقارنة. فهو لا يؤدي ببساطة إلى إزالة جميع المسافات البيضاء أو التعامل مع أعداد الأسطر المختلفة على أنها متطابقة: يظل السطران الفارغان وحدتي مقارنة ما لم تزيلهما عملية أخرى.

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

يتم حساب مفتاح السطر من النص الأصلي قبل المطابقة: يزيل Trim() المسافة البيضاء البادئة /trailing ويستبدل التعبير العادي عمليات التشغيل الداخلية بمسافة واحدة. تقوم خوارزمية الفرق بمقارنة المفاتيح ولكنها تحتفظ بالنص الأصلي في الصفوف المعروضة. يتم تجاهل البادئات واللاحقات الشائعة قبل إنشاء جدول LCS، لذا فإن التعديلات الصغيرة في المستندات الكبيرة لا تتطلب بالضرورة مقارنة كل سطر ببعضه البعض. يوجد حد أقصى للأسطر 2,000، لأن جدول البرمجة الديناميكية ينمو بطول الجانبين.

مثال عملي: دالة Python معاد المسافة البادئة وملف YAML - يعرض خيار تنظيف عرض Python، ثم إخفاء تغيير المسافة البادئة YAML الذي يغير بنية المستند فعليًا

تخيل دالة بايثون يتغير جسمها بالكامل من أربع مسافات إلى مسافات مع البقاء على نفس مستوى التداخل. يمكن أن يؤدي تجاهل المسافة البادئة إلى إخفاء ضجيج التنسيق هذا. في YAML، يؤدي نقل المفتاح من أسفل services.web إلى أسفل الخدمات إلى تغيير التعيين الأصلي له على الرغم من أن أحرف كل سطر متطابقة بمجرد اقتطاع المسافة البيضاء. قم بتشغيل الخيار على كلا المقتطفين: قد يصبح عرض Python أسهل في المراجعة، بينما يمكن أن يختفي التغيير YAML على الرغم من تغيير شجرة البيانات. لا تستخدم مطلقًا مخرجات غير حساسة للمسافات البيضاء وحدها للموافقة على التنسيقات الحساسة للمسافات البادئة.

عندما تكون المسافة البيضاء عبارة عن بيانات — تسرد التنسيقات التي تحمل فيها المسافات معنى: YAML، وملفات Makefiles، وكتل تعليمات Markdown البرمجية، والصادرات ذات العرض الثابت، والسلاسل الحرفية

المسافات هي بيانات في مسافة بادئة YAML، ووصفات Makefile، وكتل تعليمات Markdown البرمجية وعمليات التصدير ذات العرض الثابت. داخل السلسلة الحرفية، يمكن أن يؤدي استبدال مسافات متعددة إلى تغيير النص المرئي للمستخدم أو القيمة التي يتم توقيعها أو تجزئتها. حتى التعليمات البرمجية ذات التنسيق المرن عمومًا تحتوي على سياقات تكون فيها المسافات البيضاء مهمة: تعد كتل Python ومستندات shell هنا أمثلة واضحة. لا يمكن للخيار استنتاج تلك السياقات، لأنه يرى خطوطًا واضحة، وليس قواعد اللغة. اختره فقط عندما تفهم الملف الذي تتم مقارنته.

الجمع بين خيارات المسافة البيضاء وحالة الأحرف - يصف كيف يؤدي تمكين كلاهما إلى تضييق المقارنة بين نفس الأحرف وبنفس الترتيب وما يخفيه ذلك

يؤدي الجمع بين تجاهل المسافة البيضاء وتجاهل حالة الأحرف إلى تضييق نطاق المطابقة للأسطر التي تتوافق حروفها المتبقية وعلامات الترقيم دون النظر إلى حالة الأحرف أو التباعد. قد يؤدي ذلك إلى هدوء مستند كثيف التنسيق، ولكنه قد يؤدي أيضًا إلى إخفاء معرف حساس لحالة الأحرف أو مفتاح رأس أو مسار نظام ملفات تم تغييره. ToolAcre لا يستخدم الأحرف الصغيرة في مفتاح المقارنة إلا عند تشغيل هذا الخيار الثاني؛ فإنه لا يزال يعرض نص السطر الأصلي. قم بتبديل الخيارات واحدًا تلو الآخر حتى تتمكن من معرفة التغيير الذي تمت إزالته.

ما لا يغطيه هذا هو خيار مقارنة الخطوط بعد التطبيع؛ فهو لا يعيد تدفق الفقرات أو يكتشف الكتل المنقولة أو يقارن التنسيق في المستندات الغنية

لا تقوم هذه الميزة بإعادة تدفق الفقرات أو الكشف عن الكتل المنقولة أو مقارنة عرض HTML أو تحديد ما إذا كان برنامجان ASTs متكافئين أم لا. فرق ToolAcre هو برمجة ديناميكية LCS قائمة على الأسطر مع تشذيب البادئة المشتركة /suffix، وليست خوارزمية مايرز الموضحة في بعض دروس الفروق العامة. في الملفات الكبيرة الملصقة، سيتوقف بدلاً من تخصيص مصفوفة غير محدودة. استخدم محللًا مدركًا للغة أو مراجعة التحكم في الإصدار للمطالبات الهيكلية.

الخلاصة: قم بتبديله، لا تستخدمه افتراضيًا - يوصي بإجراء كلتا المقارنتين ويوضح كيف تتيح لك مقارنة نص ToolAcre تشغيل خيار المسافة البيضاء وإيقاف تشغيله لنفس زوج النصوص

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