티스토리 뷰

728x90

최근에는 분산 형상 관리 시스템인 깃(Git)을 사용하는 개발자가 많아 졌지만 여전히 서브버전을 애용하는 개발자들도 많습니다. 본격적으로 서브버전(Subversion) 사용법을 다루기 이전에 핵심 용어나 개념을 이해하는 것이 필요 합니다. 본 포스팅에서는 서브버전이 설치되어 있는 곳이라면 어떤 곳에서도 사용할 수 있는 명령행 도구(CLI, Command Line Interface)와 윈도우용 도구인 TortoiseSVN 사용법을 모두 다룹니다.


■ 토터스 SVN(TortoiseSVN) 설치


서브버전을 시스템에 설치한다는 의미는 외부의 서브버전 저장소에 접근할 수 있는 클라이언트를 설치하는 것과 동시에 자신의 컴퓨터를 서브버전 서버로 가동시킨다는 의미가 있습니다. 자신의 컴퓨터에 저장소를 생성하여 서브버전 전용 프로토콜로 다른 컴퓨터가 저장소를 접근할 수 있도록 할 수 있을 뿐만 아니라 웹서버와 DAV 모듈을 설치하면 웹 프로토콜을(http 또는 https) 통해서도 저장소 접근 서비스를 제공 할 수도 있습니다.


리눅스 시스템에서는 "yum install subversion", "apt-get install subversion" 등의 간단한 방법으로 서브버전을 시스템에 설치 할 수 있습니다. 윈도우에서는 토터스 SVN을 설치하시면 됩니다. 기업에서도 무료로 사용할 수 있는 오픈 소스 프로그램으로 오픈 소스 라이선스는 GPL입니다. 다운로드 및 설치는 https://tortoisesvn.net/downloads.html 를 참조합니다.



토터스 SVN을 정상적으로 설치했으면 윈도우 탐색기의 컨텍스트 메뉴에 위의 그림과 같이 SVN Checkout과 TortoiseSVN 메뉴를 확인할 수 있습니다.



■ 저장소(Repository)


버전 관리되는(version controlled) 모든 파일의 정보를(과거 기록 포함) 가지고 있는 데이터베이스로 서브버전 서버가 동작하는 파일 서버에 위치 합니다. 한곳에 모든 정보가 집중되는 방식으로 전통적인 형상 관리 도구였던 CVS처럼 서브버전도 중앙집중식의 저장소를 가지고 클라이언트/서버 방식으로 버전을 관리 합니다. 


반면에 최근에는 저장소를 한곳에 집중하지않고 분산시킨(Distributed) 형상 관리 도구들을 사용하기도 하는데 대표적인 것이 Mercurial(http://mercurial.selenic.com/)과 Git(http://git-scm.com/) 입니다.




위의 그림은 윈도우 시스템에 생성한 서브버전 저장소 예제 입니다. 통상 conf 폴더에는 저장소에 접근하는 사용자 정보와 접근 권한등을 관리하기 위한 정보가 담기고, db에는 저장소에 저장되고 있는 내용들이 담기며, hooks에는 커밋 전후나 잠금등의 작업 시점에 메일을 보내거나 이슈 트래킹 시스템에 리포팅 하는 등의 작업을 가지고 있는 스크립트들이 저장됩니다.



■ 작업 사본(Working Copy)


샌드박스라고도 하는데, 개발자가 저장소로부터 최신 버전 또는 특정 버전을 내려 받아 나름의 편집이나 작업을 다른 사람에게 방해를 받거나 반대로 다른 개발자에게 아무런 영향을 미치지 않고 수행할 수 있는 공간 입니다. 작업을 하다가 삭제, 변경하는 것이 원본 저장소에 아무런 영향을 미치지 않으며 스스로 작업한 내용과 저장소 내용을 손쉽게 비교해서 얼마나 어떻게 작업했는지 간편하게 확인할 수도 있습니다. 


통상 많은 오픈 소스 프로젝트들이 웹 인터페이스를 통하여 저장소를 오픈해 놓기 때문에 전세계적으로 수많은 작업사본들이 만들어 지게 됩니다. 그렇지만 수정한 작업 사본을 저장소에 저장하기 위해서는 저장소를 변경할 수 있는 권한이 있어야 하는데 많은 오픈 소스 프로젝트들은 저장소에 대한 읽기 권한은 주지만 변경 권한은 대부분 일부 커미터로 제한하는 것이 현실입니다.


아무튼 작업을 완료한 다음에는 저장소에 대한 변경 권한이 있다면  수정 내용을 원본에 반영할 수 도 있고, 작업 중에 다른 이가 작업한 내용을 현재 작업중인 내용에 손상이 없도록 반영할 수도 있습니다.



■ 저장소 생성하기와 저장소 URL



서브버전 저장소 생성은 CLI로는 "svnadmin create --fs-type fsfs 폴더명"으로 수행할 수 있습니다. 토터스 SVN에서는 위의 그림처럼 빈 디렉토리에서 윈도우 탐색기의 컨텍스트 메뉴 > Create repository here를 통해서 저장소를 생성할 수 있습니다. 주의할 점은 저장소 생성은 반드시 빈 디렉토리에 수행해야 합니다.



저장소 생성을 수행하면 저장소 생성 결과 화면이 위의 그림과 나오는데 이때 [Create folder structure] 버튼을 클릭하면 서브버전의 기본 디렉토리인 trunk, branches, tags를 생성할 수도 있습니다. 대부분 형상 관리는 trunk 폴더에서 시작합니다.


위의 그림을 보면 "file:///D:/tmp/testsvn"와 표시하고 있는데 이를 저장소 URL이라고 합니다. 각 저장소의 고유한 주소로 주소의 형태는 다음과 같습니다.


    • file://
      시스템 내부 저장소

    • svn://
      서브버전 전용 프로토콜로 접근할 수 있는 시스템 내부 및 외부 저장소

    • http:// 또는 https://
      웹 프로토콜로 접근할 수 있는 시스템 내부 및 외부 저장소


위에서 생성한 "file:///D:/tmp/testsvn"는 로컬 컴퓨터에서만 접근할 수 있는 저장소 URL입니다. 서브버전 서버 프로그램을 설치하면 TCP 3690 포트를 통해서 원격에서도 "svn://192.168.0.111/testsvn"과 같은 URL로 접근할 수 있습니다. 또한, WebDAV(Web Distributed Authoring and Versioning) 모듈과 함께 웹서버(아파치)를 설치하면 웹 인터페이스를 통해서도 저장소에 접근할 수 있습니다. 이 때는 "http://192.168.0.111/testsvn"이나 "https://192.168.0.111/testsvn"와 같은 URL로 저장소에 접근할 수 있습니다. 저장소 URL 끝에 @리비전번호를 붙이면 특정 리비전을 지정할 수도 있습니다.



728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함