Aller au contenu
Mathis Vila

projets but3 r504-tp1-cvs-git

BUT3 · R5.04 Terminé

Travail collaboratif : serveur CVS, gestion de conflit et comparaison avec Git

J'ai mis en place un serveur CVS et trois postes de développeurs, géré un conflit de modification, puis comparé la démarche avec Git.

Année
BUT3 · S5
Module
R5.04 et SAE 5.02 Cycle de vie d'un projet informatique
Type
TP
Date
28/08/2026
Équipe
seul
Mon rôle
Auteur unique

Contexte et objectif

L'objectif était de mettre en place un environnement de travail collaboratif avec CVS, de l'utiliser en ligne de commande, de manipuler son interface graphique TkRev, puis de comparer avec Git.

Ce que j'ai réalisé

  • J'ai monté quatre VM Debian 13 sur mon environnement Hyper-V : un serveur CVS et trois postes (chef de projet, développeur X, développeur Y).
  • J'ai installé le serveur, initialisé le dépôt et géré les droits (démon, utilisateur, fichier des rédacteurs).
  • J'ai déroulé le cycle complet en ligne de commande : import, checkout, commit, étiquette.
  • J'ai provoqué puis résolu un conflit entre deux développeurs modifiant le même fichier.
  • J'ai rejoué la même séquence sous Git et observé l'historique avec gitk.

Difficultés rencontrées et solutions

  • Commit validé avec un message vide : corrigé a posteriori.
  • Étiquette refusée par manque de droits sur un fichier du dépôt : droits corrigés ponctuellement en root.
  • Affichage graphique à distance fonctionnel uniquement pour un utilisateur non root : dossiers de travail déplacés avec les bons droits.
  • Paquets absents de l'image minimale et erreur de miroir : mise à jour des index puis installation.

Résultats

  • Serveur CVS fonctionnel de bout en bout avec sa chaîne d'habilitation.
  • Conflit entre deux développeurs reproduit et résolu ligne à ligne.
  • Même scénario rejoué sous Git pour une comparaison directe.

Ce que j'en retiens

CVS et Git répondent au même besoin avec des architectures opposées : centralisée pour l'un, distribuée pour l'autre. Résoudre seul plusieurs incidents que le sujet ne prévoyait pas est ce qui m'a le plus appris. Vivre un conflit de l'intérieur m'a fait comprendre pourquoi un commit qui n'est pas à jour est refusé, et pourquoi le modèle distribué s'est imposé.

Technologies

  • CVS
  • cvsd
  • TkRev
  • Git
  • gitk
  • Debian 13
  • Hyper-V
  • X11 forwarding
  • MobaXterm
  • gcc

En images

TkRev : arbre des révisions d'un fichier dans le dépôt CVS
TkRev : arbre des révisions d'un fichier dans le dépôt CVS
Arbre des révisions après pose d'une étiquette
Arbre des révisions après pose d'une étiquette
Commit refusé : la copie de travail n'est pas à jour
Commit refusé : la copie de travail n'est pas à jour
gitk : historique des commits du même scénario rejoué sous Git
gitk : historique des commits du même scénario rejoué sous Git