Σε περιβάλλον προγραμματισμού με συνεργασία μέσω του CVS, τα μέλη της ομάδας εργάζονται απομονωμένα το κάθε μέλος στο δικό του πάγκο εργασίας. Κάποια στιγμή θα θελήσουν να χρησιμοποιήσουν από κοινού τη δουλειά τους. Αυτό γίνεται μέσω ενός χώρου αποθήκευσης CVS.
Το CVS χρησιμοποιεί ένα μοντέλο κλάδων για να υποστηρίξει πολλαπλές εργασίες οι οποίες κατά κάποιον τρόπο είναι απομονωμένες η μία από την άλλη αλλά εξακολουθούν να έχουν μεγάλο βαθμό αλληλεξάρτησης. Οι κλάδοι είναι τα σημεία στα οποία η ομάδα ανάπτυξης χρησιμοποιεί από κοινού και ενοποιεί μια εργασία που βρίσκεται σε εξέλιξη. Ένας κλάδος μπορεί να θεωρηθεί ως ένας κοινόχρηστος χώρος εργασίας ο οποίος ενημερώνεται από τα μέλη της ομάδας καθώς κάνουν αλλαγές στο έργο. Το μοντέλο αυτό επιτρέπει σε μεμονωμένα άτομα να εργάζονται σε ένα έργο ομάδας CVS, να χρησιμοποιούν την εργασία τους από κοινού με άλλα άτομα καθώς πραγματοποιούνται αλλαγές και να έχουν πρόσβαση στην εργασία άλλων μελών ενώ το έργο βρίσκεται σε εξέλιξη. Ένας ειδικός κλάδος, ο οποίος ονομάζεται HEAD, αναπαριστά την κύρια ροή εργασίας στο χώρο αποθήκευσης (το HEAD συχνά ονομάζεται και κορμός).
Καθώς τα μέλη της ομάδας παράγουν νέα εργασία, χρησιμοποιούν από κοινού αυτή την εργασία δεσμεύοντας τις αλλαγές στον κλάδο. Ομοίως, όταν θέλουν να λάβουν την πιο πρόσφατη διαθέσιμη εργασία, ενημερώνουν τους τοπικούς χώρους εργασίας τους με τις αλλαγές του κλάδου. Έτσι, ο κλάδος αλλάζει συνεχώς και προχωράει καθώς τα μέλη της ομάδας υποβάλλουν νέες εργασίες.
Ο κλάδος αναπαριστά αποτελεσματικά την τρέχουσα κατάσταση του έργου. Οποιαδήποτε στιγμή ένα μέλος μπορεί να ενημερώσει τους χώρους εργασίας από τον κλάδο και να γνωρίζει ότι είναι ενημερωμένοι.
Το CVS παρέχει δύο σημαντικά χαρακτηριστικά τα οποία είναι απαραίτητα για την εργασία σε ομάδα:
Ένα ιστορικό της εργασίας που υποβλήθηκε από την ομάδα
Μια μέθοδο συντονισμού και ενσωμάτωσης αυτής της εργασίας
Η τήρηση ιστορικού είναι σημαντική προκειμένου να μπορεί κανείς να συγκρίνει την τρέχουσα εργασία έναντι προηγούμενων πρόχειρων εκδόσεων, να πραγματοποιεί επαναφορά σε μια προηγούμενη καλύτερη εργασία και ούτω καθεξής. Ο συντονισμός της εργασίας είναι καθοριστικής σημασίας προκειμένου να υπάρχει ένας ορισμός της τρέχουσας κατάστασης του έργου, ο οποίος θα περιέχει την ενσωματωμένη εργασία της ομάδας. Ο συντονισμός αυτός παρέχεται μέσω του μοντέλου κλάδων.
Ένα αισιόδοξο μοντέλο είναι το μοντέλο στο οποίο οποιοδήποτε μέλος της ομάδας μπορεί να κάνει αλλαγές σε οποιονδήποτε πόρο έχει δυνατότητα πρόσβασης. Επειδή είναι δυνατόν δύο μέλη μιας ομάδας να δεσμεύσουν στις αλλαγές ενός κλάδου στον ίδιο πόρο, είναι πιθανό να προκύψουν διενέξεις οι οποίες θα πρέπει να επιλυθούν. Το μοντέλο αυτό ονομάζεται αισιόδοξο επειδή σύμφωνα με αυτό θεωρείται ότι οι διενέξεις είναι σπάνιες.
Συνήθως οι πόροι δεν είναι απομονωμένοι, αλλά περιέχουν ρητές ή σιωπηρές εξαρτήσεις από άλλους πόρους. Για παράδειγμα, οι διαδικτυακές σελίδες έχουν διασυνδέσεις σε άλλες σελίδες και ο πρωτογενής κώδικας έχει αναφορές σε τεχνητά στοιχεία που περιγράφονται σε άλλους πόρους πρωτογενούς κώδικα. Κανένας πόρος δεν είναι απομονωμένος.
Εφόσον οι πόροι είναι δεσμευμένοι στον κλάδο, αυτές οι εξαρτήσεις μπορεί να επηρεαστούν. Η διασφάλιση της ακεραιότητας των εξαρτήσεων είναι σημαντική επειδή ο κλάδος αναπαριστά την τρέχουσα κατάσταση του έργου: οποιαδήποτε στιγμή ένα μέλος της ομάδας μπορεί να χρησιμοποιήσει το περιεχόμενο ενός κλάδου ως βάση για νέα εργασία.
Επομένως η ιδανική ροή εργασίας είναι αυτή κατά την οποία διατηρείται η ακεραιότητα του κλάδου.
Η ιδανική ροή εργασίας αναλύεται ως εξής:
Κάντε μια νέα αρχή. Πριν αρχίσετε να δουλεύετε, ενημερώσετε τους πόρους στο χώρο εργασίας με την τρέχουσα κατάσταση κλάδου. Εάν είστε σίγουροι ότι δεν υπάρχει κάποια εργασία τοπικά η οποία σας ενδιαφέρει, ο ταχύτερος τρόπος για να πραγματοποιήσετε ενημέρωση είναι να επιλέξετε τα έργα που σας ενδιαφέρουν από τον κλάδο (ή το HEAD) και να επιλέξετε Ανάληψη ελέγχου (ή Αντικατάσταση με > Τελευταίο από χώρο αποθήκευσης εάν τα έργα υπάρχουν ήδη τοπικά). Με αυτό τον τρόπο οι τοπικοί πόροι θα αντικατασταθούν με αυτούς που υπάρχουν στον κλάδο.
Κάντε αλλαγές. Εργαστείτε τοπικά στον πάγκο εργασίας σας, δημιουργώντας νέους πόρους, τροποποιώντας τους υπάρχοντες και αποθηκεύοντας τοπικά καθώς προχωράτε.
Εκτελέστε συγχρονισμό. Όταν είστε έτοιμος να δεσμεύσετε την εργασία σας, εκτελέστε συγχρονισμό με το χώρο αποθήκευσης.
Ενημέρωση. Εξετάστε τις εισερχόμενες αλλαγές και προσθέστε τις στον τοπικό σας πάγκο εργασίας. Με αυτό τον τρόπο μπορείτε να καθορίσετε εάν υπάρχουν αλλαγές που θα μπορούσαν να επηρεάσουν την ακεραιότητα της εργασίας που πρόκειται να δεσμεύσετε. Επιλύστε τις διενέξεις. Επαναλάβετε τον έλεγχο, ελέγξτε την ακεραιότητα της εργασίας, (για παράδειγμα, ελέγξτε για τυχόν κατεστραμμένες διασυνδέσεις υπερκειμένου, ελέγξτε τις μεταγλωττίσεις του κώδικα και ούτω καθεξής).
Δέσμευση. Εάν είστε βέβαιοι ότι οι αλλαγές σας ενσωματώθηκαν σωστά με τα πιο πρόσφατα περιεχόμενα του κλάδου, δεσμεύστε τις αλλαγές σας στον κλάδο. Για ασφάλεια, μπορείτε να επαναλάβετε το προηγούμενο βήμα εάν υπάρχουν νέες εισερχόμενες αλλαγές.
Βέβαια αυτή είναι μια ιδανική ροή εργασίας. Σε κάποιες περιπτώσεις, ενδεχομένως να είστε βέβαιος ότι οι εισερχόμενες αλλαγές δεν σας επηρεάζουν και να επιλέξετε να εκτελέσετε δέσμευση των εργασιών χωρίς να εκτελέσετε ενημέρωση. Ωστόσο, γενικά τα μέλη μιας ομάδας θα πρέπει να προσπαθούν να ακολουθούν μια ροή παρόμοια με την παραπάνω προκειμένου να εξασφαλίζουν ότι δεν θα παραβιαστεί κατά λάθος η ακεραιότητα του κλάδου.
Περισσότερες πληροφορίες σχετικά με το CVS μπορείτε να βρείτε στη διεύθυνση http://www.cvshome.org.
Χώροι αποθήκευσης CVS
Κλάδοι
Εκδοχές
Συγχρονισμός με το χώρο αποθήκευσης CVS
Δημιουργία θέσης χώρου αποθήκευσης CVS
Ανάληψη ελέγχου ενός έργου από ένα χώρο αποθήκευσης CVS
Αντικατάσταση πόρων στον πάγκο εργασίας
Κοινή χρήση νέου έργου με χρήση CVS
Συγχρονισμός με το χώρο αποθήκευσης
Ενημέρωση
Επίλυση διενέξεων
Συγχώνευση από έναν κλάδο
Δέσμευση