서브버전

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
서브버전
개발자 아파치 소프트웨어 재단
발표일 2000년 10월 20일
최근 버전 1.8.8
(2014년 2월 19일, 57일 경과)
개발 상태 개발중
프로그래밍 언어 C
운영 체제 크로스 플랫폼
종류 버전 관리
라이선스 아파치 라이선스
웹사이트 subversion.apache.org

서브버전(Subversion)은 자유 소프트웨어 버전 관리 시스템이다. 명령행 인터페이스에서 사용하는 명령어를 따서 “SVN”이라고 줄여서 부르기도 한다. 제한이 있던 CVS를 대체하기 위해 2000년부터 콜랩넷에서 개발되었다.[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 형상 관리(SCM) 부류에서 독보적인 선두주자로, 형상 및 변경 관리(SCCM)부류에서는 강력한 실행기이다.

기능[편집]

  • 원자적으로 쓰기를 지원하므로, 쓰기 도중 중단으로 인한 저장소 내의 불일치나 손상을 피할 수 있다.
  • 이름을 바꾸거나, 복사하거나, 파일을 지워도 계정 기록을 유지한다.
  • 시스템이 등록부, 개명, 파일 메타데이터에 대해서도 판본 호수를 지정 관리한다. 사용자는 디렉터리 전체를 빠르게 옮기거나 복사하면서도 전체의 개정 이력을 보유할 수 있다.
  • 심볼릭 링크도 판본 호수를 지정.
  • 이진 파일의 경우 한번 저장한 후 변경될 경우 차이점만 저장하기 때문에 저장소를 효율적으로 사용할 수 있다.
  • 아파치 HTTP 서버를 네트워크 서버로, 웹대브/델타-V를 통신규약으로 사용한다. svnserve라는 독립된 서버 프로세스도 있어서 TCP/IP를 통해 전용 통신규약을 사용한다.
  • 소스 저장소의 크기에 관계 없이 일정한 시간 안에 가지 치기(branching)나 태그 넣기(tagging)를 할 수 있다.
  • 태생적으로 클라이언트-서버, 계층 라이브러리 설계를 채택.
  • 클라이언트/서버 통신규약이 버전간 차이를 양뱡향으로 보냄.
  • 소스 저장소로의 접근이 최적화되어 있으므로, 소스 저장고에서 필요 없는 네트워크 트래픽을 줄일 수 있다.

관련 소프트웨어[편집]

  • TortoiseSVN
    서브버전을 마이크로소프트 윈도에서 쉽게 쓸 수 있게 해주는 도구로는 TortoiseSVN이 있다.[2][3]
    이 프로그램은 탐색기에 통합된 프론트 엔드의 성격을 지니고 있어 팝업 메뉴/쉬운 명령법 등의 장점을 가지고 있다.
    WinCvs 보다 사용법도 편하며 diff 툴이 같이 제공되기 때문에 사용하기 쉽다.
  • Trac
    버그 / 이슈 추적 소프트웨어.[3]

버전 관리 일반[편집]

버전 관리를 이용해야하는 까닭[편집]

거의 대부분의 주요 소프트웨어 개발 프로젝트는 아직도 소프트웨어의 설계도라 할 수 있는 소스 코드 작성이 주요한 부분이 되며 이러한 소스 코드는 기업체 또는 연구소의 핵심 역량이 응축된 핵심 자산이다. 따라서 어떠 형태로든 소스 코드를 백업하여 분실의 위험에서 보호하고 개정 전후 내용을 파악하여 추후 발생할지도 모를 오류 수정에 대비하는 절차가 필요하다. 버전 관리 소프트웨어는 조직의 핵심 자산인 소스 코드의 개정과 백업 절차를 자동화하여 오류 수정 과정을 도와줄 수 있는 시스템으로 이미 다수의 국제 협력 개방 소프트웨어 개발 실무에서도 널리 사용되고 있다. 다음은 버전 관리 시스템을 사용하는 원인을 정리한 것이다.

  • 무언가 잘못되었을 때 복구를 돕기 위하여
  • 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여
  • 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 동기화하는 과정을 자동화하기 위하여
  • 소스 코드의 변경 사항을 추적하기 위하여
  • 소스 코드에서 누가 수정했는지 추적하기 위하여
  • 대규모 수정 작업을 더욱 안전하게 진행하기 위하여
  • 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기 위하여
  • 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기 위하여
  • 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있으므로
  • 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여

일반적으로 버전 관리 소프트웨어가 사용되는 방식[편집]

  • 갑돌이가 어떤 파일을 저장소(repository)에 추가(add)한다.
  • 추가되었던 파일을 갑돌이가 인출(Check out) 한다.
  • 갑돌이가 인출된 파일을 수정한 다음, 저장소에 예치(Commit) 하면서 설명을 붙인다.
  • 다음날 을순이가 자신의 작업 공간을 동기화(Update) 한다. 이때 갑돌이가 추가했던 파일이 전달된다.
  • 을순이가 추가된 파일의 수정 기록(Change log)을 보면서 갑돌이가 처음 추가한 파일과 이후 변경된 파일의 차이를 본다(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 잠그기

참고문헌[편집]

  1. Version Control with Subversion. O'Reilly Media. 2009년 6월 14일에 확인.
  2. TortoiseSVN - A Subversion client for Windows. 2009년 6월 14일에 확인.
  3. 민진우, 이인선, 2009, 이클립스 프로젝트 필수 유틸리티, ISBN 978-89-7914-623-3, 한빛 미디어.

바깥 고리[편집]