Pregunta

Tengo un proyecto de 20 años de antigüedad que me gustaría migran de RCS a git, sin perder la historia. Todas las páginas web sugieren que el único camino verdadero 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 exitosamente convierta mi árbol de proyectos RCS a CVS. Espero que la buena gente en Stackoverflow sepa lo que realmente funciona, a diferencia de lo que se dice que funciona y 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 perdí).

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 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 de 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 para Linux "

¿Fue útil?

Solución

Consulte la página InterfacesFrontendsAndTools en Git Wiki, en " Herramientas " ;, " Interacción con otros Los sistemas de control de revisión " ;, " Otro " ;. Allí encontrará una descripción y un enlace a rcs-fast-export ( gitweb ) guión de Ruby por Giuseppe " Oblomov " Bilotta.

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

Otros consejos

Como regla general, debe tener cuidado con los scripts que ejecuta. Para RCS - > Puede que le convenga más 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|
...

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_

Encontré esto, lo que funcionó bien para mí:

http://cynic.cc/blog/posts/migrate -desde-rcs-to-git /

Solo observa que " cvs-source-dir " en esa página debe ser una ruta absoluta.

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 opciones 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 revolcarme con git reset para deshacer la eliminación.

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

Intenté agregar de manera incremental algunas cosas de árboles RCS separados, parece que ha funcionado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top