In Magento 1 bin ich nämlich mit dem Workflow den wir aktuell nutzen sehr zufrieden:
- Mittels composer werden alle externen Module nach vendor/ geladen
- Ein Vendor Modul ist auch der Magento Core selbst
- Mit einem kleinen Script (welches wir xlink nennen) "symlinken" wir nun den Magento Core nach htdocs
- Danach erfolgen alle Vendor-Module per Modman - welche auch xlink verarbeitet werden
- Falls xlink eine tgz findet entpackt es diese und erstellt Symlinks auf Basis der packages.xml
Damit haben wir nur eine composer.json und eine composer.lock im GIT Repo. Es folgt noch die Module und Themes die genau nur ein Kunde verwenden möchte oder speziell für ihn angefertigt sind:
- in local/$Modulname liegt ein Modul und eine modman-Datei
- xlink verlinkt ebenfalls alles was in local/ direkt in den htdocs/ - natürlich mit Hilfe der modman
Symlinks waren toll weil ich so direkt im Repo arbeiten konnte. Quellcode ändern, in Magento testen, commiten und Bugfix pushen. Easy.
In Magento 2
Machen wir erst mal eine kleine Bestandsaufnahme für Magento 2.
- In Magento 2 gibt es schon composer von Haus aus
- Damit können Libs oder auch Magento-Module, Sprachen, Themes installiert werden
- Alle Infos dazu stehen unter https://github.com/magento/magento-composer-installer im Readme.md
- Die Default Strategie für Deployment ist "copy". Die Strategie "Symlink" sagt mir z.Z. folgendes: "Warning: Magento 2 is not tested with "symlink" deployment strategy. It may not function properly."
Mein Anforderungen
- Ich gerne wieder ein GiT-Repo das die Composer.json + Lock enthält UND zusätzlich die Dinge die ich nur für den Kunden brauche.
- Ich hätte gerne keine externen Abhängigkeiten die ich nicht betreue
Anforderung 2 gestaltet sich als recht komplex. Wenn ich keine externen Anforderungen möchte muss ich alle Libs die Magento selbst bereits benötigt umbiegen und in mein GIT portieren. Das wäre relativ magisch und sehr aufwendig. Hierzu habe ich aktuell noch keine Idee. Generell fühlt es sich aber doof an wenn ein ganzes Team nicht arbeiten kann weil z.B. GitHub gerade down ist und niemand einen Stand ziehen kann. Oder wenn selbiges kurz vor dem Go-Live passiert?
Vermutlich wird man in diesem Fall auch "einfach" den Source von einem anderen Projekt oder der Dev-Maschine kopieren können. Ich bin unschlüssig.
Deine Meinung!
Jetzt habe ich meine Gedanken soweit "ausgekotzt". Was denkt ihr? Ein Git-Repo je Kunde oder einfach mehrere? Für jedes Modul des Kunden ein eigenes Git-Repo damit das mit Composer toll klappt? Ist es den Verwaltungsaufwand los? Stelle ich mich, was die externen Abhängigkeiten angeht, nur an?