서브버전의 기본적인 개요는 What is Subversion?(번역본: Subversion을 이용한 버전 컨트롤: Part 1. 소개)를 참고하도록 한다. 또한 오라일리의 온라인 출판물인 Online Versions of the Book를 참고하여 서브버전의 자세한 내용을 참고할 수 있다. 여기서는 간략하게 기술한다.
서브버전(Subversion)은 CVS를 대체하기 위해 만들어진 자유 소프트웨어 버전 관리(제어) 시스템이다. 명령행 인터페이스에서는 사용하는 명령어를 따서 svn이라고 줄여서 부르기도 한다. 서브버전은 버전 지정으로 변경되는 이름, 디렉토리 및 메타데이터 그리고 원자적 커밋1)(atomic commit) 및 HTTP/HTTPS를 통한 원격 액세스와 같이 CVS에서 제공하지 않은 여러 가지 중요한 기능을 지원한다. 또한 CVS에 비해 효율적인 브랜치(branch), 태그(tag)의 작성으로 응답시간이 많이 향상되었다.
반가운 것은 서브버전의 사용법이 CVS와 매유 유사2)하므로 CVS를 사용해봤다면 쉽게 접근할 수 있다는 것이다.
Subversion Packages에서 대상 시스템에 따라 적절한 패키지를 다운로드 할 수 있다. 글을 작성하고 있는 현재 시점의 Subversion 최신 버전은 1.4.4이다. 여기서는 윈도우(Windows NT, 2000, XP and 2003) 기반의 IIS를 전제로 하여 설치할 것이므로 Windows binaries를 다운로드 하도록 한다(Apache를 사용할 경우 Win32 packages built against Apache 2.2를 다운로드 한다. 단, Apache 2.2.4 이상이 필요하다).
별 의미는 없지만 설치 과정 전체를 편집하여 붙여본다(좌→우, 위→아래 순).
Subversion 1.4 이후 버전 부터 Windows Service로 사용 가능하다. 1.4 이전 버전이라면 하단에 설명할 유용한 도구가 필요할 수 있다.
svnserve can now be run as a native Windows service. This means that the service can be started at system boot, or at any other time, without the need for any wrapper code to start the service.
서비스를 생성하기 위해서는 SC.EXE를 사용하면 된다.
sc create <name>
binpath= "c:\svn\bin\svnserve.exe --service <svn-args>"
displayname= "Subversion Repository"
depend= Tcpip
예를 들면 다음과 같이 사용할 수 있다(자세한 설명은 이것을 참고한다).
sc create svn.local binpath= "\"c:\program files\subversion\bin\svnserve.exe\" --service --root D:\svnrepo" displayname= "Subversion Repository" depend= Tcpip
다음 프로토콜 중 하나를 사용하도록 Subversion 서버를 구성할 수 있다.
제목 그대로 SVN을 한번 클릭하여 설치할 수 있는 프로그램이다. SVN1-Click Setup에서 다운로드 받을 수 있으며, 프로그램을 실행하면 Subversion을 설치하고 저장소 및 사용자 설정, 윈도우즈 서비스 등록, TortoiseSVN 까지 한번에 설치할 수 있다. 현재 이글을 쓰는 시점의 최신 버전은 1.4.2(이 버전에 포함된 Subversion 및 TortoiseSVN는 가장 최신 버전은 아님을 참고)이다.
Windows용 Subversion의 svnserve.exe 매니져이다. svnserve.exe는 Subversion의 svn:/ / 프로토콜 서버로 SVNSERVER Manager를 사용하여 svnserve.exe를 편리하게 사용할 수 있도록 도와준다. SVNSERVE Manager는 여기에서 다운로드 할 수 있다.
SVN Service Wrapper for Windows은 서브버전을 Win32 서비스로 관리할 수 있게 해준다. SVN Manager는 윈도우 세션 로그인을 해야지만, Subversion을 자동으로 띄워줄 수 있다. 반면 Subversion을 Win32 서비스로 등록해 놓으면 세션 로그인 여부와 상관없이 자동으로 실행된다. SVN Service Wrapper for Windows는 여기에서 다운로드 할 수 있다.
SVN Service Wrapper for Windows와 마찬가지로 SVNService를 사용하여 서브버전을 Win32 서비스로 등록할 수 있다. 다음 사이트를 참고한다.
서브버전 클라이언트를 통해 보다 쉬운 방법으로 버전 관리 대상을 Checkout 할 수 있다. 단, 프로젝트의 Subversion 저장소에 본인의 작업 내용을 반영하고 싶다면, 반드시 프로젝트의 참여자로써 “쓰기” 권한을 가지고 있어야 한다.
서브버전 클라이언트는 기본적인 서브버전 명령줄 클라이언트(svn)외에 TortoiseSVN, RapidSVN, <oXygen/> SVN Client 등이 있다. 그리고 이클립스 플러그인 모듈로는 Subclipse, RadRails, Subversive 등이 있다. WebSVN은 웹을 통한 쉬운 서브버전 뷰를 제공한다. WebSVN의 최신 버전은 여기에서 다운로드 할 수 있다. 참고로 이외의 웹 클라이언트로는 ViewCVS, ViewSVN, SubView 등이 있다.
코드를 공유하기 위해서 명령줄 SVN 클라이언트와 Tortiose SVN for Windows를 설치하는 방법에 대해서도 간단히 설명하겠지만, IDE에서 바로 서브버전 저장소와 연동하도록 하는 것도 좋은 방법이다.
Eclipse IDE 내에서 서브버전, 버전 제어 시스템과 상호 작용할 수 있도록 Subclipse를 설치, 구성 및 사용하는 방법에 대해 설명한다. Subclipse 플러그인을 사용하여 Eclipse 플랫폼에 대한 오픈 소스 확장을 통해 개발자 생산성을 높이고 실수의 여지를 없애며 개발 팀 내의 의사소통을 향상시킬 수 있다.
설치는 Installation Instructions을 참고하였다. 이 글을 쓰는 시점에서 Subclipse의 최신 버전은 1.2.2이다(Eclipse 3.2 버전에서는 이 버전을 사용하여야 한다). 또한 설명에 붙인 그림의 경우 Eclipse 한글 언어팩을 설치한 화면임을 덧붙인다.
TortoiseSVN은 윈도우 탐색를 확장한 도구이다. 일반적인 바탕화면을 포함한 윈도우 탐색기에서 오른쪽 버튼 클릭을 통해 호출되는 메뉴로 이용할 수 있다.
TortoiseSVN은 현재 시점 가장 최신 버전은 1.4.4이다. 이것은 여기에서 다운로드 받을 수 있다. 또한 언어팩을 설치할 수 있는데, 한국어는 여기에서 다운로드 받으면 된다. 설치는 다이얼로그를 따라 지시하는데로 따라가면 되는데 주의할 것은 설치 후 시스템을 재시작해야 변경 사항이 반영된다(사실, 책임질 순 없지만 재시작하지 않아도 사용 가능하다
).
아래 그림들은 간단한 예제를 위해 DasBlog에서 호스팅되는 프로젝트를 체크아웃 하는 과정을 보여준다(DasBlog를 광고하는 것은 아니며, 최근 작업 내역이라 가장 먼저 떠올랐을 뿐이다
). 참고로 닷넷의 경우 SVN_ASP_DOT_NET_HACK이 필요하다.
set SVN_ASP_DOT_NET_HACK=1
Windows Platform에서의 Subversion 설치 가이드, WebSVN 설치 문서를 참고하도록 한다.
1. command prompt를 열고 다음과 같이 타이핑한다.
svnadmin create "d:\svnrepo"
다음과 같은 디렉토리 구조 및 관련 파일이 자동으로 생성된다.
2. 생성한 디렉토리로 이동한 후 /conf/svnserve.conf 파일에서 해당 라인의 주석을 해제하여 다음 라인과 같이 편집한다.
[general] anon-access = read auth-access = write password-db = passwd
3. /conf/passwd 파일에서 해당 라인의 주석을 해제하여 다음 라인과 같이 편집한다.
[users] bookcity = 1234 kyungseo = qwer
1. command prompt에 다음과 같이 타이핑 하여 서브버전 서버를 시작한다.
svnserve --daemon --root "d:\svnrepo"
또는 설치본이 서브버전 1.4 이후 버전이라면, 상위 기술한 바와 같이 윈도우 서비스로 시작한다(주의 아래 코드는 한 라인으로 입력해야 한다
).
sc create svn.local binpath= "\"c:\program files\subversion\bin\svnserve.exe\" --service --root D:\svnrepo" displayname= "Subversion Repository" depend= Tcpip
반면 서브버전 1.4 이전 버전인 경우, 상위 기술한 SVNService를 사용하여 서비스로 등록할 수 있다. 다운로드 받은 SVNService.exe를 Subversion/bin 디렉토리로 카피한 후 다음과 같이 서비스를 설치한다.
svnservice -install --daemon --root "D:\svnrepo" sc config svnservice start= auto net start svnservice
2. 또 다른 command prompt를 열고 프로젝트를 생성한다(윈도우 서비스를 생성하여 Subversion 서버를 시작한 경우라면 동일한 커맨트 프롬프트를 사용해도 상관없다).
svn mkdir svn://localhost/bookcity
3. 이때, 자동으로 메모장이 실행되는데 여기에 원하는 코멘트를 달고 저장 후 종료하도록 한다.
4. 자격 증명을 묻는 프롬프트가 뜨게된다. 아래 화면의 경우 Administrator에 대한 자격 증명을 묻는 프롬프트이다. 비밀번호를 입력한다. 그리고 이전 단계에서 작성한 사용자로 로그인한다.
여기까지 진행했다면, 이제 서브버전에 프로젝트가 생성된 것이다!
저장소의 전체 파일 목록을 조회해본다.
svn ls svn://localhost/
1. 새로운 디렉토리를 생성한 후 컨텍스트 메뉴에서 SVN Checkout을 선택한다.
2. 저장소 URL로 svn:/ /localhost/bookcity를 입력한다.
3. 체크아웃 진행
4. 테스트를 위한 파일을 신규 작성한 후 컨텍스트 메뉴에서 Add를 선택한다.
5. 여러 파일인 경우 선택적으로 Add할 수 있다.
6. Add 확인창
7. 아직 저장소에 추가된 것이 아니다. 최종적으로 커밋해주어야 한다. 컨텍스트 메뉴의 SVN Commit을 선택한다.
아래 사항들은 간단한 테스트 후 실제 동작 여부를 확인한 후 정리하였다. 이클립스에 Subclipse 플러그인을 사용하는 예제에 대해서는 충분한 사용을 거쳐 추후 다시 업데이트 하겠다.
1. SVN Repository 뷰를 퀵뷰(Quick Views)에 추가한다.
2. SVN 다이얼로그에서 현재 서브버전에 적합한 어댑터를 선택한다.
3. SVN Repository 뷰에서 Add SVN Repository 버튼을 클릭(또는 컨텍스트 메뉴의 new → repository location)하여 새로운 저장소를 추가한다. Url은 svn:/ /kyungseo/bookcity으로 설정한다.
4. eclipse에 로드된 프로젝트를 저장소에 추가하기 위해서 컨텍스트 메뉴 중 팀 하위의 프로젝트 공유(Share Project)를 선택하면 된다.
이후 프로젝트가 SVN 리포지토리에 연결되면 패키지 탐색기(Package Explorer) 및 Navigator 뷰의 Team 팝업 메뉴에 서브버전과 관련한 모든 액션 표시된다. 이것을 통해 동기화를 수행하고 변경 사항을 반영하는 등의 기본 작업을 수행할 수 있다. 또한 서브버전에서 프로젝트와의 연결을 끊거나 재설정할 수도 있다.
문서에 추가 및 보완해야 할 부분들
서브버전 설치 참고