Importación y migración de repositorios de TFVC a Git

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Puede migrar código de un repositorio TFVC existente a un nuevo repositorio de Git dentro de la misma organización. La migración a Git es un proceso implicado para grandes repositorios y equipos de TFVC. Los sistemas de control de versiones centralizados, como TFVC, se comportan de forma diferente de Git de maneras fundamentales. El cambio implica mucho más que aprender nuevos comandos. Es un cambio disruptivo para el que se necesita una planificación cuidadosa. Debe pensar en lo siguiente:

  • Revisar herramientas y procesos
  • Quitar archivos binarios y ejecutables
  • Entrenar al equipo

Se recomienda encarecidamente leer la documentación sobre Control de versiones centralizado a Git y la sección Migración de TFVC a Git antes de iniciar la migración.

La experiencia de importación es excelente para pequeños repositorios TFVC sencillos. También se recomienda para los repositorios que ya se han "limpiado", como se describe en Control de versiones centralizado a Git y en la sección Migración de TFVC a Git . En estas secciones también se recomiendan otras herramientas para configuraciones de repositorio de TFVC más avanzadas.

Importante

Dadas las diferencias en la forma en que TFVC y Git almacenan la información del control de versiones, se recomienda que no migre el historial. Este es el enfoque que Microsoft adoptó cuando migró tanto Windows como otros productos desde el control de versiones centralizado a GIT.

Importación del repositorio

  1. Seleccione Repositorios, Archivos.

    Visualización de las ramas

  2. En la lista desplegable del repositorio, seleccione Importar repositorio.

    Opción Importar repositorio

  3. Seleccione TFVC en la lista desplegable Tipo de origen

  4. Escriba la ruta de acceso al repositorio, rama o carpeta que quiera importar al repositorio de Git. Por ejemplo: $/Fabrikam/FabrikamWebsite

  5. Si quiere migrar el historial desde el repositorio de TFVC, haga clic en Migrar historial y seleccione el número de días. Puede migrar hasta 180 días de historial a partir del conjunto de cambios más reciente. Se agrega un vínculo al repositorio de TFVC en el mensaje de confirmación del primer conjunto de cambios que se migra a Git. Esto facilita la búsqueda de historiales más antiguos cuando sea necesario.

  6. Asigne un nombre al nuevo repositorio de Git y haga clic en Importar. Según el tamaño de la importación, el repositorio de Git estará listo en unos minutos.

    Cuadro de diálogo Importar repositorio

Solución de problemas

Esta experiencia está optimizada para repositorios pequeños y sencillos de TFVC o repositorios o que se hayan preparado para una migración. Esto significa que tiene algunas limitaciones.

  1. Solo se migra el contenido de la raíz o de una rama. Por ejemplo, si tiene un proyecto de TFVC en $/Fabrikam con una rama y una carpeta, una ruta de acceso a la importación $/Fabrikam importaría la carpeta, mientras que $/Fabrikam/<branch> solo importaría la rama.
  2. El repositorio importado y el historial asociado (si se importa) no pueden superar 1 GB de tamaño.
  3. Puede importar hasta 180 días del historial.

Si alguna de estas limitaciones le impide realizar la importación, le recomendamos utilizar herramientas externas como Git-TFS para la importación y que consulte nuestros documentos - Control de versiones centralizado a Git y la sección Migración de TFVC a Git.

Importante

El uso de herramientas externas como Git-TFS con productos, servicios o plataformas de Microsoft es responsabilidad total del usuario. Microsoft no aprueba, admite ni garantiza la funcionalidad, confiabilidad ni seguridad de dichas extensiones de terceros.

Migración de TFVC a Git

Antes de migrar el código fuente desde un sistema de control de versiones centralizado a Git, comprenda las diferencias entre los dos y prepárese para la migración.

Requisitos

Para facilitar las migraciones, hay varios requisitos antes de seguir el procedimiento de importación del repositorio en la sección anterior de este artículo.

  • Migre una sola rama. Al planear la migración, elija una nueva estrategia de ramificación para Git. La migración solo de la rama principal admite un flujo de trabajo basado en rama de temas, como GitFlow o GitHub Flow.
  • Realice una migración sugerida, es decir, importe solo la versión más reciente del código fuente. Si el historial de TFVC es sencillo, hay una opción para migrar algún historial, hasta 180 días, para que el equipo pueda trabajar solo con Git. Para obtener más información, consulte Planificación de la migración a Git.
  • Excluya los activos binarios como las imágenes, los conjuntos de datos científicos o los modelos de juego del repositorio. Estos activos deben usar la extensión LFS (almacenamiento de archivos grandes) de Git, que la herramienta de importación no configura.
  • Mantenga el tamaño del repositorio importado por debajo de 1 GB.

Si el repositorio no cumple estos requisitos, use la herramienta Git-TFS para realizar la migración.

Importante

El uso de herramientas externas como Git-TFS con productos, servicios o plataformas de Microsoft es responsabilidad total del usuario. Microsoft no aprueba, admite ni garantiza la funcionalidad, confiabilidad ni seguridad de dichas extensiones de terceros.

Pasos para la migración

El proceso de migración desde TFVC suele ser sencillo:

  1. Consulte la versión más reciente de la rama desde TFVC en el disco local.
  2. Elimine los archivos binarios y las herramientas de compilación del repositorio y configure un sistema de administración de paquetes como NuGet.
  3. Convierta las directivas de configuración específicas del control de versiones. Por ejemplo, convierta .tfignore archivos en .gitignore y .tpattributes archivos en .gitattributes.
  4. Compruebe los cambios y realice la migración a Git.

Los pasos del 1 al 3 son opcionales. Si no hay archivos binarios en el repositorio y no es necesario configurar .gitignore o .gitattributes, puede continuar directamente con el paso Compruebe los cambios y realice la migración.

Comprobación de la versión más reciente

Cree un área de trabajo TFS y asigne una carpeta de trabajo para el directorio del servidor que se va a migrar a Git. Esto no requiere una asignación completa de las carpetas de trabajo. Solo las carpetas de asignación que contienen archivos binarios a eliminar del repositorio y las carpetas que contienen archivos de configuración específicos del sistema de control de versiones, como .tfignore.

Una vez configuradas las asignaciones, obtenga la carpeta localmente:

tf get /version:T /recursive

Eliminación de archivos binarios y herramientas de compilación

Debido a la forma en la que Git almacena el historial de archivos modificados proporcionando una copia de cada archivo del historial a cada desarrollador, la comprobación de archivos binarios directamente en el repositorio hace que el repositorio crezca rápidamente y puede causar problemas de rendimiento.

Para herramientas de compilación y dependencias como bibliotecas, adopte una solución de empaquetado con compatibilidad de versiones, como NuGet. Muchas bibliotecas y herramientas de código abierto ya están disponibles en la Galería de NuGet, pero para las dependencias propietarias, cree nuevos paquetes NuGet.

Una vez que las dependencias se mueven a NuGet, asegúrese de que no se incluyen en el repositorio de Git al agregarlas a .gitignore.

Conversión de la configuración específica del control de versiones

Control de versiones de Team Foundation proporciona un archivo .tfignore, lo que garantiza que determinados archivos no se agreguen al repositorio TFVC. Puede usar el archivo .tfignore para archivos generados automáticamente como la salida de compilación para que no se registren accidentalmente.

Si el proyecto se basa en este comportamiento, convierta el archivo .tfignore en un archivo .gitignore.

Los clientes TFVC multiplataforma también proporcionan compatibilidad con un archivo .tpattributes, que controla cómo se colocan los archivos en el disco local o cómo se registran en el repositorio. Si un archivo .tpattributes está en uso, conviértalo en un archivo .gitattributes.

Comprobación de los cambios y realización de la migración

Compruebe los cambios que eliminen archivos binarios, migren a la administración de paquetes o conviertan la configuración específica del control de versiones. Una vez realizado este cambio final en TFVC, puede realizar la importación.

Siga el procedimiento Importación del repositorio para realizar la importación.

Migraciones avanzadas

La herramienta Git-TFS es un puente bidireccional entre Control de versiones de Team Foundation y Git, y puede usarla para realizar una migración. Git-TFS es adecuado para una migración con historial completo, más de los 180 días que admite la herramienta de importación. También puede usar Git-TFS para intentar hacer una migración que incluya varias ramas y relaciones de combinación.

Antes de intentar realizar una migración con Git-TFS, tenga en cuenta que hay diferencias fundamentales entre la forma en la que TFVC y Git almacenan el historial:

  • Git almacena el historial como una instantánea del repositorio en el tiempo, mientras que TFVC registra las operaciones discretas que se produjeron en un archivo. Los tipos de cambios en TFVC, como cambiar el nombre, recuperar eliminaciones y revertir acciones, no se pueden expresar en Git. En lugar de ver que el nombre del archivo A se cambió a B, solo registra que el archivo A se eliminó y que el archivo B se agregó en la misma confirmación.
  • Git no tiene un análogo directo de una etiqueta TFVC. Las etiquetas pueden contener cualquier número de archivos en cualquier versión específica y pueden reflejar archivos en diferentes versiones. Aunque conceptualmente son similares, las etiquetas de Git apuntan a una instantánea del repositorio completo en un momento dado. Si el proyecto se basa en etiquetas TFVC para saber qué se ha entregado, es posible que las etiquetas de Git no proporcionen esta información.
  • Las combinaciones en TFVC se producen en el nivel de archivo, no en todo el repositorio. Solo se puede combinar un subconjunto de archivos modificados de una rama a otra. Los archivos modificados restantes se pueden combinar en un conjunto de cambios posterior. En Git, una combinación afecta a todo el repositorio y ambos conjuntos de cambios individuales no se pueden ver como una combinación.

Debido a estas diferencias, se recomienda realizar una migración sugerida y mantener el repositorio TFVC en línea, pero de solo lectura, para ver el historial.

Para intentar hacer una migración avanzada con Git-TFS, consulte Clonación de una sola rama con historial o Clonación de todas las ramas con historial combinado.

Importante

El uso de herramientas externas como Git-TFS con productos, servicios o plataformas de Microsoft es responsabilidad total del usuario. Microsoft no aprueba, admite ni garantiza la funcionalidad, confiabilidad ni seguridad de dichas extensiones de terceros.

Actualización del flujo de trabajo

Pasar de un sistema de control de versiones centralizado a Git implica algo más que simplemente migrar código. El equipo necesita entrenamiento para comprender en qué se diferencia Git del sistema de control de versiones existente y cómo estas diferencias afectan el trabajo diario.

Obtenga más información sobre cómo migrar del control de versiones centralizado a Git.