La vérification et la réinitialisation de Git sous Windows montrent parfois que des fichiers aléatoires ont changé

Souvent, lorsque je vérifie une twig différente ou une réinitialisation, j’obtiens des erreurs de «permission refusée» de Windows pour une à une douzaine de fichiers – mais les fichiers particuliers varient d’une exécution à l’autre. Voici la sortie d’un test que je viens de faire, avec GIT_TRACE = 1. La trace n’a ajouté que la première ligne avant le message d’erreur:

 $ git checkout master
 trace: intégré: git 'checkout' 'master'
 erreur: git checkout-index: impossible de créer le fichier dotnet / src / myfile.cs (autorisation refusée)
 D dotnet / src / myfile.cs
 Passé à la twig "master"

Je suis presque certain que ma machine fonctionne avec un scanner de virus ou un autre service d’indexation. Si la course persistait, je pourrais utiliser sysinternals pour voir quel processus ouvre le handle de fichier. Cependant, cela arrive très vite, et je ne connais pas d’outil qui me montrera ce conflit. Étonnamment, je n’ai trouvé personne décrivant un comportement similaire. Comment puis-je arrêter ces erreurs ou diagnostiquer le problème plus avant?

Je cherche spécifiquement à mettre fin à la course à l’access aux fichiers en identifiant le processus qui effectue l’access simultané. Donc, des suggestions pour un outil qui montre quel processus a un fichier verrouillé quand une modification est refusée seraient très utiles. Je suis au courant des «outils de délocking» et des outils similaires qui me montreront quel processus contient un fichier verrouillé pendant un certain temps. Cela ne fonctionne pas pour ce problème, car le processus conserve le fichier verrouillé pendant une très courte période. L’outil doit donc collecter les données appropriées sans mon intervention, car je suis trop lent.

Il peut s’agir de l’indexeur de recherche Windows, qui essaie de créer des fichiers d’index au fur et à mesure de leur création. J’ai rencontré ce problème avec svn checkout et j’ai dû exclure ce répertoire de l’indexation avant que je puisse réussir à extraire un projet complet.

Voir mon article https://connect.microsoft.com/VisualStudio/feedback/details/676699/cannot-open-linker-output-for-writing-or-cannot-close-file

Pas de git lié!

Le moniteur de processus de Sysinternals révèle que l’explorateur Windows interfère avec les fichiers nouvellement créés, peut-être en raison d’un plugin ou autre, mais cela arrive.

Désactiver la virtualisation UAC semble avoir résolu le problème.

Voir http://code.google.com/p/msysgit/issues/detail?id=320

Vous pouvez commencer par un:

GIT_TRACE=1 

Mais il peut ne pas afficher beaucoup plus que votre message original concernant ce fichier.

La cause habituelle est un éditeur ouvert qui veut recharger les fichiers lorsqu’il est modifié, et cela peut entrer en conflit avec les manipulations de fichiers de git.
Cela signifie que la stratégie habituelle consiste à répéter votre commande git après avoir fermé autant d’applications que possible .

Je n’ai trouvé personne décrivant un comportement similaire

Voir ce fil par exemple, celui-ci , les deux sur Cygwin.
Quelle version de Git utilisez-vous (Git sur Cygwin ou MSysGit, dans une session Cygwin ou une session Dos?)

Vous pouvez essayer Filemon de sys internals