"Папка" уже заблокирована "Папкой"
У меня есть эта очень ОЧЕНЬ раздражающая проблема, когда я пытаюсь объединить наш багажник в мой филиал для некоторых обновлений. Я делаю это ежедневно, но почти каждый день я получаю следующую ошибку:
Error - 'D:\Code\Website' is already locked via 'D:\Code\Website'.
Только очень случайная ошибка не возникает, и я могу успешно объединить соединительную линию обратно в ветвь. Тем не менее, весь день я пытаюсь получить последнюю из сундука без успеха. Я смотрел высоко и низко для ответов на эту проблему. SO, Google, случайные форумы в Интернете... и т.д. Я надеюсь, что кто-то может пролить свет на то, почему это может произойти.
Это то, что я уже пробовал:
- Запустите "Очистить" в каждой папке в каталоге.
- Проверено на наличие файла "lock" в каталоге .svn - не существует.
- Открыл файл wc.db и проверил таблицу WC_LOCK - ничего там.
- Отключенный антивирус.
- Отключено IIS.
- Выдана новая копия ветки.
- Обновлено TortoiseSVN
- Завершено удаление и повторная установка TortoiseSVN с последней версией MSI от TortoiseSVN.net(1.7.10.23359, SVN 1.7.7).
Я могу обновить ветку и зафиксировать ее.. никогда не было проблем с этим. Это просто слияние багажника, что вызывает у меня проблемы. Кажется, что у кого-то в команде нет этой проблемы (с этой веткой или с другими). Они могут свободно проверять ветку. Объединить сундук и зафиксировать его без проблем.
Я использую TortoiseSVN. Любая помощь вам, ребята/девочки, была бы фантастической!
EDIT: также работает тестовое слияние, но фактическое слияние не выполняется.
UPDATE
Оказывается, TSVNCache.exe ПОСТОЯННО держит блокировки в файле wc.db. Понятия не имею почему. Даже если я убью этот процесс; как только я перехожу через GUI слияния TSVN, он снова запускает кеш и блокирует его. Мне удалось успешно слить через командную строку.. есть ли способ исправить проблему блокировки кеша, чтобы избежать необходимости полагаться на командную строку?
Ответы
Ответ 1
Попробуйте отключить кеш статуса оверлея значка (за что отвечает процесс TSVNcache.exe)
- Откройте окно проводника
- Щелкните правой кнопкой мыши в любом месте, TortoiseSVN → Настройки
- Перейдите в раздел "Наложение значков"
- Выберите переключатель "Нет" в разделе "Кэш состояния"
- Нажмите "Применить"
Предположительно, если кеш статуса отключен и TSVNcache.exe не запущен, он не может заблокировать какие-либо файлы. Вы можете, по крайней мере, исключить, является ли это проблемой (это, похоже, звучит так, как есть). Это процесс, который отвечает за обновление значков папки/файла в проводнике с этой зеленой галочкой, красной измененной меткой и т.д. Я отключил это по причинам производительности в течение многих лет. Я просто просматриваю измененные файлы или открываю диалог фиксации, чтобы увидеть, какие файлы были изменены.
После этого следующим наиболее вероятным подозреваемым является служба индексирования (Windows Search) из прошлого опыта.
Ответ 2
У меня была та же проблема. Вот что я сделал:
- Убить explorer.exe в диспетчере задач
- Запустите его снова из диспетчера задач
- Теперь работает слияние...
Я предполагаю, что Windows Explorer может что-то заблокировать.
Ответ 3
Другой вариант, который работает для меня вместо отказа от значков Overlays, заключается в том, чтобы сменить каталог в проводнике Windows на папку, отличную от svn, и таким образом TortoiseSVN не конфликтует с самим собой. Это так раздражает, но если вам нужно быстрое решение - вот оно.
Ответ 4
У меня такая же проблема в течение некоторого времени. Тем более, что мои хранилища сильно усложняются.
Указатель, который TSVNCache блокирует рабочую копию, заставил меня задуматься. Зачем это делать? Вывод: только когда он занят обновлением статуса рабочей копии (включая наложения значков).
Один из способов преодоления этой проблемы - именно то, что говорит Джошуа Маккиннон: отключить наложения значков. Если это не то решение, которое вы хотите (потому что вы хотите сохранить значки), вы также можете пойти по другому подходу: дождитесь завершения TSVNCache выполнения своей работы. Когда вы открываете окно слияния, вы можете видеть, что TSVNCache занят (в проводнике процессов). Когда эта занятость закончится, безопасно выполнить слияние. С тех пор больше проблем с блокировкой!