У меня есть репозиторий SVN (размещенный на Dreamhost) с установленной блокировкой потребностей для двоичных файлов. Иногда случается, что при фиксации файлов, заблокированных и измененных мной, фиксация завершается с ошибкой:
Error: Commit failed (details follow):
Error: File '/my/file.bin' is locked in
Error: another working copy
Если я попытаюсь заблокировать этот файл (не украшая его), он скажет:
Error: Path '/my/file.bin' is already locked by user
Error: 'my_username' in filesystem '/home/user1/svn/repo1/db'
Очистка не помогает, поэтому единственный способ решить эту проблему - украсть блокировку, а затем выполнить фиксацию.
Это не критическая проблема, но она действительно раздражает, особенно когда это происходит в середине длительного коммита. Я склонен думать, что это вызвано ошибкой клиента или сервера, поскольку я уверен, что не использую другие рабочие копии, и проблема возникает у меня довольно часто (3 раза за последние два дня) и мои коллеги, использующие репозиторий.
Мы используем TortoiseSVN 1.8.4, а svn-сервер Dreamhost - 1.6.12.
Спасибо за любую помощь.
ОБНОВЛЕНИЕ: я заметил, что ошибка возникает, если я обновляю свою рабочую копию перед фиксацией (что не дает ошибок и, конечно же, не изменяет заблокированные файлы). Проверяя статус файла, черепаха перед обновлением сообщает, что он заблокирован мной (проверка только локально), а после локальной проверки обновлений выдает "????" как состояние блокировки, и, проверив сервер, он говорит, что он заблокирован мной. После обновления файл становится доступным только для чтения (из-за необходимости блокировки), даже если он все еще помечен как измененный. Таким образом, последовательность действий такова: заблокировать файл.bin -> изменить файл.bin -> обновить всю рабочую копию -> зафиксировать -> ошибка фиксации сбоя. После обновления рабочая копия, кажется, забывает о состоянии блокировки, и когда она запрашивает сервер, она считает, что заблокирована на другой рабочей копии.