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