Skip to end of metadata
Go to start of metadata

Was ist ein VCS?

VCS steht für VersionControlSystem, zu deutsch: Versionskontrollsystem

Es dient dazu, einzelne, sog. "Artefakte" in verschiedenen Versionen vorzuhalten.
Ein Artefakt kann ein Bild, eine Text-Datei oder auch ein Programmteil sein. 

Primär werden solche Systeme in der Softwareentwicklung genutzt, um unterschiedliche Programmversionen und Bearbeitungsstände vorhalten zu können, um im Fall des Falles auch nochmal auf eine alte Version zurückgreifen zu können.

Warum mache ich nicht einfach eine Kopie von den Dateien?

  1. Jede eurer Kopien belegt nochmal so viel Speicherplatz wie das Original
    Ja, nun werde ein paar pfiffige behaupten: Ist mir doch egal bei meiner 2TB Festplatte. Ist nen Argument...lassen wir also mal so stehen (wink)
  2. Ihr müsst jeder Kopie einen neuen Namen geben, das 
    1. ist aufwendig
    2. verlangt ein gewisses Maß an Selbstdiziplin ein sprechendes Namensschema zu finden
    3. kann hinderlich sein wenn Dateien von anderen "aufgerufen" werden und so der Dateiname / -pfad nicht mehr stimmt

 Ist das nicht kompliziert?

Nein!

(lightbulb) To be continued ... Wird fortgesetzt ... Fortsetzung folgt ... Oder schreib's selbst :) ... oder schick mir eine Mail ... oder sonst eine Nachricht dass du hier Info's brauchst

Wie funktioniert ein klassisches Versionskontrollsystem?

Schonmal von SVN, CVS oder gar RCS gehört?

SVN ist solch ein klassisches, zentrales Versionskontrollsystem

Hier ein Beispiel wie SVN Funktioniert:

  1. Benutzer 1 (Udo), 2 (Jürgen) und 3 (Marianne) holen sich eine Kopie des zentralen Versionskontrollsystems.
    In diesem sind zu Beginn unseres Beispiels bereits drei Änderungen (sog. Changesets) enthalten.
    Jede dieser Kopien werden als "Working-Copies", also Arbeitskopien bezeichnet.

     

    (lightbulb) Merk's Dir

    Ganz einfach zu merken, denn wenn dein Chef dir ein wichtiges Dokument gibt und du sollst das bearbeiten, machst du dir ja auch erst mal eine "Arbeitskopie" mit deinen Änderungen.
    Dieses gibst du später ggf. wieder ab damit jemand das in's reine schreibt.

     

    Nun haben alle Benutzer die gleichen Daten auf Ihrem Computer und können Anfangen zu arbeiten:


    SVN

    ERROR

    Gliffy is unlicensed. Please install a license to draw diagrams in your wiki.

     
     

  2. Nun ändern zwei Benutzer ein wenig etwas an einer / der gleichen Datei (nennen wir sie Readme.txt).

    Benutzer 1 (Udo) hat also noch seine alte Version
    Benutzer 2 (Jürgen) und 3 (Marianne) haben nun jeweils Ihre veränderte Version, nicht aber die Änderung vom andern.
     

  3. Jürgen (#2) "schiebt" seine Änderungen nun wieder zurück in das Repository (sog. commit).

    Diese Änderung bekommt automatisch eine neue Versionsnummer. Wie diese Versionsnummer aussieht, kann ganz unterschiedlich sein, der Einfach heit halber lassen wir Sie rein numerisch und einfach jedesmal um den Wert 1 erhöhen (SVN lässt grüßen).

    Jürgen (#2) hat nun also seine Änderung der Datei als Version 4 bekannt gegeben.
     
  4. Nun möchte Marianne (#3) Ihre Änderung auch den Kollegen bereitstellen. Versucht nun also auch den "commit".
    Dies schlägt nun allerdings fehl, da Sie die Änderungen von Jürgen (#2) sonst zerstören würde.

    Spätestens hier ist ein entscheidender Vorteil gegenüber einer rein Datei-basierten Ablage auf einem Server / Netzlaufwerk. Hätten wir kein Versionskontrollsystem, könnte Marianne Ihre Version einfach ablegen und keiner merkt dass Jürgens Informationen verloren gegangen sind.

     

    Udo kann sich derweil auf die Informationen stützen die zentral vorliegen und kann seine Kopie mit der Version 3 auf die von Jürgen bereitgestellte Version 4 aktualisieren (sog. update) und damit in seiner Arbeitskopie ("working copy") arbeiten. 
     

  5. Damit Marianne Ihre Änderungen auch bekannt geben darf, muss Sie die Änderungen von Jürgen (#2) und sich selbst zusammenführen (sog. merge).

    (info) Hierbei kann Ihr das System durchaus helfen, wenn das Dateiformat dies zulässt (Bilder und andere nicht-menschlesbare Daten lassen sich nur schwer bis unmöglich allgemeingültig maschinell vergleichen und zusammenführen.)

    Marianne ist also zunächst gezwungen sich Jürgens Änderungen mittels aktualisierung (update) herunterzuladen. Das Versionskontrollsystem versucht diese Änderungen dann auf die bereits in Kopie vorhandenen Dateien anzuwenden. Es werden also Informationen der Art "Jürgen hat in Zeile 2 das Wort "Schwimmmeister" durch "Bademeister" ersetzt" mit welchen in kleinen Schritten die Informationen zusammengeführt werden können.

  6. Sollte Marianne (#3) keine Änderungen an der gleichen Datei, in der gleichen Zeile vorgenommen haben, so stehen die Zeichen gut, dass die automatische Zusammenführung (merge) ohne weiteren Eingriff durchläuft.

    Sollten allerdings Konflikte auftreten (merge conflicts), so muss Marianne leider nochmal ran und die einzelnen Konflikte durchsehen, berichtigen und abnehmen.

    (wink) Wie du merkst: Wer zu erst kommt mahlt zu erst. Wäre Marianne mit Ihrer Arbeit schneller gewesen, hätte Jürgen die Konflikte lösen müssen. 

     

    Natürlich können auch hier Fehler passieren und gerade hier werden auch Fehler gemacht.
    Das alles ist aber eine Sache der Tools, der Erfahrung und der organisation im Team (sollen wirklich zwei Leute gleichzeitig etwas bearbeiten) wie gut das klappt.
  7. Wenn Marianne nun alle Konflikte behoben hat, kann Sie Ihre Version der Dateien (in der nun hoffentlich die Informationen von Jürgen UND Marianne enthalten sind) bekannt geben.

    Da Marianne bis dato auf der Version 3 arbeitete, allerdings nun schon Änderungen von der zentralen Version 4 bekommen hat, muss die neue Version (Revision) die Versionsnummer 5 tragen.
     
  8. Anschließend können Jürgen (#2) und Udo (#1) sich diese Version ebenfalls herunterladen (update)
(lightbulb) To be continued ... Wird fortgesetzt ... Fortsetzung folgt ... Oder schreib's selbst :) ... oder schick mir eine Mail ... oder sonst eine Nachricht dass du hier Info's brauchst
^^ Bilder fehlen

Und was ist nun ein DVCS?

Wie ihr vielleicht nun schon herauslesen könnt, gibt es nicht nur zentrale Versionskontrollsysteme, sondern auch dezentrale. Daher auch die Abkürzung DVCS.

(lightbulb) To be continued ... Wird fortgesetzt ... Fortsetzung folgt ... Oder schreib's selbst :) ... oder schick mir eine Mail ... oder sonst eine Nachricht dass du hier Info's brauchst