Tim Tepaße: SELFHTML patchen

Beitrag lesen

Hallo Gunnar,

Auch wenn man darüber streiten kann, ob es sinnvoll ist, es nicht funktionieren zu lassen, wenn doch nur Entities demonstriert werden sollen und nicht den Unterschied zwischen internen und externen DTDs in Browsern.

Weil ich das wirklich pädagogisch unhilfreich finde (und zu Demonstrationszwecken), hab ich das gerade geschilderte Prozedere gemacht.

Ich hab (in der Shell) die öffentliche Arbeitskopie ausgecheckt bzw. überprüft ob sie aktuell war:

$ svn checkout https://vms.selfhtml.org/anon-repos/selfhtml/trunk selfhtml  
ls selfhtml  
svn update  
Revision 4737.

Dann hab ich mit meinem Texteditor die entsprechende Änderung vorgenommen:

$ mate sdml/xml/dtd/entities.xml

In SDML sind Beispiele zusammen mit der erklärenden Seite in einer XML-Datei gespeichert. Hier kannst Du sie Dir im SELFHTML-Versionsverwaltungssystem angucken. Nachdem ich meine Änderungen vorgenommen habe, stellt auch das Versionsverwaltungssystem fest, dass dort Änderungen sind:

$ svn status  
M      sdml/xml/dtd/entities.xml

M steht für „Modified“. Dann hab ich das Versionsverwaltungssystem die Differenz zwischen dem aktuellen Zustand und dem letzten Checkout ausgeben lassen und diese Ausgabe gleich in der Datei smilie-fix.diff umgelenkt.

$ svn diff > ~/Desktop/smilie-fix.patch

In dieser Datei stehen nun in einem maschinenlesbaren Format die Änderungen. Hier kannst Du sie Dir anschauen. Rot markiert sind weggenommene Rohdaten, grün markiert sind neu hinzugekommende Änderungen.

Nur um zu überprüfen, dass nichts falsch ist, habe ich das Anwenden dieses Patches selber ausprobiert. Erstmal mache ich in meiner lokalen Arbeitskopie die Änderungen rückgängig, so dass die Arbeitkopie wieder jungfräulich ist:

$ svn revert sdml/xml/dtd/entities.xml  
Rückgängig gemacht: »sdml/xml/dtd/entities.xml«  
  
svn status

Keine Ausgabe bedeutet „Keine Änderungen“. Und dann habe ich mit dem Tool patch die vorherige Änderung automatisiert angewandt:

$ patch sdml/xml/dtd/entities.xml ../smilie-fix.diff  
patching file sdml/xml/dtd/entities.xml  
  
$ svn status  
M      sdml/xml/dtd/entities.xml

Der Patch funktioniert also, auch wenn man die Datei nochmal manuell überprüft.

...

Dazu habe ich dann einen Ticket in Trac erstellt, das beschreibt, welches das Fehlverhalten ist und wie man es verbessern könnte. An dieses Ticket habe ich dann den Patch dran gehängt. Ein sich zuständig fühlender Redakteur kann sich jetzt also entschliessen, diesen wie oben demonstriert anzuwenden oder die Änderungen selbst noch nach Gusto verändern.

Tim

--
Alles dauert länger, wenn man es auch noch dabei erklären will.