¿Alguien puede explicar por qué el "estado de git" toca el directory .git?

Actualmente mantengo un proyecto para un git-prompt para bash ( https://github.com/magicmonty/bash-git-prompt ) y acabo de recibir un informe de error ( https://github.com/magicmonty/bash-git -prompt / issues / 97 ) de alguien que trabaja con Docker, quien me dice que cada vez que utiliza el post, la memory caching se invalida porque el directory .git se toca constantemente.

He investigado esto y descubrí que es el git status del command git status , que toca el directory .git . Parece que solo se toca la input del directory y no se tocan los contenidos. ¿Alguien puede explicar por qué es necesario o es un error en Git?

¿Hay alguna manera de mostrar toda la información de estado sin tocar el directory .git?

Gracias por la ayuda

Actualizar:

Dado que la razón para usar el command git status era, para determinar el número de files sin seguimiento, lo reemplacé con git ls-files --others --exclude-standard | wc -l git ls-files --others --exclude-standard | wc -l , que no necesita un locking.

strace git status muestra que esta acción usa el file de locking .git/index.lock , por eso se actualiza el mtime del .git .

git es genial, usa la variable de entorno GIT_INDEX_FILE para decidir qué file de locking usar. Si no está configurado, git usa .git/index (este es el valor pnetworkingeterminado), pero si se establece, git usa su valor. De man git :

GIT_INDEX_FILE

Este entorno permite la especificación de un file de índice alternativo. Si no se especifica, se usa el valor pnetworkingeterminado de $GIT_DIR/index .

Asi que:

 GIT_INDEX_FILE=banana git status 

no actualizará el mtime de .git .

Entonces, ahora debe tomar una decisión sobre si desea seguir este path o no (lo que sin duda tiene muchas salvedades).

¡Buena suerte!