باستخدام السنانير الزئبقية لإنشاء / تحميل مقالب قاعدة البيانات للخصوم
-
11-09-2019 - |
سؤال
لقد بدأت باستخدام Mercurial من أجل التحكم في إصدار ملفات مصدر مشروع Drupal الخاص بي (أنا كل من VCS و Mercurial Newbie). ومع ذلك، لا تزال قاعدة البيانات "تسيطر عليها الإصدار" باستخدام دليل ملفات .sql.gz المؤرخة.
ما أريده هو الحصول على ملف تفريغ قاعدة بيانات واحدة في مكان ما داخل مستودعي، وسيتم الكتابة فوقه مع تفريغ حالي عند تغيير قاعدة البيانات، واستيرادها إلى قاعدة البيانات عندما أريد التراجع إلى إصدار آخر.
لقد فعلت ذلك يدويا، وقد عملت. ولكن ما أود حقا هو شيء يقوم بإلقاء / تحميل تلقائيا في كل الالتزام / التحديث. سأفضل ذلك حقا أنه سيقوم بالركيتية أكثر من كونه شيء خارجي مثل Makefile يقذف أولا قاعدة البيانات ثم ارتكب، لأنني أحب العمل مع أدوات Tortoisehg، ولا أشعر بوجود نصي آخر لتشغيله.
الآن، يبدو أن شيئا مثل mysql .... < dumpfile.sql
على update
سيكون الخطاف طريقة سهلة لتحميل تفريغ قاعدة البيانات بعد كل تحديث. ولكن ماذا عن الإغراق التلقائي؟
كان هناك سؤال مماثل حول خطاف SVN قبل الالتزام، والجواب المقبول هو أنه من المحتمل أن تكون فكرة سيئة. هل ينطبق على mercurial؟ ربما هوك آخر (prechangegroup
؟) هل تعمل؟
تعديل:
يجب أن أشير إلى أنني أستخدمها بنفسي، على جهازي المحلي. لا ينبغي أن يقلل من مستخدم واحد.
المحلول
يجب أن يكون على ما يرام لتفريغ قاعدة البيانات مع pre-commit
صنارة صيد. فقط احرص على عدم استخدام precommit
ربط، لأنه شيء مختلف (يعمل داخل الصفقة).
بشكل عام، لكل أمر (update
, commit
, ، إلخ.) pre-<command>
يتم تشغيل هوك قبل تنفيذ الأمر.
نصائح أخرى
يبدو أن هذا هو أكثر من عملية التحديث. أفترض أنك كنت تعمل على قاعدة البيانات، واختيار عمدا تصدير مخطط SQL، وقد ارتكبت. تأتي المشكلة عندما يقوم شخص آخر بتحديث منك (أو موقع آخر) أو يمكنك التحديث منه. mercurial لديه أ هوك للحصول على التحديثات.
سيكون بديلا لإنشاء البرنامج المساعد / امتداد Mercurial الخاص بك الذي يمكنه في الواقع التحدث دليلا إلى قاعدة البيانات الخاصة بك (MySQL) ويحتمل تقديم معلومات أكثر فائدة. هذا كل هذا يتوقف عليك معرفة القليل من الثعبان.