서브버전
위키백과 ― 우리 모두의 백과사전.
서브버전(Subversion)은 자유 소프트웨어 버전 관리 시스템이다. 명령행 인터페이스에서 사용하는 명령어를 따서 “SVN”이라고 줄여서 부르기도 한다. 제한이 있던 CVS를 대체하기 위해 2000년부터 CollabNet에서 개발되었다.[1]
서브 버전은 서버-클라이언트 모델을 따른다. 서버는 작업하는 컴퓨터내에 둘 수도 있고, 전산망에 연결된 별도의 컴퓨터에 두고 사용할 수도 있다. 서브버전 서버와 클라이언트는 http, https, svn, svn+ssh의 규약으로 통신한다.
목차 |
[편집] 서브버전의 보급 현황
서브버전은 오픈소스 커뮤니티에 잘 알려져있고, Apache Software Foundation, KDE, GNOME, Free Pascal, GCC, Python, Ruby, Samba, Mono와 같은 많은 오픈 소스 프로젝트에 사용되고 있다. 또한, SourceForge.net과 Tigris.org에서는 오픈소스 프로젝트를 위해 서브버전 호스팅을 하고 있다. Google code와 BountySouce System은 오로지 이것만 사용한다.
서브버전은 업계에서 더 많이 채용되어가고 있다. 2007년 Forrester Research 보고서에 따르면, 서브버전은 Standalone Software Configuration Management(SCM) 부류에서 독보적인 선두주자로, Software Configuration and Change Management(SCCM)부류에서는 강력한 실행기로 인식되어져있다.
[편집] CVS와 비교
CVS와 비교했을 때, 서브 버전은 다음과 같은 장점을 가진다.
- 원자적으로 쓰기를 지원하므로, 다른 사용자의 쓰기와 엉키지 않는다.
- 이름을 바꾸거나, 복사하거나, 파일을 지워도 리비전 기록을 유지한다.
- 이진 파일의 경우 한번 저장한 후 변경될 경우 차이점만 저장하기 때문에 저장소를 효율적으로 사용할 수 있다.
- 디렉터리도 버전 관리를 할 수 있다. 디렉터리 전체를 빠르게 옮기거나 복사할 수 있으며, 리비전 기록도 그대로 유지한다.
- 소스 저장고의 크기에 상관 없이 일정한 시간 안에 가지 치기(branching)나 테그 넣기(tagging)를 할 수 있다.
- 소스 저장고로의 접근이 최적화되어 있으므로, 소스 저장고에서 필요 없는 네트워크 트래픽을 줄일 수 있다.
[편집] 관련 소프트웨어
- TortoiseSVN
- 서브버전을 마이크로소프트 윈도에서 쉽게 쓸 수 있게 해주는 툴로는 TortoiseSVN이 있다.[2][3]
- 이 프로그램은 탐색기에 통합된 프론트 엔드의 성격을 띠고 있어 팝업메뉴/쉬운 명령법 등의 장점을 가지고 있다.
- WinCvs 보다 사용법도 편하며 diff 툴이 같이 제공 되기 때문에 사용이 용이 하다.
- AnkhSVN
- 마이크로소프트 비주얼 스튜디오와의 통합을 제공한다.
[편집] 버전 관리 일반
[편집] 버전 관리 시스템을 이용해야하는 까닭
거의 대부분의 주요 software 개발 project에는 아직도 software의 설계도라 할 수 있는 source code 작성이 주요한 부분이 되며 이러한 source code는 기업체 또는 연구소의 핵심 역량이 응축된 핵심 자산이 된다. 따라서 어떠한 형태로든 이러한 source code를 backup하여 분실의 위험에서 보호하고 개정 전후 내용을 파악하여 추후 발생할지도 모를 debugging에 대비하는 절차가 필요하다. Software Revision Control Software는 조직의 핵심 자산인 source code의 개정과 backup 절차를 자동화하여 debugging 과정을 도와줄 수 있는 system으로 이미 다수의 국제 협력 개방 software 개발 실무에서도 널리 사용되고 있다. 다음은 버전 관리 시스템을 사용하는 이유를 정리한 것이다.
- 무언가 잘못되었을 때 복구를 돕기 위하여
- (SW) project 진행 중 과거의 어떤 싯점으로 돌아갈 수 있게 하기 위하여
- 여러사람이 같은 SW project에 참여할 경우, 각자가 수정한 부분을 팀원 전체에게 update하는 과정을 자동화하기 위하여
- SW source code의 변경 사항을 추적하기 위하여
- SW source code에서 누가 수정했는지 추적하기 위하여
- 대규모 수정 작업을 보다 안전하게 진행하기 위하여
- 가지내기(Branch)로 project에 영향을 최소화 하면서 새로운 부분을 개발하기 위하여
- 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기 위하여
- 많은 open-source project에서 어떠한 형태로든 version control을 사용하고 있으므로
- Code의 특정 부분이 왜 그렇게 씌여 졌는지 의미를 추적하기 위하여
[편집] 일반적으로 버전 관리 소프트웨어가 사용되는 방식
- 갑돌이가 어떤 File을 저장소(repository)에 추가(add) 한다.
- 추가되었던 File을 갑돌이가 인출(Check out) 한다.
- 갑돌이가 인출된 file을 수정한 다음, 저장소에 예치(Commit) 하면서 설명을 붙인다.
- 다음날 을순이가 자신의 작업 공간을 동기화(Update) 한다. 이 때 갑돌이가 추가했던 file이 전달된다.
- 을순이가 추가된 file의 수정 기록(Change log)을 보면서 갑돌이가 처음 추가한 file과 이후 변경된 file의 차이를 본다(Diff).
[편집] 버전 관리에서 흔히 사용되는 개념, 용어
- Repository 저장소, Server, Client, Working Copy 작업 copy, Trunk / Main 주류 / 본류
- Add 추가, Revision 개정판, Head 최신, Check out 인출, Check in / Commit 반납 / 예치, Check in message, Change log / History 수정 기록, Update / Sync 동기화, Revert
- Branch 가지내기, Diff 차이보기, Merge 합치기/접붙이기/접목하기, Conflict 충돌, Resolve 해소, Locking 잠그기
[편집] 바깥 고리
- (영어) 서브버전 공식 홈페이지
- (영어) 서브버전으로 버전 제어
- 서브버전 사용법
[편집] 참고문헌
- ↑ Version Control with Subversion. O'Reilly Media. 2009년 6월 14일에 확인.
- ↑ TortoiseSVN - A Subversion client for Windows. 2009년 6월 14일에 확인.
- ↑ 가 나 다 민진우, 이인선, 2009, 이클립스 프로젝트 필수 유틸리티, ISBN 978-89-7914-623-3, 한빛 미디어.
![]() |
이 글은 컴퓨터에 관한 토막글입니다. 서로의 지식을 모아 알차게 문서를 완성해 갑시다. |


