Subversion을 설치했다는 것은 형상관리를 하고자 한다는 말이고,
형상관리를 하겠다라는 것은 일반적으로 여러명과 공동 작업을 하겠다라는 말일 것이다.
여러 명이 접속하는 서버를 구성하기 위해서 가장 중요한 것은 어떤 프로토콜을 사용할 것인가 하는 점이다.
그러면, Subversion에서는 어떤 프로토콜을 사용할 수 있을까?
- FileSystem
- HTTP
- SSH
- SVN
- SVN+SSH
1. Protocol - SVN
- Subversion은 [ svnserve ]를 통해서 고유의 프로토콜을 사용할 수 있게 해준다.
- 기본으로 사용하는 포트는 [ 3690 ] 이다.
- 당연한 말이지만, Apache를 통해서 제공하는 HTTP 프로토콜 보다는 훨씬 빠르다.
- SSH 프로토콜보다 빠른지는 한 번 테스트해봐야 알 수 있을 것 같다.
- SVN 프로토콜을 사용하기 위해서는 [ svnserve ] 데몬을 실행해야하고, 그 방법은 정말 쉽다.
$ sudo svnserve -d -r /srv/repository/
- 이것으로 끝이다. Subversion Server가 실행된 것이다.
$ cd /srv/workspace
$ svn checkout svn://127.0.0.1/svnrepo svnrepo
체크아웃된 리비전 0.
$ ls -al
합계 12
drwxr-xr-x 3 chani chani 4096 9월 7 00:20 .
drwxr-xr-x 5 root root 4096 9월 6 23:55 ..
drwxrwxr-x 3 chani chani 4096 9월 7 00:20 svnrepo
- SVN 프로토콜을 통해 repository를 받아올 수 있게 되었다.
- 그런데, 방금 우리는 계정 정보 없이 그냥 막 받아왔다. 우리가 원하는 것은 계정을 통한 권한제어인데...
$ cd /srv/repository/
$ cd svnrepo/
$ ls -al
합계 32
drwxrwxr-x 6 chani chani 4096 9월 5 22:56 ./
drwxr-xr-x 3 chani chani 4096 9월 5 22:56 ../
-rw-rw-r-- 1 chani chani 246 9월 5 22:56 README.txt
drwxrwxr-x 2 chani chani 4096 9월 5 22:56 conf/
drwxrwsr-x 6 chani chani 4096 9월 5 22:56 db/
-r--r--r-- 1 chani chani 2 9월 5 22:56 format
drwxrwxr-x 2 chani chani 4096 9월 5 22:56 hooks/
drwxrwxr-x 2 chani chani 4096 9월 5 22:56 locks/
- 서버에 생성한 repository를 살펴보자. 위치하고 있는 디렉토리를 주의깊게 살펴봐야 한다.
$ cd conf/
$ ls -al
합계 24
drwxrwxr-x 2 chani chani 4096 9월 5 22:56 .
drwxrwxr-x 6 chani chani 4096 9월 5 22:56 ..
-rw-rw-r-- 1 chani chani 1080 9월 5 22:56 authz
-rw-rw-r-- 1 chani chani 885 9월 5 22:56 hooks-env.tmpl
-rw-rw-r-- 1 chani chani 309 9월 5 22:56 passwd
-rw-rw-r-- 1 chani chani 4002 9월 5 22:56 svnserve.conf
- 특히 우리가 관심을 가져야 할 곳은 conf/ 디렉토리이다.
- 우선, 우리는 계정을 사용하겠다라는 설정부터 하자.
$ nano ./svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
- anonymous 접근은 막고, 인증받은 계정으로 읽기/쓰기를 하겠으며, 계정 정보는 passwd 파일로 하겠다라는 설정이다.
$ nano ./passwd
[users]
whatwant = 1234
- 기본적으로 passwd 파일에서 설정은 [ 사용자계정 = 비밀번호 ] 형식이고, 암호화하지 않는다.
$ svn --username whatwant checkout svn://127.0.0.1/svnrepo svnrepo
인증 영역(realm): <svn://127.0.0.1:3690> b4595488-89ba-479b-b681-c8e86660c71c
'whatwant'의 암호: ****
'(null)'의 GNOME 키 링 암호: ****
체크아웃된 리비전 0.
- ID / Passwd 방식으로 접근이 이루어지는 것을 볼 수 있다.
- 중간에 보면 [ '(null)'의 GNOME 키 링 암호: **** ] 부분이 걸리적거리는데...
$ nano ~/.subversion/config
[auth]
password-stores =
store-passwords = yes
$ nano ~/.subversion/servers
[groups]
store-plaintext-passwords = no
- 이제 기본적인 상황은 모두 점검을 했다.
- 이제 필요한 것은 부팅할 때 자동으로 구동이 되도록 셋팅만 해주면 된다.
-
https://help.ubuntu.com/community/Subversion
- 필자가 테스트하고 있는 환경이 우분투이기에 우분투 환경에서 사용할 수 있는 방법을 찾아보았다.
- initd script for svnserve
-
http://odyniec.net/articles/ubuntu-subversion-server/svnserve
$ cd /etc/init.d/
$ sudo wget
http://odyniec.net/articles/ubuntu-subversion-server/svnserve
$ sudo chmod +x ./svnserve
$ sudo nano ./svnserve
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="-d -r /srv/repository"
$ sudo /etc/init.d/svnserve start
- 이제 svnserve를 예쁘게 사용하자.