Linux ETC

SVN(subversion) 설치 및 셋팅

2014.12.02 01:11

호스트웨이 조회 수:6426

SVN(subversion)?

SVN 은 버전 관리 시스템이며 CVS 의 단점을 보안 하기위해 만들어진 시스템입니다.
SVN 을 기준으로 업데이트하고 서버에 업로드하는 형식으로 사용자가 언제 어떤 부분을 수정을 했는지에 대한 

모든 소스의 로그가 남고 간단히 예전 버전으로 돌리기도 가능합니다.



SVN 구조

test0.jpg


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

test1.jpg

[general]
# 익명 사용자 읽기 사용 여부
anon-access = read
#
인증 사용자 쓰기 사용 여부
auth-access = write
#
인증에 사용될 패스워드 설정 파일
password-db = passwd


사용자/비밀번호 설정

[root@ruo91 ~]# vi /home/svn/repos/conf/passwd

 test2.jpg

[users]
# svn 사용자의 비밀번호를 지정
#
사용자ID = 비밀번호 이런식..
svn = 123456


5. SVN 시작

[root@ruo91 ~]# svnserve -d -r /home/svn/


정상작동 확인 

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

test3.jpg


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

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

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/repos
branches/
tags/
trunk/


7. 저장소 사용
원격 작업을 윈도우에서 할 경우 윈도우용 SVN 클라이언트 이용(여기선 TortoiseSVN을 이용)


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


test4.jpg


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

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


test5.jpg


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


test6.jpg


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


test7.jpg


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


test8.jpg

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


test9.jpg

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


test10.jpg

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

 

test11.jpg

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

번호 제목 글쓴이 날짜 조회 수
126 /proc의 퍼미션 조정으로 보안 강화 호스트웨이 2012.05.18 14350
125 특정 NIC에 한 개 이상의 IP 할당하기 호스트웨이 2012.05.18 15481
124 리눅스 tar로 압축 할 때 Archive에 파일 업데이트 하기 호스트웨이 2012.05.18 16532
123 telnet 사용 시 접속가능 시간 제어 하는 법 호스트웨이 2012.05.18 17224
122 keepalived.conf 각 파라미터의 의미 호스트웨이 2012.05.18 19147
121 특정 사용자 계정 동시 로그인 수 제한 file 호스트웨이 2012.05.11 24362
120 -, -- 로 시작하는 파일 지우는 팁 file 호스트웨이 2012.05.11 13489
119 하드 디스크의 베드블럭 처리 방법 호스트웨이 2012.05.11 16076
118 PING 사용시 시간 출력 방법 file 호스트웨이 2012.05.05 20886
117 parted를 이용한 2TB 이상의 partitioning file 호스트웨이 2012.05.05 35795
116 특정 계정만 su 명령어 사용 file 호스트웨이 2012.05.05 39725
115 vsftp에서 업로드, 다운로드 전송속도 제한하기 file 호스트웨이 2012.05.05 25302
114 grub-install 사용방법 호스트웨이 2012.05.04 23492
113 Ubuntu 12.04: Ubuntu 11.10 또는 Ubuntu 10.04 LTS 에서 Ubuntu 12.04 로 업그레이드하기 호스트웨이 2012.05.04 17225
112 Ping 요청 막는 방법 호스트웨이 2012.05.04 17944
111 도메인 Status Code 호스트웨이 2012.04.27 16501
110 부하 테스트 2편 – Web Test 호스트웨이 2012.04.27 26664
109 리눅스 디스크 사용량 확인 file 호스트웨이 2012.04.27 13879
108 실수로 압축해제 한 파일들 삭제하기 file 호스트웨이 2012.04.27 15678
107 find 명령 2번째 호스트웨이 2012.04.20 13927