es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La forma más sencilla de cambiar de una copia de trabajo de SVN a un árbol de trabajo de Git.

Tenemos 6 sitios (uno de producción, 5 de desarrollo) y aunque se utilizan para diferentes propósitos, son en su mayoría el mismo sitio, todos ellos usan código de la misma URL en un repositorio SVN.

He importado el repositorio SVN del proyecto, incluyendo el registro, para el proyecto en Git, siguiendo el consejo aquí, utilizando un comando git svn clone que se ve algo así:

git svn clone http://mi-proyecto.googlecode.com/svn/ \
      --authors-file=usuarios.txt --no-metadata --prefix "" -s mi_proyecto

Ahora me gustaría convertir esas copias de trabajo de SVN en árboles de trabajo de Git. Es decir, me gustaría poder hacer push de los archivos al nuevo lugar del repositorio en Git, pero preferiría no mover los archivos de todo el sitio. Además, hay algunos cambios locales en los sitios de desarrollo que quiero conservar. No he encontrado ninguna buena respuesta que explique cómo hacer esto.

Para cada sitio, podría hacer un git clone, copiar la copia de trabajo de svn sobre el git clone, luego mover el código del sitio a algún lugar y mover el git clone con el código del sitio copiado a donde estaba el código del sitio. Esto parece problemático. ¿Hay alguna manera más fácil?

Acabo de darme cuenta de que la respuesta más votada (no la aceptada) aquí funciona. Me salté el último comando, ya que sobrescribe los cambios locales.

git init     
git remote add origin RUTA/AL/REPO     
git fetch 
Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en git y SVN, recomiendo los siguientes pasos para convertir las copias de trabajo de SVN en árboles de trabajo de Git, sin mover los archivos de todo el sitio, al mismo tiempo que se preservan los cambios locales en los sitios de desarrollo:

    1. Primero, importa el repositorio de SVN para el proyecto en Git utilizando el comando git svn clone, como se describe en la pregunta.
    2. A continuación, para cada sitio de desarrollo, realiza los siguientes pasos:

      a. Inicia un nuevo repositorio de Git en el directorio deseado utilizando el comando git init.

      b. Agrega el origen remoto de Git utilizando el comando git remote add origin RUTA/AL/REPO, donde RUTA/AL/REPO es la ruta hacia la nueva ubicación del repositorio en Git.

      c. Obtiene el código del origen remoto de Git utilizando el comando git fetch.

      d. Copia el contenido de la copia de trabajo de SVN al árbol de trabajo de Git utilizando el comando cp -r ORIGEN DESTINO, donde ORIGEN es la ruta hacia la copia de trabajo de SVN, y DESTINO es la ruta hacia el árbol de trabajo de Git.

      e. Preserva cualquier cambio local que se haya realizado en la copia de trabajo mediante la copia de los archivos modificados de vuelta al árbol de trabajo de Git, sobrescribiendo los archivos originales.

      f. Realiza un commit de los cambios en Git utilizando los comandos git add . y git commit -m "MENSAJE", donde MENSAJE es un mensaje descriptivo sobre los cambios realizados.

    3. Una vez que los cambios se hayan realizado, realiza un push de los cambios hacia la nueva ubicación del repositorio utilizando el comando git push.

    Es importante destacar que el método sugerido puede ser lento y engorroso, pero es una forma confiable de preservar los cambios locales y evitar el riesgo de sobrescribir archivos cruciales en el proceso.

Comments are closed.