Mover un file en CVS sin restablecer el número de revisión

Últimamente he estado moviendo files fuente en nuestro tree fuente. Por ejemplo, colocar un grupo de files en un set común. He estado haciendo esto borrando el file de CVS y luego volviéndolo a agregar en el nuevo lugar. El problema es que el número de revisión del file 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 repository, así que cualquier cosa que lo requiera no me sirve, pero podría ayudar a otros.

No hay forma de mover files con commands solo para el cliente. Necesita acceder al sistema de files de los serveres y puede mover el file ", v" en el repository a una nueva location. Esto mantendrá todo el historial, ya que CVS registra cada revisión y sus comentarios en ese único file.

Tenga en count que los files se mueven a una subcarpeta "Attic" (que no se puede ver desde el cliente) cuando se eliminan. Así es como se pueden restaurar los files 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 directorys anterior.

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

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 session en el server que aloja el repository de CVS y copie (no mueva) el file del repository desde la location que desea a la nueva location.
  2. En el lado del cliente, cvs elimina el file de la location anterior.
  3. En el lado del cliente, cvs actualiza los contenidos del directory en la nueva location (para que el file aparezca allí).
  4. En el lado del cliente, realice una confirmación cvs forzada (utilizando el distintivo -f) del file copydo para registrar el hecho de que se volvió a copyr (agregue un comentario de logging a tal efecto).

Este procedimiento mantiene el historial de files en su nueva location y tampoco rompe la continuidad hacia atrás del repository. Si retrocede en el time, el file aparecerá correctamente en su location anterior. También puede usar el mismo procedimiento para cambiar el nombre de un file.

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

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

La forma normal de mover un file es emitir un command cvs rename.

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

Esta es la forma más simple de mover un file. 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 repository.

Esta function solo se admite en los serveres CVSNT 2.0.55 y posteriores.

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

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

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 files es engorroso. Para el punto de vista del repository, solo puede eliminar files o agregar nuevos. Entonces, el process 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 interese 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 repository. Primero, vaya allí, encuentre el directory donde se encuentra su proyecto y haga lo siguiente:

cp oldfile.c, v newfile.c, v

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