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?¿Hay alguna herramienta de migración de CVS a Git?
Respuesta
cvs2svn tiene un modo cvs2git.
No he intentado esto por mí mismo, pero los amigos han reportado buenos resultados convirtiendo 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.
Una alternativa podría ser el uso de git cvsimport *
git cvsimport está roto y silenciosamente dará resultados incorrectos en todos los repositorios CVS menos triviales. Por ejemplo, consulte la sección "PROBLEMAS" en su documentación (http://www.kernel.org/pub/software/scm/git/docs/git-cvsimport.html) o ejecute las pruebas unitarias. – mhagger
La única herramienta que tiene incrementales importación parece ser git-cvsimport. Si desea convertir (migrate) de CVS a Git, la mejor solución por el momento parece ser la mencionada anteriormente cvs2git mode of cvs2svn.
Véase 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.
¿Cuál es la diferencia entre una importación incremental y una migración? –
@ HaroldL.Brown: la importación incremental significa que está utilizando CVS mientras tanto, la migración se detiene con CVS y se mueve a Git (quizás con la ayuda de 'git-cvsserver'). –
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.
He intentado cvs2git, git-cvsimport y parsecvs.
cvs2git a veces (por lo que recuerdo) crea ramas falsas para las etiquetas.
git-cvsimport no es compatible con varias etiquetas 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 ha dado 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 se hizo cargo de cvsps y parsecvs así que hay alguna esperanza para la migración CVS-> GIT. PERO ya mencionó en una lista de correo que puede declarar algunas de las herramientas que tomó recientemente oficialmente muertas.
ParseCVS parece estar en https://github.com/BartMassey/parsecvs. –
ParseCVS se ha convertido en [cvs-fast-export] (http://www.catb.org/esr/cvs-fast-export/) – hvd
cvs2git
Además de las respuestas proporcionadas, he aquí una guía sobre cómo convertir a git cvs usando la herramienta de cvs2git. Aquí, modulename es el nombre del directorio de CVS que desea importar.
Requisitos previos
cvs2svn
paquete (que incluye comandos cvs2git) debe ser instalado.
Actualización: los pasos 1 y 2 no son totalmente correctas - antes de intentar, leer el comentario anterior por mhagger, el mantenedor de cvs2git
la caja modulename
cvs -d URL co -P modulename
crear una vacío CVSROOT necesario por cvs2git
mkdir modulename/CVSROOT
descargar un ejemplo de cvs2git.options en http://cvs2svn.tigris.org/svn/cvs2svn/trunk/cvs2git-example.options (usuario "invitado" sin contraseña)
editar archivos 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]>',
plazo cvs2git para crear archivos temporales git
cvs2git --options=cvs2git.options --fallback-encoding utf-8
crear repositorio git
mkdir gitrepo && cd gitrepo && git init .
importación de archivos temporales creados por git cvs2git
cat ../cvs2git-tmp/git-{blob,dump}.dat | git fast-import
pago y envío copia de trabajo
git reset --hard
El enlace del archivo de opciones de ejemplo solicita un usuario/contraseña. Está en la documentación de cvs2git bajo uso. http://cvs2svn.tigris.org/cvs2git.html – txyoji
Puede usar "invitado" sin contraseña. – Vanuan
cvs2git parece ser muy sensible sobre el uso del archivo .options correcto para la versión del script que está utilizando, así que use el que viene con la versión que está intentando. – Sedrik
Si alguien todavía tiene la desgracia de usar CVS, usted podría tratar de "basura": https://github.com/rcls/crap Es rápido (por lo que accede a CVS puede ser rápido), es compatible con los líos que encuentras en cvs repos y incremental.
"mierda" es el salvavidas. ¡Es lo único que me ha funcionado hasta ahora! – York
Puede usar git cvsimport
. Requiere cvsps
para instalarse, pero necesita instalar 2.x, ya que 3.x es not incompatible.
Luego importe el repositorio de CVS en git vacío. Ejemplo de uso:
git cvsimport -C RepoName -r cvs -o master -k -v -d:pserver:[email protected]:/cvsroot/path ModuleName
en OSX instalar cvsps-2.1
de la manera siguiente (teniendo brew
):
brew tap homebrew/versions
brew install cvsps2
brew link cvsps2
También puede utilizar cvs2git
herramienta que puede convertir un repositorio CVS para git. Sin embargo, debe tener acceso a un directorio CVSROOT.
Compruebe cvs2git documentation 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 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 pueden ser importados en repositorio git vacía por:
cat git-blob.dat git-dump.dat | git fast-import
continuación, elimine la rama TAG.FIXUP
y ejecutar gitk --all
para ver los resultados de la conversión.
Busque más, ejecutando: cvs2git --help
.
Gracias por la sugerencia sobre la versión de cvsps - se estaba atascando en eso. –
La página de comando man [cvsimport] (https://www.kernel.org/pub/software/scm/git/docs/git-cvsimport.html) está llena de advertencias, objeciones y más advertencias. Recomienda el uso de cvs2git en su lugar. –
Leí la respuesta por los comentarios de Vanuan y mhagger. Lamentablemente, mhagger no publicó cómo hacerlo con cvs2git
. Está todo muy bien escrito aquí: http://www.mcs.anl.gov/~jacob/cvs2svn/cvs2git.html
que utilizan cvs2git
en lugar de git-cvsimport
porque la documentación de git-cvsimport
sugiere usarlo en lugar de evitar los problemas de git-cvsimport
: https://www.kernel.org/pub/software/scm/git/docs/git-cvsimport.html#issues
De ello se desprende esencia de lo que funcionó para mí para crear un repositorio git de un repositorio CVS de Sourceforge 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 rsync
es necesario porque cvs2git
necesita tener acceso a la totalidad historia. Un pago simple no es suficiente.
Encontré cvs-fast-export hice un trabajo excelente. Tuve que descargarlo y compilarlo yo mismo, pero no tuve ningún problema significativo al hacerlo.
- 1. ¿Hay alguna herramienta para reparar archivos RCS/CVS, v?
- 2. Migración de TFS a Git
- 3. Pasar de CVS a git: $ Id: $ equivalent?
- 4. ¿Hay alguna manera de sincronizar repositorios GIT y Subversion?
- 5. ¿Hay alguna herramienta XSL Lint?
- 6. ¿Hay alguna manera de importar/exportar SourceGear Vault a Git
- 7. ¿Hay alguna herramienta de DRYer por ahí?
- 8. ¿Herramienta de migración de TSQL a PL/SQL?
- 9. ¿Migración de Starteam a X? (donde X es uno de: svn/git/hg/bzr ...)
- 10. Migración de Git-2-SVN?
- 11. Migración de TFS a Redmine
- 12. ¿Hay alguna herramienta ORM para Haskell?
- 13. ¿Hay alguna herramienta que pueda incorporar CSS?
- 14. ¿Hay alguna herramienta para actualizar Javadoc automáticamente?
- 15. ¿Hay alguna herramienta similar a una pelusa para MSBuild?
- 16. ¿Hay alguna herramienta para convertir Managed C++ a C++/CLI?
- 17. ¿Hay alguna herramienta similar a cmake para Java?
- 18. ¿Hay alguna herramienta para convertir VML heredado a SVG?
- 19. ¿Alguna herramienta para migrar el repositorio de Vault a Subversion?
- 20. ¿Hay alguna herramienta como doxygen para XSLT?
- 21. ¿Hay alguna herramienta que admita matemáticas discretas?
- 22. ¿Hay alguna herramienta que detecte GUID duplicados?
- 23. ¿Hay alguna herramienta como mecanizar para Android?
- 24. ¿Hay alguna buena herramienta para examinar Makefiles?
- 25. ¿Es git con cvs más rápido que cvs solo?
- 26. Herramienta de migración de datos de código abierto
- 27. ¿Hay alguna herramienta uml en Ubuntu?
- 28. ¿Hay alguna herramienta de línea de comandos de procesamiento XSLT?
- 29. ¿Hay alguna herramienta de administración de repositorios de paquetes R?
- 30. Migración de Git a control de fuente TFS
No soy un experto en git, pero ¿qué pasa con http://git-scm.com/docs/gitcvs-migration? –