VCS = Version Control System
Ein Versionskontrollsystem (VCS) wird oft in Teams eingesetzt, um die Zusammenarbeit mehrerer Personen an einem Projekt zu erleichtern.
Oft, aber nicht ausschliesslich, sind dies Software-Entwicklungs- oder Dokumentations-Projekte - man kann VCS aber auch ganz allgemein einsetzen zur Versionskontrolle von beliebigen Dateien. Besonders gute Unterstützung erhält man i.d.R. für Text-Dateien.
Es gibt viele Versionskontrollsysteme, mit teilweise unterschiedlichen Features und Vor- und Nachteilen.
Einige Eigenschaften sollten zwingend vorhanden sein, einige andere sind nice-to-have und sparen Arbeit/Ärger.
Muss-Anforderungen
Nachvollziehbarkeit von Änderungen - es darf nicht nur die Änderung an sich stattfinden, es muss auch bekannt sein:
wer hat die Änderung gemacht (z.B. für Nachfragen)
wann wurde sie gemacht
warum wurde sie gemacht (erklärt im Kommentar zur Änderung)
welche Dateien sind von dieser Änderung betroffen?
was wurde inhaltlich genau geändert (Differenz-Anzeige)
Zugriff auf alte Versionen
- wenn etwas gelöscht oder negativ verändert wird, muss es später möglich sein, eine vorherige Version wieder herzustellen.
- dies sollte über einen längeren Zeitraum möglich sein, nicht immer werden Fehler sofort bemerkt.
- evtl. will man auch einfach zwei verschiedene Versionen vergleichen
Definiertheit / Klarheit
- es sollte herausfindbar sein, was alles zu einer Änderung dazu gehört, so dass man sicherstellen kann, dass die Version auch komplett ist beim Commit, dass nichts versehentlich geändert/entfernt/hinzugefügt wurde.
der Anwender sollte sagen können, wann er mit einer neuen Version fertig ist und dann das System dazu veranlassen, dass es diese neue Version registriert (commit). Das System sollte nicht einfach alle seine Änderungen "mitfilmen" und intern daraus viele Versionen erzeugen, sowas ist in der Praxis kaum brauchbar (siehe oben).
Zuverlässigkeit - wenn die Daten wichtig sind, will man etwas Bewährtes nehmen als VCS (ohne böse Kinderkrankheiten)
Erreichbarkeit - die am Projekt beteiligten Personen müssen auf das VCS-System zugreifen können
Datensicherung: will man haben.
Unterstützung von Binärdateien: leider kommt man i.d.R. nicht aus mit nur Textdateien
Nice-to-Have / mögliche Anforderungen
Unterstütztes Zusammenführen von Änderungen (merge): in Zeiten hoher Projektaktivität findet viel parallel statt und es kann leicht passieren, dass mehrere Personen unabhängig voneinander Änderungen durchführen.
- Diese Änderungen müssen geregelt und nachvollziehbar zusammengeführt werden können, ohne dass die Änderungen einer Person dabei verloren gehen können.
- nach Möglichkeit sollte das System die Anwender beim Zusammenführen der Änderungen unterstützen:
- Änderungen, die nicht in Konflikt miteinander stehen, sollten automatisch zusammengeführt werden
- Änderungen, die in Konflikt miteinander stehen, sollten z.B. mit Hilfe eines sog. Merge-Tools zusammengeführt werden können
Versionskontrolle des Gesamtprojekts - heute findet oft Versionierung auf Projektebene statt, nicht auf Ebene einzelner Dateien (weil Änderungen eben oft die gemeinsame Änderung von mehreren Dateien erfordern).
Dezentrales Arbeiten mit DVCS
- mit DVCS braucht man keine Verbindung zu einem zentralen VCS-Server, um arbeiten zu können.
- man braucht keine Schreib-Zugriffsrechte auf einen zentralen VCS-Server, um mitzuarbeiten, man kann dies lokal im eigenen Repo tun. Später kann dann jemand anderes diese Änderungen ziehen (pull) und zusammenführen (mergen).
Allgemeine Kriterien
Multi-Plattform-Support: Linux, Mac OS X, Windows, ... - alle sollen es benutzen können.
Weboberfläche: Einfache Operationen sollte auch via Browser gehen.
Leichte Erlernbarkeit:
- es sollte nicht komplizierter als nötig sein
- es sollte aber trotzdem die gewünschten Anforderungen erfüllen
Kontrolle:
- sollen die Daten auf fremden Servern in irgendeiner Cloud liegen?
- soll es auf eigener Infrastruktur lauffähig sein?
Zugriff:
- was ist öffentlich?
- was nur bestimmten Nutzern zugänglich?
Freie vs. proprietäre Software / Services:
- muss ich einer proprietären, geschlossenen Software/Service vertrauen / mich davon abhängig machen?
- gibt es freie Software, mit der ich unabhängig bin und die offen reviewbar ist?
Kosten: kostet die Software / der Service etwas? Falls nicht: wird das so bleiben langfristig?