SVN 관련 이슈사항
728x90
안녕하세요. MD워시퍼예요.
일을 하다보니, 생각지 못한 일들로 문제가 발생하게 되고,
그 문제를 해결하기 위해, 노력하다가 나중에 까먹을까봐 계속 블로그에 올리게 되네요.
오늘은 프로젝트단위로 일하는 SI개발자로써, 이미 알고 계시는 분들도 계시겠지만, 새롭게 시작하는 개발자들이나 관리자들이 도움이 될만한 것을 제공하고자 이렇게 글을 써봅니다
외부에서 일하다가, 내부에서 일하는 경우가 종종 일어나게 되면, SVN이 내부에 하나, 외부에 하나 존재해야할 경우가 있을 것입니다.
한번 svnadmin 프로그램을 활용하여, 전체 백업을 하고, 전체 복원을 하는 경우는 조금만 찾아보면 해결방법을 알 수 있습니다(혹시 못 찾는 사람을 위하여, 추후 링크를 달아놓도록 하겠습니다)
저는 기존에 복원을 한 상태에서, 외부와 내부의 svn서버의 버전이 동일하지 않아, 증분 백업을 한 후, 증분 복원을 진행해보고자 하려고 했는데, 생각보다 쉽지 않더라고요.
에러는 다음과 같이 표출되더고요.
<<< 새로운 트랜잭션 시작, 리비전 1565에 기반함.
svnadmin: 파일이 이미 존재함: 파일시스템 '/home/svn/md82/db', 트랜잭션 '1564-17s', 경로 'TEST'
* 경로 추가중 : TEST ...
버전을 아무리 낮추고, 높여도, 계속 이 에러..
<<< 새로운 트랜잭션 시작, 리비전 1564에 기반함.
svnadmin: 파일이 이미 존재함: 파일시스템 '/home/svn/md82/db', 트랜잭션 '1564-17t', 경로 'TEST'
* 경로 추가중 : TEST...
그래서 조금 검색을 해보았더니 이런 내용이 있더라고요.
You have to start over with a fresh repository and load the transactions from the original repository first.
svnadmin dump recovered-repo > dumpfile
svnadmin load new-repo < dumpfile
Then load the new transactions from the end of the current repository you've been working in since the crash. Be sure to specify your revisions to only take the new stuff.
svnadmin dump current-repo -r firstnewrev:lastnewref --incremental > newdumpfile
svnadmin load new-repo < newdumpfile
Because I don't have any repositories to test with, I haven't actually tested this so be careful and don't mess with anything you don't have backed up.
dump를 할 때, --incremental 기능을 사용하지 않았었는데, 한번 회사 복귀하면, 덤프 뜨고, 테스트를 진행해봐야 할 것 같습니다.
※ 추후에 상단의 내용을 위해서, 결국 해결을 했는데, SVN의 증분백업과 증분복원 을 참고하시기 바랍니다.
일을 하다보니, 생각지 못한 일들로 문제가 발생하게 되고,
그 문제를 해결하기 위해, 노력하다가 나중에 까먹을까봐 계속 블로그에 올리게 되네요.
오늘은 프로젝트단위로 일하는 SI개발자로써, 이미 알고 계시는 분들도 계시겠지만, 새롭게 시작하는 개발자들이나 관리자들이 도움이 될만한 것을 제공하고자 이렇게 글을 써봅니다
외부에서 일하다가, 내부에서 일하는 경우가 종종 일어나게 되면, SVN이 내부에 하나, 외부에 하나 존재해야할 경우가 있을 것입니다.
한번 svnadmin 프로그램을 활용하여, 전체 백업을 하고, 전체 복원을 하는 경우는 조금만 찾아보면 해결방법을 알 수 있습니다(혹시 못 찾는 사람을 위하여, 추후 링크를 달아놓도록 하겠습니다)
저는 기존에 복원을 한 상태에서, 외부와 내부의 svn서버의 버전이 동일하지 않아, 증분 백업을 한 후, 증분 복원을 진행해보고자 하려고 했는데, 생각보다 쉽지 않더라고요.
에러는 다음과 같이 표출되더고요.
<<< 새로운 트랜잭션 시작, 리비전 1565에 기반함.
svnadmin: 파일이 이미 존재함: 파일시스템 '/home/svn/md82/db', 트랜잭션 '1564-17s', 경로 'TEST'
* 경로 추가중 : TEST ...
버전을 아무리 낮추고, 높여도, 계속 이 에러..
<<< 새로운 트랜잭션 시작, 리비전 1564에 기반함.
svnadmin: 파일이 이미 존재함: 파일시스템 '/home/svn/md82/db', 트랜잭션 '1564-17t', 경로 'TEST'
* 경로 추가중 : TEST...
그래서 조금 검색을 해보았더니 이런 내용이 있더라고요.
You have to start over with a fresh repository and load the transactions from the original repository first.
svnadmin dump recovered-repo > dumpfile
svnadmin load new-repo < dumpfile
Then load the new transactions from the end of the current repository you've been working in since the crash. Be sure to specify your revisions to only take the new stuff.
svnadmin dump current-repo -r firstnewrev:lastnewref --incremental > newdumpfile
svnadmin load new-repo < newdumpfile
Because I don't have any repositories to test with, I haven't actually tested this so be careful and don't mess with anything you don't have backed up.
dump를 할 때, --incremental 기능을 사용하지 않았었는데, 한번 회사 복귀하면, 덤프 뜨고, 테스트를 진행해봐야 할 것 같습니다.
※ 추후에 상단의 내용을 위해서, 결국 해결을 했는데, SVN의 증분백업과 증분복원 을 참고하시기 바랍니다.