SVN에는 디렉토리에서 로컬로 누락 된 모든 파일을 삭제하는 데 사용할 수있는 명령이 있습니까?
또는 누락 된 파일 만 나열하는 방법 (또는 일반적인 경우 상태가 A, D,? 등) 인 방법
답변
TortoiseSVN을 사용하는 경우 수정 확인을 수행 하고 상태 열을 기준으로 정렬 한 후 표시된 모든 항목을 선택하고 missing
마우스 오른쪽 버튼을 클릭하여 상황에 맞는 메뉴를 열고 삭제를 선택하십시오 . 마지막으로 변경 사항을 저장소에 공개하십시오.
Windows를 사용하고 있지만 명령 줄을 선호하고 PowerShell에서 손쉬운 사용을 원한다면이 한 줄짜리가 트릭을 수행합니다.
svn status | ? { $_ -match '^!\s+(.*)' } | % { svn rm $Matches[1] }
즉, 누락 된 파일 (줄 시작 부분에 느낌표로 표시됨)을 표시하는 행으로 만 출력을 필터링하고 연관된 파일 이름을 캡처 한 후 해당 파일 이름에서 수행 svn rm
하십시오.
(블로그 게시물 SVN 작업 복사본에서 모든“누락 된”파일을 제거하면 Unix / Linux와 비슷한 작업 이 수행됩니다.)
답변
Mac ( Darwin ) 또는 Linux를 사용하는 경우 다음 명령의 출력을 svn rm
누락 된 모든 파일에 파이프 할 수 있습니다. 전체 작업 복사본을 실행할 것인지 아니면 하위 집합 만 실행할 것인지에 따라 현재 작업 디렉터리를 적절한 디렉터리 나 하위 디렉터리로 설정할 수 있습니다.
- svn 상태 실행
- “!”로 시작하는 줄을 검색하십시오. (잃어버린)
- # 2 출력의 “–force”(svn argument) 및 두 번째 열 (파일 이름)을 인쇄하십시오.
svn rm
# 3의 출력을 인수로 사용하여 실행
따라서 전체 명령은 다음과 같습니다.
svn st | grep ^! | awk '{print " --force "$2}' | xargs svn rm
참고 문헌 :
답변
svn st | grep ! | cut -d! -f2| sed 's/^ *//' | sed 's/^/"/g' | sed 's/$/"/g' | xargs svn rm
svn status
- 누락 된 파일에 대해서만 필터링
- 느낌표를 잘라
- 후행 공백 필터링
- 선행 인용 추가
- 후행 견적 추가
svn remove
각 파일
답변
답변
Windows 버전의 Paul Martin에게 감사합니다.
공백이있는 Windows 파일도 고려하도록 스크립트를 약간 수정했습니다. 또한 missing.list
파일은 마지막에 제거됩니다.
SVN bin 디렉토리 (%% PATH 환경에서 설정)의 svndel.bat에 다음을 저장하여 명령 프롬프트의 모든 폴더에서 호출 할 수 있습니다.
### svndel.bat
svn status | findstr /R "^!" > missing.list
for /F "tokens=* delims=! " %%A in (missing.list) do (svn delete "%%A")
del missing.list 2>NUL
답변
PowerShell 옵션이 마음에 듭니다. 그러나 Windows 배치 스크립트를 사용하는 경우 다른 옵션이 있습니다.
svn status | findstr /R "^!" > missing.list
for /F "tokens=2 delims= " %%A in (missing.list) do (svn delete %%A)
답변
제거 할 파일에 대해 Linux (bash)에서 작동하는 대안은 경로에 공백이 포함되지 않은 것입니다.
svn delete`svn status | grep! | awk '{print $ 2}'`