[svn] SVN 작업 디렉토리에서 모든 변경 사항을 제거하려면 어떻게해야합니까?

SVN 작업 디렉토리가 있습니다. 해당 디렉토리를 약간 변경하면에 표시됩니다 svn status. 그러나 모든 변경 사항을 제거하고 명령 줄을 사용하여 트렁크에서 모든 것을 가져올 수있는 방법이 있습니까?



답변

svn revert -R .
svn up

현재 디렉토리와 그 아래의 모든 항목을 재귀 적으로 되 돌린 다음 최신 버전으로 업데이트합니다.


답변

다른 사람들의 답변을 조합 하여이 솔루션을 만들었습니다.

정상적인 로컬 SVN 변경 사항 되돌리기

svn revert -R .

다른 변경 사항을 제거하고 공백 등이있는 파일 / 폴더 제거를 지원합니다.

svn status --no-ignore | grep -E '(^\?)|(^\I)' | sed -e 's/^. *//' | sed -e 's/\(.*\)/"\1"/' | xargs rm -rf

SVN에서 최신 파일을 얻는 것을 잊지 마십시오

svn update --force


답변

svn revert -R .
svn cleanup . --remove-unversioned


답변

변경 사항이 없으면 항상 철저하고 게을러서 할 수 있습니다 …

rm -rf *
svn update

그러나 공간에서 핵 공간 옵션이 원하는지 확실 하지 않으면 실제로는 그렇게 하지 마십시오 . 이것은 모든 빌드 크래프트, 임시 파일 및 SVN이 무시하는 것들을 제거하는 이점이 있습니다.

더 올바른 해결책은 revert 명령을 사용하는 것입니다.

svn revert -R .

-R을 사용하면 서브 버전이 현재 작업 디렉토리의 내부와 아래에있는 모든 것을 재귀하고 되돌립니다.


답변

여기에 대한 답변 중 어느 것도 내가 원하는 것이 아닙니다. 내가 생각해 낸 것은 다음과 같습니다.

# Recursively revert any locally-changed files
svn revert -R .

# Delete any other files in the sandbox (including ignored files),
# being careful to handle files with spaces in the name
svn status --no-ignore | grep '^\?' | \
    perl -ne 'print "$1\n" if $_ =~ /^\S+\s+(.*)$/' | \
    tr '\n' '\0' | xargs -0 rm -rf

Linux에서 테스트되었습니다. Cygwin에서 작동하지만 xargs를 '\0'공백 대신에 분할 할 수있는 GNU 관련 확장에 의존합니다 (믿습니다) .

위 명령의 장점은 샌드 박스를 재설정하기 위해 네트워크 활동이 필요하지 않다는 것입니다. 당신은 당신이 전에 가지고 있던 것을 정확히 얻었고, 당신 은 모든 변화잃습니다 . (누군가이 코드가 자신의 작업을 파괴한다고 비난하기 전에 면책 조항) 😉

이 스크립트를 연속 통합 시스템에서 사용하여 일부 테스트를 실행 한 후 깨끗한 빌드가 수행되도록합니다.

편집 : 이것이 모든 버전의 Subversion에서 작동하는지 확실하지 않습니다. svn status명령의 형식이 항상 일관된 지 확실하지 않습니다 . 이러한 블랭킷 rm명령 을 사용하는 명령과 마찬가지로 사용자의 책임하에 사용하십시오 .


답변

svn revert 는 로컬 변경 사항을 취소합니다.


답변

다음 명령을 사용하여 모든 로컬 변경 사항을 되돌릴 수 있습니다.

svn st -q | awk '{print $2;}' | xargs svn revert