작업 복사본을 재설정하는 Subversion 명령이 있습니까?
작업 복사본을 저장소에 저장된 상태로 정확히 "재설정"하는 단일 Subversion 명령이 있습니까? 같은 뭔가 git reset --hard
나 (하, 하드 힘내 재설정 중 버전없는 파일을 삭제하지 않습니다!) rm -rf wc && svn co <url> wc
.
업데이트 : 작업 복사본에서 추가 파일을 삭제하지 않기 때문에 간단한 되돌리기를 수행하지 않았습니다. 데이터를 다시 다운로드 할 필요없이 작업 복사본을 삭제하고 다시 체크 아웃하는 것과 동일한 것을 정말로 원합니다. (분명히 커밋되지 않은 모든 변경 사항을 잃어도 괜찮습니다.)
다음과 같이 재귀 적으로 되돌릴 수 있습니다.
svn revert --recursive .
(크리에이티브 스크립트를 작성하지 않고는) 소스 제어하에 있지 않은 것을 제거 할 방법이 없습니다. 나는 당신이 할 수있는 가장 가까운 방법은 모든 파일을 반복하고 grep의 결과를 사용 svn list
하고 grep이 실패하면 삭제하는 것이라고 생각합니다.
편집 : 크리에이티브 스크립트에 대한 솔루션은 여기에 있습니다 : Subversion 버전이 지정되지 않은 파일을 자동으로 제거
따라서 revert
연결된 질문에서 가장 적합한 답변과 를 결합하는 스크립트를 만들 수 있습니다 .
추적 된 파일을 되돌리려면
svn revert . -R
추적되지 않은 파일을 정리하려면
svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')
는 -rf
/ 처음에는 무서워 보이지만, 한 번 이러한 이유로하지 않습니다 이해한다 수 있습니다 :
- 완전히 추적되지 않은 디렉토리 만 전달 된 패턴과 일치합니다.
rm
- 는
-rf
다른 이들 디렉토리가 제거되지 않습니다 필요합니다
되 돌린 다음 정리하려면 (OP 질문)
svn revert . -R && svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')
일관된 사용 편의성
.bash_aliases에 영구 별칭 추가
alias svn.HardReset='read -p "destroy all local changes?[y/N]" && [[ $REPLY =~ ^[yY] ]] && svn revert . -R && rm -rf $(awk -f <(echo "/^?/{print \$2}") <(svn status) ;)'
다음을 사용하여 로컬 사본 내의 모든 것을 삭제하십시오.
rm -r your_local_svn_dir_path/*
그리고 아래 명령을 사용하여 모든 것을 재귀 적으로 되돌립니다.
svn revert -R your_local_svn_dir_path
파일이 로컬 SVN 메타 데이터에서 복원되기 때문에 전체 디렉토리를 삭제 한 다음 새로 체크 아웃하는 것보다 빠릅니다. 네트워크 연결도 필요하지 않습니다.
svn revert . -R
모든 것을 재설정합니다.
svn revert path/to/file
단일 파일
버전이 지정되지 않은 파일을 삭제하고 변경 사항을 되돌립니다.
svn revert D:\tmp\sql -R
svn cleanup D:\tmp\sql --remove-unversioned
밖:
D D:\tmp\sql\update\abc.txt
순수 Windows cmd / bat 솔루션 :
svn cleanup .
svn revert -R .
For /f "tokens=1,2" %%A in ('svn status --no-ignore') Do (
If [%%A]==[?] ( Call :UniDelete %%B
) Else If [%%A]==[I] Call :UniDelete %%B
)
svn update .
goto :eof
:UniDelete delete file/dir
IF EXIST "%1\*" (
RD /S /Q "%1"
) Else (
If EXIST "%1" DEL /S /F /Q "%1"
)
goto :eof
OS에서 작업 복사본을 삭제하고 다시 확인하는 것이 가장 간단하지만 단일 명령은 아닙니다.
매우 빠르고 간단하며 원하는 것을 정확하게 수행합니다.
svn status | awk '{if($2 !~ /(config|\.ini)/ && !system("test -e \"" $2 "\"")) {print $2; system("rm -Rf \"" $2 "\"");}}'
/(config|.ini)/는 내 목적을위한 것입니다.
svn 명령에 --no-ignore를 추가하는 것이 좋습니다.
추적되지 않은 파일을 제거하려면
I was able to list all untracked files reported by svn st
in bash by doing:
echo $(svn st | grep -P "^\?" | cut -c 9-)
If you are feeling lucky, you could replace echo
with rm
to delete untracked files. Or copy the files you want to delete by hand, if you are feeling a less lucky.
(I used @abe-voelker 's answer to revert the remaining files: https://stackoverflow.com/a/6204601/1695680)
참고URL : https://stackoverflow.com/questions/6204572/is-there-a-subversion-command-to-reset-the-working-copy
'Programing' 카테고리의 다른 글
목록 항목을 인쇄하는 Pythonic 방법 (0) | 2020.08.14 |
---|---|
할당 전에 참조 된 로컬 (?) 변수 (0) | 2020.08.14 |
JUnit을 사용하여 환경 변수에 의존하는 코드를 테스트하는 방법은 무엇입니까? (0) | 2020.08.13 |
콘솔에서 시스템 쉘을 실행하기위한 Eclipse 플러그인이 있습니까? (0) | 2020.08.13 |
중첩 된 구조체 초기화 (0) | 2020.08.13 |