Souvent quand je fais un checkout d'une branche différente, ou une réinitialisation, j'obtiendrai des erreurs «permission refusée» de Windows pour un à une douzaine de fichiers - mais le particulier les fichiers varient d'une exécution à l'autre. Voici la sortie d'un test que je viens de faire, avec GIT_TRACE = 1. La seule trace a ajouté une ligne avant que le message d'erreur:Git checkout et réinitialiser sur Windows montre parfois des fichiers aléatoires ont changé
$ git checkout master trace: built-in: git 'checkout' 'master' error: git checkout-index: unable to create file dotnet/src/myfile.cs (Permission denied) D dotnet/src/myfile.cs Switched to branch "master"
Je suis assez sûr que ce soit une course avec un scanner de virus ou tout autre service d'indexation sur ma machine. Si la course persistait, je pourrais utiliser sysinternals pour voir quel processus a ouvert le handle de fichier. Cependant, cela arrive très vite, et je ne suis pas au courant d'un outil qui me montrera ce conflit. Étonnamment, je n'ai trouvé personne décrivant un comportement similaire. Comment faire pour que ces erreurs s'arrêtent, ou diagnostiquer le problème plus loin?
Je cherche spécifiquement à mettre fin à la course d'accès aux fichiers en identifiant tout processus faisant l'accès simultané. Donc, des suggestions pour un outil qui montre quel processus a un fichier verrouillé lorsqu'une modification est refusée serait très utile. Je suis conscient de 'unlocker' et des outils similaires qui me montreront quel processus détient un fichier verrouillé pendant une période de temps. Cela ne fonctionne pas pour ce problème, car le processus conserve le fichier verrouillé pendant une période très courte. L'outil doit donc collecter les données appropriées sans mon intervention, car je suis trop lent.
Notez également le commentaire # 16 là. Mettre votre repo sur une partition non-système résout également le problème. http://code.google.com/p/msysgit/issues/detail?id=320#c16 –