36 votes

Supprimer un répertoire vide du CVS ?

Je ne sais pas exactement comment cela s'est produit, mais une hiérarchie de répertoires complètement vide s'est retrouvée dans mon référentiel :

com/
com/companyname/
com/companyname/blah/
com/sun/
com/sun/java/
com/sun/java/jax_rpc_ri/

Je pense que ce qui s'est passé, c'est que ces répertoires contenaient des fichiers, mais qu'un développeur a réalisé qu'il/elle n'aurait pas dû les enregistrer en premier lieu puisque ce sont des sous-produits du processus de construction, donc il/elle a supprimé les fichiers, mais d'une manière ou d'une autre, les répertoires vides sont restés dans le référentiel comme d'anciennes reliques.

Comment puis-je supprimer cela du CVS ? Les seuls résultats que j'ai pu trouver sur Google disent qu'il ne devrait pas être nécessaire de supprimer les répertoires vides puisque CVS ne les garde pas en premier lieu, et que l'option de suppression des répertoires vides n'est pas nécessaire. -P (élaguer) les options pour cvs update devrait les supprimer du répertoire de travail - ce qui n'est d'aucune aide si vous avez effectivement des répertoires vides dans votre référentiel.

A cvs remove y cvs commit ne semble pas prendre en charge cette situation :

$ cvs remove -Rf com
cvs remove: Removing com
cvs remove: Removing com/companyname
cvs remove: Removing com/companyname/blah
cvs remove: Removing com/sun
cvs remove: Removing com/sun/java
cvs remove: Removing com/sun/java/jax_rpc_ri
$ cvs commit com
cvs commit: Examining com
cvs commit: Examining com/companyname
cvs commit: Examining com/companyname/blah
cvs commit: Examining com/sun
cvs commit: Examining com/sun/java
cvs commit: Examining com/sun/java/jax_rpc_ri
$ ls -l com
total 24
drwxrwxr-x  2 matt matt 4096 Oct 15 14:38 CVS
drwxrwxr-x  9 matt matt 4096 Oct 15 14:38 companyname
drwxrwxr-x  4 matt matt 4096 Oct 15 14:38 sun

C'est toujours là !

Est-ce que SVN a aussi ce comportement bizarre ?

38voto

smink Points 39640

A ma connaissance, le protocole CVS ne permet pas de supprimer des répertoires. Vous devez aller dans la console du serveur et les supprimer du dépôt physique réel.


http://www.network-theory.co.uk/docs/cvsmanual/Removingdirectories.html

Vous ne supprimez pas le répertoire lui-même ; il n'y a aucun moyen de le faire.

22voto

Commodore Jaeger Points 11949

CVS checkout et update extrairont toujours les répertoires vides ; c'est ainsi que CVS est construit. Faites une mise à jour avec "-P" -- "prune" -- pour supprimer les répertoires vides :

cvs update -dP

(L'ajout de "-d" mettra à jour les nouveaux répertoires qui sont apparus depuis votre dernière mise à jour ; sinon, CVS les ignorera).

8voto

Je viens de le faire.

  1. rm -rvf /localCopy/projet/répertoire vide
  2. éditer /localCopy/projet/CVS/Entries, supprimer la ligne D/emptyDirectory////, sauvegarder le fichier
  3. rmdir -v /CVSROOT/projet/répertoire vide

pour se débarrasser de emptyDirectory dans le projet. J'admets ne pas avoir le droit de toucher aux données internes de CVS, mais cela semble avoir fonctionné (cvs version 1.12.13).

4voto

Schwern Points 33677

CVS a un certain nombre de défauts de conception, ne jamais être capable de se débarrasser d'un répertoire sans perdre l'historique en est un. La difficulté de renommer des fichiers et des répertoires sans perdre l'historique en est un autre.

Envisagez d'obtenir un diplôme pour Subversion . cvs2svn fait un très bon travail de conversion des dépôts en incluant toutes les branches et les tags. Les jeux de commandes CVS et SVN sont très similaires et nécessitent un ajustement minimal. (Et pour éviter que cela ne devienne une guerre de "quel contrôle de version devriez-vous utiliser") une fois que vous utilisez SVN, vous pouvez passer à un certain nombre de systèmes de contrôle de version plus avancés tels que git o SVK .

4voto

Pramod Jaiswal Points 31

Cela a fonctionné pour moi. En gros, quand vous faites

rmdir -v /CVSROOT/projet/répertoire vide # Nous supprimons le répertoire du référentiel CVS.

Si vous disposez d'un accès de connexion au serveur Unix du dépôt, vous pouvez vous rendre sur le chemin et supprimer le répertoire, ou soulever le même problème avec l'équipe Unix.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X