Я пытаюсь исправить периодически возникающую ошибку в git-svn .Проблема возникает только в Windows XP, и с Cygwin git (perl v5.10.1) и с msysGit (perl v5.8.8).
С любой операцией, связанной с извлечением, я могу частично пройти черези затем операция завершается с сообщением, похожим на
Не удалось открыть .git / svn / refs / remotes / trunk / .rev_map.cc05479a-e8ea-436f-8d71-e07493b7796c.lock: устройствоили ресурс занят
в / usr / lib / git-core / git-svn line 5240
Однако точный файл блокировки и номер строки не всегда совпадают.Я отследил фактическую проблему до строки 3679
sysopen(my $fh, $db_lock, O_RDWR | O_CREAT)
Это создает новый файл .lock, и я попробовал эквивалент безрезультатно.
open(my $fh, ">", $db_lock)
Я проверил разрешениякаталога, и это drwxr-xr-x, поэтому проблем быть не должно, иначе, если бы они были, они не были бы такими противоречивыми.
Возможно, это связано с тем, что скрипт создает ипереименовывать этот файл так много раз подряд, что XP не справится с этим?РЕДАКТИРОВАТЬ: я подозреваю, что это так, потому что, когда я использовал отладчик perl и запускал выполнение каждого sysopen вручную, не было проблем для 100 ревизий, которые я выбрал.
EDIT : Некоторые разработчики Git гораздо лучше выяснят причину, чем пойдут на взлом, который сработает (я думаю, правильный подход).Итак, может ли кто-нибудь помочь мне найти виновника, отказывающего мне в разрешении открыть эти файлы .lock?У меня есть ряд инструментов, которые теоретически могут быть использованы для этой цели, но они не совсем подходят:
- Process Explorer - показывает все дескрипторы, принадлежащие процессу, а также может искатьдля всех процессов, владеющих данным дескриптором.Тем не менее, он не работает хорошо для кратковременных процессов или дескрипторов (что делает git svn clone / fetch)
- Unlocker - обнаруживает, когда появляется общее диалоговое окно «Отказано в доступе», и находит ошибочные дескрипторы) и предлагает разобраться с ними.Однако это не происходит, когда программы без проводника сталкиваются с файловыми ошибками
Короче говоря, есть ли способ получить больше информации, не будучи сотрудником Microsoft?
EDIT 2 : Вероятно, это не Symantec, а другая программа, которую мы запускаем на сетевых компьютерах.У меня есть некоторые люди, изучающие это, и они должны быть в состоянии, по крайней мере, сузить причину здесь.