[PATCH] - pre-commit Hook - Verhindern von Tabulatoren in CHANGED

Begonnen von Markus Bloch, 24 Februar 2016, 21:48:36

Vorheriges Thema - Nächstes Thema

Markus Bloch

Hallo zusammen,

mit der Änderung unter https://sourceforge.net/p/fhem/code/10921/tree//trunk/fhem/CHANGED?diff=51b78df35fcbc96f6b6b9d33:10920 kamen Tabulatoren in die Datei CHANGED wodurch die 80-Zeichen pro Zeile ausgehebelt wird, da ein Tabulator 8 Leerzeichen entspricht.

Andre hatte mich darauf aufmerksam gemacht. Ich würde daher angehangenen Patch für den pre-commit vorschlagen, welcher Tabulatoren in CHANGED verbietet und beim Vorhandensein folgende Meldung ausgibt:

root@debian:~/test2/fhem# svn ci
Sende              CHANGED
Ü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/CHANGED: file contains tabulators in line 4
*** trunk/fhem/CHANGED: file has over 80 chars/line in line 5

svn: E165001: Ihre Logmeldung wurde in einer Temporärdatei abgelegt:
svn: E165001:    »/root/test2/svn-commit.11.tmp«
root@debian:~/test2/fhem#


In CHANGED im FHEM-SVN gibt es aktuell 37 Tabulatoren auf 19 Zeilen:

*** trunk/fhem/CHANGED: file contains tabulators in line 15


Diese müssten im vi ersetzt werden mit 8 Leerzeichen: :%s/\t/        /g

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

Habs eingecheckt, und CHANGED manuell neu formatiert.

Da ich langsam muede bin diese Datei immer wieder zu formatieren, hier mein Aenderungsvorschlag:
- CHANGED wird eingestellt und nach contrib/OLD geschoben
- stattdessen gibts eine kleine CHANGED Datei, was man nicht mehr einchecken kann, um Installationen mit einem alten update aufzuklaeren.
- auf fhem.de wird statt CHANGED die Ausgabe von "svn log ." angezeigt (generiert einmal am Tag).
- da diese Datei 2+MB ist, wir sie nicht mehr verteilt
- stattdessen holt update mit einem neuen Call (z.Bsp. http://fhem.de/fhemupdate/svnlog.pl?REV=XXX) alle Aenderungen seit dem letzten Update aus dieser Datei, und zeigt diese wie bisher am Ende des updates an.

Kommentare?

betateilchen

An sich eine gute Idee, aber:

Wenn ich mir die Eincheck-Historie an manchen Tagen anschaue, wo 5 Mal hintereinander die gleiche Datei eingecheckt wird, oder wo 10 Mal hintereinander jeweils EINE gplot Datei eingecheckt wird, würde das svnlog dazu führen, eine sehr lange "CHANGED"-Liste zu erhalten, die völlig unübersichtlich wäre und noch weniger sinnvollen (im Sinne von Informationsgehalt) Inhalt hätte als die bisherige CHANGED Datei.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

ich bin immer dafür dinge nur ein mal zu tun. das betrifft auch dokumentation.             
                                                     
aber einfach nur auf die cvs commit messages umzuschalten würde bedeuten das auch die unterscheidung zwischen entwickler kommentaren und den für die endanwender bestimmten weg fallen. das finde ich nicht gut.     
                                                     
dagegen würde nur helfen ein betstimmtes format für die commit messages vorzugeben. z.b. am anfang ein schlüsselwort wie new, feature, bugfix, devel und dann nur (konfigurierbar?) die texte zu bestimmten schlüsselworten anzuzeigen. ich fürchte aber das ist so kompliziert das es schlechter funktioniert wie das CHANGED file.
                                                     
beim update (check) nur noch die meldungen seit dem letzten update anzuzeigen wäre aber gut.
                                                     
beim aufräumen sollte man auch das HISOTRY file mit entsorgen.                             
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Risiko

Sehe es auch so. Die Trennung zwischen Entwicklungsdoku und Änderungen\Doku für Endanwender sollte erhalten bleiben.
Die Idee mit einer speziellen Syntax in der Commit-Message hatte ich auch.
Evtl. ist es ja mgl. eine Change-Datei automatisiert aus der Commit-Message zu erzeugen oder die svn log zu filtern.

rudolfkoenig


betateilchen

Die Idee, das CHANGED automatisch aus den commit messages zu generieren, halte ich aber nicht für die Schlechteste.

Commit-Messages sind ja nicht auf eine Zeile begrenzt. Wenn man nun festlegt, dass eine Zeile, die in das CHANGED übernommen werden soll, eindeutig gekennzeichnet wird, z.B.


@feature: this line contains informations for users and should be visible as CHANGED

And this is only relevant for developers.
bla blub blubber...


sollte sich doch die (eine) Zeile mit dem @ am Anfang relativ einfach extrahieren lassen.

Bei uns in der Firma wird so gearbeitet, und daraus werden automatisch README Dateien für neue Software-Releases generiert.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

das fände ich wie gesagt sehr gut. vor allem wenn man noch den/die modul namen automatisch mit bestimmt und an den passenden stellen einbaut.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Markus Bloch

#8
Zitat von: justme1968 am 26 Februar 2016, 11:15:58
das fände ich wie gesagt sehr gut. vor allem wenn man noch den/die modul namen automatisch mit bestimmt und an den passenden stellen einbaut.

Das würde ich nicht machen. Insbesondere bei Commits wo mehrere Dateien betroffen sind + JavaScripts + Helper-Module. Das würde ich nachwievor dem Entwickler überlassen.

Generell einen Platzhalter zu definieren, der eine Zeile in das CHANGED übernimmt halte ich für super. Allerdings dürfte man sich dann nicht auf nur eine Zeile beschränken. Bspw:


FB_CALLMONITOR: changed function_xy() to function_z() to ensure ...

>  - bugfix:  fixed not working blaa
>  - changed: extended ... bla bla bla bla bla bla bla bla bla bla bla
>             bla bla bla


oder man gibt einen Indikator, dass ab jetzt Einträge für CHANGED kommen:


FB_CALLMONITOR: changed function_xy() to function_z() to ensure ...

CHANGED:
- bugfix:  fixed not working blaa
- changed: extended ... bla bla bla bla bla bla bla bla bla bla bla
            bla bla bla


Das müsste man dann aus dem SVN Log herausparsen und per URL anbieten.

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)

betateilchen

Zitat von: Markus Bloch am 26 Februar 2016, 16:13:03
Generell einen Platzhalter zu definieren, der eine Zeile in das CHANGED übernimmt halte ich für super. Allerdings dürfte man sich dann nicht auf nur eine Zeile beschränken. Bspw:


FB_CALLMONITOR: changed function_xy() to function_z() to ensure ...

>  - bugfix:  fixed not working blaa
>  - changed: extended ... bla bla bla bla bla bla bla bla bla bla bla
>             bla bla bla



@FB_CALLMONITOR
@bugfix: fixed not working blaa
@changed: extended ...


und die Zeilen jeweils vom @ bis zum \n extrahieren. Dann kann man die Zeilenlänge automagisch auf 80 Zeichen umbrechen.

Zitat von: Markus Bloch am 26 Februar 2016, 16:13:03
oder man gibt einen Indikator, dass ab jetzt Einträge für CHANGED kommen:


<CHANGED>
FB_CALLMONITOR
bugfix: fixed not working blaa
changed: extended ...
</CHANGED>


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!