레이블이 SVN인 게시물을 표시합니다. 모든 게시물 표시
레이블이 SVN인 게시물을 표시합니다. 모든 게시물 표시

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 문서가 있는데 굉장히 잘 정리가 되어있다.
다만 너무 길어서 다 보기는 힘들고.. 때때로 찾아보면 좋을 것 같다.
나도 이 문서를 많이 참고 했다. 보러가기