¿Hay algo de git plomería más rápido que git diff-files?

No estoy seguro de si existe tal cosa, pero

$ time git diff-files --quiet real 0m0.495s user 0m0.000s sys 0m0.000s 

y aunque supongo que es increíblemente rápido (SHA-1 hash todos los 3680 files rastreados en el disco?), sería bueno con algo aún más rápido. ¿Conoces una manera más rápida?

Editar: Mi i7 en el trabajo es ~ 3.7 veces más rápido que mi i5 en casa. ¿Es eso esperado? ¿Las instrucciones de i7 están llenas de instrucciones que hacen que SHA-1 sea como el viento?

git diff-files no calcula el hash de cada file en su copy de trabajo por defecto. El índice contiene copys de las marcas de time y algunos otros metadatos de la última vez que se git add el file (o git update-index u otras operaciones que implican colocar un logging del file en el índice). git diff-files , como primer paso, compara los metadatos del file actual con la copy en el índice, y si son iguales, asume que el file no ha sido cambiado y no calcula un hash. Si los metadatos son diferentes, realiza una operación más costosa para ver si los files son realmente diferentes, calculando el hash. La image completa es en realidad más complicada que eso, a la luz de cosas como el atributo assume-unchanged etc., pero esa es la descripción general del flujo normal. También hay una opción de configuration core.ignoreStat que se puede configurar, que está dirigida principalmente a filesystems donde stat() no es confiable / inexacta – para forzar a git a saltear ese primer paso y solo hacer comparaciones de hash, con el obvio impacto en la velocidad .

Si hubiera una forma más rápida de hacer esto, ya estaría en git diff-files … y dudo mucho que sea SHA-256-ing de tus files, eso tomaría más time (podrías cronometrar algo como cat $(git ls-files) | sha256 para tener una idea de cuánto time lleva hacerlo).