1. 개요

  svn(subversion) 설치에 대한 글들은 삵에서 여러 차례 접해보셨을 겁니다. 설치 과정을 보시면서 아 이런거구나, 혹은 이미 알고 계실 수도 있겠지만..
  저와 같은 비기너를 위해 개념 정리를 해보려고 합니다. :)

 

2. 그래서 Subversion이 뭐죠?

    Subversion은 소프트웨어 버전 관리 시스템입니다. 버전 관리가 왜 필요할까요? 정말 작고 간단한 시스템의 경우 혼자 개발하고 반영할 수 있겠지만 
    어느정도 이상의 규모를 가진 프로젝트라면 혼자서 큰 프로젝트를 진행하기 어렵겠죠? 이런 공동작업 때문에 버전 관리 시스템이 필요 하게 되었다고 합니다.

 

3. 어떤 장점이 있길래? 

    버전 관리 프로그램을 사용하면 이런 장점들을 만나게 됩니다.

  • 개발 버전, 릴리즈 버전을 쉽게 관리
  • 소스 수정 오류 발생 시 기록이 남기 때문에 원복도 쉬움 (수정된 파일이 많을 경우 더욱 유용)
  • 소스에 대한 모든 변경 사항에 대해 기록이 남아 추적이 쉬움 (수정, 추가, 삭제 등의 기록)
  • 개발자들이 별도로 백업을 하지 않아도 됨

 

4. 주요 용어들에 대해 알아볼게요. ^^
  • 저장소
    Repository 라고도 하며 모든 프로젝트의 프로그램 소스들은 이 저장소 안에 저장이 됩니다.
    그리고 소스뿐만이 아니라 소스의 변경 사항도 모두 저장됩니다.
    네트워크를 통해서 여러 사람이 접근 할 수 있습니다.
    버전 관리 시스템 마다 각각 다른 파일 시스템을 가지고 있으며 Subversion은 Berkeley DB를 사용합니다.
    한 프로젝트 마다 하나의 저장소가 필요합니다.
 
  • 체크아웃

    저장소에서 소스를 받아오는 것입니다.
    체크아웃을 한 소스를 보면 프로그램 소스가 아닌 다른 디렉토리와 파일들이 섞여 있는 것을 볼 수 있습니다.
    이 디렉토리와 파일들은 버전 관리를 위한 파일들입니다.
    임의로 지우거나 변경하면 저장소와 연결이 되지 않습니다.
    체크아웃에도 권한을 줄 수 있습니다.
    오픈 소스 프로젝트들에서는 대부분 익명 체크아웃을 허용하고 있습니다.
 

  • 커밋(Commit)
    체크아웃 한 소스를 수정, 파일 추가, 삭제 등을 한 뒤 저장소에 저장하여 갱신 하는 것입니다.
    커밋을 하면 CVS의 경우 수정한 파일의 리비전이 증가하고 Subversion의 경우 전체 리비전이 1 증가하게 됩니다.

 

  • 업데이트(Update)
    체크아웃을 해서 소스를 가져 왔더라도 다른 사람이 커밋을 하여 소스가 달라졌을 것입니다.
    이럴 경우 업데이트를 하여 저장소에 있는 최신 버전의 소스를 가져옵니다. 물론 바뀐 부분만 가져옵니다.

 

  • 리비전(Revision)
    소스 파일 등을 수정하여 커밋하게 되면 일정한 규칙에 의해 숫자가 증가 합니다.
    저장소에 저장된 각각의 파일 버전이라 할 수 있습니다.
    Subversion의 경우 파일별로 리비전이 매겨지지 않고 한번 커밋 한 것으로 전체 리비전이 매겨 집니다.
    리비전을 보고 프로젝트 진행 상황을 알 수 있습니다.

 

  • 임포트(Import)
    아무것도 들어있지 않은 저장소에 맨 처음 소스를 넣는 작업입니다.

 

  • 익스포트(Export)
    체크아웃과는 달리 버전 관리 파일들을 뺀 순수한 소스 파일을 받아올 수 있습니다.
    소스를 압축하여 릴리즈 할 때 사용합니다.