Utilizzando ganci Mercurial per creare / database di carico discariche per il controllo delle versioni

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

Domanda

Ho iniziato ad usare Mercurial per i miei file sorgenti del progetto Drupal versione-controllo (io sono sia VCS e Mercurial newbie). Tuttavia, il database è ancora "versione-controllato" utilizzando una directory di file datati .sql.gz.

Quello che voglio è quello di avere un unico file dump del database da qualche parte nel mio repository, che sarebbe stato sovrascritto con un dump corrente quando le modifiche del database, e importati nel database quando voglio rollback ad un'altra versione.

L'ho fatto manualmente, e ha funzionato. Ma quello che mi piacerebbe davvero è una cosa che fa automaticamente il scarico / carico su ogni commit / aggiornamento. Mi piacerebbe davvero preferisco che sarebbe collegare in Mercurial che essere qualcosa di esterno, come un makefile che prima scarica il database e quindi si impegna, dal momento che mi piace lavorare con gli strumenti di TortoiseHg, e non mi sento come avere un altro script da eseguire.

Ora, sembra che qualcosa di simile a un mysql .... < dumpfile.sql su un gancio update sarebbe un modo semplice per caricare il dump del database dopo ogni aggiornamento. Ma per quanto riguarda le pratiche di dumping automatico?

C'è stato un domanda simile su pre-commit hook di SVN, e la risposta accettata è che è probabilmente una cattiva idea. Non si applica a Mercurial? Forse un altro gancio (prechangegroup?) Avrebbe funzionato?

EDIT:

Tengo a precisare che sto usando da me, sulla mia macchina locale. Non dovrebbe scalare al di là di un singolo utente.

È stato utile?

Soluzione

Si dovrebbe andare bene per il dump del database con un gancio pre-commit. Basta fare attenzione a non utilizzare un gancio precommit, dal momento che è una cosa diversa (viene eseguito all'interno della transazione).

In generale, per ogni comando (update, commit, etc.) il gancio pre-<command> viene eseguito prima dell'esecuzione del comando.

Altri suggerimenti

Sembra che questo è più di un'operazione di aggiornamento. Presumo che si stava lavorando sul database, deliberatamente scegliere di esportare lo schema di SQL, e ho commesso. Il problema nasce quando qualcuno gli aggiornamenti altro da voi (o qualche altra posizione) o si aggiorna da loro. Mercurial ha un per gli aggiornamenti.

Un'alternativa potrebbe essere quella di creare il proprio mercuriale plugin / estensione che può realmente parlare di directory al database (MySQL) e potenzialmente fornire informazioni più utili. Tutto questo dipende da voi conoscere un po 'di pitone.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top