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
svn status | grep '^M' | sed -e 's/^.//' | xargs rm
svn update
수정 된 모든 파일을 제거합니다. 파일과 디렉토리가 추가되었을 때 되돌리기와 관련하여 문제가 발생한 것을 기억합니다.
창에있는 경우 다음 for 루프는 작업 공간에 대한 커밋되지 않은 모든 변경 사항을 되돌립니다.
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
커밋되지 않은 모든 변경 사항과 버전이없는 모든 개체를 제거하려면 2 개의 루프가 필요합니다.
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
for /F "tokens=1,*" %%d in ('svn st') do (
svn rm --force "%%e"
)
'Programing' 카테고리의 다른 글
Python으로 Windows에서 실행 중인지 어떻게 확인합니까? (0) | 2020.05.15 |
---|---|
원래 배열을 변경하지 않고 어떻게 배열을 정렬 할 수 있습니까? (0) | 2020.05.15 |
Flexbox : 행당 4 개 항목 (0) | 2020.05.15 |
얕은 복사, 딥 카피 및 일반 할당 작업의 차이점은 무엇입니까? (0) | 2020.05.15 |
ASP.NET MVC Html.ValidationSummary (true)는 모델 오류를 표시하지 않습니다 (0) | 2020.05.15 |