Запрещенные папки в Subversion
Что, черт возьми, означает "загораживать", когда вы пытаетесь зарегистрироваться в Subversion? Я вижу две папки красного цвета с текстом "заблокирован". Я не понимаю, что это значит где-то в документах.
Когда я пытаюсь cleanup
Команда, я получаю "имя папки не является рабочим каталогом". Это папка, которую я только что создал в VS, и когда я пытаюсь добавить ее в Subversion, она выдает мне эту ошибку. Все остальные папки в порядке.
16 ответов
Это происходит, когда вы удалили или переместили подкаталоги.svn (не обращаясь к командам SVN), поэтому SVN имеет искаженное представление рабочей копии.
Сначала попробуйте выполнить очистку, и если это не решит проблему, верните (или обновите) каталог, чтобы восстановить папки подкаталога.svn.
Не зная, что вызывает это, решение может быть в том, чтобы экспортировать рабочую копию (всю кассу у вас есть локально) куда-нибудь еще.
Если вы используете tortoisesvn, вы получаете возможность "экспортировать не версионные файлы", но я думаю, что если вы делаете это из командной строки, он экспортирует только версионные файлы, так что у вас может быть немного трудоемкая задача - копировать не версионные файлы вручную,
После этого проверьте чистую рабочую копию, а затем поместите экспортированную резервную копию поверх нее. Очень важно, чтобы в резервной копии не было папок.svn.
Я видел эти ошибки раньше, когда люди извлекали рабочие копии внутри других рабочих копий или чего-либо еще, что повреждает записи.svn.
Была та же проблема и исправлена так:
- переименован в прерванный каталог
- создал каталог с его оригинальным именем в SVN (например, svn mkdir)
- обновил родительскую папку, чтобы вновь созданный каталог появился в моей рабочей копии
- скопировал файлы с заблокированного в недавно созданный каталог и передал их
Если вы работаете в системе *nix, убедитесь, что вы не создали файл, добавьте его в SVN, затем удалите его, заменив его папкой с тем же именем. Не помогает ОП, но, надеюсь, это избавит кого-то от стресса.
Это означает, что по какой-то причине возник конфликт во время операции. Проверьте, существует ли существующий неверсионный файл или папка с тем же именем, что и версионный.
(Перефразировано из файла справки клиента Tortoise SVN)
Я также видел это в 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
У меня ничего не получилось, поэтому я сделал следующее:
- экспортировано с неверсионными файлами в новом месте
- переименовал существующую папку
- переместил папку из места экспорта в проект
- переименовал новую папку
- добавить, зафиксировать
- удалил старую, переименованную папку
- переименовал новую папку
- совершить
Существуют различные варианты сценария, которые могут вызвать эту ситуацию. Вот один пример:
Я закончил с! отметьте каталог, который был переименован из 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.
Столкнулся с этой проблемой на машине с Windows.
Я проверил каталог, прежде чем я проверил весь проект, которому он принадлежал. Это вызвало для меня проблему с препятствиями.
Я просто удалил эту папку и запустил обновление от пользователя root (этой папки). Работало нормально.
Такие команды, как очистка и т. Д., Не работали для меня.
Несколько слов предостережения:
- Это дорого, если папка большая.
- Это приведет к потере всех ваших изменений, если они есть.
Всего наилучшего.
Я столкнулся с этой проблемой, когда вставлял папку с подкаталогами в свою рабочую копию с помощью своего FTP-клиента - я знал, что облажался, как только нажал кнопку переноса... опасности работы слишком поздно.
Я перепробовал все вышеизложенные предложения и другие найденные онлайн безрезультатно. Каждая опция выдает ошибку, что мой каталог был заблокирован и операция не может быть выполнена.
Я вошел в свою копию Time Machine, восстановил каталог и был в порядке. Я очистил рабочую копию в качестве меры предосторожности, правильно обновил свои файлы и вернулся к работе.
Это также может произойти, когда вы обновляете Subversion до версии, которая не поддерживается XCode.
Это произошло со мной, когда я заменил файл на папку с таким же именем. Решается удалением старого файла, фиксацией, а затем добавлением нового. Немного хакерский, но у меня сработало:)
Вот самый простой (и самый безопасный) способ, который я нашел, чтобы решить эту проблему:
- Временно переименуйте поврежденный файл или каталог (или родительский каталог), который заблокирован (например, добавьте ".backup").
- Удалить любой
.svn
каталоги внутри переименованного каталога (если применимо). svn revert
переименованный (и теперь отсутствующий) объект из шага 1.svn delete
перевернутый объект.- Переименуйте резервную копию с шага 1 обратно на ее первоначальное имя.
- Добавьте и верните переименованный объект обратно в svn как новый объект.
У нас часто бывает несколько веток на ходу одновременно, чтобы избавить меня от необходимости переключаться или настраивать конфигурацию IIS, я проверяю каждую ветку в отдельной папке. Затем я использую связывание каталогов для подключения этих папок к основному пути, настроенному в IIS.
Так что для меня связанный каталог всегда имеет желтый восклицательный знак и помечен как заблокированный. Я считаю, что это потому, что он был технически создан / перемещен за пределы SVN.
Я удалил.svn в заблокированных каталогах и обновил его извне. Тогда внешняя команда svn распознает эти файлы.
Я получаю этот "заблокированный" статус для каталогов, когда я делаю обновления CMS (WordPress или Drupal) через веб-интерфейс - приложение не знает, что его код на самом деле является рабочей копией subversion, поэтому при обновлении плагина он удаляет этот плагин каталог (включая .svn
каталог) и сбрасывает в новый каталог из новой версии плагина.
Чтобы получить это .svn
dir back, из каталога, содержащего заблокированный dir. Я делаю заказ с --force
, Например, если plugin_dir
помечен "~", из его родительского каталога я запускаю:
svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
Все файлы, которые уже есть, остаются одними и помечаются буквой "E" на выходе команды извлечения (помечается буквой "M" при запуске svn status
).
Мне иногда приходится возвращаться и добавлять любые файлы, которые были новыми с обновлением; или удалите файлы, которые должны быть удалены как часть обновления, так как они снова появились, когда я сделал заказ. Я считаю, что они отмечены как "А" на кассе, но последующее svn status
не буду упоминать их.
Я столкнулся с этим в Eclipse, где некоторые файлы были отмечены красным восклицательным знаком. Проблема была в случайной папке.svn в исходном каталоге. Я удалил папку.svn, обновил Eclipse и смог проверить файлы.