Hvis du antager, at du allerede har et git-repo, skal du gøre følgende i et shell-script eller hvad som helst:
#!/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
Start derefter dette script på daglig basis fra et cron-job eller hvad har du.
EDIT:Ved at placere et script i $gitdir/hooks/pre -commit (navnet er vigtigt), vil scriptet blive udført før hver commit. På denne måde fanges tilstanden af DB-skemaet for hver commit, hvilket giver mening. Hvis du automatisk kører dette sql-script, hver gang du forpligter dig, vil du blæse din database væk, hvilket ikke giver mening.
#!/bin/sh
Denne linje angiver, at det er et shell-script.
mysqldump -u DBUSER -pDBPASSWORD DATABASE --no-data=true> SQLVersionControl/vc.sql
Dette er det samme som i mit svar ovenfor; tager kun DDL fra databasen og gemmer den i en fil.
git add SQLVersionControl/vc.sql
Dette tilføjer SQL-filen til hver commit, der foretages til dit lager.
exit 0
Dette forlader manuskriptet med succes. Dette er muligvis farligt. Hvis mysqldump
eller git add
fejler, kan du blæse noget væk, du gerne ville beholde.