tag remove crear git version-control migration cvs

remove - git push tag



¿Hay alguna herramienta de migración de CVS a Git? (11)

cvs2git

Además de las respuestas proporcionadas, aquí hay una guía sobre cómo convertir cvs a git usando la herramienta cvs2git. Aquí, modulename es el nombre del directorio de CVS que desea importar.

Requisitos previos

cvs2svn paquete cvs2svn (que incluye el comando cvs2git) ya debe estar instalado.

Actualización: los pasos 1 y 2 no son del todo correctos: antes de intentarlo, lee el comentario a continuación por mhagger, el mantenedor de cvs2git

  1. checkout modulename

    cvs -d URL co -P modulename

  2. crea un CVSROOT vacío que necesita cvs2git

    mkdir modulename/CVSROOT

  3. descargue un ejemplo de cvs2git.options en http://cvs2svn.tigris.org/svn/cvs2svn/trunk/cvs2git-example.options (usuario "invitado" sin contraseña)

  4. edite el archivo cvs2git.options. Reemplazar r''test-data / main-cvsrepos ''con'' nombre de módulo ''. Editar autores se transforma.

    # edit this run_options.set_project( r''modulename'', # and this author_transforms={ ''jrandom'' : (''J. Random'', ''[email protected]''), ''mhagger'' : ''Michael Haggerty <[email protected]>'',

  5. ejecuta cvs2git para crear archivos git temp

    cvs2git --options=cvs2git.options --fallback-encoding utf-8

  6. crear el repositorio git

    mkdir gitrepo && cd gitrepo && git init .

  7. importar desde archivos git temp creados por cvs2git

    cat ../cvs2git-tmp/git-{blob,dump}.dat | git fast-import

  8. copia de trabajo de pago

    git reset --hard

Tengo la intención de cambiar de CVS a Git. En el caso de SVN, parece haber cvs2svn . ¿Hay alguna herramienta similar para migrar fácilmente de CVS a Git?


Encontré que cvs-fast-export hizo un excelente trabajo. Tuve que descargarlo y compilarlo yo mismo, pero no tuve ningún problema significativo al hacerlo.


He intentado cvs2git, git-cvsimport y parsecvs.

cvs2git a veces (por lo que recuerdo) crea ramas falsas para las etiquetas.

git-cvsimport no admite etiquetas múltiples para un conjunto de cambios. Sin embargo, es posible obtener algunos cambios adicionales para cvsps que lo admitan y cambiar el git-cvsimport original por algo que use cvsps actualizados (lo he probado y parece funcionar). Por el lado de la ventaja, admite actualizaciones incrementales y tiene cierta lógica para importar correctamente las fusiones (pero REQUIERE el formato apropiado para el mensaje de confirmación).

parsecvs hasta ahora me dieron los mejores resultados. Lamentablemente, el código disponible en la web no se compila de forma limpia con el último git. El cambio, aunque no es trivial, es factible.

EDITAR: Parece que ESR hizo cargo de cvsps y parsecvs por lo que hay alguna esperanza para la migración de CVS-> GIT. PERO ya mencionó en una lista de correo que puede declarar algunas de las herramientas que tomó recientemente oficialmente muertas.


La única herramienta que tiene una importación incremental parece ser git-cvsimport . Si desea convertir ( migrar ) de CVS a Git, la mejor solución por el momento parece ser mencionar el modo cvs2git de cvs2svn .

Consulte también la página Interfaces Frontends And Tools en la wiki de Git, sección sobre la interacción con otros sistemas de control de revisiones.


Leí la respuesta por los comentarios de Vanuan y mhagger. Lamentablemente, mhagger no publicó cómo hacerlo con cvs2git . Todo está muy bien escrito aquí: http://www.mcs.anl.gov/~jacob/cvs2svn/cvs2git.html

cvs2git lugar de git-cvsimport porque la documentación de git-cvsimport sugiere usarlo para evitar los problemas de git-cvsimport : https://www.kernel.org/pub/software/scm/git/docs/git-cvsimport.html#issues

Sigue la esencia de esto que funcionó para mí para crear un repositorio de git desde un repositorio SourceForge CVS en Debian Sid:

$ apt-get install cvs2svn cvs $ mkdir project.cvs $ rsync -av rsync://${PROJECT}.cvs.sourceforge.net/cvsroot/${PROJECT}/ project.cvs $ cvs2git --blobfile=git-blob.dat --dumpfile=git-dump.dat --username=cvs2git project.cvs $ mkdir project.git $ cd project.git $ git init $ cat ../git-blob.dat ../git-dump.dat | git fast-import

El paso de rsync es necesario porque cvs2git necesita acceso a todo el historial. Un pago simple no es suficiente.


No lo he intentado yo mismo, pero mis amigos han reportado buenos resultados al convertir primero de CVS a SVN, y luego de SVN a Git. Parece que las herramientas para hacer esas transiciones respectivas se han sacudido más a fondo que una transición directa de CVS a Git.


Puede agregar fromcvs a la lista. Se convierte bien y es extremadamente rápido y también incremental. Sin embargo, no hace etiquetas adhesivas, solo ramas.


Puedes usar git cvsimport . Requiere que se instalen cvsps , pero necesita instalar 2.x, ya que 3.x ya no es incompatible .

Luego importe el repositorio CVS en git vacío. Uso de muestra:

git cvsimport -C RepoName -r cvs -o master -k -v -d:pserver:[email protected]:/cvsroot/path ModuleName

En OSX, instala cvsps-2.1 de la siguiente manera (teniendo brew ):

brew tap homebrew/versions brew install cvsps2 brew link cvsps2

También puede usar la herramienta cvs2git , que puede convertir un repositorio de CVS a git. Sin embargo, debe tener acceso a un directorio CVSROOT.

Verifique la documentación de cvs2git para conocer los pasos de instalación.

Ejemplo de uso:

cvs2git --blobfile=git-blob.dat --dumpfile=git-dump.dat --username=cvs2git /path/to/cvs/repo

Esto crearía dos archivos de salida en formato de importación rápida de git. Los nombres de estos archivos están especificados por su archivo de opciones o argumentos de línea de comandos. En el ejemplo, estos archivos se llaman cvs2git-tmp/git-blob.dat y cvs2git-tmp/git-dump.dat .

Estos archivos se pueden importar al repositorio de git vacío de la siguiente manera:

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

A continuación, elimine la rama TAG.FIXUP y ejecute gitk --all para ver los resultados de la conversión.

Busque más, ejecutando: cvs2git --help .


Si alguien todavía tiene la desgracia de usar CVS, puede probar "mierda": https://github.com/rcls/crap Es rápido (en cuanto al acceso a CVS puede ser rápido), es compatible con los problemas que encuentra en los repos de cvs e incremental