Если у меня есть рабочая копия репозитория Subversion, есть ли способ удалить все неверсированные или проигнорированные файлы в этой рабочей копии с помощью одной команды или инструмента? По сути, ищу аналог SVN git clean
.
Подойдет либо командная строка, либо решение с графическим интерфейсом (для TortoiseSVN).
svn
tortoisesvn
ignore
Ник Мейер
источник
источник
Ответы:
Использование TortoiseSVN:
источник
svn cleanup --remove-unversioned --remove-ignored .
Это имеет следующие особенности:
--xml
опции и синтаксического анализа результирующего вывода xml)svn status
перед именем файла печатает другие символы состояния (чего не должно быть, потому что файлы не отслеживаются, но на всякий случай ...)Я использую сценарий оболочки с именем,
svnclean
который содержит следующее:источник
IFS
возвращаться к тому, что было раньше. Когда вы это сделаетеVARNAME=value command
, присвоениеvalue
toVARNAME
применяется только во время выполненияcommand
(с некоторыми исключениями, которые не относятся кread
). См. Спецификацию POSIX и этот отчет об ошибках POSIX для получения более подробной информации.Я знаю, что это старый, но если кто-то еще наткнется на него, более новые версии (1.9 или новее) поддержки svn
--remove-unversioned
, напримерsvn cleanup . --remove-unversioned
.https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-options
источник
svn cleanup . --remove-ignored
Этот лайнер может вам помочь:
Используйте осторожно!
источник
svn status --no-ignore
для записи игнорируемых файлов.Изменение ответов Янала-Ива Фаргиаллы и gimpf с помощью Powershell (но не разрешено комментировать исходное сообщение Stackoverflow):
Это добавляет карат («^»), чтобы указать начало строки, избегая сопоставления всех файлов, содержащих букву «i». Также добавьте в rm флаги -recurse и -force, чтобы сделать эту команду неинтерактивной и использовать ее в сценарии.
источник
Многие вещи в SVN можно сделать по-разному, о чем свидетельствуют различные ответы командной строки, приведенные здесь. С появлением версии 1.7 для TortoiseSVN появился еще один метод, который, по сути, обеспечивает более точное разрешение, чем предоставленный Стефаном, позволяя вам выбирать не версионные файлы отдельно от игнорируемых файлов. Просто выберите,
TortoiseSvn >> Clean up...
чтобы открыть этот диалог.источник
С PowerShell:
Из командной строки:
источник
-match '[\?i]' -replace '^.{8}'
вместо этого, который работает правильно, даже если имя файла начинается с пробела, а также удаляет игнорируемые файлы.code
@ (svn status --no-ignore) -match '[\? I]' -replace '^. {8}' | rm `. Разобрался с помощью этого постаpowershell -Command "&{(svn status --no-ignore) -match '[\?i]' -replace '^.{8}' | remove-item -force -recurse}"
Этот oneliner работает для меня (на основе ответа Ричарда Хансена, который на удивление не работал для файлов, содержащих пробелы):
источник
-fr
вrm
команду: svn status --no-ignore | grep '^ [I?]' | вырезать -c 9- | xargs -d "\ n" -I {} rm -fr {}Использование TortoiseSVN:
Не совсем красивое и чистое решение, но самый быстрый способ, который я знаю (в Windows).
Спасибо pkh за подсказку с проигнорированными файлами.
источник
Это похоже на другие ответы, но на самом деле файлы игнорируются (обратите внимание на 'I' в RE):
источник
Кто-то сказал, что вы не можете сделать это из командной строки Windows.
Бык.
Делает это одной строкой и не требует ни одного инструмента GNU. :)
источник
for /f "tokens=2 delims= " %%I IN ('svn st --no-ignore ^| findstr /R "^[I?]"') DO (DEL /S /F /Q /A:H "%%I" & rmdir /S /Q "%%I")
%%
более%
вы не можете удалить их только с помощью командной строки SVN (хотя не уверен в инструментах графического интерфейса), если вы работаете в системе Linux, это может помочь:
http://www.guyrutenberg.com/2008/01/18/delete-unversioned-files-under-svn/
Другой (жестокий) метод - зафиксировать изменения, удалить все из папки и снова оформить заказ.
источник