답변:
TortoiseSVN 사용 :
svn cleanup --remove-unversioned --remove-ignored .
svn status --no-ignore | grep '^[I?]' | cut -c 9- | while IFS= read -r f; do rm -rf "$f"; done
여기에는 다음과 같은 기능이 있습니다.
--xml
옵션을 사용 하고 결과 xml 출력을 구문 분석하는 것 외에는 수행 할 수있는 것이 많지 않습니다 )svn status
파일 이름 앞에 다른 상태 문자를 인쇄 하더라도 작동 합니다 (파일을 추적하지 않기 때문에 경우에 대비하여 ...)svnclean
다음을 포함 하는 쉘 스크립트를 사용합니다 .
#!/bin/sh
# make sure this script exits with a non-zero return value if the
# current directory is not in a svn working directory
svn info >/dev/null || exit 1
svn status --no-ignore | grep '^[I?]' | cut -c 9- |
# setting IFS to the empty string ensures that any leading or
# trailing whitespace is not trimmed from the filename
while IFS= read -r f; do
# tell the user which file is being deleted. use printf
# instead of echo because different implementations of echo do
# different things if the arguments begin with hyphens or
# contain backslashes; the behavior of printf is consistent
printf '%s\n' "Deleting ${f}..."
# if rm -rf can't delete the file, something is wrong so bail
rm -rf "${f}" || exit 1
done
IFS
. 이전 상태로 다시 변경할 필요가 없습니다 . 당신이 할 때 VARNAME=value command
의 할당 value
에 VARNAME
만은 실행하는 동안 적용 command
(적용되지 않는 일부 예외를 제외하고 read
). 자세한 내용 은 POSIX 사양 및 이 POSIX 버그 보고서 를 참조하십시오.
나는 이것이 그 위에 오래된하지만의 경우 다른 사람 비틀 거림, SVN 지원의 최신 버전 (1.9 이상)을 알고 --remove-unversioned
, 예 svn cleanup . --remove-unversioned
.
https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-options
svn cleanup . --remove-ignored
Powershell을 사용하여 Yanal-Yves Fargialla 및 gimpf의 답변 수정 (그러나 Stackoverflow에서 원래 게시물에 댓글을 달 수는 없음) :
powershell -Command "&{(svn status --no-ignore) -match '^[\?i]' -replace '^.\s+' | rm -recurse -force}
이렇게하면 캐럿 ( "^")이 추가되어 줄의 시작을 지정하여 문자 "i"를 포함하는 모든 파일과 일치하지 않습니다. 또한 -recurse 및 -force에 대한 플래그를 rm에 추가하여이 명령을 대화식이 아니므로 스크립트에서 사용할 수있게하십시오.
Powershell 사용시 :
(svn status --no-ignore) -match '[?]' -replace '^.\s+' | rm
명령 행에서 :
powershell -Command "&{(svn status --no-ignore) -match '[?]' -replace '^.\s+' | rm}"
-match '[\?i]' -replace '^.{8}'
대신 파일 이름 이 공백으로 시작 되어 무시 된 파일을 삭제 하더라도 올바르게 작동하는 것이 좋습니다 .
powershell -Command "&{(svn status --no-ignore) -match '[\?i]' -replace '^.{8}' | remove-item -force -recurse}"
이 oneliner는 나를 위해 일합니다 (리차드 한센의 대답에 따르면 놀랍게도 공백이있는 파일에는 작동하지 않았습니다).
svn status --no-ignore | grep '^[I?]' | cut -c 9- | xargs -d"\n" -I{} rm {}
-fr
로 rm
명령을 SVN 상태 --no-무시 | grep '^ [I?]'| 컷 -c 9- | xargs -d "\ n"-I {} rm -fr {}
TortoiseSVN 사용 :
실제로 훌륭하고 깨끗한 솔루션은 아니지만 내가 아는 가장 빠른 방법은 (Windows)입니다.
무시 된 파일이있는 팁을위한 pkh에 감사합니다.
누군가는 Windows 명령 줄에서 할 수 없다고 말했습니다.
황소.
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")
한 줄로 작성하고 단일 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 명령 줄 (GUI 도구에 대해서는 확실하지 않음)로 삭제할 수 없습니다.
http://www.guyrutenberg.com/2008/01/18/delete-unversioned-files-under-svn/
다른 (잔인한) 방법은 변경 사항을 커밋하고 폴더에서 모두 삭제 한 후 다시 체크 아웃하는 것입니다.