[linux-l] cvs und XML

Guntram Trebs gunni at mathematik.hu-berlin.de
Di Jun 17 17:37:37 CEST 2003


On 16 Jun 2003, Olaf Radicke wrote:

> Hi!
>
> O.K. - cvs tut das was ich eigentlich will ABER das Problem ist,
> das es Zeile für Zeile vergleicht, was bei automatisch generierten
> XML unsinnig ist. Nur weil mal zwischen zwei tags eine Zeile
> mehr Abstand ist, ist es eigentlich noch keine Veränderung des Inhaltes.
> Was also fehlt ist quasi ein CVS was XML-Dokumente auf inhaltliche
> Unterschiede prüft und die Formatierung außer acht lässt.

"<tag>X</tag>" ist etwas anderes, als "<tag>Y</tag>", da wirst Du mir
sicherlich Recht geben.

Genauso ist unter Umständen auch
"<tag>X Y</tag>" etwas anderes als
"<tag>X
Y<tag>"

> Wenn ich jetzt ein Skript schreibe, was alle Zeilenumbruch und doppelten
> Leerzeichen beseitigt bevor es in CVS eingecheckt wird, habe
> ich nur eine einzige Zeile die dann IMMER muckiert wird wenn auch
> nur ein Komma versetzt wird.
>
> Wenn ich nach jedem Tag ein Umbruch mache ist das auch nicht
> die Lösung. Z.B.:
>
> Erste Version           Zweite Version
> </tag1>                 </tag1>
> </tag2>                 </tag3>
> </tag3>                 </tag2>
>
> Eigentlich hat sich Inhaltlich nichts verändert (wenn die Reihenfolge
> der Tag's nicht vorgeschrieben ist), aber CVS wird es für
> eine Änderung halten und vielleicht eine Verschmelzung ablehnen.

Bei der ersten Version ist tag2 innerhalb von tag3, bei der zweiten ist
tag3 innerhalb von tag2.

Dass in Deinem speziellen Fall die Reihenfolge der Tags egal ist, mag
sein, dass kann CVS allerdings nicht wissen.

> Irgend wie fällt mir keine Lösung ein für das Dilemma. Ich habe
> mein Problem schon in de.comp.text.xml und de.comp.os.unix.programming
> geschildert, aber auch keine Lösung gefunden.

Die Lösung wäre, die XML-Datei so umzuwandeln, dass CVS gut damit umgehen
kann. Beachte bitte auch, dass CVS die Dateien verändert, schreibe einfach
mal $Id: $ an den Anfang deiner Datei und checke die ein, wenn das auf
einer original-XML-Datei passiert, funktioniert sie danach unter Umständen
nicht mehr. U.U. werden auch weitere Änderungen (Zeilenumbrüche z.B.)
gemacht, siehe Doku.


> Die XML-Dateien sind welche die u.U. extensiven Änderungen unterliegen.
> Sie werden von meinen Programm genutzt und verändert. Die Ursprungsidee
> war, das jeder User eine Kopie der Dateien in seinem Verzeichnis hat
> und sie per CVS konsistent hält mit denen der anderen. Also ein
> klassisches "Grouware-Problem". Aber aus den oben geschilderten
> Problemen heraus, scheint das nicht so einfach zu sein.
>
> Jetzt zeichnen sich für mich zwei Wege ab:
>
> 1.) Die Daten werden zentral verwaltet und es gibt nur "dumme Klienten"
> Also keine lokal gespeicherten Dateien mehr. Hat den Nachteil das
> die Klienten immer online sein müssen. Das kann zum einen kosten-
> intensiv sein und zum anderen schlicht unmöglich, wenn z.B. jemand
> mit seinen Nodebook gerade unterwegs ist.
>
> 2.) Eine eigene Versionskontrolle programmieren die intelligent
> mit XML umgehen kann.
>
> Hat jemand noch eine Idee?

Wenn ich Dich richtig verstanden habe, willst Du Konfigurationsdateien von
Benutzern in einem CVS speichern, um die miteinander zu verknüpfen.

Das hielte ich nur für sinnvoll, wenn alle das gleiche bekommen sollen.

Du kannst zwar auch verschiedene Konfigs in CVS verwalten, das würde aber
sehr kompliziert nur zu automatisieren.

Wenn einer die Konfig eines anderen nicht sehen soll, kriegst Du auch
Probleme mit CVS.

Besser ist da, sich was anderes zu überlegen.

Was interessant wäre, wäre ein CVS für das /etc-Verzeichnis z.B oder für
~/.* (ohne . und ..)

Aber keine Ahnung, ob das funktioniert.

mfg,
Guntram Trebs





Mehr Informationen über die Mailingliste linux-l