SVN часто говорит, что файл заблокирован мной в другой рабочей копии

У меня есть репозиторий 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, а сервер Dreamhost svn - 1,6.12.

Спасибо за любую помощь.

ОБНОВЛЕНИЕ: Я заметил, что ошибка возникает, если я обновляю свою рабочую копию до ее совершения (что не дает ошибки и, конечно же, не изменяет заблокированные файлы). Проверяя статус файла, перед обновлением черепаха говорит, что он заблокирован мной (проверка только локально), а после проверки обновления локально он дает "????" как состояние блокировки, и, проверяя сервер, он говорит, что он заблокирован мной. После обновления файл становится доступным только для чтения (из-за необходимости-блокировки), даже если он по-прежнему помечен как измененный. Таким образом, последовательность действий: lock file.bin → modify file.bin → обновить всю рабочую копию → commit → commit failed error. После обновления рабочая копия, похоже, забывает о состоянии блокировки, и когда она запрашивает сервер, она считает, что она заблокирована на другой рабочей копии.

Ответ 1

В Windows я исправил проблему, выполнив следующие шаги: 1. Запустите браузер репозитория, нажав "Repo-browser" в меню. 2. Найдите заблокированный файл. 3. Щелкните правой кнопкой мыши на заблокированном файле. 4. Нажмите "Блокировать блокировку".

Ответ 2

Очистка не поможет. Это используется для рабочих блокировок копирования, тогда как вы столкнулись с проблемой, когда файлы блокируются в самом хранилище как средство реализации взаимного доступа между пользователями. См. Три значения "Блокировка"

Вероятно, у вас есть клиент, который блокирует файл для вас в другой рабочей копии без вашего ведома (локально или в WC на ​​вашем сервере) или, возможно, у вас есть общий ресурс WebDAV, который у вас есть и открывают файл там, который вызывает создание блокировки.

Ответ 3

Я также столкнулся с той же проблемой и обнаружил, что из трех машин на одном из компьютеров я заблокировал файл и из-за которого я также столкнулся с проблемой. Что я сделал, так это освободить блокировку от этой машины и продолжить дальше.

ИЛИ

Сначала украдите блокировку, а затем начните работу, так как это лучший вариант, предоставляемый SVN.

Ответ 4

Найдено: https://groups.google.com/forum/#!topic/subversion_users/wZikmNEubz4 Кажется, эта проблема проявляется при использовании клиента svn 1.8 и сервера до 1.6.17: при обновлении корневой папки рабочей копии мои блокировки ломаются (независимо от флага потребности-блокировки).

Я понизил до 1,7.14 клиент и проблема не возникает.

Ответ 5

Если вы используете JetBrains IDE:

щелкните правой кнопкой мыши файл, который вы хотите разблокировать, перейдите в Subversion и нажмите кнопку блокировки

затем установите флажок украсть существующую блокировку и нажмите OK

снова щелкните правой кнопкой мыши по этому файлу, перейдите в Subversion и нажмите разблокировать

Если используется командная строка:

заблокируйте файл с помощью --force

svn lock --force path/to/file.ext

и снова разблокировать

svn unlock path/to/file.ext