يتم سرد هذه كاستثناءات في tidy.py ، ولكن يتم الاحتفاظ بمعظمها من قبلنا. يجب التحقق من صحة الترخيص على وجه الخصوص على كل شيء نقوم بصيانته.
دليل النظام الأساسي لديه مشكلة مماثلة
بالنظر إلى قائمة الملفات التي تم تجاهلها ، قد يتم ذلك
مجموعة من الكود "الخاص بنا" (والتي يمكن تعريفها على أنها non-forks ضمن https://github.com/servo/) موجودة في مستودعات منفصلة ويتم استخدامها من خلال البضائع ، وبالتالي فهي غير مرئية لـ tidy.py
. لذلك لم يتم ذلك ، والآن أصبحنا أصعب من ذي قبل انتقلنا إلى Cargo وكان كل شيء عبارة عن وحدة فرعية.
لا يمكننا وضع مرتبة في كل الريبو مع تكوين مختلف؟ يجب أن تكون جميع هذه المستودعات في نظام CI ، بحيث تحقق نفس الغاية.
كل مستودعات لها CI منفصلة خاصة بها والتي يمكن أن تحتوي على نسخة من tidy.py
، لكن هذا يعني أن العديد من النسخ يجب تحديثها عندما نريد إضافة شيء ما.
نقل مرتبة إلى وحدة فرعية؟ قم بتنزيله وتشغيله أثناء CI؟ هناك عدد قليل من الأساليب للحد من هذه المشكلة.
خيار يجب مراعاته: تحميل tidy
إلى PyPi كـ servo_tidy
وقم فقط بتنزيل أحدث إصدار متى أردنا الترتيب
تحرير: ضربني جاك
frewsxcv لكني أحب نسخة كوري الأكثر واقعية للاقتراح بشكل أفضل.
على ما يرام. لقد فكرت في هذا قليلاً وأعتقد أنني على مستوى التحدي. سأقوم بإبلاغ أفكاري قبل تنفيذ أي شيء ؛ قد أتمكن من إصلاح # 6999 في وقت واحد مع هذا.
بعد بعض التفكير ، هذا ما أقترحه:
mach
، ستقوم Python بإنشاء / تنشيط بيئة افتراضية (والتي ستعيش في مكان ما مثل .pyenv/
أو python/.pyenv/
). ثم سنقوم بتثبيت / تحديث تبعياتنا وفقًا لملف python/requirements.txt
). سيسمح لنا ذلك بإزالة ما يلي من شجرتنا وإضافتها كمتطلبات PyPi:python/mozdebug
python/mozinfo
python/mozlog
dependencies/*
python/toml
سيؤدي هذا أيضًا إلى إصلاح # 6999. اعتمادًا على ما إذا كان المنشئون يفجرون دليل العمل بعد كل بناء ، قد نحتاج إلى إضافة نوع من خيارات التخزين المؤقت أو معلمة Mach لتحديد Python virtualenv.
tidy.py
. قد يعني هذا إنشاء python/tidy/tidy.py
و python/tidy/setup.py
.tidy.py
في المستودعات الأخرى. هناك عدة طرق للقيام بذلك:
pip install -e git+https://github.com/servo/servo.git#egg=servo_tidy&subdirectory=python/tidy
اسمحوا لي أن أعرف إذا كان لدى أي شخص أي أفكار أو أفكار أخرى
لدينا بالفعل Virtualenv لاختبارات منصة الويب ، وربما يمكن استخدامه أيضًا لهذا الغرض.
لدينا بالفعل Virtualenv لاختبارات منصة الويب ، وربما يمكن استخدامه أيضًا لهذا الغرض.
فكره جيده. كنت على وشك أن أقترح أن ننقل أيضًا tests/wpt/harness
(wptrunner) خارج الشجرة (ونجعلها تبعية للنقطة) ، ولكن يبدو أنك أجريت للتو بعض التعديلات على نسختنا داخل الشجرة: P
المنبع لذلك هو https://github.com/w3c/wptrunner ، ومن المفترض أن يتم تحديث التغييرات التي تم إجراؤها في نسختنا. لا أعرف لماذا ليست وحدة فرعية أو مثبتة من PyPI. ولكن هذا نوعًا ما خارج عن الموضوع ، فلا تتردد في فتح مشكلة أخرى.
كنت أفكر في tests/wpt/_virtualenv
(الذي تم إنشاؤه عند تشغيل ./mach test-wpt
) ، وليس tests/wpt/harness
.
أيضًا إذا كان هذا _virtualenv سيقوم بمهام أكثر (وهو أمر جيد) ، فمن المحتمل أن يتحرك إلى أعلى الشجرة.
كنت أفكر في الاختبارات / wpt / _virtualenv (التي يتم إنشاؤها عند تشغيل ./mach test-wpt) ، وليس الاختبارات / wpt / harness.
حسنًا ، يبدو جيدًا. إن كود Python لإنشاء / تنشيط بيئة افتراضية جديدة ليس كثيرًا ، لذلك في حالة رغبتنا في فصل متطلبات WPT والمتطلبات المرتبة في المستقبل (بسبب عدم التوافق أو أي شيء آخر) ، لا ينبغي أن يكون الأمر بهذه الصعوبة.
أنا أيضًا لا أعارض نقل مسار virtualenv إلى مكان أكثر عمومية مثل python/_virtualenv
ومرة أخرى ، ضربني جاك
python/_virtualenv
مكان جيد.
يستخدم ماش الآن python/_virtualenv
، بفضل دقة # 6999.
فائدة نشر الحزمة من حيث تعيش في شجرة مؤازرة هي أننا لن نضطر إلى تغيير جميع المستودعات الأخرى إذا قمنا بتقسيمها في النهاية ؛ العيب هو أنه يتعين علينا إدارة مجموعة أخرى من بيانات الاعتماد لـ pypi والتأكد من دفع التغييرات المطلوبة.
للنشر على pypi ، سيكون لدى شخص ما نسخة من .pypirc
التي تحتفظ باسم المستخدم وكلمة المرور لحساب pypi ، ثم قم بتشغيل الأوامر للتسجيل وتحميل الحزمة. إذا كان "شخص ما" في هذه الحالة هو مضيف buildmaster ، فيمكننا أتمتة عملية تحديث الحزمة.
مع ذلك ، أنا بخير مع التثبيت المباشر أو pypi. يعد Pypi المزيد من العمل الآن ، والتثبيت المباشر يمثل متاعب أكبر في نقطة غير محددة في المستقبل ، وكلاهما يتطلب جعله منظمًا في حزمة.
shinglyu ، هل تريد
edunham : يمكنني فعل ذلك. :)
إن زميلي askeing مهتم جدًا بهذه المشكلة ، لذا سأترك هذا الأمر له.
مرحبًا edunham ،
أحاول إعدادها كحزمة Python (مع الاختبارات) هنا: https://github.com/askeing/servo_tidy
askeing شكرا لك! يبدو أنك قد أنجزت معظم العمل الشاق بالفعل. بلدي nitpick الوحيد هو أنه سيكون من المفيد أن يكون لديك setup()
في setup.py
يتضمن شيئًا مثل
entry_points={
'console_scripts': [
'servo-tidy=servo_tidy:scan',
],
},
حتى نتمكن من استدعاء servo-tidy
مباشرة في قسم البرنامج النصي بمشروع آخر .travis.yml
بمجرد تثبيت الحزمة.
frewsxcvlarsbergstrommetajack ما هي أفكارك حول tidy
يعيشون في شجرة مضاعفات مقابل في الريبو الخاصة به؟ ما مدى أهمية الاحتفاظ بسجل git tidy
من الشجرة الحالية بالنسبة للمشروع؟ أنا شخصياً أفضل الاحتفاظ بالتاريخ كلما أمكن ذلك ، لكن هذا يتعلق بالرأي أكثر من الضرورة في هذه الحالة.
لا يوجد تفضيل قوي مني. تجدر الإشارة إلى أن tidy.py
يبدو أنه نقطة انطلاق لبعض المساهمين الجدد ، وقد يؤدي وجود هذا الملف في مستودع منفصل إلى زيادة الحاجز الذي يواجهه هؤلاء المساهمون.
أعتقد أن الشاغل الأكثر أهمية هو أنه من الممكن تعديل tidy.py ومعرفة كيف تؤثر هذه التغييرات على ./mach test-tidy
بأقل عدد ممكن من الخطوات الوسيطة.
عفوًا ، كان قول "إصلاحات" في تلك العلاقات العامة يذهب بعيدًا بعض الشيء. الصناديق لا تستخدمها في الواقع في CI الخاصة بهم حتى الآن.
أنا متأكد من أن هذا قد انخفض الآن ، أو أن هناك مشكلات أخرى حلت محل هذه المشكلة.
التعليق الأكثر فائدة
أعتقد أن الشاغل الأكثر أهمية هو أنه من الممكن تعديل tidy.py ومعرفة كيف تؤثر هذه التغييرات على
./mach test-tidy
بأقل عدد ممكن من الخطوات الوسيطة.