본문 바로가기

Management/Linux

[svn] SVN 복구 방법.


대학 후배녀석들이랑 재미삼아 임베디드 관련된 프로젝트를 천천히 진행하고 있습니다. 말이 프로젝트지 만나서 정보교환 및 술자리가 대부분입니다. 가끔 진짜 어쩌다 일합니다. -_- 그냥 친목 단체라 칭하겠습니다.

친목단체의 일원인 후배가 전화를 했습니다. 다급했습니다.
동생왈 : 형 미안해 svn에 있는 내용 내가 뭐좀 한다고 했다가 rm으로 날렀어.. 후후;; 웃으면서 말했죠..
저 : 똑같이 웃으면서 말했습니다. 개.새.끼.니.가.사.람.이.야.

항상 욕으로 시작해서 욕으로 끝나는 정말로 진정한 친목단체입니다..-_-;

일단 복구는 해야겠구... 어쩐나 하고 생각하고 있었습니다.
제 리눅스 컴퓨터에 자동으로 cron으로 저녁에 하루에 번씩 받아오도록 해놓았기 때문에 일단 제꺼를 기반으로
복구하기로 결정을 했습니다.

일단 실수로 삭제할 경우에는 당황하지 말기 바랍니다.
ㅇ 임시 디렉토리를 하나 만든다.
ㅇ svn co < 저장소 > 실행하여 임시 디렉토리에 HEAD버젼의 소스를 받는다.
ㅇ svn merge -r HEAD:[삭제 이전의 reversion] <저장소>를 실행하여 현재 HEAD버젼과 삭제되기 이전
    버전과의 merge을 시도한다.
ㅇ 로컬에만 적용이 된것이므로 나머지 내용에 대해서 svn commit을 해주면 반영이 됩니다.

ex) reversion : 10223번에서 실수로 삭제할 경우 svn://xxx.xxx.xxx.xxx/project/em 를 삭제하였다면

1. 서버에서 할일
    - 임시 디렉토리를 생성 
      ㅇ svnadmin create --fs-type -fsfs project

2. 클라이언트에서 할일.
    - 임시 디렉토리를 내려받는다.
      ㅇ svn co svn://xxx.xxx.xxx.xxx/project/ ( HEAD 버젼의 내용을 받습니다.- 그냥 받기만 하시면 됩니다.모르시면)
      ㅇ svn merge -r HEAD:10223 svn://xxx.xxx.xxx.xxx/project 해주시면 됩니다.
      ㅇ 마지막으로 svn commit 을 해주어야만 내용에 대해서 복구가 가능합니다.