Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Use Git para archivos de origen, Azure Artifacts para las dependencias y Git LFS para archivos binarios grandes que cambian a menudo. Si el repositorio ya contiene archivos grandes, este artículo le ayuda a decidir qué mantener en Git, qué quitar y cuándo quitar archivos binarios del historial.
Decidir dónde almacenar cada archivo
Si decide qué hacer con los archivos que ya están en un repositorio, comience aquí:
- Mantenga los archivos de código fuente, los scripts y los archivos de texto en Git.
- Mueva las dependencias y los paquetes reutilizables a Azure Artifacts administración de paquetes.
- Use Git LFS para archivos binarios de gran tamaño que cambian a menudo y no se diferencian bien.
- Elimine los archivos binarios grandes del historial del repositorio si ya se han añadido al repositorio y ya no deberían estar allí. Consulte Eliminación de archivos grandes de un repositorio.
Si tu repositorio ya es grande, revisa los límites del repositorio y de push antes de elegir un enfoque de almacenamiento. Consulte Límites de Git para conocer los límites de archivos, envíos y rutas que afectan a los repositorios de gran tamaño.
Elija la opción de almacenamiento adecuada para Git, administración de paquetes y Git LFS.
Use esta tabla para elegir la mejor opción.
| Escenario o tipo de archivo | Use |
|---|---|
| Código fuente, scripts y archivos de texto | Git |
| Dependencias y paquetes reutilizables | administración de paquetes de Azure Artifacts |
| Archivos binarios grandes que cambian a menudo | Git LFS |
| Azure DevOps Server Git LFS y Kerberos | Consulte las instrucciones de Kerberos de este artículo y el artículo vinculado al final. |
Git funciona mejor para archivos de origen basados en texto y otro contenido que cambia en incrementos pequeños y legibles.
Los archivos binarios grandes no son una buena opción para el almacenamiento de Git normal porque:
- Git almacena las diferencias de versión de forma eficaz para el código fuente, los scripts y los archivos de texto.
- Los archivos grandes que cambian completamente entre versiones no comprimen ni se diferencian bien.
- Los archivos binarios grandes aumentan los tiempos de clonación, captura, rama y finalización de la compra.
Si agrega archivos grandes e indiffables, como archivos binarios al repositorio, mantendrá una copia completa de esos archivos en el repositorio cada vez que confirme un cambio en ellos. Si existen muchas versiones de estos archivos en tu repositorio, aumentarán considerablemente el tiempo necesario para sacar una copia de trabajo, crear ramas, recuperar cambios y clonar tu código.
¿Qué archivos pertenecen a Git?
Use la opción más sencilla que se ajuste al tipo de archivo y la frecuencia con la que cambia.
Mantener el código fuente en Git, no en las dependencias
Use Git para los archivos que edita el equipo directamente. Mantenga las dependencias fuera del repositorio y entreguelas a través de la administración de paquetes.
- Coloque los archivos de origen en Git.
- Almacene archivos DLL, archivos de biblioteca y otras dependencias fuera del repositorio.
- Use la administración de paquetes para la versión e implementación de dependencias.
La administración de paquetes agrupa las dependencias e instala los archivos en el sistema al implementar el paquete. Los paquetes tienen versiones para asegurarse de que el código probado en un entorno se ejecuta igual en otro entorno, siempre que los entornos tengan los mismos paquetes instalados.
No confirmar las salidas de compilación
Utilice Git para el código fuente, no para los resultados de compilación ni los artefactos de pruebas.
- No confirme archivos binarios, registros, resultados de seguimiento ni datos de diagnóstico.
- Comparta registros e información de seguimiento a través del seguimiento de elementos de trabajo o el uso compartido de archivos de equipo.
Almacenamiento de archivos binarios pequeños en Git
Use Git para archivos binarios pequeños solo cuando cambien con poca frecuencia.
- Buenos ejemplos son las imágenes para la web, los iconos y otros recursos gráficos de pequeño tamaño.
- Mantener estos archivos en Git conserva un flujo de trabajo coherente para el equipo.
Importante
Incluso los archivos binarios pequeños pueden causar problemas si se actualizan a menudo. Por ejemplo, 100 cambios en un archivo binario de 100 KB usan tanto almacenamiento como 10 cambios en un binario de 1 MB. Debido a la frecuencia de las actualizaciones, el archivo binario más pequeño ralentiza el rendimiento de la bifurcación con más frecuencia que el archivo binario grande.
Evitar activos binarios grandes y actualizados con frecuencia
Git no puede almacenar archivos binarios grandes de forma eficaz porque estos archivos suelen cambiar entre versiones y normalmente ya están comprimidos.
- Git almacena el contenido completo de cada versión.
- El tamaño del repositorio crece con el tiempo.
- Las operaciones de clonación, creación de ramas, obtención y cambio se vuelven más lentas.
Dado que Git debe almacenar todo el contenido de cada versión, la detificación y la compresión no ayudan mucho. A medida que estos archivos se acumulan, el repositorio aumenta, la bifurcación se ralentiza y aumentan los tiempos de clonación.
Estrategias para archivos de código fuente binario de gran tamaño
- No subas archivos comprimidos. Descomprima los datos y, en su lugar, registre los archivos fuente comparables.
- Evite subir código compilado y otras dependencias binarias. Compilarlos o proporcionarlos mediante la gestión de paquetes.
- Almacene la configuración y otros datos estructurados en formatos de texto sin formato diffables, como JSON.
¿Qué es Git Large File Storage (Git LFS)?
Use Git Large File Storage (LFS) para los archivos de origen que cambian a menudo y difieren significativamente entre las versiones.
Git LFS:
- Almacena punteros a archivos grandes en el repositorio en lugar del contenido completo del archivo.
- Almacena el contenido binario en almacenamiento remoto independiente.
- Descarga la versión correcta al clonar o cambiar las ramas.
- Mantiene el flujo de trabajo de Git normal para archivos binarios grandes sin mover el contenido completo del archivo a través de cada cambio de clonación y rama.
Ventajas de Git LFS
Git LFS mantiene el flujo de trabajo de Git al mover contenido de archivos grandes fuera del repositorio principal.
- El equipo puede seguir usando el mismo flujo de trabajo de Git de un extremo a otro.
- Los archivos grandes permanecen fuera del historial principal del repositorio, lo que ayuda a mantener el repositorio administrable.
- El bloqueo de archivos admite el trabajo compartido en recursos grandes e indiffables, como vídeos, sonidos y mapas de juegos.
Azure DevOps Services es totalmente compatible con Git LFS y lo ofrece de forma gratuita. Para usar LFS, instale el cliente de Git LFS, configure el seguimiento de los archivos que desea almacenar en LFS y, a continuación, inserte los cambios en Azure Repos.
Para obtener Azure DevOps Server y instrucciones específicas de Kerberos, consulte Kerberos y Git LFS.
Limitaciones de Git LFS
Git LFS todavía tiene algunas desventajas que hay que prever:
- Cada cliente de Git debe instalar el cliente de Git LFS y comprender su configuración de seguimiento.
- Si el cliente no está instalado o configurado correctamente, clona los datos del puntero de descarga en lugar del archivo binario.
- Git no puede combinar versiones diferentes de un archivo binario, por lo que los compañeros de equipo todavía necesitan coordinar los cambios.
- Git LFS proporciona bloqueo de archivos, pero los usuarios todavía necesitan extraer la copia más reciente antes de comenzar el trabajo.
- Azure Repos no admite Secure Shell (SSH) para repositorios con archivos de seguimiento de Git LFS.
- Al arrastrar un archivo binario a la interfaz web, se confirma el binario en el repositorio, no en el puntero LFS.
- Las cargas grandes se pueden restringir mediante el espacio libre disponible, la carga de trabajo actual y el límite de carga de una hora.
Formato de archivo LFS de Git
El archivo que escribes en tu repositorio para un archivo rastreado por Git LFS contiene unas pocas líneas, con un par de clave/valor en cada línea:
version https://git-lfs.github.com/spec/v1
oid a747cfbbef63fc0a3f5ffca332ae486ee7bf77c1d1b9b2de02e261ef97d085fe
size 4923023
Nota:
- La dirección URL de GitHub incluida para el valor de versión solo define el tipo de archivo de puntero LFS. No es un enlace a tu archivo binario.
- Para Git LFS anterior a la versión 2.10.0 con Azure DevOps Server, actualice a Git LFS 2.10.0 o posterior para usar la autenticación Kerberos. Para obtener instrucciones actuales, consulte Kerberos y Git LFS y Volver a configurar Azure DevOps Server para usar Kerberos en lugar de NTLM.
Planificación de Azure DevOps Server y Kerberos
Si usa Azure DevOps Server y la autenticación de Windows, tenga en cuenta Kerberos cuando use Git LFS. Git LFS 2.10.0 y versiones posteriores admiten la autenticación Kerberos.
Si necesita actualizar las instrucciones de Azure DevOps Server anteriores, comience con Kerberos y Git LFS y las instrucciones de autenticación de Azure DevOps Server vinculadas.