본문 바로가기

linux

[Linux] SVN 설치하기 Unix관련

[Linux] SVN 설치하기 Unix관련

2012/02/29 09:38

복사 http://blog.naver.com/xenoheart/130132669490

전용뷰어

출처 : http://www.cyworld.com/ruo91/3203221

리눅스 - SVN(subversion) 설치

ruo91 2009-10-24 15:06:16 주소복사
조회 10911 스크랩 8
SVN(subversion)?
SVN 은 버전 관리 시스템이며 CVS 의 단점을 보안 하기위해 만들어진 시스템입니다.
SVN 을 기준으로 업데이트하고 서버에 업로드하는 형식으로 사용자가 언제 어떤 부분을 수정을 했는지에 대한 모든 소스의 로그가 남고 간단히 예전 버전으로 돌리기도 가능합니다.
더 자세한건 위키피디아를 참고 하세요.

http://ko.wikipedia.org/wiki/서브버전

SVN 구조
대략.. 아래 처럼 된다는 거만 알고 있으면 될듯 합니다.

1. SVN 설치
SVN 설치는 yum 으로 설치를 진행 합니다.
[root@ruo91 ~]# yum install -y subversion

2. SVN 사용자 추가
SVN 을 사용할 사용자를 추가 합니다.

[root@ruo91 ~]# adduser svn

[root@ruo91 ~]# passwd svn

Changing password for user svn.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.


3. 저장소(Repository) 만들기
svnadmin 으로 해당 저장소를 만들어 줍니다.
[root@ruo91 ~]# svnadmin create --fs-type fsfs /home/svn/repos

repos 디렉토리 사용자/그룹 위임 설정을 합니다.
[root@ruo91 ~]# chown -R svn:svn /home/svn/repos

[root@ruo91 ~]# ls -al /home/svn/repos

합계 36

drwxr-xr-x 7 svn svn 4096 10월 24 05:35 .

drwx------ 4 svn svn 4096 10월 24 05:35 ..

-rw-r--r-- 1 svn svn 229 10월 24 05:35 README.txt

drwxr-xr-x 2 svn svn 4096 10월 24 05:35 conf

drwxr-xr-x 2 svn svn 4096 10월 24 05:35 dav

drwxr-sr-x 5 svn svn 4096 10월 24 05:35 db

-r--r--r-- 1 svn svn 2 10월 24 05:35 format

drwxr-xr-x 2 svn svn 4096 10월 24 05:35 hooks

drwxr-xr-x 2 svn svn 4096 10월 24 05:35 locks


4. SVN 설정 파일 추가/수정

기본 설정
[root@ruo91 ~]# vi /home/svn/repos/conf/svnserve.conf

[general]

# 익명 사용자 읽기 사용 여부

anon-access = read

# 인증 사용자 쓰기 사용 여부

auth-access = write

# 인증에 사용될 패스워드 설정 파일

password-db = passwd


사용자/비밀번호 설정
[root@ruo91 ~]# vi /home/svn/repos/conf/passwd

[users]

# svn 사용자의 비밀번호를 지정

# 사용자ID = 비밀번호 이런식..

svn = 123456


5. SVN 시작
[root@ruo91 ~]# svnserve -d -r /home/svn/

정상작동 확인

[root@ruo91 ~]# ps -aux | grep svnserv

root 2233 0.0 0.0 11592 796 ? Ss 05:55 0:00 svnserve -d -r /home/svn/

[root@ruo91 ~]# netstat -ant | grep 3690

tcp 0 0 :::3690 :::* LISTEN


시스템 부팅시 자동으로 SVN 이 시작 되게 하려면 아래와 같이 합니다.
yum 으로 설치시에는 /etc/rc.d/init.d/subversion 실행 스크립트가 생성되지 않으므로 수동으로 추가 해줘야 합니다.
subversion 스크립트 작성

[root@ruo91 ~]# vi /etc/rc.d/init.d/subversion

#!/bin/bash

. /etc/rc.d/init.d/functions

[ -x /usr/bin/svnserve ] || exit 1

RETVAL=0

prog="svnserve"

desc="Subversion server"

OPTIONS="--threads --root /home/svn"

start() {

echo -n $"Starting $desc ($prog): "

daemon $prog -d $OPTIONS

RETVAL=$?

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog

echo

}

stop() {

echo -n $"Shutting down $desc ($prog): "

killproc $prog

RETVAL=$?

[ $RETVAL -eq 0 ] && success || failure

echo

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog

return $RETVAL

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

RETVAL=$?

;;

condrestart)

[ -e /var/lock/subsys/$prog ] && restart

RETVAL=$?

;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart}"

RETVAL=1

esac

exit $RETVAL

EOF


시스템 부팅시 자동으로 시작
[root@ruo91 ~]# chkconfig subversion on

6. SVN 기본 디렉토리 만들기
소스 코드를 관리하기 위해서는 trunk , branches, tags 를 만들어 줘야 합니다.
필자는 Bash 쉘 사용자이므로 자신의 홈 디렉토리의 .bash_profile 을 아래와 같이 export 걸어 줬습니다.
[root@ruo91 ~]# vi ~/.bash_profile

SVN_EDITOR=/usr/bin/vim

export SVN_EDITOR


export 를 걸지 않으면 아래와 같이 나옵니다.

[root@ruo91 ~]# svn mkdir svn://192.168.0.28/repos/trunk

svn: 로그 메시지를 구하기 위해 외부 프로그램을 사용할 수 없습니다.

SVN_EDITOR 환경변수를 설정하시거나 --message (-m) 또는 --file (-F) 옵션을 사용하세요.

svn: 환경변수 SVN_EDITOR, VISUAL, EDITOR 중 하나는 설정하거나, 'editor-cmd' 를 구성화일에

명시해야합니다.


아래처럼 trunk 디렉토리를 만들어 주면 vim 에디터가 자동으로 나오게 됩니다.
[root@ruo91 ~]# svn mkdir svn://서버IP/repos/trunk
[root@ruo91 ~]# svn mkdir svn://192.168.0.28/repos/trunk

--이 줄 이하는 자동으로 제거됩니다--

A svn://192.168.0.28/repos/trunk

~

~

~

~

~

"svn-commit.tmp" 4L, 75C 1,0-1 모두


이때 :q 를 눌러 에디터에서 빠져 나옵니다.
:q
C 를 눌러 나옵니다.

로그 메시지가 변경되지 않았거나 지정되지 않았습니다

취소(A), 계속(C), 수정(E)

C

인증 영역을 사용하기 위해 root 사용자의 암호와 svn 사용자의 암호를 입력 해줍니다. (암호는 보안상 보이지 않음)

인증 영역(realm): <svn://192.168.0.28:3690> dbd294f2-a62a-422d-a146-2ff0ab99c42c

'root'의 암호:

인증 영역(realm): <svn://192.168.0.28:3690> dbd294f2-a62a-422d-a146-2ff0ab99c42c

사용자명:svn

'svn'의 암호:

커밋된 리비전 1.


branches 디렉토리 만들기 (trunk 와 반복..)
[root@ruo91 ~]# svn mkdir svn://192.168.0.28/repos/branches

로그 메시지가 변경되지 않았거나 지정되지 않았습니다

취소(A), 계속(C), 수정(E)

C

커밋된 리비전 2.


tags 디렉토리 만들기
[root@ruo91 ~]# svn mkdir svn://192.168.0.28/repos/tags

로그 메시지가 변경되지 않았거나 지정되지 않았습니다

취소(A), 계속(C), 수정(E)

C

커밋된 리비전 3.


위에서 만든 디렉토리를 확인 합니다.

[root@ruo91 ~]# svn list svn://192.168.0.28/repo

sbranches/

tags/

trunk/


7. 저장소 사용
필자는 원격 작업을 윈도우에서 하기 때문에 윈도우용 SVN 클라이언트(TortoiseSVN)를 이용했습니다.
다운로드는 http://tortoisesvn.net/ 에서 받으시고 설치 하세요.

TortoiseSVN 설치가 완료 되면 윈도우의 빈공간 오른쪽 마우스를 누르게 되면 아래와 같이 SVN Checkout 가 보입니다. 이것을 눌러줍니다.


체크아웃 설정창이 보이며 Repository URL 은 SVN 서버를 입력 해줍니다.

그 아래 체크아웃 후 저장 될 디렉토리를 원하는 곳으로 입력 해줍니다.


체크아웃 후 지정 된 디렉토리에 저장이 되었습니다.


이후 trunk 에 몇가지 파일을 만들어 줍니다.


빈공간에 마우스 우클릭하여 SVN Commit 을 눌러 줍니다.


Commit 화면이며 파일을 모두 체크 후 확인을 눌러 줍니다.


사용자 인증 창이 뜨며 SVN 서버에서 설정한 svn 사용자의 비밀번호를 입력 해줍니다.


인증 성공 후 Commit 이 완료 됩니다.

서버에서 체크아웃 해보면 Commit 이 정상적으로 완료 되었음을 볼수 있습니다.

[root@ruo91 ~]# svn checkout svn://192.168.0.28/repos repos

A repos/trunk

A repos/trunk/Hello.c

A repos/trunk/Hello.tar

A repos/branches

A repos/tags

체크아웃된 리비전 4.