SVN이란?

CVS(Concurrent Version System)는 1986년 Dick Grune에 의해서 개발된 가장 대중적인 버전관리 시스템이다.
오랜 시간 개발자들에게 버전관리 시스템의 대명사로 불리다 보니, 버전관리를 위한 다양한 기법들이 연구되었다. 그 결과로 윈도우 버전과 웹 버전, 편리한 GUI 클라이언트 등도 개발되었다.
현재까지도 많은 프로젝트나 기업에서 CVS를 버전관리 시스템으로 사용하고 있다.

그러나 CVS 프로토콜은 한 번 등록된 디렉토리나 파일의 이동이나 이름 변경을 허용하지 않았으며, 역사적으로 RCS를 따라 나왔기 때문에 개별 파일 단위로만 버전관리가 되었다.

그 뿐 아니라 아스키코드로 된 파일명만 지원할 뿐 유니코드에 대한 지원이 제한적이어서 우리나라처럼 유니코드로 지원되는 언어를 쓰는 국가에서는 파일 이름을 모두 영어로 변경해야 했다.

2004년부터 CVS의 핵심 개발자들이 보다 나은 CVS를 표방하며 개발하기 시작한 SVN(SubVersion)이 등장한 이후에는 버전관리 시스템의 대명사라는 자리는 빠르게 SVN으로 옮겨가고 있다.

CVS와 비교한 SVN의 장점은 다음과 같다.
. 소스코드 뿐 아니라 바이너리(문서/라이브러리 등)도 지원한다.
. 커밋의 단위가 개별 파일이 아닌 변경된 작업 단위이다.
. 디렉토리나 파일 별로 세밀한 접근제어가 가능하다.
. CVS에 비해 빠르다.
. CVS와 개념 및 사용법이 거의 같아서, CVS 사용자가 쉽게 옮겨올 수 있다.

이미 CVS로 오랜 기간 버전관리를 수행해 왔으며, CVS의 상대적인 약점을 전혀 불편해 하지 않는 사용자를 제외한다면 버전관리 시스템으로 SVN을 선택하는 것은 당연한 것처럼 느껴진다.


# 설치하기
  - Berkeley DB 사용하지 않는 설치법이며, BDB사용시 BDB가 PANIC상태에 빠지는 경우가 자주 발생하여 사용하지 않았다.

1. Apache2.x 설치하기
 download : http://httpd.apache.org/

 [root@path]# tar -xvzf httpd-2.x.x.tar.gz
 [root@path]# cd httpd-2.x.x

 [root@path]# ./configure --prefix=/usr/local/apache2 \
     --enable-suexec \
     --enable-so \
     --with-suexec-caller=bin \
     --enable-cache \
     --enable-ext-filter \
     --with-z=/usr/local/include \
     --enable-dav \
 
 [root@path]# make 
 [root@path]# make install

2. Subversion 설치하기
 download : http://subversion.tigris.org/
 
 [root@path]# tar -xvzf subversion-1.4.x.tar.gz
 [root@path]# tar -xvzf subversion-deps-1.4.x.tar.gz

 [root@path]# cd subversion-1.4.x

 [root@path]# ./configure --with-zlib \
                     --with-apxs=/usr/local/apache2/bin/apxs \
                     --without-berkeley-db
 
 [root@path]# make 
 [root@path]# make install


# REPOSITORY 만들기

 [root@path]# mkdir /home/svn
 [root@path]# cd /home/svn
 [root@path]# svnadmin create --fs-type fsfs www

 [root@path]# chmod -R g+w www
 [root@path]# chown -R nobody.nogroup www


# APACHE 설정하기 - 사용자 인증방식으로 설정하기

 [root@path]# vim /usr/local/apache2/conf/httpd.conf

 # 아래 모듈을 활성화
 LoadModule dav_svn_module     modules/mod_dav_svn.so
 LoadModule authz_svn_module   modules/mod_authz_svn.so

 # 아래 위치를 추가
 <Location /svn/sample>
  DAV svn
  SVNPath /home/svn/www
  AuthType Basic
  AuthName "Helloboy's Repository"
  AuthUserFile /usr/local/apache2/conf/passwd
  Require valid-user
 </Location>

 [root@path]# cd /usr/local/apache2/conf
 [root@path]# ../bin/htpasswd -c passwd 사용자명
 New password : 비밀번호
 Re-type new password : 비밀번호

 [root@path]# svn checkout http://xxx.xxx.xxx.xxx:port/svn/www/ [디렉토리명]
 
 Revision 0: /
 ----------------------------------------------------------------------
 Rowered by Subversion version x.x.x


# SVNSERVE 설정하기 - SVN 프로토콜 'svn//'을 이용하는 서버 설정하기

 [root@path]# svnserve -d -r /home/svn/
 [root@path]# vim /home/svn/www/conf/svnserve.conf

 # 주석제거 및 값 변경하기
 anon-access = none
 auth-access = write
 password-db = passwd
 realm = Helloboy's Repository

 [root@path]# vim /home/svn/www/conf/passwd

 # 사용자 추가
 helloboy = 12345
 fuckuboy = 12345

 [root@path]# svn checkout svn://xxx.xxx.xxx.xxx:3690/www [디렉토리명]


# EDITOR 설정하기

 [root@path]# vim /home/계정/.bash_profile
 # 추가
 SVN_EDITOR=/usr/bin/vim
 export SVN_EDITOR


# REPOSITORY 기본 디렉토리 만들기
 
 [root@path]# svn mkdir svn://xxx.xxx.xxx.xxx:3690/www/trunk
 [root@path]# svn mkdir svn://xxx.xxx.xxx.xxx:3690/www/branches
 [root@path]# svn mkdir svn://xxx.xxx.xxx.xxx:3690/www/tags

 # 각각이 아래와 같이 실행되면 :q! 이후 C를 입력하면 됨.

 -- This line, and those below, will be ignored --

 A    svn://xxx.xxx.xxx.xxx:3690/www/trunk
 A    svn://xxx.xxx.xxx.xxx:3690/www/branches
 A    svn://xxx.xxx.xxx.xxx:3690/www/tags

 Log message unchanged or not specified
 A)BORT, C)ONTINUE, E)DIT


# IMPORT 하기

 [root@path]# svn import [디렉토리명] svn://xxx.xxx.xxx.xxx:3690/www/trunk
 [root@path]# svn list svn://xxx.xxx.xxx.xxx:3690/www/trunk


# CHECKOUT 하기

 [root@path]# svn checkout svn://xxx.xxx.xxx.xxx:3690/www/trunk [디렉토리명]
 [root@path]#


# UPDATE 하기

 [root@path]# svn update
 [root@path]#


# COMMIT 하기

 [root@path]# svn commit
 [root@path]#

# 기타
  -  http://subversion.tigris.org/ 내에서 옵션 및 설정에 대한 사용법을 공부하세요~


  감사합니다.

신고
Posted by 백성용 헬로우보이
이전버튼 1 2 3 4 5 ... 106 이전버튼

블로그 이미지
개발자 이야기
헬로우보이

공지사항

Yesterday23
Today21
Total197,855

달력

 « |  » 2016.08
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

최근에 달린 댓글

최근에 받은 트랙백

글 보관함


티스토리 툴바