Skip to content

الترجمة 🌍

ساهم في ترجمة هذه الصفحة أو تحسينها.

ساهم

تجزئة

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

  • سمات الهدف (مثل الاسم والمنصة والمنتج وما إلى ذلك)
  • ملفات الهدف
  • تجزئة تبعيات الهدف

سمات ذاكرة التخزين المؤقت

بالإضافة إلى ذلك، عند حساب التجزئة لـ

التخزين المؤقت،

نقوم أيضًا بتجزئة السمات التالية.

إصدار سويفت

نقوم بتجزئة إصدار Swift الذي تم الحصول عليه من تشغيل الأمر /usr/bin/xcrun swift -- الإصدار لمنع أخطاء التحويل البرمجي بسبب عدم تطابق إصدار Swift بين الأهداف والثنائيات.

استقرار الوحدة النمطية

اعتمدت الإصدارات السابقة من التخزين المؤقت الثنائي على إعداد البناء BUILD_LIBRARY_FOR_DISTRIBUTION لتمكين [استقرار الوحدة النمطية] (https://www.swift.org/blog/library-evolution#enabling-library-evolution-support) وتمكين استخدام الثنائيات مع أي إصدار من المحول البرمجي. ومع ذلك، تسبب ذلك في حدوث مشكلات في التجميع في المشاريع ذات الأهداف التي لا تدعم استقرار الوحدة النمطية. الثنائيات التي تم إنشاؤها مرتبطة بإصدار Swift المستخدم لتجميعها، ويجب أن يتطابق إصدار Swift مع الإصدار المستخدم لتجميع المشروع.

التكوين

كانت الفكرة من وراء العلم -التكوين هي ضمان عدم استخدام ثنائيات التصحيح في إنشاءات الإصدار والعكس صحيح. ومع ذلك، ما زلنا نفتقد آلية لإزالة التكوينات الأخرى من المشاريع لمنع استخدامها.

تصحيح الأخطاء

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

  1. قم بتشغيل تويست أو تويست تجزئة الاختبار الانتقائي (تجزئات لـتخزين مؤقت ثنائي أواختبار انتقائي)، انسخ التجزئات، وأعد تسمية دليل المشروع، ثم قمبتشغيل الأمر مرة أخرى. يجب أن تتطابق التجزئات.
  2. إذا كانت التجزئات غير متطابقة، فمن المحتمل أن المشروع الذي تم إنشاؤه يعتمد على البيئة. قم بتشغيل tuist graph --format json في كلتا الحالتين وقارن الرسوم البيانية. أو بدلاً من ذلك، أنشئ المشروعين وقارن بين ملفيهما project.pbxproj باستخدام أداة فرق مثل [Diffchecker] (https://www.diffchecker.com).
  3. إذا كانت التجزئات هي نفسها ولكن تختلف عبر البيئات (على سبيل المثال، CI والمحلي)، تأكد من استخدام نفس [التكوين] (#configuration) و [إصدار سويفت] (#swift-version) في كل مكان. إصدار Swift مرتبط بإصدار Xcode، لذا تأكد من تطابق إصدارات Xcode.

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

تم تخطيط تجربة أفضل للتحقق من المعلومات

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

Released under the MIT License.