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
checkout modulename
cvs -d URL co -P modulename
crea un CVSROOT vacío que necesita cvs2git
mkdir modulename/CVSROOT
descargue un ejemplo de cvs2git.options en http://cvs2svn.tigris.org/svn/cvs2svn/trunk/cvs2git-example.options (usuario "invitado" sin contraseña)
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]>'',
ejecuta cvs2git para crear archivos git temp
cvs2git --options=cvs2git.options --fallback-encoding utf-8
crear el repositorio git
mkdir gitrepo && cd gitrepo && git init .
importar desde archivos git temp creados por cvs2git
cat ../cvs2git-tmp/git-{blob,dump}.dat | git fast-import
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
Una alternativa podría ser usar git cvsimport *
cvs2svn tiene un modo cvs2git .