IT 이야기/IT Tech

우분투에서 SVN(Subversion) 설치하기

필넷 2011. 6. 6. 23:19
반응형

우분투에 Eclipse를 설치하고 CDT(C/C++ Development Tool) 플러그인을 설치하는 것을 지난글에서 간단히 살펴보았다.
이번에는 SVN(Subversion)이라는 버전관리시스템을 설치하고 설정하는 것을 해보겠다.

SVN(Subversion) 은 무엇?


Subversion은 공개된 오프소스 버전관리 시스템이다. 리파지토리라고 하는 중앙 저장소에 파일과 디렉토리에 적용된 모든 변경사항을 시간의 흐름에 따라 기록하는 타임머신이라고 할 수 있다. 따라서 사용자들은 SVN을 통해서 과거의 데이터를 열람하거나 특정 시점으로 복구하는 것이 가능하다. 또한 다른 사람들과의 협업을 지원하기 때문에 다수의 사람의 동일한 데이터를 각자의 머신에서 작업하고 관리하고 남이 작업한 내용을 병합(Merge)하여 SVN에 체크인 할 수 있다.

SVN은 개발자들만이 사용하는 버전관리 시스템이 아닌 범용적인 파일관리 시스템이라고 할 수 있다. 즉, 미디어 파일과 같은 종류에도 적용할 수 있다.

SVN 이전에도 CVS(Concurrent Version System)라는 버전관리 도구가 있었다. 하지만 CVS는 등록된 디렉토리나 파일의 변경 및 이동이 불가능했고 파일단위의 버전만 관리되는 것과 같은 한계가 있었다.

SVN은 CVS에 비해 다음과 같은 장점이 있다.

  1. 앞서 이야기한 바와 같이 범용적인 파일관리 시스템으로서 소스파일 뿐만아니라 바이너리(문서/미디어)도 지원한다.
  2. 커밋의 단위가 파일이 아닌 체인지셋 단위이다. 즉 한번 커밋할때 하나의 리비젼[각주:1]이 올라간다.
  3. 빠른 브랜칭 및 태깅시간. SVN은 각 리비젼의 차이(Difference)만을 저장한다. 따라서 브랜치와 태그 시에는 차이(Diff~)가 없이 이루어지므로 빠르게 동작한다.
  4. 파일 및 디렉토리의 이름 변경 및 이동을 지원한다.
  5. CVS와 개념 및 사용법이 유사하기때문에 CVS에서 SVN으로 쉽게 옮겨올 수 있다.
  6. 원자적 커밋을 지원한다. 즉, 커밋중에 에러 발생시에는 커밋 발생 이전의 상태로 완벽히 롤백된다.

SVN 설치 및 설정


  • $sudo apt-get install subversion                                     // SVN 설치
  • #mkdir ~/repository                                                    // 리파지토리 위치가 될 디렉토리를 생성
  • #svnadmin create -fs-type fsfs ~/repository/SampleProject  // 일반 파일시스템 타입으로 repository 생성
  • #svnserv -d -r ~/repository                                           // SVN 데몬 기동
  • #netstat -na | grep 3690                                             // SVN 데몬 기동 확인

SVN 데몬이 성공적으로 기동이 되었다면 ~/repository/project/conf/svnserve.conf 파일의 [general] 섹션에서 #password-db = passwd 항목을 찾아 주석을 제거하여 패스워드 파일을 관리하도록 한다. 그런다음 ~/repository/project/conf/passwd 파일을 열어 feelnet = 1234 형태로 아이디와 패스워드를 등록한다.

이제 마지막으로 아래와 같이 SVN Repository에서 사용할 trunk[각주:2], branch[각주:3], tag[각주:4]를 생성하면 subversion을 사용할 준비가 끝난다.

  • #svn mkdir svn://localhost/SampleProject/trunk --username feelnet
  • #svn mkdir svn://localhost/SampleProject/branches --username feelnet
  • #svn mkdir svn://localhost/SampleProject/tags --username feelnet

다음글에서는 Eclipse에서 SVN과 연동하는 subclipse를 살펴보고 SVN에 Check-In/Out 하는 과정을 보도록 하겠다.

 

이 글은 스프링노트에서 작성되었습니다.


  1. SVN에서는 커밋할때마다 저장소의 리비젼이 하나씩 증가한다. 즉 최종 리비젼이 100이라면 현재 저장소에 등록된 프로젝트가 100번 커밋이 이루어졌음을 의미한다. [본문으로]
  2. 프로젝트에서 가장 중심이 되는 디렉토리로 모든 프로그램의 개발 작업은 trunk 디렉토리에서 이루어진다. [본문으로]
  3. 프로젝트안의 작은 프로젝트로 trunk에서 파생되어 별도로 개발되는 경우에 branch를 생성하여 개발하게 된다. [본문으로]
  4. 프로젝트의 정기적으로 릴리즈할때 1.0, 2.0 과 같은 방식으로 꼬리표를 붙여서 보관하는 장소이다. [본문으로]
반응형