[Trennmuster] podiff.sh (was: naechste Version (TL 2015))

Stephan Hennig sh-list at posteo.net
Mo Apr 20 19:08:32 CEST 2015


WARNING: This e-mail has been altered by MIMEDefang.  Following this
paragraph are indications of the actual changes made.  For more
information about your site's MIMEDefang policy, contact
MIMEDefang Administrator's Full Name <postmaster at dante.de>.  For more information about MIMEDefang, see:

            http://www.roaringpenguin.com/mimedefang/enduser.php3

An attachment of type text/plain, named podiff.sh was removed from this document as it
constituted a security hazard.  If you require this document, please contact
the sender and arrange an alternate means of receiving it.

-------------- nächster Teil --------------
Am 18.04.2015 um 15:27 schrieb Werner LEMBERG:

>> Die werden mit Absicht nicht entfernt.
> 
> OK.  Am liebsten wäre es mir allerdings, wenn die erzeugten
> Verzeichnisse alle in einem »stabilen« Unterverzeichnis liegen
> (z.B. »pidiff«)

OK, ich werde das bei Gelegenheit ändern.


>> Wie erwähnt habe ich auch Skripten, die die temporären
>> Patgen-Dateien pattmp.* nach Auffälligkeiten durchsuchen (bisher
>> nicht im Repositorium).  Während pidiff nur ziemlich
>> leichtgewichtige Operationen durchführt, erstellen jene Skripten
>> jedoch komplette Muster.
> 
> Also das interessiert mich *deutlich* mehr!  Immer nur »-« anschauen
> ist auf die Dauer ziemlich langweilig :-) Außerdem mache ich das
> stets, sobald ich »make pattern-refo« und Freunde ausführe.

Die Idee ist folgende: Patgen speichert nach jedem Lauf neben den gerade
erzeugten Mustern auch eine Wortliste mit den Trennungen der Mustern
(Dateien pattmp.[1-8]).  Die Differenz zweier Dateien pattmp.*
aufeinanderfolgender Patgenläufe enthält die Wörter, deren Trennung
durch den späteren Lauf geändert wurde

  diff pattmp.1 pattmp.2 > 12.diff
  ...

Insbesondere enthält die so erzeugte Differenzdatei 78.diff diejenigen
Wörter die erst nach dem letzten Patgenlauf richtig getrennt wurden
(sofern Patgen mit "0 bad, 0 missed" endet).  Zu diesen "schwierigen"
Wörtern zählen etwa

  < damp*f.er*fahrt
  ---
  > damp*fer*fahrt

  < flo*s.ses
  ---
  > flo*sses          (traditionelle Rechtschreibung)

und auch Wörter mit unterdrückten Trennungen wie

  < de.m*entspre*chend
  < de.m*entspre*chen*de
  < de.m*entspre*chen*dem
  < de.m*entspre*chen*den
  < de.m*entspre*chen*der
  < de.m*entspre*chen*des
  ---
  > dem*entspre*chend
  > dem*entspre*chen*de
  > dem*entspre*chen*dem
  > dem*entspre*chen*den
  > dem*entspre*chen*der
  > dem*entspre*chen*des

Die Trennzeichen  *  .  -  stehen für "good", "bad", "missed".  Wie man
sieht, ist die unterdrückte Trennung dement-sprechend gar nicht die
problematische.

Diese Differenzdateien bieten schon mal einen guten Ansatz für die
Kontrolle.  Durchstöbert man diese Dateien öfter einmal, so sieht man
dort immer wieder dieselben Wörter.  Diese als relativ schwierig
bekannten Wörter sind dann nicht mehr von größerem Interesse.

Dagegen wären diejenigen Wörter von Interesse, deren Behandlung sich
zwischen verschiedenen Commits geändert hat.  Denn dafür /kann/ ein
neu aufgenommener Fehler in der Wortliste verantwortlich sein.  Daher
bilde ich über die zuvor erstellten Differenzen wiederum Differenzen.
Und zwar zwischen zwei Differenzdateien <n><n+1>.diff, die zu zwei
verschiedenen Commits gehören:

   diff <FROM>/dehypht-x/12.diff  <TO>/dehypht-x/12.diff >
<TO>/dehypht-x.12.diff

(Die so erstellten Dateien werden woanders abgelegt also die von 'make
pidiff' erzeugten.  Das liegt daran, dass das Skript überhaupt nicht
ausgereift ist.)

Alle in den Differenzen zweiter Ordnung enthaltenen Wörter sind einen
Blick wert, die zu höheren Levels gehörenden besonders.  Zur Kontrolle
empfiehlt sich ein Editor, der eingefügte und entfernte Zeilen
verschiedenfarbig hervorheben kann.

Ich habe das Skript podiff.sh angehängt.  Anders als angekündigt (und in
der Hilfe beschrieben) führt dieses Skript einen Patgenlauf nicht
selbsttätig durch.  Argumente sind die mittels 'make pidiff' erstellten
FROM- und TO-Verzeichnisse.  Kopiert man podiff.sh in das
Wurzelverzeichnis der Arbeitskopie, sieht ein Aufruf etwa so aus

  make pidiff FROM=<commit> TO=<commit>
  cd <FROM-Verzeichnis>
  make
  cd ../<TO-Verzeichnis>
  make
  cd ..
  podiff.sh <FROM-Verzeichnis> <TO-Verzeichnis>

Die Differenzen erster Ordnung befinden sich danach in

  <FROM-oder-TO-Verzeichnis>/dehyph*/<n><n+1>.diff

Die Differenzen zweiter Ordnung in

  <TO-Verzeichnis>/dehyph*.<n><n+1>.diff

Viele Grüße,
Stephan Hennig


Mehr Informationen über die Mailingliste Trennmuster