productos - ¿Cómo restauro un archivo eliminado en CVS?
inscribirme para obtener tarjeta de la farmacia cvs (8)
Eliminé un archivo registrado de la rama de CVS, es decir:
cvs remove -f file.txt
cvs commit
¿Cómo restauro el archivo?
La manera más simple, aunque posible, menos elegante de hacer esto es ''cd'' en el directorio de CVS en el mismo lugar que el archivo eliminado.
Luego edite el archivo llamado "Entradas".
Encuentra la línea que representa tu archivo eliminado. Tenga en cuenta que hay un ''-'' después de /
Elimina el ''-'', guarda el archivo y ¡listo!
Yuck, pero funciona.
Yo creo eso:
cvs add file.txt
cvs commit file.txt
... lo resucitará del ático.
Dada la falta de éxito de Harry, aquí hay una transcripción de lo que hice para demostrar que la respuesta anterior funciona (disculpas de antemano por su duración):
C:/foo>dir
Volume in drive C is Local Disk
Volume Serial Number is 344F-1517
Directory of C:/foo
28/09/2008 05:12 PM <DIR> .
28/09/2008 05:12 PM <DIR> ..
28/09/2008 05:12 PM <DIR> CVS
28/09/2008 05:11 PM 19 file.txt
1 File(s) 19 bytes
3 Dir(s) 22,686,416,896 bytes free
C:/foo>cvs status file.txt
===================================================================
File: file.txt Status: Up-to-date
Working revision: 1.2 Sun Sep 28 07:11:58 2008
Repository revision: 1.2 C:/jason/CVSROOT/foo/file.txt,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
C:/foo>cvs rm -f file.txt
cvs remove: scheduling `file.txt'' for removal
cvs remove: use ''cvs commit'' to remove this file permanently
C:/foo>cvs commit -m "" file.txt
Removing file.txt;
C:/jason/CVSROOT/foo/file.txt,v <-- file.txt
new revision: delete; previous revision: 1.2
done
C:/foo>cvs status file.txt
===================================================================
File: no file file.txt Status: Up-to-date
Working revision: No entry for file.txt
Repository revision: 1.3 C:/jason/CVSROOT/foo/Attic/file.txt,v
C:/foo>more file.txt
Cannot access file C:/foo/file.txt
C:/foo>dir
Volume in drive C is Local Disk
Volume Serial Number is 344F-1517
Directory of C:/foo
28/09/2008 05:12 PM <DIR> .
28/09/2008 05:12 PM <DIR> ..
28/09/2008 05:12 PM <DIR> CVS
0 File(s) 0 bytes
3 Dir(s) 22,686,400,512 bytes free
C:/foo>cvs add file.txt
cvs add: Resurrecting file `file.txt'' from revision 1.2.
U file.txt
cvs add: Re-adding file `file.txt'' (in place of dead revision 1.3).
cvs add: use ''cvs commit'' to add this file permanently
C:/foo>cvs commit -m "" file.txt
Checking in file.txt;
C:/jason/CVSROOT/foo/file.txt,v <-- file.txt
new revision: 1.4; previous revision: 1.3
done
C:/foo>more file.txt
This is a test...
C:/jason/work/dev1/nrta/foo>dir
Volume in drive C is Local Disk
Volume Serial Number is 344F-1517
Directory of C:/jason/foo
28/09/2008 05:15 PM <DIR> .
28/09/2008 05:15 PM <DIR> ..
28/09/2008 05:13 PM <DIR> CVS
28/09/2008 05:13 PM 19 file.txt
1 File(s) 19 bytes
3 Dir(s) 22,686,375,936 bytes free
Está claro que está haciendo lo correcto, pero el comportamiento que está observando es diferente. Quizás haya una diferencia debido a la versión de CVS (estoy usando 1.11.22 en Windows).
Descubrí que no puede usar cvs add
para deshacer una operación de cvs remove
que ya se ha realizado. Entonces esto funciona:
$ cvs remove -f file.txt
$ cvs add file.txt
pero esto no funciona:
$ cvs remove -f file.txt
$ cvs commit
$ cvs add file.txt
El método más sencillo que he encontrado hasta ahora es ejecutar cvs status file.txt
para averiguar el número de revisión. A continuación, tome el contenido de la revisión y vuélvalo a agregar en:
$ cvs update -p -r rev file.txt > file.txt
$ cvs add file.txt
$ cvs commit
El cvs add
no funcionó para mí porque mi versión cvs en el servidor era muy antigua. He confirmado que funciona bien con la versión 1.11.22 de CVS.
Esto es lo que hago. Simplemente creo un archivo vacío del mismo nombre, luego lo agrego y lo comprometo, luego recupero la versión anterior y la vuelvo a confirmar.
Tratar:
cvs add file.txt
cvs update file.txt
cvs commit file.txt
cd en el directorio $ CVSROOT y el directorio del módulo correspondiente y luego el ático, edite el archivo de interés, vy cambie la línea que dice Muerto; Exp; y luego mueva el archivo de interés, v al directorio de arriba.
Una actualización en el módulo desprotegido ahora restaurará el archivo.