Share via


Límites de Git

Azure DevOps Services

Imponemos algunos límites de recursos en los repositorios de Git en Azure Repos. Nuestro objetivo es garantizar la confiabilidad y disponibilidad de todos los clientes. Además, al mantener la cantidad de datos y el número de inserciones razonable, puede esperar tener una mejor experiencia general con Git.

Git participa en la limitación de velocidad junto con el resto de Azure DevOps Services. Además, imponemos límites en el tamaño total de los repositorios, inserciones y longitud de las rutas de acceso de archivo y directorio.

Tamaño del repositorio

Los repositorios no deben tener más de 250 GB. Para recuperar el tamaño del repositorio, ejecute "git count-objects -vH" en un símbolo del sistema y busque la entrada denominada "size-pack":

D:\my-repo>git count-objects -vH

count: 482
size: 551.67 KiB
in-pack: 100365
packs: 25
size-pack: 642.76 MiB   <-- size of repository
prune-packable: 83
garbage: 0
size-garbage: 0 bytes

Se recomienda mantener el repositorio por debajo de 10 GB para una operación óptima. Si el repositorio supera este tamaño, considere la posibilidad de usar Git-LFS, Scalar o Azure Artifacts para refactorizar los artefactos de desarrollo.

Azure Repos reduce continuamente el tamaño general y aumenta la eficacia de los repositorios de Git mediante la consolidación de archivos similares en paquetes. En el caso de los repositorios que están cerca de 250 GB, se puede alcanzar el límite interno en los archivos del paquete antes de que se complete el proceso de optimización. Cualquier usuario que intente escribir en el repositorio ve el siguiente mensaje de error: "Se ha alcanzado el límite de archivos del paquete de Git, las operaciones de escritura no están disponibles temporalmente mientras se actualiza el repositorio". Las operaciones de escritura se restaurarán inmediatamente después de que se complete el trabajo.

Tamaño de inserción

Las inserciones grandes usan muchos recursos, bloquean o ralentizan otras partes del servicio. Estas inserciones a menudo no se asignan a las actividades normales de desarrollo de software. Es posible que alguien haya comprobado accidentalmente las salidas de compilación o una imagen de máquina virtual, por ejemplo. Por estos motivos y mucho más, las inserciones están limitadas a 5 GB a la vez.

Hay una excepción en la que las inserciones grandes son normales. Al migrar un repositorio de otro servicio a Azure Repos, se incluye como una única inserción. No pretendemos bloquear las importaciones, incluso de repositorios muy grandes. Si el repositorio tiene más de 5 GB, debe usar la web para importar el repositorio en lugar de la línea de comandos.

Tamaño de inserción para objetos LFS

Git LFS no cuenta para el límite de repositorios de 5 GB. El límite de 5 GB solo es para los archivos del repositorio real, no los blobs almacenados como parte de LFS. Si se produce un error en las inserciones en el límite de 5 GB, compruebe .gitattributes que el archivo incluye las extensiones de los archivos que quiere realizar un seguimiento mediante LFS y que este archivo se guardó y almacenaron provisionalmente antes de almacenar provisionalmente los archivos grandes para que se realice el seguimiento.

Longitud de la ruta de acceso

Azure Repos tiene una directiva de inserción que limita la longitud de las rutas de acceso en un repositorio de Git rechazando las inserciones que introducen rutas de acceso demasiado largas. A diferencia de la directiva de longitud máxima de ruta de acceso, no hay ninguna manera de deshabilitar o invalidar esta directiva con un límite diferente, ya que aplica los valores máximos posibles admitidos por nuestra plataforma.

Se aplican dos límites:

  • Longitud total de la ruta de acceso: 32 766 caracteres
  • Longitud del componente de ruta de acceso (es decir, nombre de carpeta o archivo): 4096 caracteres

Solo afecta a las rutas de acceso recién introducidas en una inserción. Si cambia un archivo existente, no se aplica. Pero si crea un nuevo archivo o cambia el nombre o mueve uno existente, se aplica.

Si algunas de las confirmaciones que se insertan introducen rutas de acceso que superan los límites, la inserción se rechaza con uno de los siguientes mensajes de error:

  • VS403729: The push was rejected because commit '6fbe8dc700fdb33ef512e2b9e35436faf555de76' contains a path, which exceeds the maximum length of 32766 characters.
  • VS403729: The push was rejected because commit 'd23277abfe2d8dcbb88456da880de631994dabb4' contains a path component, which exceeds the maximum length of 4096 characters.