Meine zwei Cent: Ich halte es nicht für eine gute Idee. GIT tut so etwas wie „Speichern von Snapshots eines Satzes von Dateien an verschiedenen Punkten in der Zeit“, so dass Sie kann perfekt GIT verwenden für so etwas, aber das bedeutet nicht , Sie sollten . GIT wurde entwickelt, um Quellcode zu speichern, so dass Ihnen die meisten Funktionen fehlen und Sie viel Leistung für ein wenig Bequemlichkeit eintauschen würden.
Lassen Sie mich annehmen, dass der Hauptgrund, warum Sie darüber nachdenken, darin besteht, "eine Kopie der Daten und des Codes synchron zu halten". Dies bedeutet, dass Sie befürchten, dass Version 2.0 Ihres Codes ein anderes Datenbankschema als Version 1.0 benötigt . Eine einfachere Lösung wäre, das Datenbankschema als eine Reihe von SQL-Skripten mit CREATE
Anweisungen zusammen mit dem Quellcode in Ihrem Git-Repository zu speichern . Ein Teil Ihrer Installationsprozedur besteht dann darin, diese Skripte auf einem zuvor installierten Datenbankserver auszuführen.
Der tatsächliche Inhalt dieser CREATE
Tabellen hat nichts mit der Version Ihres Quellcodes zu tun. Stellen Sie sich vor, Sie installieren Ihre Software, Version 1.0, auf Server A und Server B, die in verschiedenen Unternehmen von verschiedenen Teams verwendet werden. Nach einigen Wochen wird der Inhalt der Tabellen sehr unterschiedlich sein, obwohl die Schemata genau gleich sind.
Da Sie den Inhalt der Datenbank sichern möchten, empfehle ich Ihnen, ein Sicherungsskript zu verwenden, das den Sicherungsspeicherauszug mit der aktuellen Version der Software kennzeichnet, zu der der Speicherauszug gehört. Das Skript sollte sich im GIT-Repository befinden (damit es Zugriff auf die Quellcode-Versionszeichenfolge hat), die Speicherauszüge selbst gehören jedoch nicht zu einem Versionskontrollsystem.
EDIT :
Nachdem ich den ursprünglichen Beitrag gelesen habe, der die Frage motiviert hat , finde ich dies eine noch zweifelhaftere Idee. Der entscheidende Punkt ist, dass der mysqldump
Befehl den aktuellen Status einer Datenbank in eine Reihe von SQL- INSERT
Anweisungen umwandelt und GIT diese unterscheiden kann, um nur die aktualisierten Tabellenzeilen abzurufen.
Der mysqldump
Teil ist solide, da dies eine der Sicherungsmethoden ist, die in der MySQL-Dokumentation aufgeführt sind. Im GIT-Teil merkt der Autor nicht, dass Datenbankserver ein Transaktionsprotokoll führen , um Abstürze, einschließlich MySQL , zu beheben . Es wird mit diesem Protokoll , nicht GIT, dass Sie inkrementelle Backups für Ihre Datenbank erstellen soll. Dies hat in erster Linie den Vorteil, dass Sie die Protokolle nach der Wiederherstellung rotieren oder leeren können, anstatt ein GIT-Repository bis ins Unendliche und darüber hinaus aufzublähen ...