Programmation en équipe avec CVS

Dans l'environnement de programmation en équipe CVS (Concurrent Versions System), les membres d'une équipe effectuent l'ensemble de leurs travaux dans leurs propres plans de travail, à l'écart des autres. Le cas échéant, ils peuvent souhaiter partager leur travail. Pour ce faire, ils utilisent un référentiel CVS.

Branches

CVS utilise un modèle de branche pour la prise en charge de plusieurs programmes de travail relativement séparés les uns des autres mais néanmoins hautement interdépendants. Les branches sont les emplacements dans lesquels une équipe de développement partage et intègre son travail en cours. Une branche peut être considérée comme un espace de travail partagé mis à jour par des membres d'une équipe à mesure qu'ils modifient le projet. Ce modèle permet à des individus de travailler sur un projet d'équipe CVS, de partager leur travail avec d'autres à mesure des modifications et d'accéder au travail des autres tandis que le projet évolue. Une branche spéciale, appelée HEAD, représente le principal programme de travail dans le référentiel (HEAD est souvent désigné par branchement).

Partage du travail

A mesure de l'avancement de leur travail, les membres d'une équipe partagent ce travail en le validant dans la branche. De même, lorsqu'ils souhaitent récupérer les derniers travaux effectués disponibles, ils mettent à jour leurs espaces de travail locaux en fonction des modifications de la branche. La branche se modifie donc en permanence, à mesure que les membres de l'équipe y enregistrent leurs nouveaux travaux.

La branche est une représentation réelle de l'état en cours du projet. A tout moment, un membre de l'équipe peut mettre à jour leurs espaces de travail à partir de la branche sachant qu'ils sont toujours à jour.

Interaction avec les branches et les plans de travail

Modèle d'équipe optimiste

CVS offre deux fonctionnalités importantes requises pour travailler dans une équipe :

Conserver un historique est essentiel pour pouvoir comparer le travail en cours au travail précédemment effectué, revenir à un travail précédent mieux fait, etc. La coordination du travail est primordiale de façon à disposer d'une définition de l'état en cours du projet, intégrant le travail de l'équipe. Le modèle de branche permet d'effectuer cette coordination.

Un modèle optimiste est un modèle dans lequel chaque membre de l'équipe peut apporter des modifications à toute ressource à laquelle il peut accéder. Deux membres d'une équipe pouvant valider dans la branche des modifications apportées à la même ressource, des conflits que vous devrez régler peuvent se produire. Ce modèle est dit optimiste car il engendre peu de conflits.

Flux de travail recommandé

Les ressources ne sont généralement pas isolées mais associées les unes aux autres par des dépendances implicites ou explicites.  Par exemple, des pages Web sont liées à d'autres pages Web et du code source contient des références à des artefacts décrits dans d'autres ressources du code source.  Une ressource n'est pas un élément isolé.

La validation des ressources dans la branche peut affecter ces dépendances. Il est important de garantir l'intégrité des dépendances car la branche représente l'état en cours du projet : à tout moment, un membre de l'équipe doit pouvoir utiliser le contenu de la branche comme base d'un nouveau travail.

Le flux idéal des opérations est donc celui dans lequel l'intégrité de la branche est préservée.

Enchaînement idéal des opérations

L'enchaînement idéal des opérations est le suivant :

  1. Démarrer sur une base saine. Avant de commencer, mettez à jour les ressources de l'espace de travail avec l'état en cours du projet. Si vous êtes sûr de ne pas avoir en local de travaux qui vous tiennent à coeur, la méthode la plus rapide consiste à sélectionner dans la branche (ou HEAD) les projets qui vous intéressent, puis à sélectionner Réserver (ou Remplacer par > Le plus récent du référentiel si les projets existent déjà en local). Cette opération remplace l'intégralité de vos ressources locales par celles de la branche.

  2. Effectuer les modifications. Travaillez localement dans votre plan de travail en créant de ressources, en modifiant celles existantes et en sauvegardant au fur et à mesure.

  3. Synchroniser. Quand votre travail est prêt pour validation, effectuez une synchronisation avec le référentiel.

    1. Mettre à jour. Examinez les modifications entrantes et ajoutez-les dans votre plan de travail local. Cette opération permet de déterminer la présence de modifications risquant de nuire à l'intégrité des éléments à valider. Traitez les conflits. Testez de nouveau et effectuez des vérifications d'intégrité (par exemple, vérifiez qu'aucun lien hypertexte n'est brisé, que le code a bien été compilé, etc).

    2. Valider. Une fois que vous êtes sûr que vos modifications sont intégrées au contenu de branche le plus récent, validez-les dans la branche. Par prudence, répétez l'étape précédente s'il existe de nouvelles modifications entrantes.

Bien entendu, il s'agit là d'un enchaînement idéal des opérations. Dans certains cas, vous êtes sûr que les modifications entrantes n'affecteront pas votre travail et vous pouvez valider sans effectuer de mise à jour. Cependant, les membres d'une équipe doivent généralement faire l'effort de suivre approximativement l'enchaînement d'opérations décrit ci-dessus afin de préserver l'intégrité de la branche. 

Vous trouverez plus d'informations sur CVS à l'adresse suivante : https://www.cvshome.org.

Concepts connexes
Référentiels CVS
Branches
Versions
Synchronisation avec un référentiel CVS

Tâches connexes
Création d'un emplacement de référentiel CVS

Réservation d'un projet à partir d'un référentiel CVS
 
Remplacement des ressources dans le plan de travail

Partage d'un nouveau projet à l'aide de CVS

Synchronisation avec le référentiel

Mise à jour

Résolution des conflits

Fusion à partir d'une branche

Validation

Référence connexe
CVS