Seit Monaten versuche ich, eine gute Projektstruktur für die Verwendung der Git-Versionskontrolle für die Entwicklung von WordPress-Websites zu entwickeln, die nicht die Möglichkeit einbüßt, Kern- und Plug-ins über das WP-Dashboard zu aktualisieren, und keine unkonventionelle Verzeichnisstruktur (wp -inhalt außerhalb des übergeordneten WP-Ordners) und das ist einfach zu verwalten und ganze Websites bereitzustellen. Ich habe über Submodule, Teilbäume, verschachtelte Repos usw. gelesen und es fällt mir immer noch schwer, alles zusammenzufügen und die richtige Strategie zu wählen.
Hier ist, was ich gerade denke, mit meinen Gedanken darüber, wie ich mit Git-Repos in Klammern umgehen würde.
root (main project repo)
|-- wordpress (public git repo added as subtree)
| |-- wp-content
| | |-- plugins
| | | |-- my-custom-plugin (git repo added as subtree)
| | | |-- other-plugin-with-git-repo (git repo added as subtree)
| | | +-- other-plugin-without-git-repo (ignored/untracked)
| | |-- themes
| | | |-- my-custom-theme (git repo added as subtree)
| | | |-- other-theme-with-git-repo (git repo added as subtree)
| | | +-- other-theme-without-git-repo (ignored/untracked)
| | +-- uploads (ignored/untracked)
| |-- wp-admin
| +-- wp-includes
|-- wp-config.php (ignored/untracked)
+-- other-files.txt
Dies lässt mich mit mehreren Problemen / Fragen zurück;
Automatische Updates; Ich mag die neue Funktion für automatische Updates. Sie könnte möglicherweise viel Zeit und Mühe sparen, um meine Websites auf dem neuesten Stand zu halten und sicher zu halten, aber es scheint, als würde sie das Nachverfolgen von Codeänderungen mit git erleichtern. Gibt es eine Möglichkeit, meine Codeänderungen zu verfolgen, während WordPress Core weiterhin automatisch aktualisiert wird?
Verhindert das Vorhandensein von Teilbäumen unter dem WordPress-Core-Repo, dass ich git verwende, um neue Core-Updates einzufügen, oder das Zurückschreiben meiner Änderungen in den WordPress-Core-Repo (falls ich jemals entscheiden würde, ein Core-Mitarbeiter zu werden)?
Bei Plugins ohne öffentliches Git-Repo führt das vollständige Ignorieren dazu, dass die gesamte Site auf einem neuen Server nicht schnell geklont werden kann, ohne dass Dateien manuell auf den Server kopiert werden müssen. Es verursacht auch ein Problem, wenn ich den Code dieses Plugins ändern möchte. Diese Änderungen werden nicht nachverfolgt und können bei einem Plugin-Upgrade leicht verloren gehen.
Zusammenfassend lässt sich sagen, was ist ein gutes git + WordPress-Setup, das diese Probleme vermeidet? Ich würde mich über Ihr Feedback zu meiner vorgeschlagenen Projektstruktur freuen. Jede Art und Weise, wie Sie mir helfen können, dies zu verbessern, wäre sehr dankbar!
PS, wenn es ein besseres Forum für diese Diskussion gibt, weisen Sie mich bitte dorthin.
quelle
install.php
Routinen oder Ähnlichem darauf zu konzentrieren und die normalen Update-Mechanismen von dort aus zu verwenden. Der Composer-Stack kann Aktualisierungen abstrakt sehr gut verarbeiten, hängt jedoch von der Qualität der von Ihnen verwendeten Pakete und von Dingen wie dem Proxy von offiziellen WP-Repositories ab, da diese noch nicht ausgereift sind.Vielleicht werfen Sie einen Blick auf dieses Problem und dieses Problem.
Schauen Sie sich auch die README-Dateien in jedem Repo an:
Basierend auf den obigen Repos habe ich dies als ein weiteres Beispiel für ein Git / WP-Setup erstellt . Ich habe mich für die Verwendung von Symlinks für Themen entschieden (ich versuche dies in meiner README-Datei zu behandeln ).
Ich bin ein bisschen im selben Boot mit den automatischen Updates ... Mein Plan war es, das WP-Submodul manuell zu aktualisieren, wenn Updates stattfinden. Ich denke, die Alternative ist theoretisch (ich muss mich noch testen), das Submodul selbst für kleinere Updates aktualisieren zu lassen (es gibt eine WP-Einstellung dafür) und dann ein
git
Force / Reset des Submoduls durchzuführen, wenn größere Updates herauskommen ( Vielleicht könnte eine der Antworten hier hilfreich sein ... Natürlich würde man beim Aktualisieren auf die nächste Hauptversion auf ein bestimmtes WP-Tag abzielen wollen.Eine zu beachtende Sache ist, dass, wenn WP
.git
in den Pfaden sieht , die automatischen Updates automatisch deaktiviert werden. Weitere Informationen finden Sie unter:Andere verwandte Links:
Update vom Mai 2015
Ich habe dieses Repo erstellt, mit dem ich schnell WordPress-Projekte starten kann. Mein neuester Ansatz ist, nur die Versionskontrolle der Themes vorzunehmen. Mit anderen Worten, ich installiere WP lokal (unter Verwendung von Setup im oben genannten Repository) und in der Produktion, ändere dann die Konfigurationsdatei auf jedem System und
git
ziehe meine Themes, um eine funktionierende Site zu erhalten.quelle
Diese Art der Entwicklung fällt in die Kategorie "nicht so einfach und erfordert einen benutzerdefinierten Workflow, mit dem es möglicherweise lange dauert, bis man zufrieden ist".
Ich finde Unterbäume, Submodule oder verschachtelte Repos, ein großer Schmerz im Arsch.
Einige Gedanken (verfolge alles).
add_filter( 'auto_upgrade_ignore_checkout_status', '__return_true' );
Sichere Methode über manuelle Commits + E-Mail:
Sie können einen Staging-Server verwenden und Benachrichtigungen über E-Mail-Updates an sich selbst senden, die Updates festschreiben und auf den Live-Server übertragen, auf dem die automatischen Updates deaktiviert sind.
Auf diese Weise können Sie auch Ordner für Ihre eigenen Repos nach Belieben kopieren / einfügen, wie ich es oft tue. Es macht es auch einfach, mehrere Staging-Server zu klonen / zu zerstören. Git wird mit dieser Methode wirklich wirksam, da es verteilt wird.
Der Nachteil: Kopieren / Einfügen von Ordnern, Verwaltung.
Automatische Methode
Richten Sie ein Build-Skript (Phing, Ant, Bash, Capistrano usw.) und einen benutzerdefinierten Code ein, der ein git add + commit ausführt, wenn ein Update angewendet wird, und senden Sie es an den Live-Server. Sie können Plugins / Theme-Repos auch trennen und dann das Skript kompilieren / verschieben / was auch immer und / oder Composer in der Mischung verwenden.
Die Automatisierung eines solchen Workflows ist in der Regel auch unflexibel und lohnt sich nur, wenn Sie einen echten Bedarf an investierter Zeit sehen.
Der Nachteil: unflexibel, braucht Zeit zum Erstellen.
Git sollte nicht für Backups verwendet werden, und im Allgemeinen müssen Sie den Festschreibungsverlauf von WP nicht klonen.
quelle
Nach einigem Überlegen, da ich auf jeden Fall die nativen WP-Updates nutzen möchte, um mir die Arbeit zu ersparen, ist es nicht sinnvoll, alles zu verfolgen, was WP mit git aktualisieren wird. Hier ist eine überarbeitete Idee.
Dann verliere ich natürlich die Möglichkeit, zu verfolgen, welche Plugins und Themen Teil des Projekts innerhalb des VCS sind, aber ich brauche das wirklich nur für Sicherungszwecke, und ich werde sowieso eine Art reguläres Sicherungssystem verwenden.
Das Einzige, was mir wirklich fehlt, ist die Möglichkeit, den gesamten Stack auf einfache Weise auf verschiedenen Servern bereitzustellen, ohne FTP zu verwenden, um das Ganze manuell zu kopieren. Hat jemand irgendwelche Gedanken dazu?
quelle
Ok, wenn ich Mark Jaquiths Vortrag hier sehe, bin ich vielleicht auf dem falschen Weg. Hier ist ein weiterer Versuch, der alles nachzeichnet.
Ich vermute, der größte Nachteil dabei ist, dass es ein benutzerdefiniertes Inhaltsverzeichnis gibt, was in der Vergangenheit Probleme mit schlecht geschriebenen Plugins und Themen verursacht hat, die das Inhaltsverzeichnis nicht finden konnten.
quelle