Ошибка блокировки рабочей копии в svn черепахи при фиксации

94

Я использую Tortoise SVN для обновления и фиксации изменений в репозитории на сервере всякий раз, когда я вношу изменения в свою рабочую копию. Но через несколько дней я не могу зафиксировать изменения и каждый раз, когда пытаюсь зафиксировать, я получаю следующую ошибку.

Working copy 'C:\Program Files\EasyPHP\www\project\php' locked.
'C:\Program Files\EasyPHP\www\project' is already locked.

Я попытался разблокировать папку, щелкнув ее правой кнопкой мыши и выбрав Tortoise SVN> Освободить блокировку , в ней говорится

Нечего разблокировать. В этой рабочей копии нет файлов с блокировкой

В чем может быть проблема?

Анил
источник

Ответы:

232

Нет проблем ... попробуйте это:

  • Перейдите в папку SVN верхнего уровня.
  • Щелкните правой кнопкой мыши папку (в которой находятся ваши файлы svn)> TortoiseSVN> CleanUp

Это обязательно решит вашу проблему. Я делал это много раз ... :)

Заметка. Убедитесь, что в диалоговом окне «Очистка» выбрана опция «Взломать блокировки».

MicroEyes
источник
спасибо @MicroEyes ... теперь я могу сделать коммит. У меня только одно небольшое сомнение. Должен ли я после внесения изменений в файл сначала зафиксировать, а затем обновить файл (в рабочей копии) или обновить, а затем зафиксировать?
Анил
2
Всегда следите за обновлением, а затем фиксируйте. В противном случае вы получите сообщение об обновлении от TortoiseSVN, потому что ваша копия версии старше, чем хранится на сервере SVN. Так что в любом случае вам нужно обновить и зафиксировать.
MicroEyes 02
1
да .. это решило мою проблему, связанную с обновлением моей текущей копии до версии svn.
Jayesh Bhoi 01
Я только что добавил файлы в SVN и попытался зафиксировать его, но получил ту же ошибку. Я попробовал команду cleanUp, но не могу решить эту проблему.
Ашок Чандрапал,
Я много переживаю с этим. Могу ли я сократить время, по истечении которого svn показывает это сообщение об ошибке (в настоящее время от пяти до десяти секунд)? Так что я могу начать уборку раньше.
не-пользователь
15

Принятый ответ у меня не сработал. Чтобы решить эту проблему, мне пришлось щелкнуть правой кнопкой мыши заблокированный файл и выбрать repo-browser. Это открыло всплывающее окно с файлами, как они находятся на сервере SVN. Затем я щелкнул правой кнопкой мыши заблокированный файл и выбрал break lock.

Когда я закрыл обозреватель репозитория, вернувшись в проводник, я наконец смог выполнить коммит!

Иоганн
источник
Вам просто нужно убедиться, что в диалоговом окне «Очистка» выбрана опция «Снять блокировки». Я думаю, что он выбран по умолчанию (и поэтому в исходном ответе об этом не упоминалось).
Nux
12
  1. Щелкните правой кнопкой мыши папку.
  2. TortoiseSVN-> Проверить наличие модификаций.
  3. Нажмите кнопку Проверить репозиторий.
  4. Снять блокировку всех возвращенных файлов.
Эльзаб
источник
3

Я тоже столкнулся с этой проблемой. Для некоторых я хотел бы указать, что если он заблокирован, ПРОВЕРЬТЕ С ВАШЕЙ КОМАНДОЙ. Кто-то в команде может заблокировать некоторые вещи, потому что они работают над этим (это позволяет разработчикам работать над вещами, не прибегая к другим и пытающимся работать над тем же контентом). В этом случае снятие блокировки с последующим обновлением может привести к потере данных разработчика, который заблокировал его.

Имея это в виду, я беспокоился, что опция «очистить», возможно, изменит мою рабочую копию или удалит информацию с уровня репо в Subversion. Это не относится к делу. Ответ сработал для меня. Моя заблокировалась, когда я нажал кнопку «Отмена» в середине обновления. В итоге я вытащил некоторые из наших веток, и они мне не понадобились, поэтому я нажал «Отменить». Моя рабочая копия заблокирована. Я не смог найти никаких документов, которые были бы заблокированы, когда я использовал команду «снять блокировку». Это оставило меня озадаченным, и после быстрого чтения (и этой темы) я попытался выполнить команду «очистить». После очистки он решил мою проблему, и больше ничего не было заблокировано.

источник: http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-locking.html

Эрик
источник
2

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

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

См. Эту страницу в документации Tortoise SVN для описания трех способов использования «блокировки»: http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-locking.html

Отрывок (выделено автором):

Три значения слова «замок»

В этом разделе и почти везде в этой книге слова «блокировка» и «блокировка» описывают механизм взаимного исключения между пользователями во избежание конфликтов коммитов. К сожалению, есть два других вида «замков», о которых иногда приходится беспокоиться в Subversion и, следовательно, в этой книге.

Второй - блокировка рабочей копии , используемые внутри Subversion для предотвращения конфликтов между несколькими клиентами Subversion, работающими с одной и той же рабочей копией. Обычно вы получаете эти блокировки, когда команда, такая как update / commit / ..., прерывается из-за ошибки. Эти блокировки можно снять, запустив команду очистки для рабочей копии, как описано в разделе «Очистка».

...

Г. Стивенс
источник
2

Я понятия не имел, какой файл был заблокирован, поэтому для решения этой проблемы я сделал следующее:

  1. Пошел в папку самого высокого уровня
  2. Нажмите очистка, а также отметьте галочкой методы очистки -> Взломать замки

Это сработало для меня.

космото91
источник
1

Я пробовал разные вещи, в том числе «Очистить» нижние подкаталоги. Наконец, я попытался обновить папку верхнего уровня. Ничего. Затем я прочитал совет «Очистить верхний уровень». Я пробовал это. Часть очистки прошла успешно, но замок остался. Мое решение заключалось в том, чтобы вернуться на верхний уровень, очистить, а затем очистить каждую красную (!) Папку, до которой я мог перейти . После того, как все было "почищено", обновление прошло отлично. Совет о "взломе блокировки" тоже выглядит неплохо, за исключением того, что кто-то из вашей команды может иметь законный доступ к вещам.

Джим
источник
0

Мне удалось заблокировать себя из файла в svn - не знаю, как - но когда я попытался (повторно) получить блокировку (черепаха показывала параметр «Получить блокировку» для файла), он пожаловался, что уже был замок. Я попытался удалить файл и зафиксировать изменение каталога - результат тот же. Я пробовал CleanUp (включая обновление оверлея), но это тоже не удалось.

Решением было зайти в репозиторий Tortoise, найти файл и использовать функцию прерывания блокировки .

user1844643
источник
0

Если это ( https://stackoverflow.com/a/11764922/3045875 ) не помогает: проверьте, не мешает ли другой инструмент SVN, и закройте инструмент. Мы только что потратили пару часов на слияние с использованием TortoiseSVN и получили десятки таких ошибок блокировки. В конце концов мы поняли, что интеграция Matlabs SVN мешает, и после закрытия все уладилось.

RMK
источник
-1

Решение для Windows:

https://sourceforge.net/projects/win32svn/

1. Загрузите его, затем добавьте в системный путь.

2. Перейдите в рабочий каталог, выполните команды «svn clean» и «svn update» в cmd.

сяолюзи
источник