zentrale Speicherung im Magazin (repository) beliebig viele Arbeitsbereiche (working copy) Vorteile: mehrere Benutzer gleichzeitig effektiver durch Parallelität bei disjunkten (Zeilen-)Bereichen werden Änderungen automatisch zusammengeführt zentrale Speicherung zentrales Backup einfach Synchronisation zwischen Benutzern besserer Überblick was andere gemacht haben nightly builds Geschichte wird gespeichert und ist verfügbar Änderungen sind einzelnen Benutzern zuzuordnen Nachteile: Einarbeitungsaufwand (kommt sowieso irgendwann, warum nicht jetzt?) Benutzung empfohlen für das Projekt
Version 1.1 Version 1.2 weitere Änderungen Version 1.3 Version 1.0 Version 1.1 Version 1.0 Version 1.2 Version 1.1 Version 1.0 checkout commit update lokale Kopie von Version 1.1 Änderung Einbau der Änderungen Kopie von Version 1.3
Programm zur von Dateien Benutzung ähnlich zu CVS Änderungen an lokalem Arbeitsbereich werden erst nach Veröffentlichen (commit) ins Magazin aufgenommen lokaler Arbeitsbereich wird aktualisiert (update), um Änderungen (von anderen) am Magazin zu übernehmen Magazin hat eine globale Revision (ein Änderungszähler)
Repository liegt unter /home/swp/svn/x01swp99 99 ist laufende Nummer Unix-Gruppe x01swp99 für alle Mitglieder zwingend Studenten bekommen eine Betrittsmail, aus der der Gruppenname hervorgeht Gruppenmanagement mit grp auf bob oder willy Konfiguration der Änderungsmails: /home/swp/svn/x01swp99/conf/mailer.conf voreingestellt sind Mails an alle
Klienten Unix: Kommandozeilenklient, aber auch andere geht auf x10 Windows: TortoiseSVN (integriert sich in den Explorer, sehr einfach) andere: Plugins für IDEs wie Eclipse und IntelliJ
Tätigkeiten Don t Panic! It is easy. einmalig: Erzeugen eines Arbeitsbereiches (checkout) svn checkout file:///home/swp/svn/x01swp99 Merke: URL-Syntax mit file:// normale Arbeit: Zyklus von 1 aktualisieren (svn update) 2 Änderungen (programmieren, Text schreiben) am lokalen Verzeichnis vornehmen 3 veröffentlichen der Änderungen (svn commit)
Weitere Befehle svn add : Stellt Datei oder Verz. unter Versionskontrolle svn mv : Bewegt Datei oder Verz. svn rm : Entfernt Datei oder Verz. aus Versionskontrolle svn status : Status für jedes Dateisystemobjekt, welches nicht bekannt und aktuell ist svn diff : zeigt Differenzen zwischen Revisionen an svn revert : Undo lokale Änderungen und weitere Hilfe mit svn help add
Konflikte entstehen beim Aktualisieren ein Bereich einer Datei wurde von jemand anderen und im lokalen Arbeitsbereich geändert Konflikt zeigt dies mit C im update an; kein commit möglich erzeugt drei Dateien (filename.mine, filename.ralteversion und filename.rneueversion) filename enthält alle Informationen in einem spez. Format (suche nach <<<<< ) Behebung durch: 1 Beseitigung des Konflikts: editieren von filename per Hand oder kopieren von einer der 3 Dateien auf filename oder svn revert filename 2 svn resolved filename
Weitere Informationen Buch: Version Control with (http://svnbook.red-bean.com/) Ansprechpartner für lokale Probleme: Raimar Falke (rfalke@tzi.de)