Подтвердить что ты не робот

"Папка" уже заблокирована "Папкой"

У меня есть эта очень ОЧЕНЬ раздражающая проблема, когда я пытаюсь объединить наш багажник в мой филиал для некоторых обновлений. Я делаю это ежедневно, но почти каждый день я получаю следующую ошибку:

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, он снова запускает кеш и блокирует его. Мне удалось успешно слить через командную строку.. есть ли способ исправить проблему блокировки кеша, чтобы избежать необходимости полагаться на командную строку?

4b9b3361

Ответ 1

Попробуйте отключить кеш статуса оверлея значка (за что отвечает процесс TSVNcache.exe)

  • Откройте окно проводника
  • Щелкните правой кнопкой мыши в любом месте, TortoiseSVN → Настройки
  • Перейдите в раздел "Наложение значков"
  • Выберите переключатель "Нет" в разделе "Кэш состояния"
  • Нажмите "Применить"

Предположительно, если кеш статуса отключен и TSVNcache.exe не запущен, он не может заблокировать какие-либо файлы. Вы можете, по крайней мере, исключить, является ли это проблемой (это, похоже, звучит так, как есть). Это процесс, который отвечает за обновление значков папки/файла в проводнике с этой зеленой галочкой, красной измененной меткой и т.д. Я отключил это по причинам производительности в течение многих лет. Я просто просматриваю измененные файлы или открываю диалог фиксации, чтобы увидеть, какие файлы были изменены.

После этого следующим наиболее вероятным подозреваемым является служба индексирования (Windows Search) из прошлого опыта.

Ответ 2

У меня была та же проблема. Вот что я сделал:

  • Убить explorer.exe в диспетчере задач
  • Запустите его снова из диспетчера задач
  • Теперь работает слияние...

Я предполагаю, что Windows Explorer может что-то заблокировать.

Ответ 3

Другой вариант, который работает для меня вместо отказа от значков Overlays, заключается в том, чтобы сменить каталог в проводнике Windows на папку, отличную от svn, и таким образом TortoiseSVN не конфликтует с самим собой. Это так раздражает, но если вам нужно быстрое решение - вот оно.

Ответ 4

У меня такая же проблема в течение некоторого времени. Тем более, что мои хранилища сильно усложняются.

Указатель, который TSVNCache блокирует рабочую копию, заставил меня задуматься. Зачем это делать? Вывод: только когда он занят обновлением статуса рабочей копии (включая наложения значков).

Один из способов преодоления этой проблемы - именно то, что говорит Джошуа Маккиннон: отключить наложения значков. Если это не то решение, которое вы хотите (потому что вы хотите сохранить значки), вы также можете пойти по другому подходу: дождитесь завершения TSVNCache выполнения своей работы. Когда вы открываете окно слияния, вы можете видеть, что TSVNCache занят (в проводнике процессов). Когда эта занятость закончится, безопасно выполнить слияние. С тех пор больше проблем с блокировкой!