Question

Dernièrement, j'ai déplacé des fichiers source dans notre arborescence. Par exemple, placer un groupe de fichiers dans un assemblage commun. Je supprime le fichier de CVS, puis je l'ajoute à nouveau au nouvel emplacement. Le problème est que le numéro de révision du fichier a été réinitialisé à 1.1. Existe-t-il un moyen simple de déplacer des objets sans réinitialiser le numéro?

J'aurais probablement dû mentionner que je n'ai pas accès au référentiel, donc tout ce qui l'exige ne m'aide pas, mais pourrait en aider d'autres.

Était-ce utile?

La solution

Il n’existe aucun moyen de déplacer des fichiers avec des commandes réservées aux clients. Vous devez accéder au système de fichiers du serveur et pouvez déplacer le fichier ", v " fichier dans le référentiel vers un nouvel emplacement. Cela gardera tout l'historique, puisque CVS enregistre chaque révision et ses commentaires dans ce fichier.

N'oubliez pas que les fichiers sont déplacés dans un dossier "Attic". sous-dossier (qui ne peut pas être vu du client) quand ils sont supprimés. C’est ainsi que les fichiers peuvent être restaurés après leur suppression.

En règle générale, cette approche ne pose pas de problème immédiat. Toutefois, vous devez envisager les conséquences si vous décidez de télécharger une version antérieure de votre produit qui pourrait s’appuyer sur la structure de répertoires précédente!

C’est là que les autres systèmes de contrôle de révision, comme Subversion, ont un avantage décisif.

Autres conseils

La manière généralement acceptée d’atteindre cet effet consiste à effectuer les étapes suivantes. Le terme technique utilisé est une repocopie.

  1. Connectez-vous au serveur hébergeant le référentiel CVS et copiez (ne déplacez pas) le fichier de référentiel de l'emplacement de votre choix vers le nouvel emplacement.
  2. Du côté client, cvs supprime le fichier de l'ancien emplacement.
  3. côté client, cvs met à jour le contenu du répertoire dans le nouvel emplacement (pour que le fichier y apparaisse).
  4. Du côté client, effectuez une validation forcée de cvs (à l'aide de l'indicateur -f) du fichier copié pour consigner le fait qu'il a été repocopié (ajoutez un commentaire de journal à cet effet).

Cette procédure conserve l'historique du fichier dans son nouvel emplacement et ne rompt pas non plus la continuité en arrière du référentiel. Si vous remontez dans le temps, le fichier apparaîtra correctement à son ancien emplacement. Vous pouvez également utiliser la même procédure pour renommer un fichier.

Le le manuel CVS en ligne contient des informations détaillées sur la procédure à suivre. ceci:

  

La manière habituelle de déplacer un fichier consiste à émettre une commande cvs rename.

     

$ cvs renommer l'ancien nouveau

  $ cvs commit -m "quotient ancien en nouveau"

     

C’est le moyen le plus simple de déplacer un fichier. Il n’est pas sujet aux erreurs et conserve l’historique de ce qui a été fait. Les clients CVSNT peuvent récupérer le nom d'origine en extrayant une ancienne version du référentiel.

     

Cette fonctionnalité n'est prise en charge que sur les serveurs CVSNT 2.0.55 et ultérieurs.

Eh bien, le moyen le plus simple serait d’accéder au serveur CVS où se trouve votre dépôt et de déplacer simplement vos dossiers / fichiers avec mv (en supposant une machine * nix). Ainsi, l'historique du fichier sera conservé.

N’est-ce pas l’un des défauts connus de CVS: pas de mécanisme intégré pour déplacer des fichiers? Cela fait longtemps que je ne l’utilise pas, alors peut-être qu’il ya maintenant une solution.

Subversion vous permettra de déplacer des fichiers, mais cela fera également l'objet d'un suivi afin que le nouveau fichier reçoive le numéro de révision le plus récent.

Il semble conserver l'historique des versions que vous devez utiliser l'option -v lors du déplacement, voir ci-dessous

  

Le renommage de fichiers par CVS est fastidieux.   Au point de vue du référentiel, vous   peut simplement supprimer des fichiers ou en ajouter de nouveaux.   Donc, le processus habituel est

     

mv oldfile.c newfile.c cvs delete   oldfile.c cvs ajouter newfile.c

     

Cela fonctionne, mais vous perdez tous les   changer les informations que vous avez écrit   en commettre des opérations au cours des années de   développement difficile et qui est probablement   pas ce que tu veux. Mais il y a un moyen;   vous devez avoir un accès direct au   dépôt. D'abord, allez là-bas, trouvez le   répertoire où votre projet est et fait   les suivantes:

     

cp oldfile.c, v newfile.c, v

     

maintenant allez dans votre répertoire de travail et   faire une mise à jour de cvs; newfile.c sera   apparaître comme un nouveau fichier. Maintenant vous pouvez cvs   supprimez oldfile.c et commettez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top