Как убрать контроль Subversion для папки?

259

У меня есть папка, c:\websites\testи она содержит папки и файлы, которые были извлечены из хранилища, которое больше не существует. Как заставить Subversion перестать отслеживать эту папку и любые подпапки и файлы?

Я знаю, что могу просто удалить .svnпапку, но на многих слоях есть много подпапок.

Брайан Боатрайт
источник
1
Если вы используете TortioseSVN, я написал сообщение в блоге, в котором показан самый быстрый способ сделать это. В моем посте есть пошаговые инструкции с картинками. Этот пост доступен по адресу http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Чад Кэмпбелл,
Обратитесь к моему ответу, который помог многим. stackoverflow.com/questions/4889619/…
Аджит Вазе

Ответы:

258

Кроме того, если вы используете TortoiseSVN, просто экспортируйте в текущее местоположение рабочей копии, и он удалит папки и файлы .svn.

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

Обновленный ответ для Subversion 1.7:
В Subversion 1.7 рабочая копия была значительно переработана. Существует только одна папка .svn, расположенная в основании рабочей копии. Если вы используете 1.7, то просто удалить папку .svn и ее содержимое - это простое решение (независимо от использования TortoiseSVN или инструментов командной строки).

crashmstr
источник
8
Ссылка теперь 404. Новая ссылка: tortoisesvn.net/docs/release/TortoiseSVN_en/… Перегрузка при экспорте выглядит как особый случай, который удаляет только файлы .svn, если вы говорите также о сохранении неверсионных файлов.
lilbyrdie
после успешного удаления для возврата значка папки в обычном режиме перезапустите сервер SVN, и все
3ehrang
Сервер не будет иметь ничего общего с иконками папок черепахи. Но если они не обновляются, вы можете попытаться убить процесс TSVNCache. Он должен перезагрузиться автоматически.
crashmstr
1
В моем случае я удалил папку git также вместе с папкой .svn
Афтаб Ахмед Калхоро
155

В Linux это будет работать:

  find . -iname ".svn" -print0 | xargs -0 rm -r
Макс Кантор
источник
10
Работает на Mac OS тоже.
Эмиш
2
перед запуском команды обязательно введите правильный каталог, например: cd mySVNdirectoryWhereToRemoveTheSubfolders
Camaleo
Я получаю rm: отсутствует операнд
зима
119

Попробуй свн экспорт .

Вы должны быть в состоянии сделать что-то вроде этого:

svn export /path/to/old/working/copy /path/to/plain/code

А затем просто удалите старую рабочую копию.

TortoiseSVN также имеет функцию экспорта , которая ведет себя так же.

pkaeding
источник
4
Спасибо за предоставление ответа, который работает с командной строкой. :) Отлично подходит для тех из нас, кто использует терминалы.
epochwolf
16
Если я правильно понимаю, эта команда будет экспортировать только те файлы, которые в данный момент находятся под контролем Subversion. Так что, если некоторые файлы или папки еще не были добавлены определенно в Subversion или были удалены из управления Subversion, вы потеряете эти файлы при экспорте ...
Крис
@ Крис, да, ты прав. Это будет экспортировать только версионные файлы. Это хорошо для экспорта кода и оставления после него производных артефактов и т. Д., Но это не может быть подходящим инструментом для каждой работы.
pkaeding
4
Стоит отметить, что это все еще работает, если сервер SVN давно ушел; Если вы попытаетесь экспортировать с использованием VisualSVN или Tortoise SVN, то попытайтесь связаться с сервером, но версия командной строки, приведенная выше, сработала для меня без работы сервера SVN.
Дейв
Я получаю сообщение об ошибке:svn: E000002: Can't stat '/.classpath': No such file or directory
Игорь Ганапольский
32

Если вы работаете в Windows, то вы можете выполнить поиск в этой папке, .svnи это перечислит их все. Нажатие Ctrl+ Aвыберет все из них, а нажатие delete удалит все «надоедливые» вещи Subversion.

graham.reeds
источник
действительно надоедливо ;-) Мне просто нужно почистить его, и я верну его в новый репозиторий.
Брайан Боатрайт
2
это также отличный способ удалить даже самые надоедливые папки расширений главной страницы!
Брайан Боатрайт
Скачайте и используйте утилиту «Все для поиска», чтобы быстро находить и удалять папки .svn :) voidtools.com Только для Windows!
endo64
23

В Linux команда выглядит так:

svn delete --keep-local file_name
bunteKnete
источник
21

Я обнаружил, что вам даже не нужно копировать во временное местоположение. Вы можете сделать

svn export --force .

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

IJ Кеннеди
источник
4
Я не знаю, что это такое, но у меня почему-то не получилось.
Овен VII
1
Эта команда работает только для рабочей копии, а не для папки внутри нее. Может быть вариант такой же ...?
2
Это не будет работать, если установленная версия Subversion - 1.7, а репозиторий - для 1.6. Тем не менее, «svn upgrade» может быть запущено до экспорта, и это будет работать.
Питер Мортенсен
11

Без вложенных оболочек в Linux для удаления .svnпапок:

find . -name .svn -exec rm -r -f {} +

rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".
user1439712
источник
8

Ни один из этих ответов не был удовлетворительным для моей ситуации. Я на Subversion 1.8, и у меня была рабочая копия, в которой была только одна .svnпапка в самой первой папке, root. Однако я хотел удалить несколько веток из рабочей копии.

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

Решение? svn update --set-depth exclude <dir>

Это «обновление» на стороне клиента, исключающее конкретный каталог. Это можно найти в руководствах на svnbook.com . Короче говоря, это описывает это как:

Начиная с Subversion 1.6, вы можете выбрать другой подход. Во-первых, проверьте каталог в полном объеме. Затем запустите команду svn update --set-глубина exclude в одном подкаталоге, который вас не интересует.

Для TortoiseSVN вы также можете сделать то же самое, щелкнув правой кнопкой мыши по папке, которую вы не хотите, щелкните Update to revision..., а затем установите для параметра «Глубина обновления» значение Exclude, как показано на этом снимке экрана:

введите описание изображения здесь

brazilianldsjaguar
источник
Вы не можете удалить рабочие копии корневых папок.
JaBe
8

Это хорошо сработало для меня:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
Маникандан С
источник
Это такое простое решение, но работает как шарм.
Игорь Ганапольский
@IgorGanapolsky Я рад. Мое решение вам помогло.
Manikandan S
пока никто не бежал mkdir -p ';echo Hi Johnny;/.svn'- в этом случае вызов {} должен все еще работать
Никогда не спать снова
7

Используйте svn exportкоманду:

cd c:\websites\test
svn export c:\websites\test_copy

Все файлы под контролем версий будут экспортированы. Дважды проверьте, чтобы убедиться, что вы ничего не пропустили.

1800 ИНФОРМАЦИЯ
источник
4

Просто удалите папку .svn внутри требуемой папки, тогда элемент управления будет автоматически удален.

Ramudu
источник
3

В Windows вы можете добавить быструю ссылку для этого в контекстное меню вашего проводника. Просто запустите этот скрипт реестра:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

Это добавит пункт под названием «Удалить папки SVN» в меню правой кнопки мыши. Это удалит все папки .svn в этой папке и все подпапки.

Источник (немецкий): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/

Тобиас
источник
2

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

andy.gurin
источник
2

Для тех, кто использует NetBeans с SVN, есть опция 'Subversion> Export'.

Ladik
источник
2

Есть также хороший маленький инструмент с открытым исходным кодом под названием SVN Cleaner, который добавляет три параметра в контекстное меню проводника Windows:

  • Удалить все .svn
  • Удалить все, кроме рута .svn
  • Удалить локальные файлы репо
Мартин Буберл
источник
2

В Windows 7 можно просто открыть папку проекта и выполнить поиск «.svn», если скрытые файлы включены, и удалить все найденные папки .svn.

Unknown_Guy
источник
1
Win Win XP, которая прекрасно работает. Обратите внимание, что с SVN 1.7 .svnкаталоги больше не существуют, разбросанные вокруг. Для более подробной информации ознакомьтесь с subversion.apache.org/docs/release-notes/1.7.html#wc-ng
Жоао Коэльо
1

Ответ на удивление прост - экспортируйте папку в себя ! TortoiseSVN обнаруживает этот особый случай и спрашивает, хотите ли вы сделать рабочую копию неверсированной. Если вы ответите «да», управляющие каталоги будут удалены, и у вас будет простое неверсированное дерево каталогов.

Srikanth
источник
1
Разве это не просто повторное цитирование принятого ответа, данного 5 лет назад?
Бен Терли
1

Другое (более простое) решение для Linux:

rm -r `find /path/to/foo -name .svn`
Dougvj
источник
1

ЛУЧШИЙ И ЛЕГКИЙ ПУТЬ

Если вы думаете, что можете победить с помощью простой магической команды, вы провалились! SVN действительно хитрый и всегда так или иначе возвращается с новым сообщением об ошибке в XCode. Рано или поздно обещай ... так что умнее!

Как вы знаете, обычная и лучшая практика в XCode - это удаление файла на панели проекта слева. Если вы пропустили его и каким-то образом удалили в Finder, у вас проблемы. Большая проблема! Но вы могли бы решить это и сэкономить время, если вы делаете это хорошо.

Во-первых, вам нужно удалить ссылку SVN на файл или папку, прежде чем вы сможете удалить его на самом деле

  1. Если бы вы могли просто вернуть файл / папку из корзины или отменить последний шаг, когда вы удалили его, то ...

  2. Идите в Терминал - да, старый добрый терминал - и идите в это место. Лучше всего просто наберите cd, затем перетащите папку / файл в терминал. Вы получите нечто подобное

cd / Users / Имя пользователя / Documents / Apps_Developing / ...

Вы можете проверить, где вы с

Ls

Команда, которая перечисляет ваши файлы.

  1. Затем вам нужно удалить ссылку SVN с помощью команды SVN:

    svn delete --keep-local fileName_toDelete

Это удалит файл из репозитория SVN, НО вы должны удалить его вручную в Finder.

сапожник
источник
0

Я использую rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped
yeeking
источник
0

Пользователи среды IDE NetBeans могут сделать это, как показано ниже:

  1. Откройте проект SVN в вашей IDE
  2. Выберите проект

    щелкните правой кнопкой мыши Subversion Export

  3. В диалоговом окне

    экспорт в папку / var / tmp / имя_проекта нажмите экспорт ждать покажет завершено спросит хотите ли вы открыть это открыть на лету

  4. Теперь вы можете переключиться на Git :)

Питер Мортенсен
источник
0

Моя идея состоит в том, чтобы удалить папку .svn, а затем переместить все другие файлы в новую папку. Это так просто.

Alvin567
источник
0

Когда вы используете ОС Windows, перейдите в папку и проверьте, открыты ли скрытые файлы, а затем вы увидите там папку SVN . Просто удалите эту папку.

dush88c
источник
0

svn export отлично работает, но я думаю, что это:

svn rm --keep-local <folder/file>

Он удаляет его из вашего локального хранилища.

Хавьер Салинас
источник
0

Жизненно важным моментом, когда вы используете оболочку для удаления папок .svn, вам нужен аргумент -depth, чтобы запретить команде find входить в только что удаленный каталог и отображать сообщения об ошибках, например, например:

"find: ./.svn: Нет такого файла или каталога"

В результате вы можете использовать findкоманду, как показано ниже:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;
fatihk
источник
0

Из командной строки Windows:

rmdir .svn /s /q
Майкл Росс
источник
0

Используйте следующее:

svn rm --keep-local <folder name> удалить папку и все в ней.

svn rm --keep-local <folder name>/* сохранить папку, но удалить все в папке.

Вот пример того, что происходит:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json
Райан
источник
-1

В Windows 10 нам нужно перейти Windows Explorer, а затем перейти Viewи установить флажок View hidden files.

Затем перейдите к папке, с которой SVN связан в проводнике Windows, и удалите .svnпапку / файл.

Praseeda
источник
Хотя я редактировал форматирование, этот ответ на самом деле не отвечает на вопрос. Пользователь уже знает, как удалить базовую .svnпапку, но он спрашивает обо всех подпапках. Пожалуйста, внимательно прочитайте вопрос.
CodeMouse92,