Как удалить элемент управления Subversion для папки?

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

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

28 ответов


кроме того, если вы используете 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 или инструментов командной строки).


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

  find . -iname ".svn" -print0 | xargs -0 rm -r

попробовать экспорт svn.

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

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

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

TortoiseSVN также имеет экспорт, который ведет себя точно так же.


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


в Linux команда:

svn delete --keep-local file_name

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

svn export --force .

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


без подрешеток в 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".

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

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

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

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

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

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

enter image description here


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

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf

использовать :

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

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


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


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

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/


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


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


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

  • Удалить Все .svn
  • Удалить Все, Кроме Root .svn
  • Удалить Локальные Файлы РЕПО

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


ЛУЧШИЙ И САМЫЙ ПРОСТОЙ СПОСОБ

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

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

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

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

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

cd / Пользователи / Имя пользователя / документы / Apps_Developing/...

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

ls

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

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

    svn delete --keep-local fileName_toDelete

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



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


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

rm -r `find /path/to/foo -name .svn`

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

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

Он удаляет его из локального репозитория.


эта команда работает для меня:

найти . - iname ".СВН" -print0 команды | команды xargs -0 РМ -Р


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

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped

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

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

    Правой Кнопкой Мыши Подрывная деятельность Экспорт

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

    экспорт в папку /var/tmp / имя проекта пресс-экспорт ждать покажет полную спросите, хотите ли вы открыть его, откройте на лету

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


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


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


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


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

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