it-swarm.asia

محدث الحفر لوحدة واحدة

هل من الممكن أداء وظيفة تحديث وحدة واحدة عن طريق السحق؟ أستطيع أن أرى drush updatedb التي لا تأخذ اسم وحدة نمطية كوسيطة وتقوم بتشغيل كافة التحديثات المتوفرة. ثم هنالك drush pm-update الذي يتحقق أيضًا من وجود ملفات جديدة. التوثيق يقول:

(مثل pm-updatecode + updatedb)

يعني هذا إذا ركضت drush pm-update سيتم تحديث كل تحديث متاح (أحدث تحديثات للوظيفة)؟ هل هناك طريقة لتحديث (db) وحدة واحدة بالضبط؟

28
nonsenz

لا ، لا يمكنك.

إذا كنت ترغب في تحديث كل وحدة نمطية بمفردها ، فقم فقط بتحديث ملفات وحدة واحدة ثم قم بتشغيل updateb.

10
Berdir

في Drush 5.7 يمكنك تشغيل الأمر drush pm-update --no-core module-name. سيقوم Drush تلقائيًا بعمل نسخة احتياطية من الوحدة النمطية الحالية ، وتنزيل الإصدار الجديد ويطالبك بتحديث قاعدة البيانات.

22
ahimsauzi

إذا كنت تريد تشغيل تحديث واحد فقط ، فيمكنك تشغيل drush eval foo_update_33() ، على سبيل المثال. من الناحية العملية ، إنه أكثر تعقيدًا من ذلك حيث يجب عليك تحميل ملف .install ولكن ليس كثيرًا.

يمكنك أيضًا تجربة حلmacaleaa:

drush php-eval 'module_load_install('my_module');my_module_update_7XXX();'

8
moshe weitzman

لا هذا ولا ذاك drush up someproject ، ولا drush upc someproject يبدو أن تحديث وحدة someproject فقط. طريقة مختلفة لما تريده هي:

drush dl someproject #use --select option to be prompted for a module version
                     #this will overwrite your exising module's files
                     #backup your modules files with --backup, yourself, use a VCS to revert
drush updb           #run available database update scripts

هنا مناقشة موضوع مماثل على Drupal.org. انتبه!

5
myselfhimself

أنا أستخدم Drush 5.9 ، ويمكن تحديث وحدة واحدة بنجاح باستخدام هذا الأمر:

drush dl *project*

لذا ، على سبيل المثال ، لتحديث الوحدة النمطية "devel":

drush up devel
4
Rod

أعتقد أن هذا ممكن الآن مع Drush ، باستخدام up:

drush up module_name
1
zgreen

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

جربت الحل الذي اقترحهmacaleaa وmoshe weitzman من الجري:

drush php-eval 'module_load_install('MYMODULE');MYMODULE_update_7101();'

قبل تشغيل drush updatedb ، لكن هذا لم يساعد - فشل تشغيل السوائل لأن updatedb حاول مرة أخرى تشغيل MYMODULE_update_7101() وخطأ ، قائلًا إن الجدول موجود بالفعل. في الأساس ، قام الرمز أعلاه بتشغيل التحديث ، ولكن لم يترك بصمته على النظام الذي تم تشغيل التحديث. من المفترض أن هناك مجموعة كاملة من الأشياء الأخرى update.php يجب القيام بها بعد تشغيل كل تحديث لتخزين أحدث رقم إصدار للوحدة النمطية في ديسيبل ، إلخ.

لقد مررت بـ update.php لأرى كيف تعمل فعليًا كل وظيفة تحديث وماذا تفعل بعد ذلك ، وتبحث عن وظيفة للاتصال بها والتي ستستدعي وظيفة التحديث وأيضًا جميع الأشياء الأخرى. انتهى بي الأمر إلى هذا:

include_once DRUPAL_ROOT . "/includes/update.inc";
$c["results"]["#abort"] = array();
update_do_one("MYMODULE", 7101, array(), $c);

الذي كنت أركضه بالفعل في حالة سكر:

drush eval 'include_once DRUPAL_ROOT . "/includes/update.inc"; $c["results"]["#abort"] = array(); update_do_one("MYMODULE", 7101, array(), $c);'

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

متسلل قليلاً وتأخر 6 سنوات ، ولكن كل شيء على ما يرام ينتهي؟

0
nerdlinger