Pregunta

He empezado a utilizar Mercurial para la versión de control de mis archivos de código fuente del proyecto Drupal (soy tanto un VCS y Mercurial novato). Sin embargo, la base de datos sigue siendo "la versión controlada" por medio de un directorio de archivos de fecha .sql.gz.

Lo que yo quiero es tener un único archivo de volcado de la base de datos en algún lugar dentro de mi repositorio, que se sobrescribe con un volcado actual cuando los cambios de base de datos, e importados en la base de datos cuando quiero revertir a otra versión.

Lo hice de forma manual, y funcionó. Pero lo que realmente me gustaría es algo que hace el vertido / carga automáticamente en cada confirmación / actualización. Realmente preferiría que sería enganchar en Mercurial de ser algo externo como un archivo MAKE que vuelca la primera base de datos y después comete, ya que me gusta trabajar con herramientas de TortoiseHg, y no me siento como tener otro guión para funcionar.

Ahora, parece que algo así como un mysql .... < dumpfile.sql en un gancho update sería una manera fácil de cargar el volcado de base de datos después de cada actualización. Pero ¿qué pasa con la automática de dumping?

sobre gancho pre-commit de SVN, y la respuesta aceptada es que es probablemente una mala idea. ¿Se aplica a Mercurial? Tal vez otro gancho (prechangegroup?) Funcionaría?

EDIT:

Debo señalar que estoy usando por mí mismo, en mi máquina local. No debe escalar más allá de un solo usuario.

¿Fue útil?

Solución

Debe estar bien para volcar la base de datos con un gancho pre-commit. Sólo tenga cuidado de no utilizar un gancho precommit, ya que es una cosa diferente (se ejecuta dentro de la transacción).

En general, para cada comando (update, commit, etc.) se ejecuta el gancho pre-<command> antes de que se ejecuta el comando.

Otros consejos

Parece que esto es más de una operación de actualización. Supongo que estaba trabajando en la base de datos, deliberadamente elegir exportar el esquema de SQL, y se han comprometido. El problema viene cuando alguien más actualizaciones de usted (o algún otro lugar) o actualizar de ellos. Mercurial tiene un para las actualizaciones.

Una alternativa sería la creación de su propio mercurial complemento / extensión que en realidad puede hablar directorio para la base de datos (MySQL) y potencialmente proporcionar información más útil. Todo esto depende de usted que sabe un poco de pitón.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top