Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle? Sperrmechanismen Systeme Beispiel Besonderheiten CVS mit eclipse Tools
Wofür Versionskontrolle?
Sperrmechanismen pessimistische Sperren • explizite Sperre pro Datei • keine konkurrierenden Zugriffe keine Konflikte
Sperrmechanismen optimistische Sperren • Sperre nur beim einchecken • update (Synchronisation) jeder Zeit möglich Konflikte (semiautomatische Behebung)
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
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
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.java doc1 = (HTMLDocument) html.getDocument(); ======= doc = html.getDocument(); >>>>>>> 1.4 Alice behebt den Konflikt Alice checkt ein
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.1.1 v 1.1 v 1.1.2.1 v 1.2 v 1.2.1.1 v 1.1.3.1 v 1.2.2.1
CVS mit eclipse
Konflikte
Tools: cvsmail
Tools: cvsweb
Tools: cvsstat