[svn] 로컬로 누락 된 모든 파일을 삭제하는 SVN 명령

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누락 된 모든 파일에 파이프 할 수 있습니다. 전체 작업 복사본을 실행할 것인지 아니면 하위 집합 만 실행할 것인지에 따라 현재 작업 디렉터리를 적절한 디렉터리 나 하위 디렉터리로 설정할 수 있습니다.

  1. svn 상태 실행
  2. “!”로 시작하는 줄을 검색하십시오. (잃어버린)
  3. # 2 출력의 “–force”(svn argument) 및 두 번째 열 (파일 이름)을 인쇄하십시오.
  4. 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
  1. svn status
  2. 누락 된 파일에 대해서만 필터링
  3. 느낌표를 잘라
  4. 후행 공백 필터링
  5. 선행 인용 추가
  6. 후행 견적 추가
  7. svn remove 각 파일

답변

방금 SVN 작업 복사본에서 모든“누락 된”파일을 제거하십시오 .

svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )


답변

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}'`