Accueil du site > INFORMATIQUE > CVS : Renommer ou déplacer les fichiers en local

CVS : Renommer ou déplacer les fichiers en local

samedi 22 avril 2006, par Thierry Bothorel

Toutes les versions de cet article : [English ] [français ]

J’ai utilisé CVS dans le cadre d’un projet collaboratif et il est vrai que l’inconvénient majeur est l’impossibilité de renommer ou déplacer des fichiers ou des répertoires sans perdre tout l’historique de ces fichiers. Depuis quelques années on voit de plus en plus de projets passer à un nouveau système [Subversion], qui gère justement le renommage de fichiers et qui je crois améliore la gestion des branches.

Étant "habitué" à son environnement, j’avoue que pour l’instant ne l’utilisant qu’en local sur ma machine, j’hésite à changer. D’autant plus que j’utilise nombre d’outils liés à CVS, comme la génération automatique du fichier ChangeLog grâce à un script PERL, ou un navigateur web de repository local utilisant aussi PERL, CVSWEB NT. De plus ces petits outils sont très pratique car ils accèdent directement aux fichiers du [repository] en utilisant les outils [RCS] et n’ont pas besoin de passer par un serveur CVS, ce qui est super pratique quand on utilise le mode :local:.

Un avantage indirect de cet inconvénient par rapport à Subversion est que cela oblige à ne pas créer sa hiérarchie de dossiers et ses noms de fichier à la légère et à bien y réfléchir avant. Mais malgré tout cela arrive et depuis longtemps je réagissais comme si j’utilisai un serveur distant sur Internet.

Il y a une semaine, alors que je voulais changer le nom d’un fichier, je me suis dis qu’il fallait que j’essaie de modifier directement dans le repository, après sauvegarde bien entendu ! Et bien au miracle, çà marche parfaitement bien. J’avais un peu peur que le système soit plus complexe que cela, mais apparemment chaque fichier est autonome, toutes les modifications concernant un fichier sont contenues uniquement dans celui-ci. Par exemple vous avez un fichier config.inc que vous voulez renommer en config.inc.php. Vous allez dans votre repository, renommez

en

et le tour est joué. Vous faites un update sur votre répertoire de travail, et hop, votre fichier avec votre nouveau nom apparait comme par magie avec tout son historique comme s’il avait été là depuis le début.

Dans les dernières version de CVS, vous avez une nouvelle ligne qui apparait à la fin des informations de chaque commit dans les fichier :

c’est la ligne filename avec le nom du fichier, qui n’existait pas avant. Si vous avez modifié le nom de ce fichier, les commit AVANT le changement de nom conserveront l’ancien nom alors que les nouveaux auront le nouveau nom, et cela ne pose aucun problème.

Le déplacement/renommage de dossier ne pose aucun problème non plus. Notez que contrairement à Subversion, CVS dans ce cas ne garde aucune trace du changement de nom. Si vous demandez l’historique du fichier, il vous affichera tout l’historique comme si le fichier avait porté ce nom depuis la version 1.1

Notes

[Subversion] Subversion_(logiciel)

[repository] Endroit centralisé ou le système conserve les sources et contient une hiérarchie de fichiers versionnés

[RCS] Revision Control System

Répondre à cet article | RétroLiens :0


1 Message

Répondre à cet article