2010-10-27 18 views
31

Estoy intentando implementar Git para administrar recursos creativos (Photoshop, Illustrator, Maya, etc.) y me gustaría excluir archivos de Git según el tamaño del archivo en lugar de la extensión, ubicación, etc.gitignore por tamaño de archivo?

Por ejemplo, no quiero excluir todos los archivos .avi, pero hay un puñado de archivos avi masivos + 1GB en directorios aleatorios que no quiero comprometer.

¿Alguna sugerencia?

+1

Advertiría que se sabe que Git tiene un rendimiento pobre con archivos binarios grandes, y este problema solo ahora se está resolviendo lentamente. Recomendaría no usar Git para cosas además de texto sin formato. – erjiang

+0

@erjiang: De acuerdo. (excepto que los archivos binarios pequeños están perfectamente bien; claro, no pueden difuminarse de forma agradable, pero ningún VCS puede hacerlo). Por supuesto, el OP dice que explícitamente no quiere rastrear archivos de gran tamaño, por lo que podría estar bien. ! – Cascabel

+2

No hay forma integrada de hacerlo. Podría implementarlo agregando un enlace precompromiso que verifica el tamaño de todos los archivos que se comprometerán y cancela si alguno supera el umbral. Puede agregar automatización adicional, pero tenga cuidado. Lo último que desea es perder datos ignorando accidentalmente el contenido importante. (Con el fin de aumentar el peligro, podría: automáticamente desglosar los archivos de gran tamaño, agregarlos automáticamente al gitignore e incluso proceder con la confirmación modificada en lugar de abortar). – Cascabel

Respuesta

31

Soy nuevo en .gitignore, por lo que puede haber mejores maneras de hacer esto, pero he estado Exclusión de archivos por tamaño del archivo usando:

find . -size +1G | cat >> .gitignore 

Obviamente tendrá que ejecutar este código con frecuencia si está generando una gran cantidad de archivos de gran tamaño.

+0

Esta es una gran manera de controlar la carpeta 'wp-content/uploads' cuando se implementan sitios grandes construidos en WordPress. Gracias por esto. –

+3

Descubrí que necesitaba eliminar el '. /' Del principio de cada archivo antes de que gitignore funcionara – IanB

+1

Este es un hilo muy antiguo, pero en caso de que alguien lo encontrara y necesitara una solución de pasta: 'find. tamaño + 1G | sed's |^\ ./ || g '| cat >> .gitignore' – antass

Cuestiones relacionadas