A menudo, cuando hago un checkout de una rama diferente, o un reinicio, obtengo errores de 'permiso denegado' de una a una docena de archivos, pero el particular los archivos varían de ejecución a ejecución. Aquí está el resultado de una prueba que acabo de hacer, con GIT_TRACE = 1. El único rastro añadió la línea antes de que el mensaje de error:La extracción y el reinicio de Git en Windows ocasionalmente muestran que los archivos aleatorios han cambiado
$ 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"
Estoy bastante seguro de que esto es una carrera con un escáner de virus u otro servicio de indexación en mi máquina. Si la carrera persistiera, podría usar sysinternals para ver qué proceso tiene abierto el archivo. Sin embargo, sucede muy rápido, y no conozco una herramienta que me muestre este conflicto. Sorprendentemente, no he encontrado a nadie que describa un comportamiento similar. ¿Cómo detengo estos errores o diagnostico el problema más?
Estoy buscando específicamente finalizar la carrera de acceso al archivo identificando cualquier proceso que esté haciendo el acceso simultáneo. Así que las sugerencias para una herramienta que muestra qué proceso tiene un archivo bloqueado cuando se niega una edición sería muy útil. Conozco el 'desbloqueo' y herramientas similares que me mostrarán qué proceso mantiene un archivo bloqueado durante un período de tiempo. Esto no funciona para este problema, porque el proceso mantiene el archivo bloqueado durante un período muy corto. Entonces, la herramienta necesita recopilar los datos apropiados sin mi intervención, ya que soy demasiado lento.
Nota también comentario # 16 allí. Poner su repositorio en una partición que no sea del sistema también resuelve el problema. http://code.google.com/p/msysgit/issues/detail?id=320#c16 –