SVN (Subversion) 사용방법

버전 관리작업을 하거나 , 공동작업, 복원, 등의 작업을 할때 소스가 엉키지 않고 서로 침범하지 않은 상태에서 개발이 가능합니다, 소스의 수정 및 변형을 추적할 수도 있고, 개발 인원들 간의 소스를 덮어 쓰는 일도 방지 할 수 있습니다. 

이전의 개발 방식은 소스를 직접 수정하거나, 내려 받은 소스를 서버에 올리는 등의 작업을 이용하였지만. 이 방식은 개발자들이 많거나, 팀프로젝트로 진행을 할때 , 서로 파일이 엉키거나 수정한 부분을 덮어 쓰는 등의 문제 이 발생할 수가 있습니다. 

그래서 버전관리 시스템인 SVN을 이용해서 프로젝트를 관리를 하는것입니다, 물론 개인적인 개발이나 혼자 개발하는 환경이라면 구지 사용해야 할 필요보다는 불편한 요소들이 더욱 많은것은 사실입니다. 

SVN 저장소 만들기 
SVN 저장소를 만들기 위해서는 SVN 을 컴파일 해야 합니다. 서브 버전의 최신 버전은 1.6.11 입니다. 
다운로드는 아래 URL에서 받으면 됩니다. Binary , Source 를 받으시면 됩니다. 
Tigris.org (http://subversion.tigris.org)
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260&expandFolder=74

컴파일 방법 (*nix)
세부적인 컴파일 방법은 다루지 않고 기본적으로 사용가능한 환경 및 이용방법에 대해서만 다뤄 보도록 하겠습니다. 

$ wget http://subversion.tigris.org/downloads/subversion-1.6.11.tar.gz
$ tar zxvf subversion-1.6.11.tar.gz 
$ cd subversion-1.6.11
$ ./configure --prefix=/usr/local/svn --with-zlib --without-berkeley-db
$ make
$ make install

위와 같이 진행을 하시면 SVN(subversion) 이 설치가 됩니다. 물론 위 사이트에서 바이너리 버전을 배포 하고 있으니 배포 버전을 사용하시거나 yum, yast(SuSE), apt-get 등의 패키지 관리 시스템 을 이용해서 설치 하셔도 무방합니다. 

이제 저장 소를 만들어 보겠습니다. 저장소는 소스와 버전관리가 이루어지는 DB라고 말씀을 드리겠습니다. SVN을 이용해서 저장을 프로젝트를 진행을 하면 실제 파일들이 저장되는 구조가 아니라 각 revision 단위로 업데이트 내용 및 수정 내용, 추가 내용들이 DB에 저장되는 형태를 지니고 있습니다. 

$ mkdir [저장소를 만들 경로]
$ cd [저장소를 만들 경로]
$ svnadmin create --fs-type fsfs [저장소]

위와 같이 작업을 하시면 저장소가 만들어 지도록 되어 있습니다. 예를 들어 /home/lovelgw/project/에 저장소를 만들려면 아래와 같이 진행을 하시면 됩니다. 
$ mkdir /home/lovelgw/project
$ cd /home/lovelgw/project
$ svnadmin create --fs-type fsfs repository

이러면 경로 /home/lovelgw/project/repository 에 저장소가 만들어 집니다. 
저장소를 만들었으니 이제 SVN을 이용할 수 있도록 서버를 설정하면 됩니다. 

$ svnserve -d -r [저장소를 만등 경로]

저장소를 만든 경로를 두에 적어 두시고 실행을 시키시면 서버가 설정이 됩니다. 방화벽 에서 3690 포트를 열어 주시면 외부에서 저장소에 접근할 수 있습니다. 

$ netstat -na 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State 
tcp        0      0 :::3690                     :::*                        LISTEN 

위와 같이 3690 포트가 열려 있음을 확인 할 수 있습니다. 

/etc/sysconfig/iptables 파일을 열어 Iptable 에 규칙을 추가해 줍니다. 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

또는 그외 외부 방화벽을 사용하시면 외부 방화벽에서 포트를 열어 주시면 됩니다. 

사용자 추가를 위해 저장소가 있는 디렉토리로 이동을 하시면 
$ ls
conf  dav  db  format  hooks  locks  README.txt
위와 같이 디렉토리 및 파일들이 만들어져 있습니다. 

$ vi conf/svnserve.conf 파일을 수정하여 줍니다. 
[general]
# 저장소 접근 권한 입니다. 
anon-access = read
# 익명 사용자에게 read 권한을 줍니다. 
auth-access = write
# 인증된 사용자에게 write 권한을 줍니다.
password-db=passwd
# 인증방식은 passwd 파일을 이용합니다. 
realm = repository
# 저장소 문구 입니다. 변경하시면 변경하신 문구가 나옵니다. 

$ vi conf/passwd
[users]
아이디 = 비밀번호 

위와 같이 설정하시면 저장소가 만들어 집니다. 

이제 간단히 저장소를 설치/설정 하는 방법을 해보았는데 , 더욱 자세한 방법을 다루기에는 다른 문서를 찾아 보시는게 더욱 좋으실것 같습니다. 이제 SVN을 사용하기 위한 환경이 완성 되엇습니다. 
이제 SVN에 기능 및 사용방법에 대해서 알아보도록 하겠습니다. 

import : 저장소에 파일을 넣어주는것입니다. , 아무것도 없는곳에 이제 만들 준비를 하는 작업입니다. 
$ svn import [import 대상] svn://[주소]/저장소
위와 같이 하시면 대상에 들어 있는 목록 들이 vi에 표시가 되는데 vi를 닫고 c를 눌러 진행을 하시면 저장소에 자료들이 import 됩니다. 

checkout : 서버에서 소스를 받아오는 과정입니다. 
$ svn checkout svn://[주소]/저장소 [저장경로]
위와 같이 하면 저장소에 있는 대상을 받아 올 수 있습니다. 물론 저장소만 관리하는게 아니라. release 등을 관리 할 수 있습니다. 

update : 체크 아웃한 파일을 업데이트를 하는 것입니다. 전체를 받아오는것이 아닌 변경된 부분만 받아오도록 되어 있습니다. 
$ svn update

commit : 소스를 수정하고 저장소에 소스를 업데이트 하는 방법입니다. 
$ svn commit 
위 명령어는 저장소를 받은 디렉토리( 작업디렉토리)에서 이용을 하시면 됩니다. 

add : 새로운 파일을 저장소에 추가하는 명령어 입니다. 
$ svn add [파일]
이 명령어를 사용한 후에는 commit 을 해주어야 실제적으로 저장소에 저장이 됩니다. 

export : 순수 작업 파일만을 가져옵니다. 
$ svn export svn://[주소]/[저장소] [저장 경로]

위와 같이 하시면 소스관리를 할 수 있습니다. 각종 개발툴에서는 플러그인 형태 또는 소스 관리 기능으로 SVN을 지원하고 있습니다. 그외 더 많은 기능 더 유용한 사용법은 많으나 천천히 다뤄보도록 하겠습니다 ^^

출처 :
http://www.lovelgw.com/Blog/182

+ Recent posts