Buscar..


Migre de SVN a Git usando la utilidad de conversión Atlassian

Descarga la utilidad de conversión de Atlassian aquí . Esta utilidad requiere Java, así que asegúrese de tener el JRE de Java Runtime Environment instalado en la máquina en la que planea hacer la conversión.

Use el comando java -jar svn-migration-scripts.jar verify para verificar si a su máquina le falta alguno de los programas necesarios para completar la conversión. Específicamente, este comando comprueba las utilidades Git, subversion y git-svn . También verifica que está realizando la migración en un sistema de archivos que distingue entre mayúsculas y minúsculas. La migración a Git se debe realizar en un sistema de archivos que distingue entre mayúsculas y minúsculas para evitar dañar el repositorio.

A continuación, necesita generar un archivo de autores. Subversion rastrea cambios solo por el nombre de usuario del usuario. Sin embargo, Git utiliza dos elementos de información para distinguir a un usuario: un nombre real y una dirección de correo electrónico. El siguiente comando generará un archivo de texto que asigna los nombres de usuario de subversión a sus equivalentes de Git:

java -jar svn-migration-scripts.jar authors <svn-repo> authors.txt

donde <svn-repo> es la URL del repositorio de subversion que desea convertir. Después de ejecutar este comando, la información de identificación de los contribuyentes se asignará en authors.txt . Las direcciones de correo electrónico tendrán el formato <username>@mycompany.com . En el archivo de autores, deberá cambiar manualmente el nombre predeterminado de cada persona (que de forma predeterminada se ha convertido en su nombre de usuario) a sus nombres reales. Asegúrese de verificar también que todas las direcciones de correo electrónico estén correctas antes de continuar.

El siguiente comando clonará un repositorio svn como un Git:

git svn clone --stdlayout --authors-file=authors.txt <svn-repo> <git-repo-name>

donde <svn-repo> es la misma URL del repositorio utilizada anteriormente y <git-repo-name> es el nombre de la carpeta en el directorio actual para clonar el repositorio. Hay algunas consideraciones antes de usar este comando:

  • La bandera --stdlayout desde arriba le dice a Git que estás usando un diseño estándar con carpetas de trunk , branches y tags . Los repositorios de Subversion con diseños no estándar requieren que especifique las ubicaciones de la carpeta trunk , cualquier / todas las carpetas de branch y la carpeta de tags . Esto se puede hacer siguiendo este ejemplo: git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo> <git-repo-name> .
  • Este comando puede tardar muchas horas en completarse, dependiendo del tamaño de su repositorio.
  • Para reducir el tiempo de conversión para repositorios grandes, la conversión se puede ejecutar directamente en el servidor que aloja el repositorio de subversión para eliminar la sobrecarga de la red.

git svn clone importa las ramas de subversión (y troncal) como ramas remotas, incluidas las etiquetas de subversión (ramas remotas con el prefijo de tags/ ). Para convertirlos en ramas y etiquetas reales, ejecute los siguientes comandos en una máquina Linux en el orden en que se proporcionan. Después de ejecutarlos, git branch -a debería mostrar los nombres de rama correctos, y git tag -l debería mostrar las etiquetas de repositorio.

git for-each-ref refs/remotes/origin/tags | cut -d / -f 5- | grep -v @ | while read tagname; do git tag $tagname origin/tags/$tagname; git branch -r -d origin/tags/$tagname; done
git for-each-ref refs/remotes | cut -d / -f 4- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/origin/$branchname"; git branch -r -d "origin/$branchname"; done

¡La conversión de svn a Git ahora está completa! Simplemente push su repositorio local en un servidor y podrá seguir contribuyendo con Git y teniendo un historial de versiones completamente conservado de svn.

SubGit

SubGit se puede usar para realizar una importación única de un repositorio SVN a git.

$ subgit import --non-interactive --svn-url http://svn.my.co/repos/myproject myproject.git

Migre de SVN a Git usando svn2git

svn2git es una envoltura de Ruby alrededor del soporte SVN nativo de git a través de git-svn , que le ayuda a migrar proyectos de Subversion a Git, manteniendo el historial (incluido el historial de troncales, etiquetas y sucursales).

Ejemplos

Para migrar un repositorio svn con el diseño estándar (es decir, ramas, etiquetas y troncales en el nivel raíz del repositorio):

$ svn2git http://svn.example.com/path/to/repo

Para migrar un repositorio svn que no está en diseño estándar:

$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir

En caso de que no desee migrar (o no tenga) ramas, etiquetas o troncales, puede usar las opciones --notrunk , --nobranches y --notags .

Por ejemplo, $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches migrará solo el historial de troncales.

Para reducir el espacio requerido por su nuevo repositorio, es posible que desee excluir los directorios o archivos que una vez agregó, mientras que no debería tener (por ejemplo, compilar directorios o archivos):

$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'

Optimización post-migración

Si ya tiene unos pocos miles de confirmaciones (o más) en su repositorio git recién creado, es posible que desee reducir el espacio utilizado antes de enviar su repositorio a un control remoto. Esto se puede hacer usando el siguiente comando:

$ git gc --aggressive

Nota: El comando anterior puede tardar varias horas en grandes repositorios (decenas de miles de confirmaciones y / o cientos de megabytes de historia).

Migre de Team Foundation Version Control (TFVC) a Git

Podría migrar del control de versiones de Team Foundation a git utilizando una herramienta de código abierto llamada Git-TF. La migración también transferirá su historial existente al convertir los registros tfs en git commit.

Para poner su solución en Git usando Git-TF, siga estos pasos:

Descargar Git-TF

Puede descargar (e instalar) Git-TF desde Codeplex: Git-TF @ Codeplex

Clona tu solución TFVC

Ejecute powershell (win) y escriba el comando

git-tf clone http://my.tfs.server.address:port/tfs/mycollection '$/myproject/mybranch/mysolution' --deep

El interruptor --deep es la clave que debes tener en cuenta, ya que esto le indica a Git-Tf que copie tu historial de registro. Ahora tiene un repositorio de git local en la carpeta desde la que llamó su comando cloe.

Limpiar

  • Agrega un archivo .gitignore. Si está utilizando Visual Studio, el editor puede hacer esto por usted; de lo contrario, puede hacerlo manualmente descargando un archivo completo desde github / gitignore .
  • Elimine los enlaces de control de origen de TFS de la solución (elimine todos los archivos * .vssscc). También puede modificar su archivo de solución eliminando GlobalSection (TeamFoundationVersionControl) ...... EndClobalSection

Cometer y empujar

Complete su conversión comprometiendo y empujando su repositorio local a su control remoto.

git add .
git commit -a -m "Coverted solution source control from TFVC to Git"

git remote add origin https://my.remote/project/repo.git

git push origin master

Migrar Mercurial a Git

Uno puede usar los siguientes métodos para importar un Mercurial Repo en Git :

  1. Usando la exportación rápida :
cd
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
git checkout HEAD
  1. Uso de Hg-Git : una respuesta muy detallada aquí: https://stackoverflow.com/a/31827990/5283213

  2. Uso del importador de GitHub : siga las instrucciones (detalladas) en GitHub .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow