Dateivergleich / Versionierung

Hallo zusammen,

Ich würde mich gerne näher darüber Informieren, wie subversion und co die Dateien vergleichen um sie zu versionieren.

Also es geht micht mir nicht darum die man die programme bedient, sondern darum wie die Programme das intern machen. Ich würde so eine Versionierungsfunktion gerne mal selber in Java implementieren.

Ich hab im Internet gesucht, aber es gibt scheinbar nicht wirklich was zu diesem Thema. Ich stoße immer nur auf diese Programme aber nichts zu den Grundlagen.

Kann mir da jemand ein paar Quellen nennen? Ist das vielleicht ein generellet Thema in der Informatik?

Vielen Dank
Sascha

Auch hallo.

Ich würde mich gerne näher darüber Informieren, wie subversion
und co die Dateien vergleichen um sie zu versionieren.

Grob geschätzt wird -ähnlich wie bei WinDiff- eine Datei als Ausgangsbasis hergenommen und sämtliche Veränderungen in einer Datenbank gespeichert. Immerhin kann man Subversion unter Eclipse installieren und den Output selbst vergleichen.

Ich hab im Internet gesucht, aber es gibt scheinbar nicht
wirklich was zu diesem Thema. Ich stoße immer nur auf diese
Programme aber nichts zu den Grundlagen.

‚DerEntwickler‘ 3/2005 hatte sich mit dem Thema mal befasst.
Subversion gibt es übrigens hier: http://subversion.tigris.org/

Kann mir da jemand ein paar Quellen nennen? Ist das vielleicht
ein generelles Thema in der Informatik?

In der Softwareentwicklung ja. Aber das Feld Informatik ist etwas grösser als nur Softwareentwicklung :wink:

HTH
mfg M.L.

Hallo,

ja, das die neue Datei mit der Master Datei verglichen wird, ist mir klar, aber wie geschied dieser Vergleich? Werden die Dateien auf Bit-ebene verglichen? Es geht mir um diesen Algorythmus ansich. Wird das in diesem Artikel beschrieben?

Hallo nochmal.

ja, das die neue Datei mit der Master Datei verglichen wird,
ist mir klar, aber wie geschied dieser Vergleich? Werden die
Dateien auf Bit-ebene verglichen? Es geht mir um diesen
Algorythmus ansich. Wird das in diesem Artikel beschrieben?

Nein. Aber ein paar Schlagwörter können hier genannt werden: Repository, Arbeitskopie, Branch, Tag, Merge, WebDAV
Ob sich der Algorithmus in dem Buch hier versteckt ? http://svnbook.red-bean.com/

mfg M.L.

Kann mir da jemand ein paar Quellen nennen? Ist das vielleicht
ein generellet Thema in der Informatik?

Ja, das Thema taucht unter Namen wie „common substring“ auf. Siehe zB hier:
http://citeseer.ist.psu.edu/myers86ond.html

Hallo Sascha,

Also es geht micht mir nicht darum die man die programme
bedient, sondern darum wie die Programme das intern machen.
Ich würde so eine Versionierungsfunktion gerne mal selber in
Java implementieren.

Grundsätzlich werden die beiden Versionen Zeilenweise Zeichen für Zeichen verglichen.

Das mühsame dabei ist, wenn eine Zeile eingefügt oder gelöscht wurde, den Anschluss wieder zu finden.

In der Datenbank wird dann die neueste Version komplett gespeichert und für die Vorgängerversion nur das Delte, also die abweichenden Zeilen und deren Position.
Somit kann die aktuelle Version direkt aus der Datenbank geladen werden, was die häufigste Aufgabe ist. Ältere Versionen müssen dann zuerst Schrittweise wieder erstellt werden. Dafür spart man eine Menge Platz in der Datenbank.

MfG Peter(TOO)

Danke, das hilft mir schon weiter. Und wie sieht es mit der Versionierung von „nicht lesbaren Dateien“ also z.B. EXE Dateien? So weit ich weiß, können die Versionierungssysteme das auch oder?

Gruß
Sascha

Danke, das hilft mir schon weiter. Und wie sieht es mit der
Versionierung von „nicht lesbaren Dateien“ also z.B. EXE
Dateien? So weit ich weiß, können die Versionierungssysteme
das auch oder?

Das Prinzip ist immer das selbe. Den Programmen ist es erstmal egal, ob da lesbarer Text steht oder ob es irgendwas „unleserliches“ ist.

Hallo Sascha,

Danke, das hilft mir schon weiter. Und wie sieht es mit der
Versionierung von „nicht lesbaren Dateien“ also z.B. EXE
Dateien? So weit ich weiß, können die Versionierungssysteme
das auch oder?

Wie ich schon geschrieben habe, wird bei Text Zeilenweise verglichen, die zu vergleichenden Elemente sind durch CRLF (oder was als Trennzeichen verwendet wird) voneinander getrennt.

Im Prinzip funktioniert das auch ohne Änderungen bei binären Dateien, kann aber zu sehr langen „Zeilen“ führen.
Hier vergleicht man dann besser auf Zeichenebene.

MfG Peter(TOO)