¿Debo almacenar los archivos de prueba en el control de origen?

8

Tengo una serie de archivos de prueba (grandes) que deben mantenerse. Esto significa que el acceso a su historial es un requisito.

Beneficios

  • Cualquier desarrollador nuevo obtiene todo el conjunto de pruebas con solo un git pull.
  • Se realiza una copia de seguridad del historial de los archivos.
  • Los archivos en sí están respaldados.

Inconvenientes

  • Gran aumento en el tamaño del repositorio.
  • Gran aumento en el tamaño de descarga de los nuevos desarrolladores que copian el repositorio.

¿Cuáles son las mejores prácticas para mantener los archivos de prueba?

¿Guardo estos archivos en el control de origen? ¿Hay alguna alternativa?

sdasdadas
fuente
77
¿Ha considerado almacenarlos en un repositorio diferente, uno que se extraerá solo cuando sea absolutamente necesario? ¿Un submódulo git tal vez?
Yannis
Si decide no versionar los archivos reales, cree una lista de hashes de los archivos para que al menos pueda confirmar que tiene los correctos al intentar repetir las pruebas.
Steve314
@ YannisRizos Me gusta mucho la idea de un submódulo, gracias.
sdasdadas
2
Si tiene algunos archivos realmente grandes que no cambian a menudo en la mezcla, git annex también podría ser interesante. Pero eso está hablando de archivos que tienen un orden de cientos de megabytes o más. Los archivos más pequeños están bien solo almacenados en git, incluso si hay muchos de ellos.
Jan Hudec

Respuestas:

13

Almacénelos en control de fuente. Los beneficios que enumeró son todos muy buenos. Cuando dices que hacer esto dará como resultado un tamaño "enorme", ¿de qué tamaño estás hablando? ¿Cientos de gigabytes? Terabytes?

Si el almacenamiento es realmente un gran problema, ¿podría comprimir los archivos, almacenar el archivo zip en el control de origen y luego tener un script que los descomprima cuando se ejecutan los casos de prueba? Perdería el historial detallado de cada archivo de esa manera (a menos que pueda encontrar una herramienta que descomprima y muestre el historial en la memoria), pero los nuevos desarrolladores aún tendrían fácil acceso a los archivos de prueba.

Dependiendo de la naturaleza de sus datos de prueba, podría tener un script para generar archivos de prueba. Esto podría funcionar si está probando imágenes muy grandes que pueden generarse de manera procesal (las inserciones SQL para llenar una base de datos también pueden generarse fácilmente mediante un programa o script), pero esta técnica no se aplica a todo tipo de datos de prueba ...

FrustratedWithFormsDesigner
fuente
77
Almacenar el archivo zip en el control de origen dará como resultado más almacenamiento utilizado que solo el texto, ya que tendrá que mantener blobs binarios en lugar de solo diffs.
Daenyth
@Daenyth: Supongo que podría depender de cuánto se puedan comprimir los archivos; si se pueden comprimir y no cambian con demasiada frecuencia (por lo que no hay demasiadas diferencias), podría valer la pena. Imposible decirlo sin detalles sobre estos archivos.
FrustratedWithFormsDesigner
1
Enorme (en este caso) significa 10s o 100s de GB.
sdasdadas
1
@sdasdadas: Hmm 100 de GB podrían crecer con el tiempo ... ¿es la compresión una opción? ¿O generar datos de prueba con pequeños scripts?
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner Creo que siempre puedo comprimirlos si se sale de control. Una secuencia de comandos de prueba generadora desafía el punto dado que se supone que son pruebas del "mundo real": las secuencias de comandos tienden a crear datos artificiales.
sdasdadas
5

Los almacenaría en control de fuente. ¿Alguna vez hay un caso en el que desea la suite de prueba sin el código? No tiene sentido ¿Hay algún caso en el que desee editar el código sin actualizar el conjunto de pruebas? No debería haberlo.

El inconveniente 1 no debería ser un problema dados los precios de almacenamiento en estos días, y los sistemas SCM modernos deberían hacer que la actividad de la red no sea una preocupación fuera de la configuración inicial tampoco.

Su inconveniente 2 no parece que deba ser mucho. ¿Con qué frecuencia tiene nuevos desarrolladores que se suman a este proyecto para que el tiempo de clonación inicial se convierta en un problema?

Daenyth
fuente
2

Los guardaría en un repositorio diferente. Los inconvenientes que mencionó son inevitables si tiene un conjunto de pruebas voluminosas.

vpillai
fuente