trucos tag que name log hace commits commands comentarios codigos git migration cvs rcs

tag - ¿Migrar proyecto de RCS a git?



que es git log (5)

Tengo un proyecto de 20 años que me gustaría migrar de RCS a git, sin perder la historia. Todas las páginas web sugieren que One True Path es a través de CVS. Pero después de una hora de buscar en Google y probar diferentes scripts, todavía tengo que encontrar algo que convierta con éxito mi árbol de proyectos RCS a CVS. Espero que la buena gente de Stackoverflow sepa lo que realmente funciona, a diferencia de lo que se dice que funciona y lo que no.

(Busqué en Stackoverflow utilizando tanto la búsqueda SO nativa como la búsqueda en Google, pero si hay una respuesta útil en la base de datos, la extrañé).

ACTUALIZACIÓN : la herramienta rcs-fast-export en http://git.oblomov.eu/rcs-fast-export se reparó el 14 de abril de 2009, y esta versión parece funcionar para mí. Esta herramienta se convierte directamente a git sin CVS intermedio. Gracias Giuseppe y Jakub !!!

Cosas que no funcionaron que aún recuerdo:

  • El script rcs-to-cvs que se envía en el directorio contrib de las fuentes CVS

  • La herramienta rcs-fast-export en http://git.oblomov.eu/rcs-fast-export en versiones anteriores al 13 de abril de 2010

  • El script rcs2cvs encontrado en un documento llamado "CVS-RCS- HOW-TO Document for Linux"



Bien, después de un poco de retoques, descubrí que era trivial convertir RCS a CVS. Los archivos están en el mismo formato, por lo que es simplemente una cuestión de mover los archivos a una raíz CVS existente. Esto supone que tiene acceso a los archivos RCS.

# Create CVS root dir. You only need to do this once. mkdir $HOME/cvs/ cd $HOME/cvs/ cvs init # Import a repository from RCS to CVS cp -a _projectname_/RCS $HOME/cvs/_projectname_


Como regla general, debe tener cuidado con los scripts que ejecuta. Para RCS -> GIT puede ser lo mejor para usted seguir la metodología RCS-> CVS-> GIT.

Eché un vistazo rápido a rcs-fast-export.rb a partir del 2011-01-12 y corrí a través de esta parte del código. Esto es aterrador en el mejor de los casos.

# steal username/email data from other init files that may contain the # information def steal_username [ # the user''s .hgrc file for a username field [''~/.hgrc'', /^/s*username/s*=/s*(["''])?(.*)/1$/, 2], # the user''s .(g)vimrc for a changelog_username setting [''~/.vimrc'', /changelog_username/s*=/s*(["''])?(.*)/1$/, 2], [''~/.gvimrc'', /changelog_username/s*=/s*(["''])?(.*)/1$/, 2], [] ].each do |fn, rx, idx| ...


Consulte la página InterfacesFrontendsAndTools en Git Wiki, en "Herramientas", "Interacción con otros sistemas de control de revisión", "Otro". Allí encontrará una descripción y un enlace al script Ruby rcs-fast-export ( http://git.oblomov.eu/rcs-fast-export ) de Giuseppe "Oblomov" Bilotta.

(La búsqueda en la web también encontraría la página de Ohloh y el anuncio para el proyecto mencionado) .


También tuve este problema y luché con cvs2svn, parsecvs y todo eso. parsecvs fue el más cercano, pero Keith parece haberlo dejado atrás y ahora están apareciendo bifurcaciones aleatorias. El problema con el que me topé fue que analizaría los archivos RCS muy bien, pero lo último que hizo fue git rm el archivo, así que habría tenido que revolver con git reset para deshacer la eliminación.

Luego descubrí el cambio de mercurial: https://www.mercurial-scm.org/wiki/ConvertExtension Problema resuelto!

Intenté agregar algunas cosas de árboles RCS por separado, parece que funcionó.