Pergunta

Comecei a usar o Mercurial para controlar a versão dos meus arquivos de origem do projeto Drupal (sou um novato no VCS e Mercurial). No entanto, o banco de dados ainda está "controlado por versão" usando um diretório de arquivos .sql.gz datados.

O que eu quero é ter um único arquivo de despejo de banco de dados em algum lugar do meu repositório, que seria substituído por um despejo atual quando o banco de dados mudar e importado para o banco de dados quando eu quiser reverter para outra versão.

Eu fiz isso manualmente, e funcionou. Mas o que eu realmente gostaria é de algo que faça o dumping/carregamento automaticamente em cada confirmação/atualização. Eu realmente preferiria que isso se conectaria ao Mercurial do que ser algo externo como um makefile que primeiro despeja o banco de dados e depois se compromete, já que gosto de trabalhar com as ferramentas do Tortoisehg, e não sinto vontade de ter outro script para correr.

Agora, parece que algo como um mysql .... < dumpfile.sql em um update O gancho seria uma maneira fácil de carregar o despejo de banco de dados após cada atualização. Mas e o dumping automático?

Havia um pergunta semelhante Sobre o gancho de pré-compromisso da SVN, e a resposta aceita foi que provavelmente é uma má idéia. Isso se aplica ao Mercurial? Talvez outro gancho (prechangegroup?) podia funcionar?

EDITAR:

Devo ressaltar que estou usando isso sozinho, na minha máquina local. Não deve escalar além de um único usuário.

Foi útil?

Solução

Deve ser bom despejar o banco de dados com um pre-commit gancho. Apenas tenha cuidado para não usar um precommit Hook, já que é uma coisa diferente (corre dentro da transação).

Em geral, para cada comando (update, commit, etc.) o pre-<command> O gancho é executado antes da execução do comando.

Outras dicas

Parece que essa é mais uma operação de atualização. Presumo que você estava trabalhando no banco de dados, escolhem deliberadamente exportar o esquema SQL e se comprometeram. O problema ocorre quando alguém atualiza de você (ou de algum outro local) ou você atualiza a partir deles. Mercurial tem um gancho para atualizações.

Uma alternativa seria criar seu próprio plug -in/extensão mercurial que pode realmente conversar sobre o diretório do seu banco de dados (MySQL) e potencialmente fornecer informações mais úteis. Tudo isso depende de você conhecer um pouco de Python.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top