Theme/Modul-Repository pflegen

oxid6

#1

Hallo zusammen,

wie handhabt Ihr den Umgang mit Euren Modulen und Themes, wenn diese über composer installierbar sind?

Problem:
Ich habe ein Theme in einem privaten Bitbucket-Repository.
Dieses kann ich per composer laden und anschließend im Backend installieren, soweit sogut.

Wenn ich aber nun Änderungen an diesem Theme vornehmen will (und das kann ich ja nur wirklich gut in der Shop-Umgebung), dann habe ich dort geänderte Dateien.
Wie bekomme ich diese nun einfach (ohne einzelne Dateien kopieren zu müssen) am einfachsten in das Repsoitory zurück? Das gleiche mit Modulen…
Da scheint die ursprüngliche Variante (mit einem “copy_this”-Ordner) einfacher oder?

Wie macht Ihr das?

Vielen Dank.


#2

Composer ist lediglich ein “one way” Installer für Endanwender.
Du brauchst schon einen dedizierten Dev Shop mit deinem Theme/Module als git repository.
Und dann:

$ git add *
$ git commit -m "updates"
$ git push *

#3

Hallo,

vielen Dank für die Antwort.

Du brauchst schon einen dedizierten Dev Shop mit deinem Theme/Module als git repository

Ja, das ist klar, aber ich habe ja im Shop eine andere Ordner-Struktur als im Repository.
Wenn ich ein Theme über Composer installierbar machen möchte, ist die Struktur im Composer-Package vorgegeben, siehe auch hier: https://github.com/OXID-eSales/flow_theme
Oder sollte ich mich da täuschen…?

Danke.


#4

Dass Composer da was vorgibt, wäre mir neu, es lädt nur Dateien herunter und legt sie im angegebenen Ordner ab. Die Ordnerstruktur innerhalb des Moduls / Themes selbst ist vom Shop vorgegeben, daher müsste die Repository eigentlich der Ordnerstruktur innerhalb des Theme / Module Ordners entsprechen.

Flow bzw Themes allgemein kannst du direkt in application/view/ clonen, mache ich mit meinem child template auch.
Für dev: cd application/views && git clone [email protected]:[...].git + symlink in den out Ordner legen
Die Endanwender Installation läuft über genau so über bower / yarn (composer habe ich noch nicht probiert)

Bei Modulen hast du ja jetzt im Prinzip nur noch composer, da kannst du kein copy_this fürs manuelle Hochladen etc hinterlegen. Bei Modulen für alte Versionen muss man natürlich noch einen Ordner drumherum machen, am einfachsten copy_this/ und dann die passende Ordnerstruktur mit modules/vendor/module etc, wobei ich schon zu viele copy_this Ordner innerhalb von modules/ gesehen habe, als mir lieb wäre.
Von welchen Modulen reden wir? v6 oder alte? (wegen dem oxid6 Tag dachte ich, es ginge ausschließlich um v6 Module)


#5

Vielen Dank für Deine ausführliche Antwort.

Dass Composer da was vorgibt, wäre mir neu, es lädt nur Dateien herunter und legt sie im angegebenen Ordner ab.

Composer nicht, aber das composer-plugin von OXID.
In seiner composer.json muss man ein assets- und ein target-directory angeben, siehe hier:
https://docs.oxid-esales.com/developer/en/6.0/themes/theme_via_composer.html

Das entspricht dem von Dir genannten application/view/-directory und dem out-directory.
Wie Du in dem flow-theme siehst, ist aber die Struktur im Repsitory die folgende:

Das heißt, der Repository-Ordner “out/flow” landet durch das Composer-Plugin von OXID in out/flow und der ganze Rest! in application/view. Das ist leider nicht sehr sauber…
Ich habe keine Möglichkeit gefunden, die Dateien im Repository anders zu strukturieren, sodass diese ebenfalls in den gewünschten Zielordnern landen.

Daher war meine Frage wie andere Entwickler hiermit umgehen.

Vielen Dank.