produktivzone
4 Normseiten, geschätzte Lesezeit 3 Min.

Apache Subversion (SVN)

Was ist SVN?

SVN ist eine Versionsverwaltung für Dateien und Verzeichnisse, das für alle gängigen Betriebssystem zur Verfügung steht. Es wurde im Jahr 2000 von CollabNet aus Brisbane, Kalifornien entwickelt. Es ist Open Source und steht unter der Apache-Lizenz 2.0. Die Software gehört bei Software Entwicklern inzwischen zum Standart, zur Verwaltung von beliebigen Quelltexten. Die Software kann hier heruntergeladen werden.

wichtige Aktionen

sich an neuem Projekt anmelden

svn checkout url aktueller Code wird vom Server auf den Arbeitsrechner heruntergeladen

wenn bereits angemeldet, an Projekt arbeiten

svn update lokalen Code mit Server synchronisieren

Programmieren

svn commit Änderungen hochladen, Hinweis: nicht jede Zeile committen, Änderungen immer kommentieren.

wichtige Befehle

svn add neuesfile.cc neue Datei an lokales Repository hinzufügen (muss dann noch mit commit an den Server geschickt werden)

svn checkout url das Repository am Ort des Links auschecken speichern

svn commit -m "kommentar" Änderung mit Kommentar an den Server schicken

svn help oder svn help irgendeinbefehl Hilfe anzeigen

svn info liefert Infos zum Repository, mit Versionsnummer

svn log liefert das Logfiles mit den letzten Aktivitäten

svn remove altesfile.cc Datei im lokalen Repository löschen (muss dann noch mit commit an den Server geschickt werden)

svn revert oder svn revert irgendeinedatei macht lokale Änderung rückgängig, stellt Version des Servers wieder her

svn stat oder svn stat irgendeinedatei gibt den SVN Status aus, die dazu gehörenden Statusquotes werden separat aufgelistet.

svn update lokalen Sourcecode aktuallisieren

Statuscodes

Statusanzeigen und Logfiles verwenden folgende Statuscodes:

A - Added

D - Deleted

U - Updated

M - Modified

C - Conflict

G - Merged

R - Replaced

I - Ignored

X - External

? - keine Versionskontrolle

! - Ressource wird vermisst

Begriffe

Repository: (deutsch Quelle) gemeint ist eine Projekt-Version auf dem Server oder auf einem Arbeitsrechner

Arbeitskopie: die Projektversion, die sich auf dem Arbeitsrechner befindet.

Branch: (deutsch Verzweigung) manchmal macht es Sinn, verschiedene Bereiche eines Projektes autonom zu entwickeln, um das Resultat dann erst später in den Hauptentwicklungspfad zu integrieren. Zu beachten: in SVN müssen alternative Entwicklungspfade manuell mit dem Hauptpfad gemerged werden.

Head: (deutsch Kopf) die neueste Projektversion des jeweiligen Branches

Trunk: (deutsch Stamm) so wird der Haupt-Entwicklungspfad des Repositories bezeichnet

Tagging: Benennung von Entwicklungspfaden und Versionsstände. SVN macht hier keinen Unterschied, es gibt nur Versionsnummern

Besonderheiten

Versionsschema: jede Datei besitzt eine Versionsnummer, die bei jedem commit inkrementiert wird. Dabei wird auch die Versionsnummer des gesamten Projektes inkrementiert, so dass immer ein ganz bestimmter Stand wiederhergestellt werden kann.

Synchronisation: erfolgt immer atomar, also in kleinen Schritten, so ist sichergestellt, dass bei Verbindungs­abbrüchen keine Daten verloren gehen

Dateisystem: die History eines Projektes wird jeweils im .svn-Verzeichnis gespeichert, dieses also besser nicht löschen

Tag- und Branchkonzept: SVN kennt nur einen Haupt-Entwicklungspfad. Alternative Entwicklungspfade müssen von Benutzer und Administrator manuell gepflegt werden (Befehl svn merge). Hierbei kann es leicht zu Problemen kommen.

Binäre Dateien: die Versionsverwaltung gilt auch für Bilder, Video- und Audio-Dateien, sowie jedes beliebige Datei-Format.

Löschvorgänge: in SVN werden gelöschte Dateien nicht physisch entfernt, sondern nur als gelöscht geflagt. So können keine Dateien verloren gehen.

WebDAV: auf das Dateisystem des Servers kann auch via WebDAV zugegriffen werden.

create/publish: eine Schwäche von SVN ist, dass beim commit nicht zwischen create und publish unterscheiden kann

Eclipse

1:für Admin-Tool Eclipse for PHP Developers, Version Mars.1 Release (4.5.1)

1:verwendete SVN-Plugin: Subversive - SVN Team Provider 4.0.2

1:alle Remote-Dateien können im SVN Repository Explorer angezeigt werden (Menu Window > Perspective > Open Perspective > Other)

1:für das Merging kann die Perspektive Team Synchronizing eingeblendet werden, dort können Dateien verglichen werden.

1:im Datei-Explorer von Eclipse kann mit Rechtsklick auf eine Datei oder ein Verzeichnis ein Kontextmenu eingeblendet werden. Dort befinden sich die SVN-Befehle im Navigationspunkt Team.

1:bearbeitete Dateien und Verzeichnisse, die noch nicht committed sind werden mit einem Pfeil gekennzeichnet