기능설명
● 체크아웃(CheckOut) : SVN에 의해 관리되는 프로젝트에 참여하기 위해 맨 처음 저장소에서 작업할 대상 파일을 받아오는 것을 뜻한다. 체크아웃을 하기 위해서는 익명 권한을 허용하도록 설정되어 있지 않은 이상 해당 시스템의 계정과 비밀번호를 필요로 한다. 성공적으로 체크아웃이 이뤄지면 SVN 저장소의 복사본이 로컬 PC에 생성되어 독자적으로 개발을 진행할 수 있다.
● 커밋(Commit) : 체크아웃한 로컬 PC에서 작업을 수행(파일 추가, 내용 수정, 파일 삭제, 이름 변경)하면 저장소에 있는 파일과 다른 형태가 된다. 커밋은 로컬 PC에 있는 복사본을 기준으로 저장소와 동기화하는 기능이며, 작업 내용이 서버의 저장소에 반영된다.
● 업데이트(Update) : 일정 시간이 지나면 다른 사람이 작업한 결과를 커밋하기 때문에 로컬 PC의 복사본이 최신의 것이 아닐 수 있다. 이럴 경우 업데이트를 수행해서 저장소를 기준으로 로컬 PC의 복사본을 동기화하는 것이 업데이트다. 체크아웃과 달리 업데이트는 프로젝트 진행기간 동안 빈번하게 발생하며, 적절한 주기로 자주 업데이트를 받는 것이 좋다. 특히 작업 내용을 커밋하기 전에 한번 업데이트를 진행해서 충돌 여부를 확인한 다음, 충돌을 해결하고 커밋 하는 것이 효과적이다.
● 리비전(Revision) : SVN에서는 커밋을 단위로 저장소에 있는 리비전 정보가 증가한다. 체크아웃을 받을 때 리비전 번호가 6500이라면, 팀 동료들에 의해 6,500회의 커밋이 이뤄진 프로젝트란 걸 알 수 있다.
● 임포트(Import!) : 처음 저장소를 만든 시점에서 저장소에 맨 처음 파일을 넣는 작업을 뜻한다.
● 익스포트(Export) : 체크아웃과 같이 저장소에서 로컬 PC로 작업 결과물을 가져온다. 차이점은 버전 관리를 위한 메타 정보를 제외한 순수한 작업 결과물만을 가져온다는 점이다.
설치설명
1.Tortoise 서브버전(Subversion) 클라이언트 설치
1.1 Tortoise 서브버전(Subversion) 클라이언트 다운로드
서브버전 클라이언트는 http://tortoisesvn.net/downloads 에서 다운 받을 수 있다.
1.2 Tortoise 서브버전(Subversion) 클라이언트 설치
클라이언트 설치는 간단하다. 무조건 "Next" 버튼을 눌러서 완료를 하면 알아서 다 해준다.
설치 후 탐색기에서 오른쪽 버튼을 클릭했을 때 아래와 같은 메뉴가 뜨면 정상적으로 설치된 것이다.
2.서브버전(Subversion) 서버 설치
2.1 서브버전(Subversion) 서버 다운로드
서브버전의 윈도우용 설치 파일은 http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 에서 찾을 수 있다. 위 사이트로 이동하면 아래와 같은 화면을 볼 수 있는데, 최신버전의 설치 파일을 다운받아서 설치하도록 하자.
2.2 서브버전(Subversion) 설치
설치 과정은 아주 간단하다. 윈도우 인스톨 파일을 더블클릭해서 기본 옵션으로 설치하면 된다. "Next" 를 계속해서 클릭하여 완료하자.
2.3 서브버전(Subversion) 설정
2.3.1 서브버전(Subversion) 데이터 폴더 생성(Repository)
서버 설치가 끝났으니 데이터를 저장할 폴더를 생성해야한다. 저장소는 하드디스크의 특정 폴더로 하면 되고, 임의의 이름으로 선택 가능하다. 일단 D:\Repository로 해서 생성하자.
2.3.2 서비스(Service) 등록
서브버전 서버를 서비스로 등록하여 윈도우 부팅시에 자동으로 실행되도록 하자. 윈도우 서비스 등록은 sc.exe 프로세스로 등록가능하다. cmd.exe를 실행해서 아래와 같이 입력하도록 하자.
아래는 서브버전 서비스를 등록하고 서비스를 해제하는 명령이다.
- 서비스 등록 : sc create svn binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service -r D:\repository" displayname= "Subversion Server" depend= Tcpip start= auto
- 서비스 해제 : sc delete svn displayname= "Subversion Server"
별다른 문제가 없다면 성공적으로 등록했다는 메시지가 출력될 것이다.
2.3.3 방화벽(Firewall) 해제
서브버전은 TCP 3690 포트와 UDP 3690 포트를 사용한다. 윈도우 방화벽 및 Anti-Virus의 방화벽을 해제하도록 하자.
아래는 윈도우 방화벽에서 포트를 추가하는 방법이다. TCP와 UDP 각각 등록해서 모두 가능하도록 하자.
2.4 저장소(Repository) 생성
이제 서버 설정이 끝났으니 실제로 소스 또는 데이터를 관리할 저장소(Repository)를 생성해야 한다. 서브버전 관련 데이터는 D:\Repository 에 저장하기로 했으므로 하위 폴더에 저장소를 생성하자.
2.4.1 커맨드 라인(Command Line) 방식
cmd.exe 를 실행한 뒤 D:\Repository 폴더로 이동하여 아래와 같이 입력한다.
"C:\Program Files\Subversion\bin\svnadmin" create --fs-type fsfs test
위의 파란색으로 표시된 test를 유의해서 보자. test 대신에 생성을 원하는 폴더명으로 바꿔서 입력하면 된다.
아래는 위의 명령을 실행한 후 결과 화면이다.
2.4.2 Tortois Subversion 클라이언트를 사용한 방식
Tortois Subversion 클라이언트를 설치했다면 좀더 편한 방법으로 생성할 수 있다. 아래는 Tortoise Subversion 클라이언트를 통해 생성하는 방법이다.
D:\Repository 폴더에 생성할 저장소 이름(Test)의 폴더를 미리 생성한 후 Tortoise Subversion 클라이언트에서 "Create repository here"를 클릭하면 된다.
파일 시스템을 선택하는 다이얼로그가 뜨면 "Native filesystem(fsfs)"를 선택한 후 OK를 눌러서 생성하면 된다.
2.5 저장소 접근 설정
저장소를 생성하고 나면 아래와 같은 폴더와 파일들이 생긴다.
이 중에서 접근 권한을 제어하기위해서는 2개의 파일을 손봐야 하는데 다음 항목을 보자
2.5.1 svnserve.conf
- ### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)
- ### Visit http://subversion.tigris.org/ for more information.
- [general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = none <== 로그인 하지 않은 사용자는 아무것도 못하도록 한다.
auth-access = write
- ### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### Uncomment the line below to use the default password file.
password-db = passwd <== ID와 Password를 저장하는 파일 이름
- ### The authz-db option controls the location of the authorization
### rules for path-based access control. Unless you specify a path
### starting with a /, the file's location is relative to the conf
### directory. If you don't specify an authz-db, no path-based access
### control is done.
### Uncomment the line below to use the default authorization file.
#authz-db = authz
- ### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
realm = KKAMAGUI Repository <== 접근했을 때 클라이언트에게 보여줄 저장소 메시지
위와 같이 파일을 수정한 다음 저장한다.
2.5.2 passwd
- ### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
- [users]
# harry = harryssecret
# sally = sallyssecret
kkamagui = kkamagui
위와 같이 ID = Password의 형태로 입력한 뒤 저장하면 된다.
3.간단한 서브버전(Subversion) 서버 테스트
테스트 방법은 간단하다. 탐색기에서 오른쪽 버튼을 눌러서 표시되는 메뉴에서 "Repo-Browser" 를 클릭하여 아래와 같은 창이 뜨면 서브버전 서버가 설치된 주소와 저장소 이름을 같이 입력해주면 된다.
이제 주소와 저장소의 이름을 입력하자. 주소를 kkamagui.egloos.com, 그리고 저장소를 test라고 가정하고 입력하면 아래와 같이 될 것이다.
"OK" 버튼을 누르면 실제 서버에 접속해서 저장소 정보를 얻어오는데, 아래와 같은 화면이 표시될 것이다. 실제로 정상적으로 접속이 된다면 "test" 항목 아래에 아무것도 표시되지 않을 것이지만 문제가 발생한다면 아래와 같이 에러메시지가 표시될 것이다.
위와 같은 에러 메시지가 표시되면 처음 단계부터 설정을 다시 한번 확인하자. 아무런 에러 메시지가 없다면 정상적으로 설치된 경우이므로 열심히 Check-out, commit, update를 반복하면 된다.
4.서브버전(Subversion) 서버를 설치하지 않고 로컬(Local)에서 소스 관리하기
서브버전 서버가 설치되어있어야 꼭 소스 버전 관리가 가능한 것일까? "답은 그렇지 않다" 이다.
Tortoise Subversion 클라이언트를 설치했다면 로컬에 저장소를 만들고 file:/// 키워드로 접근하여 소스 버전을 관리하는 것이 가능하다.
4.1 저장소 생성
위의 "2.4 저장소(Repository) 생성" 부분을 참고해서 로컬에 Tortoise를 이용하여 저장소를 생성하자. 그리고 파일들을 수정해서 특정 유저만 접근가능하도록 수정하자.
4.2 저장소 접근 테스트
위의 "3.간단한 서브버전(Subversion) 서버 테스트" 부분을 참고하여 "Repo-browser"를 실행하고 주소에 아래와 같이 입력한 후 OK를 누르자.
file:///d:\repository\test
정상적으로 실행되면 아래와 같은 화면이 표시될 것이다.
아무런 에러가 없으므로 정상적으로 실행되었음을 알 수 있다. 이렇게 함으로써 서버를 설치하지 않고도 로컬에서 소스 버전관리를 할 수 있다.
5.기타 팁
5.1 버전 관리시 무시할 파일 확장자 설정
소스를 컴파일해서 나오는 object 파일이나 기타 필요없는 부산물들은 버전관리를 할 필요가 없다. 그런 파일들을 일일이 수작업으로 제외하기는 상당히 귀찮은 작업인데, 다행이 Tortoise에서 이것을 편리하게 할 수 있는 옵션이 있다.
"Settings" 메뉴에 가면 아래와 같은 화면이 표시된다. 여기에 "Global Ignore Pattern" 항목에 무시할 파일의 확장자나 파일명을 입력하면 된다.
*.scc *.sbr *.pch *.pcb *.ilk *.idb *.res *.o *.obj *.ncb *.opt *.plg
- 출처(http://kkamagui.tistory.com, http://kkamagui.springnote.com)