En utilisant des crochets Mercurial pour créer / base de données de charge pour les décharges versionnage

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

Question

J'ai commencé à utiliser Mercurial pour la version contrôle mes fichiers source de projet Drupal (je suis à la fois un VCS et débutant Mercurial). Cependant, la base de données est toujours « sous contrôle de version » à l'aide d'un répertoire de fichiers datés .sql.gz.

Ce que je veux est d'avoir un seul fichier de vidage de base de données quelque part dans mon dépôt, qui serait remplacée par une décharge de courant lorsque les changements de base de données, et importés dans la base de données quand je veux rollback à une autre version.

Je l'ai fait manuellement, et cela a fonctionné. Mais ce que je voudrais vraiment est quelque chose qui fait le dumping / chargement automatique sur chaque / mise à jour. Je préfère vraiment qu'il accrocher dans Mercurial que d'être quelque chose d'extérieur comme un makefile que la première dumps la base de données et archivages puis, depuis que j'aime travailler avec les outils de tortoisehg, et je ne me sens pas comme avoir un autre script à exécuter.

Maintenant, il semble que quelque chose comme un mysql .... < dumpfile.sql sur un crochet update serait un moyen facile de charger la sauvegarde de base de données après chaque mise à jour. Mais qu'en est-dumping automatique?

Il y avait un question similaire sur crochet pre-commit svn, et la réponse acceptée était que c'est probablement une mauvaise idée. Est-il appliquer à Mercurial? Peut-être un autre crochet (prechangegroup?) Fonctionnerait?

EDIT:

Je tiens à souligner que je l'utilise moi-même, sur ma machine locale. Il ne devrait pas évoluer au-delà d'un seul utilisateur.

Était-ce utile?

La solution

Il devrait être bien pour vider la base de données avec un crochet de pre-commit. Il suffit de faire attention à ne pas utiliser un crochet precommit, car il est une chose différente (exécute dans la transaction).

En général, pour chaque commande (update, commit, etc.), le crochet de pre-<command> est exécutée avant la commande est exécutée.

Autres conseils

On dirait que cela est plus d'une opération de mise à jour. Je présume que vous travaillez sur la base de données, choisissez délibérément d'exporter le schéma sql, et se sont engagés. Le problème vient quand quelqu'un d'autre de mises à jour que vous (ou un autre endroit) ou vous mettez à jour de leur part. Mercurial a pour les mises à jour.

Une alternative serait de créer votre propre plugin / l'extension Mercurial qui peut réellement parler répertoire à votre base de données (MySQL) et de fournir des informations potentiellement plus utiles. Tout cela dépend de vous connaître un peu de python.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top