¿Desventajas de la clonación superficial en Travis y otros services de CI?

La mayoría de los services de CI proporcionan una forma de clonar un repository superficial. Por ejemplo, en Travis:

git: depth: 1 

o en AppVeyor:

 clone_depth: 1 or shallow_clone: true 

Esto tiene el obvio beneficio de la velocidad, ya que no es necesario clonar todo el repository.

¿Hay alguna desventaja para la clonación superficial en los services de IC? ¿Hay alguna situación en la que un clon superficial haga que falle una construcción de CI? De lo contrario, ¿por qué no es la clonación superficial la configuration pnetworkingeterminada para estos services de CI?

Hay dos razones por las que generalmente no sucede.

En primer lugar, el hash de un clon superficial será diferente de cualquier versión que pueda tener en el repository. Como resultado, no será posible rastrear una compilation que haya realizado con un resultado en particular.

En segundo lugar, la mayoría de los serveres de Git tienen la capacidad de enviar el 'package.todo' optimizado si no tiene detalles. De lo contrario, el server deberá proporcionar un package de confirmación personalizado que contenga solo su copy superficial para que se lo enviemos. Entonces, aunque puede haber más datos transmitidos a través del cable, en realidad puede resultar en más trabajo en el server.

Finalmente, bastantes comstackciones de CI llevarán a cabo algún tipo de operación de label y lo cargarán en el repository, y prácticamente no se puede labelr un clon superficial (véase el punto 1).

Agregando a la respuesta de AlBlue:

Otro problema es que la configuration de profundidad del clon también se usa para el submodule de git.

En proyectos que usan el submodule de git, Travis, etc., clonará el repository de submodules comenzando desde el maestro, y luego revisará la revisión específica.

Si la confirmación a la que estamos apuntando en el submodule no está dentro de n confirmaciones del maestro actual (donde n es la configuration de profundidad), no se procesará.

    Intereting Posts