2010년 6월 24일 목요일

SubVersion 설정



우선, subversion의 server는 llinux fedora12이며, client는 windows XP임을 밝혀두는 바이다.




1. Subversion 설치


처음에 subversion을 설치할 때 삽질을 엄청나게 했는데, 설치는 매우 간단하다.
rpm 패키지로 배포하고 있으므로 간단하게 yum명령어를 사용하여 설치할 수 있다.

$ yum install subversion


설치를 하고 나면 앞으로 SVN 파일들을 관리할 폴더를 하나 만들어 주고, 그 안에 SVN을 설정한다.
나는 home 디렉토리 밑에 svn을 하나 만들고 svn이 제대로 작동하는지 알아보기 위해서 test 디렉토리를 하나 만들어 svn저장소로 사용하고 세팅 되었는지 확인했다.

$ cd /home
$ mkdir svn
$ cd svn
$ svnadmin create test

svnadmin 명령어를 사용하면 svn저장소 디렉토리를 생성한다.
파일시스템 타입을 지정해주고 싶다면 다음과 같이 사용하여도 된다.

$ svnadmin create --fs-type fsfs test (파일시스템)
$ svnadmin create --fs-type bdb test (버클리DB)


test 디렉토리 안에 가보면 svn저장소를 위한 파일들이 생성되어 있음을 볼 수 있다.
이제, client에서 svn저장소에 접속할 수 있도록 설정해주어야 하는 작업이 남아있는데, 이 작업은 3가지 방법으로 할 수 있다.
첫 번째는 svnserve ID로 인증받는 법, 두 번째는 ssh를 사용하는 것, 세 번째는 apache를 연동하여 사용하는 법이다.

나는 첫 번째, 두 번째 방법으로만 해보았는데, apache를 연동하는 방법도 많이 쓰이고 있는 것 같더라.
근데 apache를 세팅하려면 뭘 또 많이 깔고 삽질을 해야되서 귀찮아서 이 방법은 안 써봤다;;;




2-1. svnserve ID 인증 방법으로 설정하기


우선, 첫 번째 방법부터 소개하도록 하겠다.
svnserve ID로 인증 받는 것은 아무래도 최신 subversion에서만 가능한 것 같다.
근데 이 방법은 문제가 있는데, passwd 파일이 전혀 암호화 되어 있지 않다.
그래서 passwd파일에 접근 권한만 있다면 누구든지 svn저장소 사용자들의 id와 password를 알 수 있다.
혼자 쓰는 것이 아니면 별로 권해주고 싶은 방법은 아니다.

위에서 svn저장소로 생성한 디렉토리에 가보면 svnserve의 설정 파일이 존재한다.
conf 디렉토리 밑에 svnserve.conf 라는 파일이다.
(위에서와 같이 생성한 경우, 절대 경로는 "/home/svn/test/conf/svnserve.conf" 이다)
처음 이 파일은 죄다 주석처리가 되어있기 때문에 아무런 설정도 되어있지 않은 상태이다.
이 파일의 "[general]"부분에서 몇 군데 주석을 풀고 설정을 할 것이다.

[general]

... 중략 ...

anon-access = none //아무나 접근할 수 없게 함
auth-access = write //인증된 사용자에게만 쓰기 권한을 줌

...

password-db = passwd

....

realm = My First Repository

설정을 했으면 저장하고 나와서 같은 디렉토리내에 있는 passwd 파일을 열어서 편집한다.
$ vi passwd

test = 1111
이렇게 써주면 id는 test고, password는 1111이라는 뜻인데, 전혀 암호화 되어 있지 않다.

다 되었으면 저장하고 나와서 테스트를 한번 해보자.

$ svn checkout svn://10.0.0.1/test test

10.0.0.1은 pc의 IP주소이다.

id와 password는 위에서 passwd 파일에 저장했던 것을 사용한다.
처음 테스트를 할 때, "Store password unencrypted (yes/no)?" 이런 문구가 뜰지도 모른다.
물론 yes 또는 no를 입력하면 되는데,
yes를 치든, no를 치든 계속 다시 물어보는 경우에는 한국어로 "예"라고 치면 넘어간다.
(진짜 황당했다;;)
"checked out revision 0" 라고 뜨면 설정 완료.




2-2. SSH를 이용한 방법으로 설정하기


이 두 번째 방법을 사용하기 위해서는 ssh가 설치되어 있어야 한다.
ssh가 구동되고 있어야 사용할 수 있다.

아무튼 이 방법은 어떻게 보면 첫 번째 방법보다 더 쉬울 수 있다.
위에서 설명한 방법은 사용자 id와 passwd를 일일이 적어주어야 하는 번거로움이 있었지만, 이 방법은 이미 linux pc 상의 사용자들을 추가만 해주면 된다.

subversion의 config파일에 사용자만 추가해 주면 되는데, 이 파일은 홈디렉토리에 있다.

$ cd
$ cd .subversion
$ vi config

이 파일도 많은 설정을 해두고 있는데 그 중에서 'tunnels'라는 부분을 찾아서 기존에 있던 linux 사용자들의 이름을 추가해 주면 된다.

[tunnels]
ssh = ssh -l test

저장하고 빠져나와서 테스트를 한 번 해보자.

$ svn checkout svn+ssh://10.0.0.1/home/svn/test

password는 linux pc에서 사용하는 비밀번호를 사용하면 된다.
그럼 위에서 했던 것처럼 체크아웃 된 리비전을 보여준다.

이 때 주의해야 할 점은 /home/svn/의 경로까지 다 써주어야 한다는 점이다.
위에서 사용한 방법은 /home/svn/하위의 상대 경로만 써주어도 접근이 가능하지만, ssh를 이용한 방법은 절대 경로를 통해 접근한다.

만약 원하는 사용자로 로그인하여 들어가고 싶으면 다음과 같이 사용한다.

$ svn checkout svn+ssh://test@10.0.0.1/home/svn/test




3. client에서 접속하기


windows client에서 설정을 끝낸 subversion server에 접근을 해보도록 하겠다.
windows에는 subversion이 설치되어 있을 것이라고 생각하고 진행한다. (tortoiseSVN 다운로드)


- svn저장소로 쓸 폴더를 아무곳에나 만든다.
(아래의 이미지에서 보면 svn저장소로 쓸 폴더를 D:\아래 test라는 이름으로 만들었다.)
- 새 폴더를 만들었으면, 새 폴더 위에서 마우스 오른쪽 버튼을 클릭한다.
(이 때 만약 svn관련된 메뉴가 없다면, subversion 설치가 안된 것이거나 잘못 된 것이다.)
- SVN checkout을 선택하면 다음과 같은 창이 나타난다.
- URL of repository: 란에 아까 test할 때 넣었던 경로를 적는다.
첫 번째 방법을 사용한다면 "svn://10.0.0.1/test" 라고 입력하고
두 번째 방법을 사용한다면 "svn+ssh://test@10.0.0.1/home/svn/test"라고 입력한다.

- Checkout Directory 란은 svn저장소로 쓸 폴더를 말한다.

- OK버튼을 누른다.
(password를 입력하고 revision이 뜬다면 OK!!)




덧, KLDP wiki에 subversion-HOWTO 문서가 있는데 굉장히 잘 정리가 되어있다.
다만 너무 길어서 다 보기는 힘들고.. 때때로 찾아보면 좋을 것 같다.
나도 이 문서를 많이 참고 했다. 보러가기

댓글 없음:

댓글 쓰기