webentwicklung-frage-antwort-db.com.de

Behalten WP Datenbank über mehrere Entwickler mit Git synchronisiert

Ich arbeite daran, meinen Git-Workflow für meine WordPress-Entwicklungsprojekte zu verbessern. Oft erstelle ich bei der Entwicklung eines Content-Management-Systems einen Entwicklungsserver (wie http://dev.finalsitename.com), der die benutzerdefinierten Beitragstypen und Taxonomien enthält, die in der Produktionsversion verwendet werden. Dadurch kann mein Kunde beginnen, Inhalte zur Site hinzuzufügen.

Während sie an dieser Aufgabe arbeiten, baue ich in der Regel das Aussehen und Verhalten sowie die benutzerdefinierten Programmier-/Plug-Ins auf, die in meiner lokalen Host-Umgebung verwendet werden. Um sicherzustellen, dass ich ihre Updates nicht überschreibe, ziehe ich im Allgemeinen eine Kopie ihrer Datenbank nach unten und ersetze meine. Es gibt jedoch Zeiten, in denen ich einfach in den Admin-Bereich von WP springen und eine Einstellung oder etwas anderes Kleines ändern muss ...

Wenn mehrere Entwickler an einem WordPress-Projekt arbeiten, führen wir jeweils einen (zeitgestempelten) Datenbank-Dump unserer Site-Version durch und nehmen ihn in das Stammverzeichnis auf, bevor wir den lokalen Zweig in das Remote-Repository übertragen. Das Problem bei diesem Ansatz besteht darin, dass die Datenbanken häufig nicht synchron sind und nicht einfach ermittelt werden kann, welche Datenbanken verwendet werden sollen.

Was tun andere Entwickler, um ihre Datenbanken synchron zu halten und gleichzeitig mehreren Entwicklern (und Kunden/Produzenten von Inhalten) die Möglichkeit zu geben, an demselben Projekt zu arbeiten?

32
Philip Downer

Es gibt 3 Möglichkeiten von am einfachsten ->

  1. Verwenden Sie nur eine entfernte Datenbank, mit der Sie alle eine Verbindung mit vielen Sicherungen herstellen. Auf diese Weise müssen Sie sich nur um Dateien und nicht um die Datenbank kümmern.

  2. Verwenden Sie die in WordPress integrierte Import- und Exportfunktion und legen Sie sie in Ihrer Versionskontrolle direkt im WP-Stammverzeichnis ab (wie in einem neuen Ordner). Natürlich dauert es ein paar Minuten länger, aber es ist denkbar einfach und Sie können es automatisieren, aber was noch wichtiger ist, es wird Teil der Versionskontrolle.

  3. Verwenden Sie ein benutzerdefiniertes Aktualisierungsskript, um die tatsächliche Datenbanksynchronisierung zu versionieren. Ich weiß ehrlich gesagt nicht, wie man das mit git schafft, weil es nur ein Skript ist und nicht wirklich weiß, was los ist. Ich weiß, dass es Tools von Drittanbietern gibt, die dies kommerziell und kostenlos tun ( http: // www.liquibase.org/ ).

12
Wyck

Wenn Sie die Datenbanken vollständig synchron halten müssen, z. Schema und Daten können Sie ein benutzerdefiniertes Versionsverwaltungssystem entwickeln, das auf Sicherungen basiert.

Oder wenn Sie die Daten aus der Produktion entfernen möchten, aber das Schema weiterentwickeln möchten, können Sie mit einer benutzerdefinierten Lösung (einer versionierten Datei mit allen Schemaänderungen) oder mit einer Standardlösung arbeiten, die auf dem Konzept von migration basiert. In diesem Stackoverflow-Thread finden Sie viele Informationen: Mechanismen zum Nachverfolgen von DB-Schemaänderungen .

1
grosshat

Es tut mir leid, wenn dies unglaublich offensichtlich erscheint, aber wenn Sie alle dieselbe Kopie der Datenbank mit derselben Struktur benötigen, ist es dann nicht sinnvoll, einen Office-/zentralen SQL-Server zu haben und diesen zu verwenden? Klonen Sie es lokal, wenn Sie experimentieren müssen, aber behalten Sie es als autorisierenden Defacto-Standard bei und sichern Sie diesen Server und nur diesen Server.

Ansonsten, wenn ich an einem Gruppenprojekt arbeite, haben wir unsere eigenen Setups mit unterschiedlichen Inhalten. Der Code übernimmt das Aktualisieren und Migrieren von Tabellenstrukturen, und wir können über das LAN auf alle lokalen Installationen des Codes zugreifen, der auf unseren Computern ausgeführt wird. Daher müssen wir keine Inhalte freigeben.

Wenn wir Inhalte eingeben, führen wir sie auf einem Testserver aus, den wir entweder exportieren und in den Live-Server importieren oder direkt auf den Produktionsserver migrieren können, wenn derzeit keine Live-Instanz vorhanden ist.

Wenn Sie zu irgendeinem Zeitpunkt eine Trennung von Live-Test- und WIP-Daten benötigen, verwenden Sie einfach einen Live-, Test- und Entwicklungszweig in Ihrem Repository

1
Tom J Nowell