Как рекурсивно удалить .svn каталоги?

3710
djsmiley2k

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

7
Какая платформа - Windows? Linux / UNIX? Что-то другое? Chris J 12 лет назад 1
возможный дубликат [Команда для рекурсивного удаления всех каталогов .svn в Windows] (http://stackoverflow.com/questions/4889619/command-to-recursively-remove-all-svn-directories-on-windows) Chris J 12 лет назад 0
Это на Linux, Debian 12 лет назад 0
Забавно, но мне это нужно было утром, когда что-то передавалось в ртутный репозиторий. Я закончил тем, что добавил все и удалил папки .svn перед фиксацией. И теперь вы задаете этот вопрос, очевидно, решение Неда - это то, что мне было нужно ... Tom Wijsman 12 лет назад 0

3 ответа на вопрос

13
Ned Batchelder

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

$ svn export /tmp/copy_of_my_tree 
это не будет работать для репо, у вас нет доступа (например, заархивированы и отправлены вам по почте) mbx 12 лет назад 0
9
Oliver Charlesworth

Если вы работаете в Linux (или эквивалентном), вы можете просто сделать следующее:

find . -name .svn -exec rm -rf {} \; 
Или, что лучше, и, как упоминает Писквор, используйте `-type d`, чтобы убедиться, что вы случайно не удалили что-то, кроме каталога. JdeBP 12 лет назад 2
7
Piskvor

В любой современной UN * X-подобной системе (Linux, Mac OS X, FreeBSD):

find . -type d -name '.svn' -exec rm -rf {} \; 

находить:

  • в текущем каталоге
  • каталоги
  • с именем .svn
  • и когда найден, беги rm -rfна каждом
Это почти каноническая идиома. Вы забыли `xargs`, чтобы уменьшить количество необходимых процессов` rm`: `find. -тип d -name '.svn' -print0 | xargs -0 rm -rf --` JdeBP 12 лет назад 4
Чтобы добавить комментарий @ JdeBP: Некоторые реализации `find` также поддерживают` -exec rm -rf {} + `или даже` -delete` для достижения того же самого. grawity 12 лет назад 0