Ответ 1
Большинство решений, которые отправляются здесь, не могут обрабатывать папки с пробелами. Вот почему мы используем это:
svn status --no-ignore | grep '^[?I]' | sed "s/^[?I] //" | xargs -I{} rm -rf "{}"
Мне нравится удалять все файлы в моей рабочей копии, которые не известны в репозитории svn.
Эффективно, как будто я просто сделал чистую проверку, но Id скорее не придется перезагружать все файлы.
Ближайший думаю, что я пришел к этому...
rm -rf `svn st | grep "^?" | cut -d" " -f8`
Но это кажется неуклюжим, и я не полностью доверяю ему, поскольку несогласованность в выходе может удалить dirs вне svn.
"svn export" - это не то, что я ищу, потому что я не очищаю источник, чтобы его упаковать, я просто хочу удалить в основном треск (*.pyc, *.orig, *.rej, svn-commit. tmp, *.swp).
Есть ли лучший способ сделать это, помимо чистого выбора?
Большинство решений, которые отправляются здесь, не могут обрабатывать папки с пробелами. Вот почему мы используем это:
svn status --no-ignore | grep '^[?I]' | sed "s/^[?I] //" | xargs -I{} rm -rf "{}"
http://www.cuberick.com/2008/11/clean-up-your-subversion-working-copy.html
Вот что я делаю, когда хочу, чтобы моя рабочая копия была идентична репо:
svn st | awk '{print $2}' | xargs rm -rf
Это приведет к удалению всех файлов, которые не синхронизируются с репозиторием. Затем просто обновите, чтобы восстановить все, что вы удалили, и обновиться.
svn up
... Убедитесь, что у вас нет изменений или добавлений! Более безопасная команда может быть:
svn st | grep '?' | awk '{print $2}' |xargs rm -f
... Как насчет игнорируемых файлов? Например.
svn st --no-ignore
svn st --no-ignore | awk '{print $2}' | xargs rm -rf
svn st --no-ignore | grep '?' | awk '{print $2}' |xargs rm -f
svn status --no-ignore | grep '^[?I]' | awk '{print $2}' | xargs rm -rf
Позвольте мне объяснить.
Получить статус файлов в репозитории и распечатать их один за другим до стандартного вывода в массив
svn status
Это включает файлы, которые обычно игнорируются svn
--no-ignore
Сопоставьте строки, содержащие либо? или я как статус. Я имею в виду проигнорированный файл и? означает файл, не находящийся под управлением svn.
| grep '^[?I]'
Это печатает вторую переменную в массиве, которая является именем файла
| awk '{print $2}'
Это удаляет файлы с напечатанными именами файлов
| xargs rm -rf
Cheers, Loop
Используйте это:
svn status --no-ignore | grep ^I | awk '{print $2}' | xargs rm -rf
Получено из commandlinefu.
Удалить каждый файл, который не имеет атрибута readonly? Удостоверьтесь, что у вас нет вещей, проверенных раньше...