MySQL-Dump automatisch zu Git-Commit hinzufügen
Git ist ein geniales Tool zur Versionsverwaltung von Dateien. Doch was, wenn das gewünschte Projekt nicht nur aus Dateien, sondern beispielsweise auch aus einer MySQL-Datenbank besteht? Ideal wäre, wenn bei jedem Git-Commit der jeweils aktuelle Stand der Datenbank mit abgespeichert wird. Für solche Anforderungen bietet Git pre-commits, um solche Aktionen automatisiert auszuführen.
Um einen MySQL-Dump automatisch auszuführen und dem Git-Commit hinzuzufügen muss die Datei .git/hooks/pre-commit
angepasst bzw. erstellt werden:
#!/bin/bash
# Pre-commit hook to make a mysql dump right before committing and add it to the commit.
#
## Change the following values to suit your local setup.
# The name of a database user with read access to the database.
DBUSER=my_db_user
# The password associated with the above user. Leave commented if none.
DBPASS=my_db_password
# The database associated with this repository.
DBNAME=my_db
# The path relative to the repository root in which to store the sql dump.
DBPATH=./dev/sql
[[ -d $DBPATH ]] || mkdir $DBPATH
mysqldump -u $DBUSER -p$DBPASS $DBNAME > $DBPATH/$DBNAME.sql
git add $DBPATH/$DBNAME.sql
exit 0
Anschließend muss diese Datei unbedingt ausführbar gemacht werden, sonst führt Git die Aktion nicht durch:
chmod +x .git/hooks/pre-commit
Wird nun ein Git-Commit durchgeführt wird zunächst ein Datenbank-Dump erstellt und dem Commit hinzugefügt. Auf diese Weise hält man mit Hilfe von Git nicht nur die Dateien, sondern auch die jeweils aktuelle Datenbankversion vor.