Za předpokladu, že již máte git repo, proveďte následující ve skriptu shellu nebo cokoli jiného:
#!/bin/bash -e
# -e means exit if any command fails
DBHOST=dbhost.yourdomain.com
DBUSER=dbuser
DBPASS=dbpass # do this in a more secure fashion
DBNAME=dbname
GITREPO=/path/to/git/repo
cd $GITREPO
mysqldump -h $DBHOST -u $DBUSER -p$DBPASS -d $DBNAME > $GITREPO/schema.sql # the -d flag means "no data"
git add schema.sql
git commit -m "$DBNAME schema version $(`date`)"
git push # assuming you have a remote to push to
Potom spusťte tento skript každý den z úlohy cron nebo co máte.
EDIT:Umístěním skriptu do $gitdir/hooks/pre -commit (jméno je důležité), skript se provede před každým potvrzením. Tímto způsobem je zachycen stav schématu DB pro každé potvrzení, což dává smysl. Pokud tento skript sql automaticky spustíte pokaždé, když provedete potvrzení, vyhodíte svou databázi, což nedává smysl.
#!/bin/sh
Tento řádek určuje, že se jedná o skript Shell.
mysqldump -u DBUSER -pDBPASSWORD DATABASE --no-data=true> SQLVersionControl/vc.sql
To je stejné jako v mé odpovědi výše; odebrání DDL pouze z databáze a jeho uložení do souboru.
git add SQLVersionControl/vc.sql
Tím přidáte soubor SQL do každého potvrzení provedeného ve vašem úložišti.
exit 0
Tím se skript úspěšně ukončí. To je možná nebezpečné. Pokud mysqldump
nebo git add
selže, můžete vyhodit něco, co jste si chtěli ponechat.