usuario tortoise subir revertir puerto proyecto por ignorar desvincular descartar defecto con como carpeta cambios cambiar archivos version-control cvs

version control - tortoise - Mover un archivo en CVS sin restablecer el número de revisión



revertir cambios svn (6)

¿No es este uno de los defectos conocidos de CVS, sin mecanismo incorporado para mover archivos? Ha pasado mucho tiempo desde que lo usé, así que tal vez ahora hay una solución.

Subversion le permitirá mover archivos, pero también se rastreará para que el nuevo archivo obtenga el número de revisión más reciente.

Últimamente he estado moviendo archivos fuente en nuestro árbol fuente. Por ejemplo, colocar un grupo de archivos en un conjunto común. He estado haciendo esto borrando el archivo de CVS y luego volviéndolo a agregar en el nuevo lugar. El problema es que el número de revisión del archivo se restablece a 1.1. ¿Hay alguna forma simple de mover cosas sin tener que restablecer el número?

Probablemente debería haber mencionado que no tengo acceso al repositorio, así que cualquier cosa que lo requiera no me sirve, pero podría ayudar a otros.


Bueno, la forma más sencilla sería acceder al servidor cvs donde está su repositorio y simplemente mover sus carpetas / archivos con mv (suponiendo que sea una máquina * nix). de esa forma se guardará el historial del archivo.


El manual en línea de CVS tiene algunos detalles sobre cómo hacer esto:

La forma normal de mover un archivo es emitir un comando cvs rename.

$ cvs renombrar viejo nuevo
$ cvs commit -m "Renominado viejo a nuevo"

Esta es la forma más simple de mover un archivo. No es propenso a errores y conserva el historial de lo que se hizo. Los clientes de CVSNT pueden recuperar el nombre original revisando una versión anterior del repositorio.

Esta función solo se admite en los servidores CVSNT 2.0.55 y posteriores.


La forma generalmente aceptada para lograr este efecto es realizar los siguientes pasos. El término técnico para esto es una repocopy.

  1. Inicie sesión en el servidor que aloja el repositorio de CVS y copie (no mueva) el archivo del repositorio desde la ubicación que desea a la nueva ubicación.
  2. En el lado del cliente, cvs elimina el archivo de la ubicación anterior.
  3. En el lado del cliente, cvs actualiza los contenidos del directorio en la nueva ubicación (para que el archivo aparezca allí).
  4. En el lado del cliente, realice una confirmación cvs forzada (utilizando el distintivo -f) del archivo copiado para registrar el hecho de que se volvió a copiar (agregue un comentario de registro a tal efecto).

Este procedimiento mantiene el historial de archivos en su nueva ubicación y tampoco rompe la continuidad hacia atrás del repositorio. Si retrocede en el tiempo, el archivo aparecerá correctamente en su ubicación anterior. También puede usar el mismo procedimiento para cambiar el nombre de un archivo.


No hay forma de mover archivos con comandos solo para el cliente. Necesita acceder al sistema de archivos de los servidores y puede mover el archivo ", v" en el repositorio a una nueva ubicación. Esto mantendrá todo el historial, ya que CVS registra cada revisión y sus comentarios en ese único archivo.

Tenga en cuenta que los archivos se mueven a una subcarpeta "Attic" (que no se puede ver desde el cliente) cuando se eliminan. Así es como se pueden restaurar los archivos después de que hayan sido eliminados.

En general, no hay problemas inmediatos con este enfoque, sin embargo, debe considerar las consecuencias si decide verificar una versión anterior de su producto que podría depender de la estructura de directorios anterior.

Aquí es donde otros sistemas de control de revisión como Subversion tienen una ventaja definitiva.


Parece que debes mantener el historial de la versión para usar la opción -v cuando te muevas ver a continuación

El cambio de nombre CVS de archivos es engorroso. Para el punto de vista del repositorio, solo puede eliminar archivos o agregar nuevos. Entonces, el proceso usual es

mv oldfile.c newfile.c cvs delete oldfile.c cvs add newfile.c

Esto funciona, pero usted pierde toda la información de cambio que le importa en las operaciones de confirmación durante años de duro desarrollo y probablemente no sea lo que desea. Pero, hay una manera; debe tener acceso directo al repositorio. Primero, vaya allí, encuentre el directorio donde se encuentra su proyecto y haga lo siguiente:

cp oldfile.c, v newfile.c, v

ahora ve a tu directorio de trabajo y haz una actualización cvs; newfile.c aparecerá como un nuevo archivo. Ahora puede cvs eliminar oldfile.c y confirmar.