باستخدام السنانير الزئبقية لإنشاء / تحميل مقالب قاعدة البيانات للخصوم

StackOverflow https://stackoverflow.com/questions/1449177

سؤال

لقد بدأت باستخدام 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) ويحتمل تقديم معلومات أكثر فائدة. هذا كل هذا يتوقف عليك معرفة القليل من الثعبان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top