¿Hay alguna herramienta para reparar files RCS / CVS, v?

Estoy haciendo un montón de conversiones de repositorys CVS y RCS en Subversion. De vez en cuando me encuentro con un file v dañado. He descubierto cómo repararlos manualmente, pero se está volviendo tedioso, y mi último proyecto tiene numerosos files dañados, más de lo que me gustaría reparar manualmente.

Entonces me gustaría tener una herramienta para analizar los files RCS y repararlos. Eso bien puede significar que algunas versiones antiguas estarán incompletas. Por ejemplo, he visto casos en los que faltaba la versión 1.1, por lo que el truco es agregar una revisión vacía con un comentario que indique que falta.

He hecho muchas búsquedas para encontrar esa herramienta, pero no he encontrado nada. Estaba a punto de comenzar a escribir mi propia herramienta, pero pensé que debería intentar preguntar aquí, primero.

Sé que podría get instantáneas de código e importarlas, y recurriré a eso si tengo que hacerlo (solo para descartar esas sugerencias 🙂

++ gracias

Personalmente, no recomiendo la migration manual, ya que el process lleva mucho time y no hay forma de salir de él con un set completo de datos / metadatos en el repository resultante.

Hay una herramienta para migrar CVS a SVN y se llama cvs2svn . Es "una herramienta para migrar un repository de CVS a Subversion, git o Bazaar". Puede consultar este instructivo para get un consejo de inicio rápido.

Mira esto :

CVS era solo una interfaz para RCS, y los files * .v son realmente files RCS. Solo échales un vistazo. por ejemplo, si tienes foo, v solo ejecuta:

co foo 

y se downloadá foo del file v.

También hay un convertidor RCS a SVN y puedes probarlo también.

Escribí una biblioteca de Python, editrcs , que analiza files RCS en un tree que puede modificarse y luego escribirse como un nuevo file RCS. No está diseñado para hacer frente a files RCS inválidos, pero podría ser un punto de partida razonable si la corrupción está solo en las secciones de datos o si modifica la biblioteca para evitar cualquier metadato corrupto.

También es relevante para su pregunta en particular:

  1. Los files RCS almacenan la última revisión del tronco y los diffs yendo hacia atrás en el tronco. Entonces, si la diferencia para una revisión histórica es irremediablemente corrupta, cualquier cosa anterior puede ser inutilizable, o al less incorrecta, a less que pueda adivinar cuál fue el cambio o no entre en conflicto. (Las twigs se almacenan como dif avanzado a partir de su punto de ramificación, por lo que twigs enteras desde el punto de corrupción pueden ser problemáticas).

  2. Puede ser válido tener un espacio en la numeración de revisión, si se ha eliminado una revisión del file RCS usando "rcs -o". Un montón de nulos Si tiene un montón de nulos donde debería haber una revisión, entonces esto es por ejemplo:

     # Setup echo 1 > test echo "initial commit" | ci -l test echo 2 >> test echo "2" | ci -l test echo 3 >> test echo "3" | ci -l test # RCS file contains revisions 1.1, 1.2, 1.3 rlog test # Remove revision 1.2 rcs -o1.2 test # RCS file now contains revisions 1.1, 1.3 rlog test