Hallo zusammen,
im Rahmen von r10473 (http://sourceforge.net/p/fhem/code/10473/) wurde der SVN pre-commit Hook um eine Prüfung auf eine aktivierte $Id$ Keyword-Ersetzung ergänzt.
Dies bedeutet, dass ohne vorhandenen $Id$ Platzhalter als Kommentar im Perl-Code und dem Eintrag von "Id" in die SVN Property svn:keywords des entsprechenden Moduls, dieses nicht mehr eingecheckt werden kann.
Die SVN Property "Id" kann man wiefolgt setzen:
svn propset svn:keywords Id [MODULNAME].pm
In TortoiseSVN geht das wie folgt: Rechtsklick auf Moduldatei-> TortoiseSVN -> Properties -> New -> Keywords -> ID -> OK
Im Modul (am besten als erste Zeile) muss folgender Inhalt sein:
# $Id$
Sobald dies durchgeführt ist, kann das Modul wieder commitet werden und SVN ersetzt $Id$ durch beispielhaft folgende Zeile:
# $Id: 98_version.pm 10475 2016-01-12 18:51:31Z markusbloch $
Hier eine Liste der betroffenen Module: [Stand: 10.03.2016 17:13]
14_CUL_REDIRECT.pm
14_CUL_TCM97001.pm
19_Revolt.pm
38_JawboneUp.pm
42_SMARTMON.pm
70_Jabber.pm
88_LINDY_HDMI_SWITCH.pm
98_pilight.pm
MaxCommon.pm
Bitte die oben genannten Schritte durchführen, damit ihr wieder Änderungen für eure Module einchecken könnt. Das ganze muss einmalig für die gelisteten Module gemacht werden und ist in wenigen Minuten erledigt.
Viele Grüße
Markus
Hallo,
ich schlage vor, alle Module, bei denen die Id nicht bis Ende Februar gesetzt wird, nach vorheriger Ankündigung als verwaist zu erklären und nach contrib zu exilieren.
Viele Grüße
Boris
Dafür sind viel zu viele "aktuelle" Module in der Liste enthalten. Das Setzen einer Frist bis Ende Februar halte ich nicht für sinnvoll. Durch die fehlende $ID entstehen keine Fehler bei den Anwendern und nur, weil ein Entwickler seit längerer Zeit nichts an seinem Modul geändert hat, heißt es doch noch lange nicht, dass es verwaist ist.
23_KostalPiko
98_HourCounter
98_MaxScanner
habe ich bezüglich ID nachgeführt.
John
Hallo Markus
Zitat von: Markus Bloch am 13 Januar 2016, 19:38:53
Im Modul (am besten als erste Zeile) muss folgender Inhalt sein:
# $Id$
Sobald dies durchgeführt ist, kann das Modul wieder commitet werden und SVN ersetzt $Id$ durch beispielhaft folgende Zeile:
# $Id: 98_version.pm 10475 2016-01-12 18:51:31Z markusbloch $
Frage: Warum verweigert mir der Subversion - Checker das hochladen einer Datei mit der Fehlermeldung "Id property not set in svn:keywords", wenn folgendes in der ersten Zeile steht:
# $Id: 73_GasCalculator.pm 0006 2016-01-21 00:00:00Z Matthias_Deeke $
Siehe Anhang
Gruß
Sailor
Hallo Sailor,
das einfügen einer solchen Zeile ist nur die Hälfte. Du pflegst diese warscheinlich manuell. Das ist aber nicht der Sinn dahinter, sondern SVN soll das automatisch machen.
Du musst den $Id$-Platzhalter auch aktivieren, damit SVN beim commit diesen automatisch durch die aktuellen Daten (Revision, Datum, Autor) ersetzt.
Im meinem Initial-Beitrag steht dazu folgendes:
Zitat von: Markus Bloch am 13 Januar 2016, 19:38:53
Die SVN Property "Id" kann man wiefolgt setzen:
svn propset svn:keywords Id [MODULNAME].pm
Wenn du das ausführst, wird deine $Id$-Zeile von SVN erkannt und entsprechend bei einem commit gesetzt.
Viele Grüße
Markus
Hallo Markus
danke für deine schnelle Antwort! :)
Zitat von: Markus Bloch am 22 Januar 2016, 08:47:40
Du pflegst diese warscheinlich manuell.
Korrekt
Zitat von: Markus Bloch am 22 Januar 2016, 08:47:40
Das ist aber nicht der Sinn dahinter, sondern SVN soll das automatisch machen.
Du musst den $Id$-Platzhalter auch aktivieren, damit SVN beim commit diesen automatisch durch die aktuellen Daten (Revision, Datum, Autor) ersetzt.
Im meinem Initial-Beitrag steht dazu folgendes:
Wenn du das ausführst, wird deine $Id$-Zeile von SVN erkannt und entsprechend bei einem commit gesetzt.
Also entweder bin ich zu dämlich oder ich habe etwas übersehen. 8)
Wenn ich den Befehl
svn propset svn:keywords Id 73_GasCalculator.pm
sowohl in fhem als auch in der RasPi Konsole im Verzeichnis /opt/fhem/FHEM ausführe, wird svn nicht erkannt.
Ich greife auf das repository immer unter Windows mit TortoiseSVN zu und dort kann ich einen entsprechende Aufforderung nicht finden.
Verwendet Ihr andere Tools zum hochladen?
Gruss
Sailor
Hallo Sailor,
im TortoiseSVN ist das etwas versteckt. Schau mal, ob das hier hilft: http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/keyword-substitution-with-tortoisesvn-176
Auf dem Raspberry ist der svn Befehl nur verfügbar, wenn man das Paket "subversion" installiert hat. Das bringt aber nichts, wenn du FHEM dort nicht vom trunk ausgecheckt hast.
Ich persönlich (und warscheinlich viele andere) nutze den svn Befehl aus dem Paket subversion direkt auf der Konsole.
Gruß
Markus
Hallo Markus
Zitat von: Markus Bloch am 22 Januar 2016, 09:31:36
im TortoiseSVN ist das etwas versteckt. Schau mal, ob das hier hilft: http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/keyword-substitution-with-tortoisesvn-176
Auf dem Raspberry ist der svn Befehl nur verfügbar, wenn man das Paket "subversion" installiert hat. Das bringt aber nichts, wenn du FHEM dort nicht vom trunk ausgecheckt hast.
Danke, das wars!
Habe es soeben eingecheckt!
Gruß
Sailor
Zitat von: Sailor am 22 Januar 2016, 10:53:42
Hallo Markus
Danke, das wars!
Habe es soeben eingecheckt!
Gruß
Sailor
Super, bitte überprüf auch alle anderen Module, welche du betreust, damit diese auch korrekt gesetzt sind.
Grüße
Markus
Hallo Markus,
Zitat von: Markus Bloch am 22 Januar 2016, 11:04:07
Super, bitte überprüf auch alle anderen Module, welche du betreust, damit diese auch korrekt gesetzt sind.
Das km200 Modul habe ich gleich in einem Atemzug gemacht! ;)
Gruß
Sailor
Hallo Markus
Zitat von: Markus Bloch am 22 Januar 2016, 09:31:36
Auf dem Raspberry ist der svn Befehl nur verfügbar, wenn man das Paket "subversion" installiert hat. Das bringt aber nichts, wenn du FHEM dort nicht vom trunk ausgecheckt hast.
Eine Frage an Dich, gibt es irgendwo ein Tutorial, wie ich ein bestehendes fhem System so in "subversion" auschecken kann ohne mein bestehendes system zu schrotten?
Irgendwann muss ich ja mal auf den Standard umsteigen ;D
Danke
Gruss
Sailor
Hallo Sailor,
Zitat von: Sailor am 23 Januar 2016, 14:40:26
Eine Frage an Dich, gibt es irgendwo ein Tutorial, wie ich ein bestehendes fhem System so in "subversion" auschecken kann ohne mein bestehendes system zu schrotten?
Du solltest Deine Entwicklungsumgebung tunlichst von der Produktionsumgebung getrennt halten und die Dateien, die Du im SVN-Repository ein- und auscheckst getrennt von den Dateien halten, auf denen FHEM läuft.
Ein gute Online-Quelle zu subversion ist hier:
http://svnbook.red-bean.com/ (http://svnbook.red-bean.com/)
Viele Grüße
Boris
Hallo Boris
Zitat von: Dr. Boris Neubert am 23 Januar 2016, 14:51:08
Ein gute Online-Quelle zu subversion ist hier:
http://svnbook.red-bean.com/ (http://svnbook.red-bean.com/)
Danke!
Gruss
Sailor
Hallo Markus,
für die Module:
Zitat von: Markus Bloch am 13 Januar 2016, 19:38:53
52_I2C_EEPROM.pm
52_I2C_MCP23008.pm
52_I2C_MCP342x.pm
hatte ich damals die entsprechende Prozedur ausgeführt.
Die Zeile wurde ja auch angelegt.
Wenn ich es erneut versuche (nutze Apache SVN unter Win) kommt folgendes:
C:\Users\klaus\!Programme\Apache-Subversion\svn add C:\Users\klaus\Documents\Projekte\FHEM_SVN\fhem\FHEM\52_I2C_EEPROM.pm
svn: warning: W150002: 'C:\Users\klaus\Documents\Projekte\FHEM_SVN\fhem\FHEM\52_I2C_EEPROM.pm' is already under version control
svn: E200009: Could not add all targets because some targets are already versioned
svn: E200009: Illegal target for the requested operation
C:\Users\klaus\!Programme\Apache-Subversion\svn propset svn:keywords "Id" C:\Users\klaus\Documents\Projekte\FHEM_SVN\fhem\FHEM\52_I2C_EEPROM.pm
property 'svn:keywords' set on 'C:\Users\klaus\Documents\Projekte\FHEM_SVN\fhem\FHEM\52_I2C_EEPROM.pm'
Bist du sicher das die Module nicht korrekt eingecheckt sind?
Zitat von: klausw am 26 Januar 2016, 00:59:55
Hallo Markus,
für die Module:
hatte ich damals die entsprechende Prozedur ausgeführt.
Die Zeile wurde ja auch angelegt.
Wenn ich es erneut versuche (nutze Apache SVN unter Win) kommt folgendes:
C:\Users\klaus\!Programme\Apache-Subversion\svn add C:\Users\klaus\Documents\Projekte\FHEM_SVN\fhem\FHEM\52_I2C_EEPROM.pm
svn: warning: W150002: 'C:\Users\klaus\Documents\Projekte\FHEM_SVN\fhem\FHEM\52_I2C_EEPROM.pm' is already under version control
svn: E200009: Could not add all targets because some targets are already versioned
svn: E200009: Illegal target for the requested operation
C:\Users\klaus\!Programme\Apache-Subversion\svn propset svn:keywords "Id" C:\Users\klaus\Documents\Projekte\FHEM_SVN\fhem\FHEM\52_I2C_EEPROM.pm
property 'svn:keywords' set on 'C:\Users\klaus\Documents\Projekte\FHEM_SVN\fhem\FHEM\52_I2C_EEPROM.pm'
Bist du sicher das die Module nicht korrekt eingecheckt sind?
Hallo Klaus,
ein "svn add ..." ist nicht notwendig, da die Datei ja bereits hinzugefügt ist.
Bei deinem "svn propset ..." kommt:
property 'svn:keywords' set on 'C:\Users\klaus\Documents\Projekte\FHEM_SVN\fhem\FHEM\52_I2C_EEPROM.pm'
Das bedeutet, dass er die Property erfolgreich gesetzt hat. Nun musst du das noch einchecken via svn commit, damit die Änderung auch im SVN landet.
Gruß
Markus
Ich sehe gerade dass du das im Rahmen von r10638 durchgeführt hast.
Von daher passt das also alles.
Gruß
Markus
Zitat von: Markus Bloch am 26 Januar 2016, 09:08:44
Ich sehe gerade dass du das im Rahmen von r10638 durchgeführt hast.
Von daher passt das also alles.
Hm, mal wieder Ahnungslos alles richtig gemacht 8)
Ja ich hatte mit ein Batchfile geschrieben, was beide Befehle ausführt.
Hallo zusammen,
habe die Änderung für das Modul
70_Pushalot.pm
durchgeführt und committed.
Gruss
Hm, ich habe meine Zweifel an der Korrektheit des Ausgangsposts.
1. Alle meine Module haben Id-Tags und werden mit dem gleichen Tool (Synchro SVN Client) hochgeladen. Deshalb tauchen in der Liste der angeblich fehlerhaften Module die meisten meiner Elaborate
nicht auf.
2. Allerdings stehen in der Liste auch:
- 95_Alarm.pm => hat sehr wohl ein Id-Tag
- OWX_DS9097.pm => hat sehr wohl auch ein Id-Tag (das allerdings, weil das von Norbert Truchsess mit einem anderen Tool eingecheckt wurde, nicht ordnungsgemäß gefüllt wurde)
Bitte mal überprüfen,
warum diese beiden Module als auffällig vermerkt wurden.
LG
pah
Zitat von: Prof. Dr. Peter Henning am 30 Januar 2016, 09:42:25
Bitte mal überprüfen, warum diese beiden Module als auffällig vermerkt wurden.
95_Alarm.pm hat keine svn property für Id gesetzt:
(http://up.picr.de/24433617ly.png)
OWX_DS9097.pm hat die property gesetzt, und die Id ist auch in der aktuellen Version des Moduls korrekt gefüllt. Allerdings erst seit 24.01.2016, was also NACH dem Start dieses Threads passiert ist und sich in der svn-history des Moduls nachschauen läßt.
Hallo pah,
Zitat von: Prof. Dr. Peter Henning am 30 Januar 2016, 09:42:25
1. Alle meine Module haben Id-Tags und werden mit dem gleichen Tool (Synchro SVN Client) hochgeladen. Deshalb tauchen in der Liste der angeblich fehlerhaften Module die meisten meiner Elaborate nicht auf.
Das ist korrekt. In deinem Modul 95_Alarm.pm gibt es folgende Zeile:
# $Id: 95_Alarm.pm 2014-08 - pahenning $
Diese ist aber manuell durch dich gepflegt und nicht durch SVN. Syntaktisch ist sie richtig (entweder $Id$ oder $Id:...$, der genaue Inhalt ist dabei egal)
Zitat von: Prof. Dr. Peter Henning am 30 Januar 2016, 09:42:25
2. Allerdings stehen in der Liste auch:
- 95_Alarm.pm => hat sehr wohl ein Id-Tag
- OWX_DS9097.pm => hat sehr wohl auch ein Id-Tag (das allerdings, weil das von Norbert Truchsess mit einem anderen Tool eingecheckt wurde, nicht ordnungsgemäß gefüllt wurde)
Bitte mal überprüfen, warum diese beiden Module als auffällig vermerkt wurden.
Bei 95_Alarm.pm fehlt, wie bereits durch betateilchen angemerkt, der Wert "Id" in der SVN Property svn:keywords. Erst, wenn "Id" in dieser Property auftaucht, wird der Platzhalter $Id$ im Kommentar automatisch beim Check-In auf die aktuellen Daten angepasst. Wie das mit dem Standard-Subversion-Client funktioniert, habe ich im ersten Post beschrieben. Du nutzt einen anderen Client. Wie das dort genau funktioniert, weis ich nicht. Jeder Datei im SVN kann man Properties zuweisen. Die Property "svn:keywords" ist dabei speziell und enthält eine Auflistung aller Schlüsselwörter die beim Commit automatisch durch die jeweiligen Inhalte ersetzt werden sollen.
Siehe dazu: http://svnbook.red-bean.com/de/1.7/svn.advanced.props.special.keywords.html
Die Datei OWX_DS9097.pm hat bereits alles richtig gesetzt. Kann sein, das ich die übersehen habe. Ich habe Sie von der Liste entfernt.
Wenn Du die Property bei 95_Alarm.pm korrekt gesetzt hast, am besten direkt einchecken, dann ist alles wieder in Butter.
Gruß
Markus
Na, eine Erläuterung von SVN hätte ich nicht benötigt, danke trotzdem.
In meinem SVN Client ist das eigentlich als globales Attribut gesetzt - aus irgendeinem Grund hatte ich das aber explizit lokal disabled.
Einchecken funktioniert trotzdem nicht, der pre-commit-Hook meldet zwei Fehler im integrierten HTML-Code für die Commandref (unbalanced <td> und unbalanced <tr>)
Das ist aber ein Fehler, denn der HTML-Code ist syntaktisch vollkommen korrekt (validiert gegen xhtml1-transitional.dtd). Vermute mal, dass das mit der eingebetteten HTML-Table zusammenhängt. Ich weiß nicht, wer den Hook programmiert hat - aber es wäre nett, wenn das mal mit dem folgenden Stück überprüft würde:
(hier Perl-Code)
1;
=pod
=begin html
<a name="Alarm"></a>
<h3>Alarm</h3>
<a name="Alarmattr"></a>
<h4>Attributes</h4>
<ul>
<li><a name="alarm_statedisplay"><code>attr <name> statedisplay
simple,color,table,none</code></a>
<br />defines how the state of all eight alarm levels is shown. Example for the case
when only alarm no. 2 is raised: <ul>
<li> simple=OOXOOOOO</li>
<li> color=<span style="color:green"> 0 1 <span style="width:1ex;color:red"
>2</span> 3 4 5 6 7</span></li>
<li> table=<table>
<tr style="height:1ex">
<td style="width:1ex;background-color:green"></td>
<td style="width:1ex;background-color:green"></td>
<td style="width:1ex;background-color:red"></td>
<td style="width:1ex;background-color:green"></td>
<td style="width:1ex;background-color:green"></td>
<td style="width:1ex;background-color:green"></td>
<td style="width:1ex;background-color:green"></td>
<td style="width:1ex;background-color:green"></td>
</tr>
</table>
</li>
<li> none=no state display</li>
</ul>
</li>
</ul>
=end html
=begin html_DE
<a name="Alarm"></a>
<h3>Alarm</h3>
=end html_DE
=cut
Provisorisch habe ich die Tabelle mal aus dem Commandref-HTML entfernt, lässt sich damit wunderbar einchecken.
LG
pah
siehe dazu: http://forum.fhem.de/index.php/topic,46371.0.html
Attribute in <table>,<tr>,<td> sind verboten worden:
<tr style="height:1ex">
Solche Tags werden daher von commandref_join.pl nicht mehr erkannt und resultieren daher in unbalanced.
Gruß
Markus
und siehe auch hier http://forum.fhem.de/index.php/topic,18962.msg392468.html#msg392468
In diesem Beitrag sind alle Bedingungen aufgeführt und erläutert, die beim Einchecken auf Korrektheit geprüft werden.
Im Januar habe ich auf Grund einer wichtigen anderen Sache den Developer-Teil nicht verfolgt. Und siehe: schon wurde ein Kind mit dem Bade ausgeschüttet. :'(
LG
pah
Hi,
nachdem ich rausgefunden habe, wie man mit Tortoise dieses keyword setzt, nun erledigt für:
10_Itach_IR.pm
88_Itach_IRDevice.pm
95_remotecontrol.pm
Gruß, Uli
Ich hab noch eine kurze Vorgehensweise für TortoiseSVN im Initial-Post spendiert.
Vielen Dank
Gruß
Markus
Zitat von: Markus Bloch am 04 Februar 2016, 21:36:04
Ich hab noch eine kurze Vorgehensweise für TortoiseSVN im Initial-Post spendiert.
Bei mir ging's wie Du geschrieben hast, danach
- nochmal keyword Id markieren
- Erweitert bearbeiten
- und an 'Id' noch den Modulname.pm anhängen
=8-)
Hallöchen,
ich habe es nun endlich auch mal gemacht:
Damit können 4 Module von der Liste gestrichen werden:
00_SIGNALduino.pm
14_Hideki.pm
14_SD_WS07.pm
90_SIGNALduino_un.pm
Kleine Ergänzung zum Durchführen mit tortoiseSvn oder anderen clients.
Das Property sollte man auf seine Datei setzen und nicht im Ordner in denen diese liegen.
Rechtsklick -> propertys .... sollte man somit direkt auf die Datei anwenden, sonst wird es für alles angewendet. :)
Grüße Sidey
Zitat von: UliM am 04 Februar 2016, 22:15:36
Bei mir ging's wie Du geschrieben hast, danach
- nochmal keyword Id markieren
- Erweitert bearbeiten
- und an 'Id' noch den Modulname.pm anhängen
=8-)
Hallo Uli,
das ist nicht notwendig und wird von SVN eh ignoriert. Du musst nur Id auswählen und auf OK. Ein nachträgliches bearbeiten ist nicht notwendig.
Bei dem Konsolen-SVN-Client muss man als letzten Parameter die Datei angeben für die man die Property setzen will. Bei TortoiseSVN macht man das ja durch den Rechtsklick auf die entsprechende Datei.
Das der Rechtsklick auf die Datei muss, habe ich noch ergänzt.
Gruß
Markus
Entschuldigung, grad erst gelesen.
Berichtigt für 70_PushNotifier
Vielen Dank, xusader.