[PATCH] - fhem.pl Aufnahme von Hilfsmodulen (HttpUtils, ...) in version output

Begonnen von Markus Bloch, 10 Januar 2016, 16:16:38

Vorheriges Thema - Nächstes Thema

Markus Bloch

Zitat von: rudolfkoenig am 11 Januar 2016, 07:34:31
patch hatte Probleme mit der angehaengten Datei, ich habe es per Hand eingespielt, kurz getestet und eingecheckt. Beim Test ist aufgefallen, dass "version ZW" eine "kaputte" Ausgabe produziert:

Werde ich heute Abend beheben.

Ich würde noch einen Patch für pre-commit bauen, um sicherzustellen, dass in *.pm/*.pl Dateien unter /trunk/fhem und /trunk/fhem/FHEM $Id:....$ enthalten ist. Hast du einen Tipp für mich, wie ich das weitgehend selber testen kann ohne SVN commits?

Danke

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Grob:
- svn mit rsync duplizieren (rsync -av svn.code.sf.net::p/fhem/code fhem)
- fhem/code/pre-commit direkt aufrufen
Da ich keine Ahnung habe, wie man an die Transaktionsnummer kommt, muss man in pre-commit oben eine Zeile einkommentieren, dann kann man statt Transaktionsnummer die Revisionsnummer eingeben. Vorher zwei Revisionen aussuchen: eine "Gute" und eine "Schlechte", und schon kann man testen. Oder man checkt Aenderungen direkt ind diese lokale Kopie ein, geht auch irgendwie :)

Da ich sowas nur einmal im Jahr mache, muesste ich weitere Details selbst nachforschen.

betateilchen

Zitat von: Markus Bloch am 11 Januar 2016, 09:45:59
Ich würde noch einen Patch für pre-commit bauen, um sicherzustellen, dass in *.pm/*.pl Dateien unter /trunk/fhem und /trunk/fhem/FHEM $Id:....$ enthalten ist.

Damit hat sich Reiners "Problem" ja dann ohnehin erledigt :)

@Markus: den Link kennst Du? https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/svn-keyword-check.pl
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: rudolfkoenig am 11 Januar 2016, 07:34:31
@Markus/Boris/John: bitte keine Aenderungen in commandref_frame.html direkt durchfuehren, sondern mir Patches schicken. Auch wenn es Kleinigkeiten sind: ich will das in meinem Augen erfolgreiches Konzept des Verantwortlichen fuer eine Datei nicht aufweichen. Wenn es sein muss, dann Modularisieren wir eben weiter.

Hallo Rudi,

Dein Anliegen ist natürlich berechtigt. Als Entwickler sieht man manchmal die Notwendigkeit, ein neues Modul als "helper" zu klassifizieren und dabei stellt sich die Frage, ob man die commandref_join.pl irgendwie dazu bringen kann, auch die helper-Module automatisch dynamisch zu erzeugen. Meine Idee dabei: den commandref-Teil eines Moduls irgendwie so zu kennzeichnen, dass er als "helper" erkannt wird.

Beispielsweise:


=pod helper
...


oder:


=pod
<helper />
...


Damit liesse sich schon ein Teil der manchmal notwendigen Eingriffe in die commandref_frame Dateien vermeiden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Markus Bloch

Frage in die Runde.

Ich bin gerade am pre-commit Hook drann, welcher ein einchecken von *pm/*.pl ohne $Id: .... $ verhindert. Sollte das für alle Verzeichnisse gelten oder für bestimmte (z.B. nur /trunk/fhem/*.pl und /trunk/fhem/FHEM/*.pm)?

Hintergrund: Unter /trunk/fhem/FHEM/lib/ liegen einige Fremd-Libs, die keine Id besitzen. Diese würden davon ebenfalls betroffen und beim einchecken ohne $Id$ verweigert. Ebenso alles was unter contrib liegt.

Meinungen?

Gruß
Markus

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Bitte nur "unsere" Module.
Und bitte nicht versehentlich Bilder oder SVG's pruefen.

Markus Bloch

OK. Das testen mit einer Kopie des Repository funktioniert seht gut. Danke für den Tipp.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

So, anbei der Patch zur Prüfung auf $Id$ als Kommentar und gesetztem "Id" in svn:keywords Property.

Sollte ein Modul diese Kriterien nicht erfüllen erscheint nun:

root@debian:~/test2/trunk# svn -F /root/test2/trunk/svn-commit.2.tmp  ci
Sende              fhem/FHEM/72_FB_CALLMONITOR.pm
Sende              fhem/FHEM/HttpUtils.pm
Sende              fhem/FHEM/lib/OWNet.pm
Sende              fhem/contrib/pre-commit
Sende              fhem/fhem.pl
Sende              fhem/www/images/fhemSVG/car.svg
Übertrage Daten ......svn: E165001: Übertragen schlug fehl (Details folgen):
svn: E165001: Übertragen wird durch Aktion pre-commit behindert (Exit-Code 1) mit Ausgabe:
*** trunk/fhem/FHEM/72_FB_CALLMONITOR.pm: file has no SVN Id as comment
*** trunk/fhem/FHEM/72_FB_CALLMONITOR.pm: Id property not set in svn:keywords
*** trunk/fhem/FHEM/HttpUtils.pm: file has no SVN Id as comment
*** trunk/fhem/FHEM/HttpUtils.pm: Id property not set in svn:keywords

root@debian:~/test2/trunk#


Diese Vorgabe gilt nur für trunk/fhem/FHEM/*.pm (ohne Unterordner). Im o.a. Ausgabebeispiel habe ich $Id$ auch aus fhem.pl entfernt, sowie Änderungen an Icons, und Modulen unter FHEM/lib/ durchgeführt.

Getestet habe ich (wie von Rudi vorgeschlagen) mit einer lokalen Kopie des Sourceforge-Repository. Sowohl Geräte- als auch Helper-Module werden dabei berücksichtigt. Unterordner oder andere Dateitypen als .pm werden ignoriert.

Ich habe noch ein überflüssiges $fName in der err-Ausgabe der 80-Zeichen/Zeile Prüfung entfernt.

Anbei das diff und der komplette pre-commit.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Habe die pre-commit Aenderungen aktiviert, und danach die Datei in contrib eingecheckt.
RTypes.pm konnte ich danach nicht mehr einchecken, 00_ZWCUL.pm dagegen schon.

Markus Bloch

Zitat von: betateilchen am 11 Januar 2016, 11:15:36
Hallo Rudi,

Dein Anliegen ist natürlich berechtigt. Als Entwickler sieht man manchmal die Notwendigkeit, ein neues Modul als "helper" zu klassifizieren und dabei stellt sich die Frage, ob man die commandref_join.pl irgendwie dazu bringen kann, auch die helper-Module automatisch dynamisch zu erzeugen. Meine Idee dabei: den commandref-Teil eines Moduls irgendwie so zu kennzeichnen, dass er als "helper" erkannt wird.

Beispielsweise:


=pod helper
...


oder:


=pod
<helper />
...


Damit liesse sich schon ein Teil der manchmal notwendigen Eingriffe in die commandref_frame Dateien vermeiden.

Etwas ähnliches hatte ich hier mal gebaut: http://forum.fhem.de/index.php/topic,39854.msg321522.html#msg321522
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Hallo Rudi,

ich habe in 98_version das ermitteln der Version von fhem.pl von $cvsid auf das einlesen von fhem.pl über $0 (Pfad des asugeführten Perl-Skripts) umgestellt. Damit ist sichergestellt, dass $cvsid nicht durch User versehentlich überschrieben oder verändert wird und die Version immer auf gleiche Weise ermittelt wird, wie bei allen anderen Dateien.

Die Variable $cvsid in fhem.pl muss daher nicht mehr global verfügbar sein.

Wenn du magst, kannst du sie wieder mit "my" deklarieren.

Viele Grüße

Markus

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Dr. Boris Neubert

Hallo,

der pre-commit hook, der auf die Id checkt, erzeugt folgendes Problem:
- Bei RTypes.pm ist die Id-Property gesetzt.
- Es gibt eine Id-Zeile, diese ist jedoch noch leer, weil die Datei noch nicht mit Id eingecheckt wurde.
- Das führt dazu, dass ich die Datei auch nicht einchecken kann.

Meldungen:

$ svn commit RTypes.pm
Sende              RTypes.pm
Übertrage Daten .svn: E165001: Übertragen schlug fehl (Details folgen):
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:
*** trunk/fhem/FHEM/RTypes.pm: file has no SVN Id as comment
svn: E165001: Ihre Logmeldung wurde in einer Temporärdatei abgelegt:
svn: E165001:    ».......l/fhem-code/fhem/FHEM/svn-commit.2.tmp«


Ich vermute, dass die Prüfung auf den Tag zu eng ist.

Die Id-Zeile lautet

# $Id $

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Markus Bloch

Du musst $Id$ (ohne Leerzeichen) setzen.

Das hat nichts mit dem pre-commit zu tun. Dein $Id $ wird von SVN selber schon garnicht erkannt, da es sich ja auch um eine Perl-Variable handeln könnte. Daher wird dein $Id $ von SVN nicht erkannt und ersetzt. entweder $Id$ oder $Id: .... $

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Dr. Boris Neubert

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

ZitatMeine Idee dabei: den commandref-Teil eines Moduls irgendwie so zu kennzeichnen, dass er als "helper" erkannt wird.

Habs implementiert. Damit es ein (mAn) gueltiges pod bleibt, heissen die tags
=item helper
=item command
=item device

wobei letzteres default ist.
Ich habe "meine" commands/helper entsprechend gekennzeichnet, und sie aus commandref_frame.html entfernt.
Nebeneffekt: die Sortierung wird jetzt vom Computer durchgefuehrt, und Klein-/Grossschreibung wird dabei ignoriert.