Как убрать контроль Subversion для папки? - PullRequest
252 голосов
/ 01 октября 2008

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

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

Ответы [ 28 ]

255 голосов
/ 01 октября 2008

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

154 голосов
/ 01 октября 2008

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

  find . -iname ".svn" -print0 | xargs -0 rm -r
118 голосов
/ 01 октября 2008

Попробуйте svn export .

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

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

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

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

32 голосов
/ 01 октября 2008

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

22 голосов
/ 08 мая 2012

В Linux команда:

svn delete --keep-local file_name
21 голосов
/ 03 февраля 2011

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

svn export --force .

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

9 голосов
/ 04 сентября 2012

Без подоболочек в 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".
8 голосов
/ 03 февраля 2015

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

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

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

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

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

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

enter image description here

8 голосов
/ 01 августа 2013

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

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
7 голосов
/ 01 октября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...