본문 바로가기

SVN/tortoise SVN

tortoise SVN setup

tortoise SVN setup ( SVN Client )


SVN Server 설치는 여기를 참조하세요

SVN 클라이언트(tortoise SVN) 다운로드

SVN 서버가 어떤 시스템에 설치되고 이용자 등록이 된 상태라면 SVN 클라이언트 측에서 다음과 같은 일들을 할 수 있다.

1. import : 서버측에 프로젝트 구성파일이 아직 없을 때, 클라이언트 측에서 SVN서버의 저장소에 최초로 프로젝트 구성파일들을 저장한다.

2. check out : 클라이언트측에는 프로젝트 파일이 아직 없는 상태에서 프로젝트를 시작하기 위해 SVN 서버의 저장소로부터 클라이언트 측으로 프로젝트 구성파일들을 복사해온다 (프로젝트 시작시 한번만 수행)

3. update : 서버와 클라이언트 측에 동일한 파일이 있을 때, 서버측의 내용(신버전)을 클라이언트 측(구버전)에 반영한다.

4. commit : 서버와 클라이언트 측에 동일한 파일이 있을 때, 클라이언트측의 내용을 서버측의 저장소에 반영한다. 반영에 성공하면 Revision이 1 증가한다

5. add : 서버에는 없는 새 파일을 생성해서 서버로 올릴 때 add 명령으로 추가한 후에 commit 해야 한다

6. delete : 서버측에 등록된 파일을 삭제할 때 사용한다. 삭제 후 반드시 commit 을 해야 한다. 클라이언트측 파일은 그냥 삭제한면 된다

7. revert : commit 수행 직후의 상태로 되돌려 놓는다. commit 수행 이전으로 되돌아 갈 수는 없다.


동일한 파일을 A, B 팀원이 공유하면서 함께 개발하는 환경에서 A, B 팀원이 동일버전을 다운로드하여 작업을 수행하던 중에 A 팀원이 자신의 코드를 서버에 반영하려면 commit 명령을 수행하면 된다. 그러면 소스코드의 버전 한 단계 올라가는데, 이후에 B 팀원이 자신의 코드를 서버에 반영하기 위해 commit 명령을 수행하면 이미 상위 버전의 코드가 서버에 있기 때문에 충돌 에러가 발생하게 된다
그러므로 commit 수행하기 전에 update 를 수행하여 서버의 있는 코드를 클라이언트에 코드에 반영하여 동일버전으로 만든 다음에 commit 을 수행하면 된다.
commit 하기 전에는 반드시 update를 수행하는 것이 좋다

update를 수행하지 않고 commit 을 수행하다가 발생하는 충돌오류에는 Resolve 메뉴가 나타나므로 Resolve를 클릭하고 OK를 클릭하면 해결된다







설치를 마치면 다음과 같이 탐색기에서 특정 폴더에 마우스 우측을 눌렀을 때 하위에뉴 중에 SVN 관련 항목이 나타나면 된다



언어팩을 설치하고 다시 탐색기에서 마우스 우측을 눌러 TortoiseSVN > Settings 를 선택하고 언어를 한국어로 설정해준다.


언어팩을 설치하고 위처럼 언어를 한국어로 설정해주면 다음과 같이 탐색기에서 마우스 우측을 눌렀을 때 메뉴들이 한글로 보이는 것을 확인할 수 있다


위와같은 절차를 통해 SVN 클라이언트를 설치를 마쳤고, 설치된 SVN 클라이언트를 통하여 SVN 서버에 접속하는 절차에 대해 알아본다.

탐색기에서 마우스 우측을 누르고 TortoiseSVN > 저장소 브라우저를 선택한다


VisualSVN 서버에서 설정한 Repository URL을 그대로 입력하고 확인버튼을 누른다


VisualSVN 서버에 등록된 사용자의 아이디와 암호를 입력하고 인증정보저장을 선택하고 확인을 누른다


TortoiseSVN 에서 저장소 등록을 마치면 아래와 같이 마우스 우측을 눌러서 다양한 메뉴를 실행할 수 있게 된다

하단에 있는 확인 버튼을 누르고 나가면 된다.


SVN 서버측에 아직 아무런 프로젝트도 등록되지 않은 상태라면 최초로 프로젝트를 올려야 하는데 SVN에서는 사용하는 용어로는 임포트( IMPORT ) 라고 한다.



SVN 서버에 최초로 파일이 임포트되면 리비전:1 으로 등록이 된다


개발자의 컴퓨터에서 SVN 서버측에 접속하여 프로젝트 파일을 내려받기 위해서는 Tortoise SVN 이 설치된 컴퓨터에서 서버에 등록된 사용자로 로그인하여 Check Out 을 실행하면 된다. 

최초로 소스를 서버로 임포트한 장본인도 서버로부터 다시 체크아웃을 실행해야 하며 체크아웃 결과 Tortoise SVN에 의해서 생성된 로컬 폴더안에서 Update, Commit 등의 명령을 사용할 수가 있다. 


아래의 윈도우에서 [체크아웃 받을 디렉토리]가 있는데 Tortoise SVN 은 이 디렉토리에서 마우스 우측을 이용할 경우 Update, Commit 등의 모든 기능을 제공하게 된다.



체크아웃 결과 선택된 폴더 안에 서버측의 저장소 이름과 동일한 폴더가 생성되고 그 안에 구성 파일들이 저장되어 있는 것을 확인할 수 있다.
그 소스파일 중에서 하나를 에디터로 열고 그 내용을 약간 변경하여 저장하고 그 파일을 선택하고 마우스 우측을 눌러보면 다음과 같은 메뉴를 볼 수 있다


위에서 코드를 변경하여 서버에 반영해야 하는데, 최종적으로 commit 명령을 해주면 서버에 반영이 된다. 그러나 커밋하기 전에 누군가 먼저 커밋하여 서버의 리비전이 이미 올라간 경우도 있기 때문에 그 내용을 먼저 현재 소스파일에 반영하고 이후에 커밋 명령을 해야만 버전충돌 오류가 발생하지 않는다

위의 메뉴에서 SVN 업데이트 를 선택한다


위와같이 업데이트 명령 이후에 커밋을 실행하면 아래와 같은 화면이 열린다


위의 화면에서 변경된 파일목록에서 특정 파일명을 더블클릭하면 변경된 내용과 원본의 내용이 비교되어 다음과 같이 나타난다


위의 창을 닫고 원래의 커밋 윈도우에서 확인을 누르면 커밋이 종료되고 리비전은 2로 올라간다.