Programming

subversion의 소스코드를 가장 오래된 버전으로 되돌리기

subversion local copy를 가진 디렉토리의 이름을 dir_aaa라고 하자. 변경 사항은 전혀 없는 상태에서 최초 버전(리비전 번호는 r1로 가정)으로 되돌리려 하는데, 다음과 같은 에러가 발생할 수 있다.

(아마 이런 에러의 원인은 과거 리비전이 repository에서 삭제되었거나, repository에 손상이 발생했다거나, repository에 trunk 디렉토리를 만들지 않아서가 아닐까 짐작해본다.)

$ svn up -r1 dir_aaa

svn: REPORT request failed on ‘/repository/!svn/vcc/default’

svn: Cannot replace a directory from within

버전을 하나씩 과거로 되돌리면 된다.

$ for v in `svn log dir_aaa | grep “^r[0-9]” | cut -d’ ‘ -f1`; do svn up -$v dir_aaa; done

이 방법은 실제 히스토리 상으로 가장 오래된 버전으로 되돌리는 것은 실패할지라도 접근가능한 가장 오래된 버전으로 되돌리는 것은 가능하다.

답글 남기기