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 directoriocontrib
de las fuentes CVSLa herramienta
rcs-fast-export
en http://git.oblomov.eu/rcs-fast-export en versiones anteriores al 13 de abril de 2010El script
rcs2cvs
encontrado en un documento llamado "CVS-RCS- HOW-TO Document for Linux"
Acabo de encontrar esto, que funcionó bien para mí:
http://cynic.cc/blog/posts/migrate-from-rcs-to-git/
Solo tenga en cuenta que "cvs-source-dir" en esa página debe ser una ruta absoluta.
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ó.