Saltar al contenido

Migra de CVS a Git sin perder el historial

Hacemos una revisión profunda cada escrito de nuestro espacio con la meta de enseñarte siempre información veraz y actual.

Solución:

Este es el proceso que usé para migrar un repositorio CVS de SourceForge a Git usando cvs2git (la última versión estable está aquí, pero IIRC usé la versión de desarrollo de github), que funciona tanto en Windows como en Linux sin necesidad de compilación, ya que es solo Python.

También tú no es necesario poseer el repositorio con este método, puede, por ejemplo, migrar proyectos de SourceForge que no le pertenecen (solo necesita el derecho de pago, por lo que esto funciona en cualquier repositorio público).

Cómo importar desde sourceforge CVS a git.
Primero, debe descargar/verificar el repositorio de cvs con todo el historial (no solo ver el HEAD/Trunk):

rsync -av rsync://PROJECT.cvs.sourceforge.net/cvsroot/PROJECT/* cvs

luego use cvs2git (script de python, funciona en todas las plataformas, no necesita compilación):

python cvs2git --blobfile="blob.dat" --dumpfile="dump.dat" --username="username_to_access_repo" --options=cvs2git.options --fallback-encoding utf-8 cvs

esto debería haber generado dos archivos blob y dump que contiene todo su historial cvs. Puede abrirlos en un editor de texto para verificar que el contenido parece correcto.

luego inicialice su repositorio git dentro de otra carpeta:

mkdir gitexport/
cd gitexport
git init

luego cargue el historial de cvs exportado en git:

cat ../blob,dump.dat | git fast-import

y luego coloque el cursor de confirmación de git al final del historial:

git reset --hard

finalmente y opcionalmente, puede enviar a su repositorio remoto de git:

git push -u origin master

por supuesto que necesita antes de git remote add origin https://your_repo_url

Nota: cvs2git.options es un archivo de configuración con formato JSON para cvs2git donde puede especificar transformaciones para varias cosas, como los nombres de los autores (de modo que sus apodos se transformen automáticamente en su nombre completo después de la importación). Consulte la documentación aquí o el archivo de opciones de ejemplo incluido.

Personalmente no he hecho una conversión de CVS a Git, pero creo que la de Eric Raymond cvs-fast-export es la herramienta a utilizar. Él tiene la página man publicada aquí. cvsps es otra herramienta mantenida por Eric, pero recientemente ha sido obsoleta a favor de cvs-fast-export. cvs2git es otra herramienta que se basa en parte de la misma maquinaria que cvs2svn. Este último era extremadamente hábil, por lo que tengo grandes esperanzas de que cvs2git es igualmente bueno.

Una cosa a tener en cuenta: CVS es un RCS bastante roto. Es posible que pueda tener contenido que no se pueda reflejar exactamente en Git. En otras palabras, hay un desajuste de impedancia allí, pero las herramientas se esfuerzan mucho por preservar tanto como sea posible. Asegúrese de verificar su conversión y de estar satisfecho con los resultados. Es posible que deba corregir parte del historial de Git para obtener algo más aceptable, pero dudo que sea necesario.

Puedes usar git-cvsimport para importar su repositorio CVS a Git. De manera predeterminada, esto verificará cada revisión, brindándole un historial relativamente completo.

Dependiendo de su sistema operativo, es posible que deba instalar soporte para esto por separado. Por ejemplo, en una máquina Ubuntu necesitaría el git-cvs paquete.

Esta respuesta entra en más detalles.

Tienes la posibilidad compartir esta división si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *