S U B V E R S I O N 의소개와간단한사용법, Eclipse 와의연동 1 SUBVERSION의소개 Subversion은소프트웨어버전관리시스템이다. 공동작업을할때한사람이프로젝트를진행하는것이아니라여러사람이큰프로젝트하나를진행하기때문에버전관리시스템이필요하게되었다. - 버전관리프로그램의장점 개발버전과릴리즈버전이섞이지않게관리할수있다. 수정을잘못하였더라도기록이남고되돌리기쉽다. 수정, 추가, 삭제등의기록이모두남고변경사항을추적할수있다. 개발자들이따로따로백업을하지않아도된다. 버전관리시스템의용어 저장소 : 리포지토리 (Repository) 라고도하며모든프로젝트의프로그램소스들은이저장소안에저장된다. 그리고소스뿐만이아니라소스의변경사항도모두저장된네트워크를통해서여러사람이접근할수있다. 체크아웃 : 저장소에서소르를받아오는것. 체크아웃을한소스를보면프로그램소스가아닌다른디렉토리와파일들이섞여있는것을볼수있는데. 그것들은버전관리를위한파일들이다. 임의로지우면저장소와연결이되지않으므로주의. 커밋 (Commit) : 체크아웃한소스를수정, 파일추가, 삭제등을한뒤저장소에저장하여갱신하는것. 커밋을하면전체리비전이 1 증가하게된다.(Subversion) 업데이트 (Update) : 체크아웃을해서소스를가져왔더라도다른사람이커밋을하였다면소스가달라졌을것이다. 이경우업데이트를하여저장소에있는최신의소스를가져오는데, 물론바뀐부분만가져온다. 리버전 (Revision) : 소스파일등을수정하여커밋하게되면일정한규칙에의해숫자가증가한다. Subversion에서는각각의파일별로리비전이매겨지지않고한번커밋 (Commit) 할때마다전체리비전이매겨진다. 리비전을보고전체진행상황을알수있다. 임포트 (Import) : 아무것도들어있지않은빈저장소 (Repository) 에처음소스를넣는작업 익스포트 (Export) : 체크아웃과다르게버전관리파일들을제외한순수한파일을받아온다. ( 릴리즈할때사용 )
저장소 (Repository) 의디렉토리배치 저장소에바로소스를넣어프로젝트를진행할수있으나, 버전관리시스템에서권 장하는디렉토리배치방법이있다. sample +--+---+- branches +--+- dav-mirror --- src --- doc +--- Makefile +--- svn-push +--- svnserve-thread-pools +---+- tags +--- 0.10 +--+- 0.10.1 --- src --- doc +--- Makefile +--- 0.20 +--- 0.30 +--- 0.50 +--- 1.01 +---+- trunk --- src --- doc +--- Makefile 위의구조가보통자주사용되는디렉토리구조이다. 저장소아래 branches, tags, trunk 라는 3개의디렉토리가있고각각의용도를가지고있다. trunk : 프로젝트에서가장중심이되는디렉토리, 모든개발작업은 trunk 디렉토리에서이루어진다. 그래서위구조에서는소스파일들과디렉토리가들어감 branches : 나무줄기 (trunk) 에서뻗어져나온나무가지를뜻합니다. trunk 디렉토리에서프로그램을개발하다보면큰프로젝트에서다른작은분류로빼서따로개발해야할경우가생긴다. 프로젝트안의작은프로젝트라생각하자. Branches 디렉토리안에또다른디렉토리를두어그안에서작업한다. tags : 이디렉토리는프로그램을개발하면서정기적으로릴리즈할때 0.1, 0.2, 1.0 하는식으로버전을붙혀발표하게되는데그때그때발표한소스를따로저장하는공간이다. tag디렉토리아래에는버전명으로디렉토리가만들어져있다.
2 설치 권장설치순서 : Subversion Eclipse libsvn-javahl 이문서에서는 Ubuntu 8.04 Hardy Heron 을기준으로시냅틱꾸러미관리자를이용한간단한 설치방법만을다룬다. 1 SUBVERSION 의설치 (Ubuntu 8.04 Hardy Heron) Subversion 의최신소스파일, 의존성소스는 http://subversion.tigris.org 을참조한다. Microsoft Windows 에서의사용은 http://subversion.tigris.org/servlets/projectdocumentlist?folderid=91 의설치파일을사용한다. 시스템 > 관리 > 시냅틱꾸러미관리자 > 검색 검색어에 subversion 입력
subversion 과 subversion-tools 를설치한다. ( 의존성모두설치 ) 2 Eclipse 설치 subversion 과마찬가지로시냅틱패키지관리자 검색에서 eclipse eclipse, eclipse-cdt 체크후설치 ( 의존성모두설치 ) 3 libsvn-javahl 설치 역시마찬가지로시냅틱패키지관리자 검색에서 libsvn-javah 설치 ( 의존성모두설치 )
3 Subversion 설정 1 저장소만들기작업한소스를저장할공간을만들어야한다. 저장소 (Repository) 는프로젝트하나마다있어야하고저장소안에소스가모들들어가게되며, 다른프로젝트를진행한다면다른저장소를만들어야한다. /home/svn 안에저장소를만들도록하겠다. ( 꼭이곳이아니여도되며예를든것이다 ) # mkdir /home/svn # cd /home/svn/ /home/svn# svnadmin create --fs-type fsfs sample /home/svn/ 에 sample이라는폴더가생성되었고그안에몇가지디렉토리와파일이보인다면완성. 2 공동작업을위한저장소그룹설정 svn:// 로작업을하려면시스템계정을만들어야한다. 대부분계정을만들고그룹을하나로묶는데이럴경우그룹에소속된사용자들에게도저장소쓰기권한을주어야한다. 그렇기때문에저장소의그룹권한을조정해주어야한다. # chmod -R g+w sample 3 svnserve 를사용한서버 Subversion 의고유프로토콜인 svn:// 을이용할수있는 svnserve를사용하기위해설정을한다. svnserve로서버를실행시키면 3690번포트가열린다. sample 저장소가 /home/svn 아래에있을경우 # svnserve -d -r /home/svn/ 이렇게실행한뒤테스트하기위해 "# svn checkout svn://(subversion서버 IP또는도메인 )/sample sample 을입력한다. "Checked out revision 0." 이나오면제대로설정이된것이다. ( 자신의계정홈폴더에 sample이라는폴더가생성되었을것이다. 이곳으로소스를체크아웃해온것.) 이제부턴아무나 (Anonymous) 저장소에접근해서체크아웃, 커밋등을할수있다. 4 svnserve 에서 ID 로사용자인증 svnserve 에서 ID 로사용자인증이가능하다. 저장소디렉토리로가보면 /conf 라는디렉토 리에 svnserve.conf 파일과 passwd 파일이보일것잇다. 먼저 svnserve.conf 파일을열어
다음과같이수정하자. ( 앞에주석 # 이붙어있으면다음항목들은주석을제거하고다음과 같이값을준다.) anon-access = none ( 아무에게나 (Anonymous) 저장소에접근막음 ) ( 아무나쓰게하려면 write) auth-access = write (ID로인증된사용자에게쓰기권한을준다 ) password-db = passwd (password파일이안에계정정보가들어있다 ) realm = 원하는이름 이제계정을만들기위해 passwd 파일을열어다음과같이수정한다. [users] user_id = user_passwd user_id = 원하는 id, user_passwd = 해당하는비밀번호를넣는다. ( 주석을반드시땔것 ) 5 기본디렉토리만들기앞에서설명했던 trunk폴더를만들어보자수월한진행을위해시작하기전에저장소 /conf/svnserve.conf파일의다음부분을수정한다. ( 주석을때는것을잊지말자.) 그다음 anon-access = none auth-access = write password-db = passwd realm = 원하는이름 # svn mkdir http://(subversion 서버의 IP 주소또는도메인 )/sample/trunk 을입력하면편집기로들어가면서다음과같은문구가나온다. --This line, and those below, will be ignored-- A http://(subversion 서버의 IP 주소또는도메인 )/sample/trunk 여기서그냥빠져나온후 c 를입력하고엔터를치면리비전이올라가면서디렉토리가만들 어진다.
4 Eclipse 와 Subversion 을연동해서사용하기 (subclipse 를사용 ) eclipse 용 subversion 플러그인중이문서에서는 subclipse 를사용한연동을다룬다. 먼저 eclipse 실행후메뉴에서 Help Software Updates Find and Install 선택 나타난창에서 Search for new features to install 선택 다음 Install 창에서 New Remote Site 선택 새로운 Update Site 를추가할수있는데 그림과같이입력 Name : subclipse, URL : http://subclipse.tigris.org/update
정상적으로추가된경우에러메시지없이다음과같이 subclipse 가추가된다. Subclipse 에체크된상태로 Finish 후몇번의창을넘긴다. Next 후다음창에서 Install All 을선택하면 subclipse 가정상적으로설치되고 설치후 eclipse 를다시시작할것인지물어보면다시시작한다.
다시시작된 eclipse 에서 Window Show View Other 로들어간다. SVN 이추가된것을확인할수있다. SVN 의 SVN Repository 를선택 SVN Repository 가추가된것을볼수있다. Add SVN Repository 선택 나타나는창에 Location 에앞서만든자신의 server 를등록한다.