Welcher Programmierer kennt das nicht, man hat eine Datei bearbeitet und am nächsten Tag sieht sie völlig anders aus, da jemand wieder daran gearbeitet hat, aber sich vorher nicht die neuste Version vom Server geholt hat. Bevor es Git, SVN und andere Versionierungssysteme gab, hat dieses Problem bei vielen Firmen eine Menge Nerven und Geld gekostet.
Nun gibt es diese Systeme und sie sind ein Segen für alle, die im Team an gleichen Dateien arbeiten müssen. Da das Wording leider nicht sofort klar verständlich ist möchte, ich hier kurz erklären und Dir zeigen, dass SVN kein Hexenwerk ist.
Subversion
Subversion setzt sich aus den Worten Sub und Version zusammen und kann als Unterversion/ frühere Version verstanden werden. Ein sehr spezieller Vorteil ist, dass die Verschiebung und/oder Umbenennung von Dateien und Verzeichnissen von statten geht, ohne die Versionsgeschichte zu verlieren.
Das Prinzip dahinter:
Jede Änderung einer Datei oder eines Verzeichnisses wird neu abgesichert, so dass man zu älteren Versionen zurückspringen kann. Dies ist bei mehreren Bearbeitern eines Projekts sehr vorteilhaft.
Während der Benennung von Tags und Branches in den meisten anderen Versionsverwaltungssystemen wie Git, Mercurial oder auch CVS eine klare semantische Bedeutung hat, kennt Subversion nur das Konzept der „billigen Kopie“, die je nach Nutzungsart „Tag-„ oder „Branch-Charakter“ haben kann. Also ist jede Kopie eine neue Variante der Datei oder des Verzeichnisses.
In diesem Bereich werden folgende Bezeichnungen die genutzt werden:
Repository
Dies ist die Bezeichnung für ein „Projekt“
trunk (engl. „Stamm“)
Das Basisverzeichnisse enthält dabei die Hauptentwicklungslinie des Projekts.
branches (engl. „Verzweigungen“)
Hier werden Unterverzeichnisse mit alternativen Entwicklungspfaden verwaltet
tags (engl. „Markierungen“)
Diese werden typischerweise dafür verwendet, einen Entwicklungszeitpunkt einzufrieren. Als solche werden sie normalerweise nicht für die Weiterentwicklung genutzt.
HEAD („top revision“)
Hier wird die neuste Version innerhalb einer Verzweigung bezeichnet.
Revision
Dies ist ein einzelner Entwicklungsschritt ( entspricht einer Bearbeitung des Dateiinhaltes)
Comitten
Hier wird deine bearbeitete Fassung der Datei oder des Verzeichnisses in das Repository geladen und als „HEAD-Revision“ gehandelt.
Update
Bei einem Update wird die HEAD-Revision einer Datei oder eines Verzeichnisses, die im Repository ist, auf die lokale Festplatte geladen.
Checkout
Dateien initial aus dem Repository holen
Der Normale Ablauf:
Als erstes richtet man einen SVN Server ein. Dort ist die zentrale Anlaufstelle für jeden, der das SVN nutzen möchte. Dort wird ein Repository (Projekt) erstellt.
Nun wird auf dem eigenen Rechner ein SVN Client installiert (z.B. Tortoise), daraufhin kann der erste, der er es nutzt schon alle vorhandenen Dateien „comitten“, jeder weitere, der daran arbeitet, kann mit einem „Checkout“ die aktuellste Version komplett runterladen. Bei Änderungen muss man nur „updaten“ nutzen, um die neusten Änderungen zu erhalten.
Nach dem die grundlegenden Einstellungen eingerichtet sind, sollte man, bevor eine Datei bearbeitet wird, die neuste Version durch „updaten“ heruntergeladen. Dadurch kann man sich immer sicher sein, die neuste Version der Datei zu nutzen.
Nach dem man die gewünschte Datei bearbeitet hat, „comitted“ man mit einem Kommentar die Änderungen.
Dieser Ablauf tritt bei jeder Bearbeitung auf.
Konflikte:
Falls ein Konflikt auftritt, sollte darauf geachtet werden, nicht einfach die Dateien zu überschreiben. Besser ist es, die Änderungen temporär zu speichern und die gewünschten Dateien zu updaten und erst dann die Änderungen einzufügen. Dadurch kann unterbunden werden, dass aktuellere Arbeiten von anderen Programmierern zerstört werden.
Bei Konflikten gibt es drei Standards wie mit einer Konfkliktdatei umzugehen ist:
- deine Änderungen sollen behalten werden und die von deinem Kollegen werden überschrieben
- du übernimmst die Änderungen deines Kollegen
- die Original-Datei wird bearbeitet.
Wenn ihr den Konflikt gelöst habt, muss das dem SVN mitgeteilt werden, da du sonst keine Dateien comitten kannst.
Änderungen rückgängig machen:
Manchmal ist es notwendig, die getätigten Änderungen rückgängig zu machen. Der Ablauf dafür ist sehr einfach: Mit der rechten Maustaste auf die gewünschte Datei klicken. Dann „TortoiseSVN“ -> „revert (Rückgängig…)“ auswählen und dann werden die älteren „tags“ zur Auswahl angezeigt.