"Heute ist es in der Regel üblich, dass mehrere Entwickler an einem Softwareprojekt beteiligt sind. Dabei kommt es oft vor, dass mehrere Leute gleichzeitig an einer Quelltext-Datei arbeiten wollen / müssen, wobei es immer wieder zu denselben Problemen kommt, egal ob die Programmierer nun im gleichen Gebäude sitzen, oder sie tausende von Kilometer weit auf der Erde verstreut sind.
Während ein Entwickler an einer Quelldatei arbeitet, kann es sehr leicht passieren, dass ein anderer Entwickler auch etwas an der Quelldatei ändert. Kopiert nun der Entwickler, der später fertig wird seine geänderte Quellcode-Datei wieder auf den Server, so überschreibt er somit die Änderungen des anderen Entwicklers. Eine Veranschaulichung dieses Problems ist in Abbildung 2.3 auf Seite 10 (das Artikels von Florian Wörter) zu sehen. Dieses Problem tritt vor allem bei der Open Source Gemeinde verstärkt auf, da es hier üblich ist, dass die Entwickler auf der ganzen Erde verstreut sind und somit oft gar nicht wissen, wer genau jetzt noch alles an diesem Projekt arbeitet. Deshalb kommt auch die Lösung für dieses Problem aus der Open Source Gemeinde.
Das Zauberwort heißt Versionsverwaltung. Dabei handelt es sich um Systeme, die den Sourcecode zentral auf einem Server lagern. Will ein Entwickler an einer Datei arbeiten, so checkt er die Datei aus und lädt sie so auf seinen lokalen Rechner. Die Dateien werden mit Versionsnummern bezeichnet, so weiß der Entwickler sofort, welche Version dieser Datei er gerade bearbeitet. Hat der Programmierer seine Änderungen abgeschlossen,
so führt er ein Commit durch. Dadurch wird die Datei wieder auf den Server, in das so genannte „Repository“ gespeichert.
Bevor dies geschieht, wird jedoch vom System überprüft, ob die Datei inzwischen von jemand anderen bearbeitet wurde. Dies geschieht auf Basis der Versionsnummer, die für jedes im Repository befindliche Objekt vergeben und gespeichert wird. Stimmt die Versionsnummer überein, so wird diese inkrementiert und die geänderte Datei wird im Repository gespeichert. Ist jedoch schon eine neuere Version der Datei im Repository, so muss ein so genanntes „diff“ durchgeführt werden.
Dabei werden dem Entwickler die neue und die alte Version der Datei gezeigt und die Differenzen der beiden Dateien werden hervorgehoben. Nun muss der Entwickler entscheiden, welche der von ihm getätigten Änderungen übernommen werden sollen und welche nicht. Dabei muss er darauf achten, dass nur seine Änderungen übernommen werden.
Das Verwenden eines solchen Tools bringt jedoch noch eine Reihe von anderen nicht zu unterschätzenden Vorteile mit sich. Da die verschiedenen Versionen der Dateien auf dem Server gespeichert bleiben, ist es jederzeit möglich eine bestimmte Version des Projektes wiederherzustellen. Dadurch wird die Verwendung einer Versionsverwaltung sogar für eine Einzelperson schon interessant. Um Platz zu sparen, speichert eine intelligente Versionsverwaltung (wie zum Beispiel Subversion) nur die Unterschiede zwischen einzelnen Dateiversionen."
Quelle: Florian Wörter, "Versionsverwaltung mit Subversion" (2007)