Поврежденные папки в Subversion

Что означает "препятствие", когда вы пытаетесь проверить Subversion? Я вижу две папки в красном цвете с текстовым статусом "заблокирован". Я не вижу, что это значит в документах.

Когда я пытаюсь выполнить команду cleanup, я получаю: "имя папки не является рабочим каталогом". Это папка, которую я только что создал в VS, и когда я пытаюсь добавить ее в Subversion, она дает мне эту ошибку. Все остальные папки в порядке.

Ответ 1

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

Сначала попробуйте очистить, и если это не решит его, верните (или обновите) каталог, чтобы восстановить папки подкаталога .svn.

Ответ 2

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

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

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

Я видел эти ошибки до того, как люди проверили рабочие копии внутри других рабочих копий или что-то еще, что искажает записи .svn.

Ответ 3

Имел ту же проблему и исправил ее так:

  • переименован в заблокированный каталог
  • создал каталог с его исходным именем в SVN (например, svn mkdir)
  • обновлена ​​родительская папка, поэтому вновь созданный каталог появится в моей рабочей копии.
  • скопировал файлы из заблокированного во вновь созданный каталог и выполнил их

Ответ 4

Если вы находитесь в системе * nix, убедитесь, что вы не создали файл, добавьте его в SVN, а затем удалите его, заменив его на папку с тем же именем. Не помогает OP, но, надеюсь, это спасет кого-то от стресса.

Ответ 5

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

(Парафраз из файла справки клиента SVN Tortoise)

Ответ 6

Ничего не работало для меня, поэтому я сделал следующее:

  • экспортируется с помощью непереведенных файлов в новое место
  • переименована в существующую папку
  • переместил папку из местоположения экспорта в проекте
  • переименована в новую папку
  • добавить, зафиксировать
  • удалена старая, переименованная папка
  • переименована в новую папку
  • commit

Ответ 7

Существуют различные варианты сценария, которые могут вызвать эту ситуацию. Вот один пример:

Я закончил с! в каталоге, который был переименован с www на www_a без использования команды "svn rename":

  • Переименуйте текущий каталог, который несет исходное имя, например, www_b
  • Переименуйте www_a обратно на www
  • Убедитесь, что вы выполнили 'svn update' или 'svn revert' в каталоге www
  • Удалить обновленный каталог www без использования 'svn delete'
  • Перейдите в родительский каталог и выпустите 'svn update'
  • Это восстановит исходный каталог www
  • На этот раз используйте 'svn rename' для переименования www в www_a
  • Переименуйте www_b обратно на www
  • Используйте 'svn add', чтобы добавить его в репозиторий

На этом этапе вы должны получить правильный рабочий каталог svn. И узнайте кое-что о том, как разрешить путаницу в каталоге svn.

Ответ 8

Столкнувшись с этой проблемой на компьютере под управлением Windows.

Я проверил каталог, прежде чем я проверил весь проект, к которому он принадлежал. Это вызвало "затрудненную" проблему для меня.

Я просто удалил эту папку и запустил обновление от root (из этой папки). Он работал нормально.

Команды вроде очистки и т.д. не работали для меня.

Некоторое слово предостережения:

  • Это дорого, если папка большая.
  • Это приведет к потере всех изменений, если они есть.

Все самое лучшее.

Ответ 9

Я также видел это в Windows, когда создал символическую ссылку на каталог репозитория; в этом случае корень репозитория рассматривается как "затрудненный". Однако это не влияет.

Шаги для воспроизведения:

  • Оформить свое репо

    svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
    
  • Убедитесь, что ваш каталог в порядке

    cd plugin_dir
    svn st -u
    

    Выход должен быть

    Status against revision: 1234
    
  • Создайте символическую ссылку (которая показывает проблему)

    cd ..
    mklink /d link_dir plugin_dir
    cd link_dir
    svn st -u
    

    Выход будет

    ~           1234  .
    Status against revision: 1234
    

Ответ 10

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

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

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

Ответ 11

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

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

Ответ 12

Я получаю этот "заблокированный" статус в каталогах, когда я обновляю CMS (WordPress или Drupal) через веб-интерфейс - приложение не знает, что его код на самом деле является рабочей копией подрывной работы, поэтому при обновлении плагина удаляет этот каталог плагина (включая каталог .svn) и падает в новый каталог из новой версии плагина.

Чтобы получить этот .svn dir обратно, из каталога, содержащего заблокированный каталог. Я делаю чек с помощью --force. Например, если plugin_dir отмечено "~", из его родительского каталога я запускаю:

svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir

Любые файлы, которые уже там оставлены в покое, помечены как "E" на выходе команды checkout (помечены как "M" при запуске svn status).

Мне иногда приходится возвращаться и добавлять файлы, новые с обновлением; или удалять файлы, которые должны быть удалены как часть обновления, поскольку они снова появились, когда я сделал проверку. Я считаю, что они отмечены как "A" в кассе, но последующий svn status не упоминает их.

Ответ 13

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

Ответ 14

Это также может произойти, если вы обновите свою подрывную версию до версии, которую XCode не поддерживает.

Ответ 15

Здесь самый простой (и самый безопасный) способ, который я нашел, чтобы решить это:

  • Временно переименуйте поврежденный файл или каталог (или родительский каталог), который заблокирован (например, добавьте ".backup" ).
  • Удалите все каталоги .svn внутри переименованного каталога (если применимо).
  • svn revert переименованный (и теперь отсутствующий) объект с шага 1.
  • svn delete возвращенный объект.
  • Повторно переименуйте резервную копию с шага 1 обратно на свое первоначальное имя.
  • Добавить и зарегистрировать переименованный объект обратно в svn как новый объект.

Ответ 16

Это произошло со мной, когда я заменил файл на папку с тем же именем. Решено, удалив старый файл, зафиксируйте, а затем добавьте новый. Немного взломанный, но работал у меня:)