Io non sono molto sicuro di come questo è accaduto, ma in qualche modo una gerarchia completamente vuoto di directory è finito nel mio repository:Rimuovere la directory vuota da CVS?
com/
com/companyname/
com/companyname/blah/
com/sun/
com/sun/java/
com/sun/java/jax_rpc_ri/
Penso che quello che è successo è che queste directory hanno avuto i file in esse, ma poi uno sviluppatore si è reso conto che non avrebbe dovuto controllarli in primo luogo poiché questi sono sottoprodotti del processo di costruzione, quindi ha rimosso i file ma in qualche modo le directory vuote sono rimaste nel repository come reliquie antiche.
Come posso rimuovere questo da CVS? Gli unici risultati che riesco a trovare su google dicono che non dovrebbe esserci la necessità di rimuovere le directory vuote dal momento che CVS non le manterrà in primo piano e che le opzioni -P
(prune) a cvs update
devono essere rimosse li dalla directory di lavoro - che è zero aiuto se in realtà hai directory vuote nel tuo repository.
A cvs remove
e cvs commit
non sembra prendersi cura di questa situazione:
$ 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
E 'ancora lì!
SVN ha anche questo strano comportamento?
Avvertenza! È necessario andare al repository reale, fisico perché una volta che CVS perde una directory, non potrà mai più recuperarla. CVS memorizza i file che sono stati cancellati in cartelle speciali chiamate 'Attic'. Se cancelli il 'Attic', quei file sono persi per sempre. –
Pensa sempre due volte prima di fare qualcosa di simile, ma non vedo alcun problema: 'ssh cvsserver:/cvsroot 'tar cvf com.tar com''; 'scp cvsserver: /cvsroot/com.tar .'; 'cvs add com.tar'; 'cvs ci com.tar'; 'cvs rm -f com.tar'; 'ssh cvsserver:/cvsroot 'rm -rf com.tar com'' – minopret