Рабочая копия XXX заблокирована и очистка не удалась в SVN

Я получаю эту ошибку, когда я делаю svn update:

рабочая копия XXXXXXXX заблокирована, пожалуйста выполните команду "Cleanup"

когда я запускаю cleanup, я получаю

Cleanup не удалось обработать следующие пути: XXXXXXXX

Как мне выйти из этого цикла?

30 ответов


одним из подходов было бы:

  1. копировать отредактированные элементы в другое место.
  2. удалить папку, содержащую путь к проблеме.
  3. обновите содержащую папку через Subversion.
  4. скопировать файлы или объединить изменения по мере необходимости.
  5. Commit

еще один вариант-удалить папку верхнего уровня и снова проверить. Надеюсь, до этого не дойдет.


для меня трюк состоял в том, чтобы бежать svn cleanup в верхней части моей рабочей копии, а не в папке, где я работал все время до возникновения проблемы.


посмотреть в свой .svn папка, в ней будет файл под названием lock. Удалите этот файл и вы сможете обновить. В каталог каждого подкаталога. Их также необходимо удалить. Это можно сделать как пакет довольно просто из командной строки, например

find . -name 'lock' -exec rm -v {} \;

обратите внимание, что вы вручную редактировать файлы в .svn папка. Они были помещены туда не просто так. Эта причина может быть ошибкой, но если нет, вы можете повредите вашу локальную копию.

источник:http://www.svnforum.org/2017/viewtopic.php?p=6068


в моем случае я решил это, вручную удалив запись в SQLite".svn\wc " запись блокировки файла в таблице WC_LOCK.

Я открыл файл " WC " с помощью редактора SQLite и выполнил

delete from WC_LOCK

screenshot showing all entries purged from WC_LOCK

после eakkasкомментарий, вам может потребоваться удалить все записи из WORK_QUEUE таблица, а также.


самый простой способ когда-либо:

  1. на родительский каталог(папка) of проект.
  2. пре щелкните правой кнопкой мыши
  3. нажать на в TortoiseSVN нажмите клавишу очистить...
  4. диалог очистки появится автоматически
  5. выберите Clean up working copy status, Break locks, Fix time stamps, Vacuum pristine copies, Refresh shell overlays, Include externals
  6. Pres OK

вы успешно выполнили свою работу.

Проверьте снимки экрана для справки.

первый этап:

enter image description here

Шаг второй: Включите опцию блокировки разрыва (второй флажок во всплывающем окне очистки) enter image description here

надеюсь, это поможет вам много.


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

Если это ваша проблема...:

есть разные способы исправить это, в зависимости от того, как/почему каталог был заменен.

в любом случае, вам, вероятно, понадобится:

A) Переименуйте существующий каталог во временное имя

B) сделайте SVN revert для восстановления каталога, удаленного из файловой системы, но не из SVN

оттуда вы либо

A) скопируйте соответствующие файлы в каталог, который был удален

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


для меня ни одно из вышеперечисленных решений не сработало. Я нашел решение, взломав замки. Когда я выполнял очистку svn, я выбрал "Break Locks " вместе с"Clean up working copy status".

enter image description here


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

  1. перейдите в корневую папку,
  2. щелкните правой кнопкой мыши и очистки
  3. проверьте все доступные опции
  4. нажмите ok

после очистки это позволит вам обновить до последней версии.


для меня, на самом деле, это была вина черепахи, своего рода. Черепаха просто жаловалась "не может очистить, запустить очистку", но когда я запустил командную строку (SVN cleanup), она ясно сказала мне, что не может удалить некоторые используемые файлы, решение которых было очевидным. Как только я закрыл Visual Studio (который держал файлы открытыми), очистка работала нормально.

другие программы также могут держать файлы открытыми в репо, вызывающих эту проблему. Excel, держащий xls открытым, был виновником в другом случае может быть разумно закрыть все программы, которые могут использовать что-либо в РЕПО или даже перезагрузить, чтобы заставить программы закрыть, а затем снова попытаться очистить.


У меня была эта проблема, потому что внешние папки не хотят быть связанными с существующей папкой. Если вы добавите строку Свойства svn: externals, где местом назначения является существующая (версионная или не версионная) папка, вы получите SVN Woring Copy locked error. Здесь очистка также скажет вам, что все в порядке, но все равно обновление не будет работать.

решение: удалите тревожную папку из репозитория и сделайте обновление в корневой папке, где svn: externals свойство установлено. Это создаст папку и все снова будет хорошо.

эта проблема возникла для меня, потому что svn: externals для файлов требует, чтобы папка назначения контролировалась версией. После того, как я заметил, что это не работает в разных репозиториях, я перешел из внешних файлов во внешнюю папку и попал в этот беспорядок.


самый простой способ сделать это-показать скрытые папки, а затем открыть .Папки в SVN. Вы должны увидеть нулевой файл КБ с именем "lock" удаление этого исправит проблему


Я столкнулся с той же проблемой, используя SVN 1.7, и ни одно из исправлений, упомянутых выше, не работало.

прежде всего, убедитесь, что вы резервное копирование всего отредактированного контента.

потратив пару часов (не перезагрузил все, так как моя ветка имеет размер более 6 ГБ), я обнаружил, что в файле БД есть файл под названием "wc".SVN папка вашего филиала.

откройте файл БД с помощью любого менеджера БД (я использовал плагин SQLite manager firefox) и перейдите к WC_LOCK таблица. В этой таблице будут записи для приобретенных блокировок. Удалите записи из таблицы, и все готово:)


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


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


Я сделал это, просто создав новую папку, проверив проект, скопировав обновленные файлы в новую папку.

Это было исправлено с новой выпиской.


вы используете TortoiseSVN и только что обновили? У меня была эта проблема раньше при переходе с 1.4 на 1.5 и не перезагрузке. (Попробуйте перезагрузить компьютер).

причина, по которой вам нужно перезагрузиться, заключается в том, что файл кэша становится все фанки.

в противном случае, чтобы просто двигаться дальше, экспортировать рабочую копию в новую папку (не копируем .SVN скрытые папки), повторно проверить проект и переместить весь код обратно, а затем продолжить фиксацию.


просто удалить .папки svn, затем запустите очистку в Родительском каталоге. Отлично работает!!


в версиях под Mac OS: Действие - > очистка блокировки рабочей копии на...


Я часто получаю такой вопрос. Мой шаблон, который вызывает проблемы очистки.

  1. Я открываю файл изображения в viewer.
  2. Я удаляю файл/папку Изображения.
  3. Я пытаюсь зафиксировать / обновить

закрытие Image viewer, где открыт удаленный файл решает проблему. Возможно, другие программы могут блокировать очистку таким же образом.

в целом. Я считаю, что перезагрузка компьютера может помочь в таких случаях.


SVN обычно обновляет свою внутреннюю структуру (.svn / prop-base) файлов в папке до того, как фактические файлы будут извлечены из репозитория. Как только файлы будут извлечены, это будет очищено. Часто ошибка возникает из-за того, что" обновление " не удалось или преждевременно отменено во время выполнения обновления.

  1. проверьте все файлы, перечисленные ниже .svn / prop-базовый каталог
  2. удалите все файлы, которые не находятся под папка
  3. очистка
  4. обновление

теперь обновление должно работать.


была та же проблема, потому что я экспортировал папку под папкой, управляемой версией. Пришлось удалить папку из TortoiseSVN, затем удалить папку из файловой системы (TortoiseSVN не любит неверсионные подпапки ... почему бы и нет???)


Не удаляйте свое решение!

в рамках .SVN папка у вас есть файл под названием lock это 0 байт длиной

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

Это сработало в моем случае


на месте unversioning файлов, и свежий выезд в том же месте, решил эту проблему для меня.

в TortoiseSVN, чтобы сделать на месте unversioning, перетащите корневую папку рабочей копии из списка файлов на себя в дереве каталогов и выберите "SVN экспорт версионных элементов здесь" из всплывающего меню. В TortoiseSVN замечает, что предназначение такое же, как источник, и предлагает unversioning рабочей копии.

после unversioning, сделайте новую проверку в той же папке (которая теперь содержит неверсионную копию всех файлов, которые у вас были). TortoiseSVN предупредит вас, что вы регистрируетесь в существующей папке, но вы можете идти вперед.

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

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


У меня была эта проблема, когда" очистка " работала, но "обновление" продолжало бы терпеть неудачу. Решение, что работал для удаления папки через Проводник Windows, не TortoiseSVN для удаления (которая обозначает удаление, как что-то совершить в хранилище, и тогда я сделал "проверки" по существу "обновление" папку из respository.

дополнительная информация о разнице между O / S delete и SVN delete здесь: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html

в частности:

когда вы TortoiseSVN → Delete файл, он удаляется из вашей рабочей копии немедленно, а также помечается для удаления в репозитории при следующей фиксации.

и:

Если файл удаляется через проводник вместо использования контекстного меню TortoiseSVN, диалоговое окно фиксации показывает эти файлы и позволяет вы также удаляете их из управления версиями перед фиксацией. Однако при обновлении рабочей копии Subversion обнаружит отсутствующий файл и заменит его последней версией из репозитория.


Если вы на Linux, попробуйте следующее:

find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R

запустить cleanup команда в этом каталоге, затем попробуйте обновить.


Я сделал следующее, чтобы исправить мой вопрос:

  1. переименовал папку нарушителя, поместив " _ " перед имя папки.
  2. сделал "очистку" родительской папки.
  3. переименовал папку-нарушитель обратно в исходное имя.
  4. не совершал.

в обозревателе решений щелкните правой кнопкой мыши проект, в открывшемся подменю нажмите subversion и выберите очистка. Это решит проблему, как и для меня. Надеюсь, это сработает.


чтобы сделать уборку

  1. удалить .папка svn.

  2. выполните svncheckout в корневой папке.

  3. попробуйте выполнить операцию очистки.

Это решило мою проблему.


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

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

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


Начать Поиск....Замок...Выделить все файлы и удалить..исправлено