In der Programmierumgebung des Concurrent Versions System (CVS)-Teams erledigen die Teammitglieder ihre Arbeit in ihren eigenen Arbeitsbereichen isoliert von den anderen. Am Schluss wollen sie ihre Arbeit allgemein verfügbar machen. Dies kann über ein CVS-Repository erfolgen.
CVS verwendet ein Verzweigungsmodell zur Unterstützung mehrere Arbeitskurse, die etwas isoliert von einander, aber dennoch stark abhängig voneinander sind. An Verzweigungen stellt das Entwicklungsteam seine laufende Arbeit zur gemeinsamen Verwendung zur Verfügung und integriert diese. Eine Verzweigung entspricht etwa einem gemeinsamen Arbeitsbereich, der von den Teammitgliedern aktualisiert wird, wenn diese Änderungen an einem Projekt vornehmen. Dieses Modell ermöglicht, dass Einzepersonen gemeinsam an einem CV-Teamprojekt mitarbeiten, ihre Arbeit für die gemeinsame Verwendung freigeben, wenn Änderungen gemacht wurden, und im Zuge der Projektentwicklung auf die Arbeit der anderen Mitglieder zugreifen. Eine spezielle Verzweigung, die als HEAD bezeichnet wird, stellt den Hauptteil der Arbeit im Repository dar (HEAD wird oft auch als Trunk bezeichnet).
Wenn die Teammitglieder neue Arbeit hervorbringen, stellen sie diese zur gemeinamen Verwendung zur Verfügung, indem sie diese Änderungen in die Verzweigung festschreiben. Wenn sie die neuesten Arbeitsfortschritte holen wollen, aktualisieren sie auf die gleiche Art ihre lokalen Arbeitsbereiche mit den Änderungen in der Verzweigung . Auf diese Art ändert sich die Verzweigung laufend und wird weiterentwickelt, sobald die Teammitglieder ihre neue Arbeit festschreiben.
Die Verzweigung ist eine effiziente Abbildung des aktuellen Projektstatus. Die Teammitglieder können jederzeit ihre Arbeitsbereiche mit den Inhalten der Verzweigung aktualisieren, um ihren Arbeitsbereich auf den letzten Stand zu bringen.
CVS stellt zwei wichtige Komponenten für die Arbeit im Team zur Verfügung:
Ein Protokoll der vom Team festgeschriebenen Arbeit
Eine Möglichkeit zum Koordinieren und Integrieren dieser Arbeit
Die Verwaltung eines Protokolls ist wichtig, damit ein Benutzer die aktuelle Arbeit mit früheren Entwürfen vergleichen kann, zu einer älteren, besser geeigneten Fassung zurückkehren kann usw. Die Koordinierung der Arbeit ist von essenzieller Bedeutung, damit immer nur 1 Definition des aktuellen Projektstatus vorhanden ist, die die integrierte Arbeit des gesamten Teams enthält. Diese Koordinierung wird durch das Verzweigungsmodell möglich.
Bei einem optimistischen Modell kann jedes Teammitglied Änderungen an allen im Zugriff befindlichen Ressourcen vornehmen. Da zwei Mitarbeiter Änderungen an derselben Ressource für die Verzweigung festschreiben können, kann es sein, dass Konflikte auftreten und gelöst werden müssen. Dieses Modell wird als optimistisch bezeichnet, weil davon ausgegangen wird, dass Konflikte nur selten auftreten.
Normalerweise sind Ressourcen nicht isoliert vorhanden, sondern enthalten implizite oder explizite Abhängigkeiten von anderen Ressourcen. Auf Webseiten gibt es beispielsweise Links zu anderen Webseiten, und Quellcode verweist auf Artefakte, die in anderen Quellcoderessourcen beschrieben sind. Keine Ressource ist eine Insel.
Bei der Freigabe von Ressourcen für die Verzweigung können Auswirkungen auf diese Abhängigkeiten entstehen. Die Integrität der Abhängigkeiten muss unbedingt sichergestellt sein, weil die Verzweigung den aktuellen Projektstatus darstellt und ein Mitglied des Teams den Verzweigungsinhalt jederzeit als Basis für neue Arbeiten verwenden kann.
Bei einem idealen Arbeitsablauf bleibt daher die Integrität der Verzweigung erhalten.
Der ideale Arbeitsablauf sieht folgendermaßen aus:
Beginnen Sie mit dem aktuellen Stand. Bevor Sie die Arbeit aufnehmen, sollten Sie eine Angleichung an den aktuellen Verzweigungsstatus ausführen. Wenn Sie sicher sind, dass keine lokalen Arbeitsergebnisse vorhanden sind, die berücksichtigt werden müssen, erreichen Sie die Angleichung am schnellsten, indem Sie die entsprechenden Projekte in der Verzweigung (oder HEAD) auswählen und den Befehl Als Projekt auschecken (oder Ersetzen mit: > Jüngstes aus Repository, wenn das Projekt bereits lokal existiert) verwenden. Dieser Befehl überschreibt Ihre lokalen Ressourcen durch die Ressourcen aus der Verzweigung.
Nehmen Sie Änderungen vor. Arbeiten Sie lokal in der Workbench, indem Sie neue Ressourcen erstellen, vorhandene Ressourcen ändern und alle Ergebnisse lokal speichern.
Synchronisieren Sie die Daten. Wenn Sie Ihre Arbeit festschreiben wollen, führen Sie eine Synchronisierung mit dem Repository aus.
Aktualisieren Sie die Daten. Untersuchen Sie eingehende Änderungen, und fügen Sie sie zur lokalen Workbench hinzu. Auf diese Weise können Sie feststellen, ob Änderungen vorhanden sind, die die Integrität der von Ihnen festzuschreibenden Ressourcen beeinträchtigen können. Lösen Sie Konflikte auf. Nehmen Sie einen erneuten Test vor, führen Sie Integritätsprüfprogramme aus (prüfen Sie beispielsweise, ob unterbrochene Hypertextverbindungen vorhanden sind, vergewissern Sie sich, dass Ihr Code kompiliert werden kann usw.).
Schreiben Sie die Arbeit fest. Wenn Sie sicher sind, dass Ihre Änderungen problemlos in den neuesten Verzweigungsinhalt integriert werden können, schreiben Sie die Änderungen in die Verzweigung fest. Falls erneut eingehende Änderungen vorhanden sind, können Sie den vorangegangenen Schritt vorsichtshalber wiederholen.
Dies ist natürlich der Idealfall des Arbeitsablaufs. Unter bestimmten Umständen können Sie bereits sicher sein, dass Sie von den eingehenden Änderungen nicht betroffen sind, und die Festschreibung ohne vorherige Angleichung ausführen. Im Allgemeinen sollten Teammitglieder jedoch einen ähnlichen wie den oben dargestellten Arbeitsablauf einhalten, um eine versehentliche Beeinträchtigung der Verzweigungsintegrität zu verhindern.
Weitere Informationen über CVS finden Sie unter http://www.cvshome.org..
CVS-Repositories
Verzweigungen
Versionen
Mit einem CVS-Repository synchronisieren
CVS-Repository-Position erstellen
Projekt aus einem CVS-Repository auschecken
Ressourcen in der Workbench ersetzen
Nues Projekt mit CVS gemeinsam verwenden
Mit dem Repository synchronisieren
Aktualisieren
Konflikte lösen
Aus Verzweigung mischen
Festschreiben