I Versionskontrolle mysql Datenbank-Dumps von Websites mit Git.
Mit --skip-extended-insert, also ist jeder Datensatz in seiner eigenen Zeile, es funktioniert ziemlich gut, um Änderungen zu verfolgen. Es erlaubt mir auch, alte Versionen der Datenbank aus dem Verlauf zu ziehen und sie zu importieren.
Gibt es eine Möglichkeit, git zu sagen, bestimmte Zeilen oder Zeilen mit bestimmten Mustern zu ignorieren?
Git ist dateibasiert, es ändert nicht den Inhalt von verfolgten Dateien, um Diffs abzuleiten.
Fügen Sie keine Tabellen / Daten in die Db-Dumps ein, die Sie nicht interessieren. Wenn es keine Unterschiede gibt, müssen Sie keine zusätzlichen Schritte unternehmen, um es zu ignorieren / zu korrigieren.
Wenn zum Beispiel Artikel gelöscht werden, die Sie nicht sichern möchten, entfernen Sie sie aus dem Backup-Prozess:
%Vor%Veröffentlichen Sie den Datenbank-Dump, um Dinge zu entfernen, die Sie nicht interessieren. Als Beispiel, hier ist ein Auszug aus einem Db-Dump-Helfer-Skript, das ich verwende:
%Vor%In diesem Beispiel (nur zur Veranschaulichung) werden Autoinkrement-Werte aus create table-Anweisungen entfernt, sodass sie keine Unterschiede in der (versionsgesteuerten) schema.sql-Datei erzeugen.
Wenn git das nicht kann, sind die zwei Lösungen, die ich sehe:
Ändern Sie das Skript, das ich zum Speichern der Datenbank verwende, um Dinge zu entfernen, die für die Versionskontrolle irrelevant sind. (Nachteil: Das Entfernen einiger dieser Dinge könnte dazu führen, dass der Speicherauszug nicht mehr für den Import geeignet ist)
Speichern Sie jeden Datenbankspeicherauszug irgendwo anders (vielleicht von commitID irgendwie innerhalb eines Hooks benannt) und Versionskontrolle eine modifizierte Version.
z. B. cat dump.sql | grep -v "_session" >> dump.sql
,
aber es wäre ideal, wenn ich irgendwo einen grep hinzufügen könnte.
Tags und Links git