Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Developer & VCS: Aus Filesystem Neuzugängen neue DB Einträge generieren.. #4

Closed
jdlx opened this issue Dec 8, 2012 · 37 comments
Closed
Labels

Comments

@jdlx
Copy link
Contributor

jdlx commented Dec 8, 2012

So.. Versuch einer Gedächtnisstütze zu den skype Gesprächen (zuzügl. was mir ad hoc grad noch einfiel).. in Stichpunkten erstmal:

  • Module/Templates/Aktionen können als Unterordner (wg. Versionierung per GIT) unterhalb developer_files/[typ]/.. angelegt werden.. werden dann von developer eingelesen und in die DB gesynct.. sprich in Redaxo neu angelegt.
  • Developer faßt in diesem Fall weder den Ordner noch Dateinamen an.. (wg. Versionierung)
  • Notwendige Metadaten wie Titel/Name, etc. werden per einzelnen(? wär leicher..) files innerhalb des Ordners vorgehalten
  • Metadaten Dateinamen unterliegen einer absoluten Konvention (am einfachsten DB-Feldname.txt ?), die eigentlichen "code" files einer losen, sprich benötigen lediglich einen string (z.b. template, modul-in, modul-out) um sie identifizieren zu können.. (Vorteil im Editor wenn nicht alle gleich heißen und nur über den Ordner unterscheidbar sind..)
  • Evtl. Fehlende Metadaten werden per irgendwelcher defaults/Konventionen erzeugt.. (z.b. als Titel/Name den Ordnernamen), d.h. es soll im minimalst-Fall reichen erstmal nur die eigentlichen "Code" files im Ordner zu haben..
  • Die DB id wird - sobald sie zur Verfügung steht - von developer analog als metadaten-file im Ordner angelegt und stellt somit die eindeutige Zuordenbarkeit her..
@gharlan
Copy link
Member

gharlan commented Dec 12, 2012

Wieso die Metadaten als einzelne Files, wieso nicht als eine yml-Datei oder so?

Bei den Dateinamen fände ich eine striktere Regel besser, glaube ich. Templates enden mit template.php, Modulinput mit input.php, Output mit output.php, und bei Actions entsprechend mit preview.php, presave.php und postsave.php. Wärst du damit auch einverstanden?

@jdlx
Copy link
Contributor Author

jdlx commented Dec 12, 2012

Da ich noch in r4 denke ;) dacht ich wären einzelne files simpler da man keinen yaml parser bräucht.. aber evtl. ist der Aufwand auch vernachlässigbar, dunno.

Bezügl. der filenames: klar, auch ganz strict fein.. es hätte lediglich an ein paar Stellen (Editor Fensteritel, etc.) handling-Vorteile wenn man direkt am Dateinamen gleich erkennen könnte "um wen es geht".. d.h. kein showstopper.

@gharlan
Copy link
Member

gharlan commented Dec 12, 2012

Bzgl. yaml-Parser: Hab in dem Fall auch in R4 gedacht, und würde da ruhig den Parser mitliefern. Die ID würde ich aber als einziges wahrscheinlich trotzdem in eine Extra-Datei legen, damit die einfacher abrufbar ist.

Bzgl. Dateinamen: Ganz strict meinte ich es ja gar nicht, sondern die Dateien sollen ja nur so enden. Also mein_name.template.php wäre auch gültig.

@jdlx
Copy link
Contributor Author

jdlx commented Dec 12, 2012

yaml: cool, auf jeden fall eleganter..
file names: so hatte ich es auch gedacht (aber nicht adäquat formuliert)

sprich doppel plus 1 dlx.. ;)

@gharlan
Copy link
Member

gharlan commented Dec 12, 2012

Was soll passieren, wenn man den Ordner löscht, und was wenn man den Datensatz im Backend löscht? (Bin selbst noch am überlegen, was ich sinnvoll fände..)

@jdlx
Copy link
Contributor Author

jdlx commented Dec 12, 2012

Hm.. mal sehn..

  • Ordner löschen: Aus dem "custom" Modul/Template/.. wird ein "normales", d.h. wenn der Ordner verschwunden ist, wird wieder nach Standardschema das/die files geschrieben.
  • @rex löschen: Aus dem Versionierungs-Blickwinkel sollten auf keinen Fall custom Ordner/file gelöscht werden.. bei dem Anwendungsfall hat für mich das VCS klare Priorität...
    Könnte man sich evtl. in rex irgendwie einklinken und das löschen mit passender Meldung verhindern? Falls nicht fände ich es sogar - wieder: weil spezielle "Kundengruppe" - akzeptabel wenn man aus rex faktisch nicht löschen könnte, weil jedes Löschen nachfolgend einen re-import auslösen würde.. nicht wirklich nice, aber besser als das man sich rex-seitig ausversehn was weglöscht..

@gharlan
Copy link
Member

gharlan commented Dec 12, 2012

Ordner löschen: Denke ich auch, dass es so sinnvoll wäre.

rex löschen: Wenn man es dort verhindert, dann kann man Templates/Module/Actions aber doch gar nicht mehr löschen, oder? Wie wäre es, wenn innerhalb des Ordners eine Datei .rex_ignore o. ä. angelegt würde, und rex den Ordner daher zukünftig ignorieren würde. Löscht man die Datei, wird das T/M wieder in rex angelegt.

(Meine Antwort überschnitt sich mit deiner Erweiterung..)

@jdlx
Copy link
Contributor Author

jdlx commented Dec 12, 2012

.ignore .. is perfekt!

(Auf die andere Weise könnte man löschen wenn man erst den Ordner löscht, dadurch das T/M/A wieder "normal" würde und dadurch wieder löschbar wäre.. aber die .ignore Idee ist viel besser)

@jdlx
Copy link
Contributor Author

jdlx commented Dec 13, 2012

Vorschlag: .syncignore, .developerignore, oder so.. bischen was ad hoc klarstellenderes..

@gharlan
Copy link
Member

gharlan commented Dec 13, 2012

Bezieht sich das noch auf das ursprüngliche .ignore? Weil ich hatte das im obigen Beitrag noch geändert in .rex_ignore.

@jdlx
Copy link
Contributor Author

jdlx commented Dec 13, 2012

Aufs ursprüngliche, ja.. wobei ich auch .rex_ignore etwas unspezifisch finde.. is aber letztlich worscht.. man muß deswegen keine Korinthen nach Athen tragen ;)

@gharlan
Copy link
Member

gharlan commented Dec 23, 2012

Es ist zwar noch nicht Weihnachten, aber es gibt jetzt im redaxo4/3.0-Branch den aktuellen Stand. Es wird also die Version 3.0 werden, und sie benötigt mindestens PHP 5.3.

Was noch völlig fehlt, sind die Metadaten. Aber der Rest funktioniert bei mir soweit so, wie hier besprochen. Das ganze ist aber natürlich noch mit Vorsicht zu genießen.. ;) Darfst aber gerne schon Testen und Fehler melden (oder Dinge, die du dir anders vorgestellt hast)..

In dem Zug habe ich es nun übrigens auch direkt so gebaut, dass man relativ einfach über Plugins oder andere Addons weitere Synchronisationen hinzufügen kann.

@jdlx
Copy link
Contributor Author

jdlx commented Dec 23, 2012

Großartig! Werd nachher gleich mal lostesten..

@gharlan
Copy link
Member

gharlan commented Jan 4, 2013

Die Metadaten werden nun über die Datei metadata.yml ausgetauscht. Ich bin mir noch nicht ganz sicher, ob das jetzt so gut ist, aber wir können ja erstmal damit ein bisschen unsere Erfahrungen machen. Rückmeldungen sind wie immer willkommen ;)

@jdlx
Copy link
Contributor Author

jdlx commented Jan 4, 2013

Yup, kuck ich mir an.. thx!

@gharlan
Copy link
Member

gharlan commented Jan 4, 2013

Die Version ist jetzt direkt im master..

Mir ist gerade noch ein Problem aufgefallen: Was würdest du nach einem DB-Import erwarten? Es kann ja auch vorkommen, dass beispielsweise im Import das Template mit der ID 1 ein ganz anderes ist, als vorher. Soll dann trotzdem der vorhandene Ordner weiterverwendet werden? Weil in der Regel wird es sich ja eher um das selbe Template, nur eventuell in einer anderen Version handeln.
Es könnte übrigens sein, dass zurzeit wieder nach einem DB-Import die alten Daten aus den Dateien übernommen werden (je nach Updatedatum). Ich muss das Thema also allgemein noch angehen.
(Es geht hier um den Import über das import_export-Addon. Beim manuellen Import kann es auch zu solchen Effekten kommen, aber da habe ich ja keine Möglichkeit zu reagieren.)

@gharlan
Copy link
Member

gharlan commented Jan 6, 2013

DB-Import sollte nun so funktionieren, wie über skype besprochen.

@gharlan
Copy link
Member

gharlan commented Jan 9, 2013

@jdlx Mir ist gerade noch eine Frage aufgekommen (angeregt durch die aktuelle Skype-Diskussion): Aktuell ist es so, dass wenn man ein neues Template über das Dateisystem anlegt, eine eventuelle ".rex_id"-Datei nicht beachtet wird, es wird ein normales insert ausgeführt und die Datei dann überschrieben mit der neuen ID. Wäre es besser, erst zu schauen, ob die ID frei ist, und wenn ja, dann die zu nehmen?
Auch wenn es für @polarpixel vermutlich jetzt nicht die beste Lösung ist, das über developer zu lösen, könnte es ja trotzdem eventuell mal praktisch sein, wenn man beim Anlegen die ID gezielt steuern kann. Vielleicht ist es aber auch verwirrend, wenn die IDs nicht unbedingt fortlaufend sind, wenn man ein Template mit ID-Datei von irgendwoher kopiert. @jdlx Was meinst du dazu?

@jdlx
Copy link
Contributor Author

jdlx commented Jan 9, 2013

Nicht fortlaufende IDs find ich nicht so schlimm.. entsteht ja auch im normalen Kontext wenn man z.b. Templates löscht (oder werden die re-used? AFAIR nicht..). Die Möglichkeit gezielt IDs zu überschreiben finde ich aber sehr gut.. das erweitert das Potential noch mal.. insofern +1

@polarpixel
Copy link
Member

Weiß nicht, ob der Vorschlag schon mal diskutiert wurde ... jedenfalls stolpere ich immer darüber, dass ich mehrere template.php und output.php im Editor offen habe und die kaum auseinander halten kann. Daher würde ich eine vom Template- oder Modulnamen abgeleitete Benennung der Dateien bevorzugen - zumindest bei den Dateien, die den Template-, bzw. Modul-Code enthalten und die man editiert.

@gharlan
Copy link
Member

gharlan commented Feb 4, 2013

Du kannst die Dateien von Hand umbenennen, und beliebiges vorne dran setzen. Developer wird die Dateien dann trotzdem finden, und die Namen auch nicht ändern. Also bei den Template-Dateien zum Beispiel ist nur wichtig, dass sie auf "template.php" enden, du kannst sie also umbenennen in "navi.template.php" oder whatever.
Vielleicht baue ich noch eine Option ein, dass Developer auch selbst solche Namen verwendet beim Erstellen der Dateien, mal schauen.

Ich selbst habe meinen Editor so eingestellt, dass wenn zwei Dateien mit dem gleichen Namen offen sind, der letzte Part aus den Pfaden, der sich unterscheidet, mit angezeigt wird. Sieht dann zum Beispiel so aus:

52ae645f5077e09d0c70fe5f506d1a92

@polarpixel
Copy link
Member

Ah, ok. Super, danke! Das mit dem Umbennnen wusste ich nicht.
So eine Einstellung hat mein Editor glaub ich nicht.
Aber die Umbenennungsmöglichkeit reicht mir völlig.

@Koala
Copy link

Koala commented Feb 10, 2013

Ich selbst habe meinen Editor so eingestellt, dass wenn zwei Dateien mit dem gleichen Namen offen sind, der letzte Part aus den Pfaden, der sich unterscheidet, mit angezeigt wird. Sieht dann zum Beispiel so aus:

Editor: Eclipse?
Wenn ja, wie hast du das wo eingestellt?

@gharlan
Copy link
Member

gharlan commented Feb 11, 2013

@Koala Nein, ich verwende inzwischen PHPStorm. Und diese Funktion gibt es mit dem "Tabdir"-Plugin.

@ghost
Copy link

ghost commented Feb 11, 2013

PHPStorm sieht gut aus! Irgendwie haben mich Netbeans,Eclipse und Aptana nämlich noch nicht übereugt. Und wenn das Ding gefällt, hab ich auch kein Probleme 89 auszugeben...

@gharlan
Copy link
Member

gharlan commented Feb 19, 2013

Sind noch irgendwelche Ungereimtheiten inzwischen aufgetreten? Ansonsten stelle ich die 3.0 dann mal so in den Downloadbereich…

@jdlx
Copy link
Contributor Author

jdlx commented Feb 20, 2013

Einzig: ich weiß nicht genau womit ich das getriggert hab (vermute de/re-aktivieren von developer), bzw. mit welcher konkreten Version, aber ich hab hier irgendwann mehrere Versionen (Ordner) eines Moduls gehabt.. mit jeweils angehängtem increment ala ./MODULNAME_1/, ./MODULNAME_2/ etc. wobei dann immer die "neuste" version die aktive war.. kann man zu Fuß per verschieden der .rex_ignore und .rex_id wieder fixen, ist aber irritierend bzw. mühselig..

@gharlan
Copy link
Member

gharlan commented Feb 20, 2013

So eine Dopplung hatte ich auch einmal. Bei mir lag es aber daran, dass ich Redaxo neu installiert habe ohne Demo, somit wurden alle Templates/Module als gelöscht markiert. Anschließend habe ich die Demo wieder importiert, und da wurden die Templates/Module halt wieder angelegt. Ich denke aber, dass bei dieser Kombination das Verhalten richtig ist. Oder meinst du, das Addon sollte da dann wieder die alten Ordner weiter benutzen, wenn ein Template plötzlich doch wieder da ist?
War es bei dir eventuell auch sowas? Ansonsten habe ich gerade auch noch mal paar Dinge probiert (Reinstallation, deaktivieren/aktivieren, Imports etc.), und konnte das Verhalten mit Ausnahme des beschriebenen Szenarios nicht reproduzieren.

@jdlx
Copy link
Contributor Author

jdlx commented Feb 20, 2013

Stimmt, du hast recht.. imports hab ich diverse Male gemacht. Insofern finde das Verhalten auch gut/schlüssig.

@jdlx
Copy link
Contributor Author

jdlx commented Feb 20, 2013

Es würde imho Sinn machen solcherlei Details z.b. im Readme kurz anzusprechen.. es ist ja doch nicht mehr so selbsterklärend wie in der 2.x Version.

@gharlan
Copy link
Member

gharlan commented Feb 20, 2013

Jupp, hab ich auch noch vor.

@polarpixel
Copy link
Member

Ich hatte ab und an mal die Situation, dass die Änderungen an den Dateien nicht automatisch übernommen wurden. Ich musste also in Redaxo das Modul öffnen und abspeichern, dann ging's. War aber nicht reproduzierbar und nur selten.

Und als ich mal begonnen hatte, die Dateien umzubenennen, wie von Dir beschrieben (#4 (comment)), hakte es mal kurz am Anfang. Aber auch nicht so eindeutig, dass ich es Dir richtig klar beschreiben kann.
Wenn ich das Phänomen klarer umreißen kann, gebe ich Dir Bescheid. Ich hatte das AddOn halt bisher einfach nur eingesetzt und nicht einfach nur "hart" getestet.

@gharlan
Copy link
Member

gharlan commented Feb 20, 2013

OK, danke für die Rückmeldung.

Ich gehe mal davon aus, das erste Problem lag nicht einfach nur daran, dass du nicht als Admin eingeloggt warst, oder?

Ansonsten kann ich mir die beiden Probleme gerade nicht erklären. Daher gerne mehr Details, falls sie nochmal auftreten. ;)

Ich werde aber auch noch mal bisschen testen. Ansonsten werde ich dann aber wohl trotzdem die Version so mal allgemein herausgeben, solange es keine gröberen Probleme gibt. Diese kleineren Unschönheiten kann ich ja dann auch noch später ausbessern, wenn wir die Ursache gefunden haben.

@ghost
Copy link

ghost commented Feb 20, 2013

ich meine mich zu erinnern, dass ich sowas wie peter meint auch schon hatte. allerdings war das bei ner ältern 2er version. die aktuelleste 2er schnurrt bei mir wie ein kätzchen :)

@polarpixel
Copy link
Member

Achtung, Rudi: Mein Kommentar bezieht sich auf 3.0-dev.

Also prinzipiell bin ich immer zusätzlich eingeloggt. Es ist aber möglich, dass die Session abgelaufen war und ich wieder ausgeloggt war, als ich die Dateien speicherte. Ich werde da mal gezielt drauf achten.

Ich denke auch, dass Du ruhig veröffentlichen solltest. Eigentlich läuft das AddOn absolut stabil.

@ghost
Copy link

ghost commented Feb 20, 2013

@polarpixel aso!

@gharlan mach es so wie die flowplayer jungs. einfach raus damit und den usern das finden der bugs überlassen :)))

@gharlan
Copy link
Member

gharlan commented Feb 20, 2013

Da die neue Version nun fertig ist, schließe ich hier mal. Wenn sich die Probleme wiederholen, und ihr weitere Details habt, öffnet dafür am besten jeweils neue Issues.

@gharlan gharlan closed this as completed Feb 20, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants