Software Engineering I
Leif Geiger
1
FG Software Engineering
Teamorganisation: Versionsverwaltung
Übersicht• Wofür Versionskontrolle?• Sperrmechanismen• Systeme• Beispiel• Besonderheiten• CVS mit eclipse• Tools
Software Engineering I
Leif Geiger
2
FG Software Engineering
Wofür Versionskontrolle?
Software Engineering I
Leif Geiger
3
FG Software Engineering
Sperrmechanismen
pessimistische Sperren
• explizite Sperre pro Datei
• keine konkurrierenden Zugriffe keine Konflikte
Software Engineering I
Leif Geiger
4
FG Software Engineering
Sperrmechanismen
optimistische Sperren
• Sperre nur beim einchecken
• update (Synchronisation) jeder Zeit möglich Konflikte (semiautomatische Behebung)
Software Engineering I
Leif Geiger
5
FG Software Engineering
Systeme
● RCS – Revision Control System, der Anfang● CVS - Concurrent Versions System, der Klassiker
– keine Verzeichnisse– kein Umbenennen / Verschieben– kein Check-In Begriff– aber: gute Tool-Unterstützung
● SVN – Subversion, verbessertes CVS● Git – verteilte Versionsverwaltung, Linux Kernel
Entwicklung● Mercurial - OpenSolaris, XEN, Kernel-Entwicklung
Software Engineering I
Leif Geiger
6
FG Software Engineering
CVS Beispiel
● Alice, Bob arbeiten an einem Projekt● beide checken die Version 1.1 vom Server aus● Alice bearbeitet die Datei Server.java, Client.java
(Zeile 42)● Bob bearbeitet Helper.java und Client.java (Zeile
23)● Alice checkt ein● Bob versucht einzuchecken Fehler● Bob führt ein Update durch
– neue Server.java– Merge von Client.java, kein Konflikt
● Bob checkt ein
Software Engineering I
Leif Geiger
7
FG Software Engineering
CVS Beispiel Teil 2
● Bob ändert in HtmlPanel.java (Zeile 42)● Bob checkt ein● Alice ändert in HtmlPanel.java (Zeile 42)● Alice macht ein Update Konflikt
<<<<<<< HtmlPanel.javadoc1 = (HTMLDocument) html.getDocument();
=======doc = html.getDocument();
>>>>>>> 1.4● Alice behebt den Konflikt● Alice checkt ein
Software Engineering I
Leif Geiger
8
FG Software Engineering
Timestamps / Tags / Branches
• CVS speichert (Rückwärts-)Deltas Wiederherstellen alter Versionen möglich• Versionen identifizierbar durch
– Timestamps– Revision Numbers– Markierungen (Tags)
• Verzweigungen (Branches) sind möglich
v 1.1
v 1.1.1.1
v 1.1.2.1
v 1.1.3.1
v 1.2 v 1.2.1.1
v 1.2.2.1
Software Engineering I
Leif Geiger
9
FG Software Engineering
CVS mit eclipse
Software Engineering I
Leif Geiger
10
FG Software Engineering
Konflikte
Software Engineering I
Leif Geiger
11
FG Software Engineering
Tools: cvsmail
Software Engineering I
Leif Geiger
12
FG Software Engineering
Tools: cvsweb
Software Engineering I
Leif Geiger
13
FG Software Engineering
Tools: cvsstat