Mein Team hatte ein ähnliches Problem. Wir verwenden git, um unseren eigenen benutzerdefinierten Code wie Plugins und das von uns geschriebene Thema zu versionieren. Wir verwenden Composer , um Abhängigkeiten wie Plugins zu verwalten, die wir nicht geschrieben haben. Wir überprüfen die Dateien composer.json und composer.lock in git, um alle synchron zu halten. Von jedem Entwickler wird erwartet, dass er den Git-Master-Zweig composer update
zieht und regelmäßig auf seinen Playpens läuft, damit jeder auf dem neuesten Stand bleibt.
In der Datenbank kümmern sich die Entwickler hauptsächlich um die Konfiguration, und wir verwenden häufig WP-CLI , um die Konfiguration synchron zu halten. Zum Beispiel haben wir ein Shell-Skript, das einen WP-CLI-Befehl zum Aktivieren oder Deaktivieren von Plugins auf Hostbasis ausführt. Einige Plugins werden beispielsweise nur auf unserem Content-Staging-Host verwendet, sodass das Skript auf jedem Host ausgeführt werden kann und nur den entsprechenden Satz auf diesem Host aktiviert. Einige Konfigurationen, deren Skripterstellung zu zeitaufwändig ist, werden nur dokumentiert und bei Bedarf manuell reproduziert.
Wir haben auch ein Perl-Skript, das die Datenbank vollständig von unserem Content-Staging-Server auf einen QA- oder Dev-Host klont. Die Entwickler können dies regelmäßig verwenden, wenn sie den gesamten aktuellen Inhalt benötigen, obwohl dies normalerweise weniger wichtig ist als der Code und die Konfiguration. Das Skript führt folgende Aufgaben aus:
- mySQL-Dump der Datenbank des Content-Staging-Servers, Ändern der Tabellennamen, Laden in die Datenbank des Zielservers
- Verwenden Sie wp-cli, um Verweise auf den Staging-Server in der Datenbank zu ändern und auf den Zielserver zu verweisen
- Synchronisieren Sie das Upload-Verzeichnis auf dem Zielserver mit den Uploads des Content-Staging-Servers
Es gibt einige vielversprechende Lösungen für die eigentliche Versionierung der Datenbank, die schnell verfügbar sind. VersionPress und Mergebot sind die beiden, die ich kenne, und es kann auch andere geben.
Ich habe weitere technische Details darüber, wie wir WordPress für die Arbeit mit Git und Composer eingerichtet haben, in meinem Blog geschrieben. Es war notwendig, mit WordPress Core in einem eigenen Verzeichnis zu laufen, um eine saubere Trennung zwischen dem Code, den wir in Git und WordPress Core beibehalten wollen, zu erreichen. Wir behandeln WordPress selbst als eine Abhängigkeit und verwalten es mit Composer.