1. 개요
svn(subversion) 설치에 대한 글들은 삵에서 여러 차례 접해보셨을 겁니다. 설치 과정을 보시면서 아 이런거구나, 혹은 이미 알고 계실 수도 있겠지만..
저와 같은 비기너를 위해 개념 정리를 해보려고 합니다. :)
2. 그래서 Subversion이 뭐죠?
Subversion은 소프트웨어 버전 관리 시스템입니다. 버전 관리가 왜 필요할까요? 정말 작고 간단한 시스템의 경우 혼자 개발하고 반영할 수 있겠지만
어느정도 이상의 규모를 가진 프로젝트라면 혼자서 큰 프로젝트를 진행하기 어렵겠죠? 이런 공동작업 때문에 버전 관리 시스템이 필요 하게 되었다고 합니다.
3. 어떤 장점이 있길래?
버전 관리 프로그램을 사용하면 이런 장점들을 만나게 됩니다.
- 개발 버전, 릴리즈 버전을 쉽게 관리
- 소스 수정 오류 발생 시 기록이 남기 때문에 원복도 쉬움 (수정된 파일이 많을 경우 더욱 유용)
- 소스에 대한 모든 변경 사항에 대해 기록이 남아 추적이 쉬움 (수정, 추가, 삭제 등의 기록)
- 개발자들이 별도로 백업을 하지 않아도 됨
4. 주요 용어들에 대해 알아볼게요. ^^
- 저장소
Repository 라고도 하며 모든 프로젝트의 프로그램 소스들은 이 저장소 안에 저장이 됩니다.
그리고 소스뿐만이 아니라 소스의 변경 사항도 모두 저장됩니다.
네트워크를 통해서 여러 사람이 접근 할 수 있습니다.
버전 관리 시스템 마다 각각 다른 파일 시스템을 가지고 있으며 Subversion은 Berkeley DB를 사용합니다.
한 프로젝트 마다 하나의 저장소가 필요합니다.
- 체크아웃
저장소에서 소스를 받아오는 것입니다.
체크아웃을 한 소스를 보면 프로그램 소스가 아닌 다른 디렉토리와 파일들이 섞여 있는 것을 볼 수 있습니다.
이 디렉토리와 파일들은 버전 관리를 위한 파일들입니다.
임의로 지우거나 변경하면 저장소와 연결이 되지 않습니다.
체크아웃에도 권한을 줄 수 있습니다.
오픈 소스 프로젝트들에서는 대부분 익명 체크아웃을 허용하고 있습니다.
- 커밋(Commit)
체크아웃 한 소스를 수정, 파일 추가, 삭제 등을 한 뒤 저장소에 저장하여 갱신 하는 것입니다.
커밋을 하면 CVS의 경우 수정한 파일의 리비전이 증가하고 Subversion의 경우 전체 리비전이 1 증가하게 됩니다.
- 업데이트(Update)
체크아웃을 해서 소스를 가져 왔더라도 다른 사람이 커밋을 하여 소스가 달라졌을 것입니다.
이럴 경우 업데이트를 하여 저장소에 있는 최신 버전의 소스를 가져옵니다. 물론 바뀐 부분만 가져옵니다.
- 리비전(Revision)
소스 파일 등을 수정하여 커밋하게 되면 일정한 규칙에 의해 숫자가 증가 합니다.
저장소에 저장된 각각의 파일 버전이라 할 수 있습니다.
Subversion의 경우 파일별로 리비전이 매겨지지 않고 한번 커밋 한 것으로 전체 리비전이 매겨 집니다.
리비전을 보고 프로젝트 진행 상황을 알 수 있습니다.
- 임포트(Import)
아무것도 들어있지 않은 저장소에 맨 처음 소스를 넣는 작업입니다.
- 익스포트(Export)
체크아웃과는 달리 버전 관리 파일들을 뺀 순수한 소스 파일을 받아올 수 있습니다.
소스를 압축하여 릴리즈 할 때 사용합니다.