2011-02-03 3 views
72

У меня есть каталог со многими подкаталогами. В каждой папке есть папка subversion (.svn).Команда для рекурсивного удаления всех .svn-каталогов в Windows

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

Или мне нужно создать сценарий или сделать это вручную?

+4

Если это не должно быть сценарием, я бы просто искал «.svn» в корневой папке, затем выделил все результаты и удалю. –

+1

Вы также можете быть заинтересованы в команде экспорта svn (http://svnbook.red-bean.com/en/1.0/re10.html), которая копирует каталог в другое место, но без всех каталогов .svn. –

+0

@JB Nizet: Вы должны создать ответ, чтобы люди могли голосовать, а не добавлять комментарии. Комментарии для комментирования вопроса, например, когда что-то неясно –

ответ

28

Используйте команду svn export для экспорта рабочей копии Subversion в новую «чистую» структуру каталогов, в которой нет каталогов .svn.

+4

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

+0

вы можете сделать это после 'svn export' –

+0

Это сработало для меня. Я использовал svn export [RepoPath] [NewPath] – user489041

45

Сделайте это в PowerShell.

ПРИМЕЧАНИЕ: Это рекурсивно, поэтому убедитесь, что вы находитесь в правильном каталоге!

gci -fil '.svn' -r -force | ri -r -force 

Вот остальная часть сценария очистки исходного дерева.

gci -fil 'bin' -r -force | ri -r -force 
gci -fil 'obj' -r -force | ri -r -force 
gci -fil '_ReSharper*' -r -force | ri -r -force 
gci -fil '*.suo' -r -force | ri -r -force 
gci -fil '*.user' -r -force | ri -r -force 
+0

Примечание. Если у вас есть пути с более чем 260 символами, вы получите исключение RemoveTimeListException. – bluelDe

156

Сделать Litte пакетный файл со следующей строкой и выполнить его из родительской папки, в которой имеются .svn каталоги.

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G" 

Вы также можете оформить строку ниже прямо из командной строки:

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%G" 
+1

Большое спасибо. вот чего я точно хочу. я почему-то отключился от своего svn-репозитория и у меня не было времени сделать R & D по этой причине. теперь я использую Filezilla для загрузки полного проекта без какой-либо .svn-папки с этой командой. снова спасибо –

+0

Спасибо за это. Очень ценится. Мне было дано дерево папок с .svn, но на самом деле оно не используется. Поиск в Win для .svn (независимо от отображения скрытых файлов вкл. Или выкл.) Возвращает нулевые результаты. Запрос командной строки сделал трюк! –

+1

Все upvotes для вас sir –

9

Если вы хотите удалить все вложенные папки с именами .svn в окнах затем создать пакетный файл с таким содержимым :

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i" 
) 

сохранить его в файле del_All_Dot_SVN_Folders.cmd. Запустить его. Все готово.

http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/ Благодаря

Помните выше код .svn а код в ссылке только * Svn поэтому его лучше иметь .svn, чтобы случайно не иметь нежелательный эффект.

8

Просто введите .svn в поле поиска Проводника, затем выберите и удалите все результаты поиска (см. Комментарий JB Nizet). Разумеется, этот метод также может быть использован для быстрого удаления каталогов obj и bin, например. при организации svn-архивов.

Хотя ОП запросил решение для командной строки, он также указал на использование Windows и считал удаление вручную, поэтому метод File Explorer все еще можно рассматривать, особенно потому, что это самый быстрый метод и не полагается на «инструменты», такие как Экспорт svn.

Хотя OP уже выбрал принятый ответ, этот ответ может быть полезен другим. По крайней мере, это было полезно для меня, долгое время Linux/Windows пользователь, который предпочитает командные строки и первым узнал об окне поиска на этот пост :-)

explorer screenshot with searchbox

-1

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

"find: ./.svn: No such file or directory" 

Чтобы избавиться от этой ошибки, вы можете использовать команды поиска как:

cd [dir_to_delete_svn_folders] 
find . -depth -name .svn -exec rm -fr {} \; 
0

Я знаю его слишком поздно, чтобы ответить на этот вопрос, но я предполагаю, что есть простой способ IF имеет затмение и плагин svn, установленный на вашем затмении. Щелкните правой кнопкой мыши по проекту, перейдите в Team-> disconnect. Он откроет всплывающее окно, в котором вы выбираете первый вариант: «Также удалите метаинформацию SVN из файловой системы». Это автоматически удалит все папки SVN вместе с файлами свойств svn, которые вы иногда можете забыть при удалении только папок .svn!

Смежные вопросы