1Chapter. 도입
1.1.버전 관리는 정보에 대한 변경 사항을 관리하는 기법입니다. 소프트웨어에 작은 수정을 한 뒤, 다음 날에 그 수정된 것을 취소하는 일을 일상적으로 하는 프로그래머에게 버전 관리는 오랫동안 매우 중요한 도구였습니다. 이 프로그래머들이 팀을 이루어 동시에 작업한다고 생각해 보면, 일어날 수 있는 혼란을 막기 위해 좋은 시스템이 필요하다는 사실을 알 수 있을 것입니다. 1.1. Subversion은 무엇인가?Subversion은, 공개(Free)/Open source 버전 관리 시스템으로, 시간과 함께 변화하는 파일이나 디렉토리를 관리합니다. 파일의 계층 구조 전체는, 저장소(repository)로 불리는 장소에 보관됩니다. 저장소는 일반적인 파일 서버와 비슷하지만, 사용자가 파일이나 디렉토리를 변경한 것을 모두 기록하고 있습니다. 이로 인해 사용자는 옛 버전의 데이터로 되돌리거나 변경된 이력을 확인할 수 있습니다. 이런 의미로 버전 관리 시스템을 "타임 머신"의 일종이라고 생각하는 사람도 있습니다. 몇몇 버전 관리 시스템은 소프트웨어 구성 관리 시스템(SCM)이기도 합니다. 그러한 시스템은 소스 코드의 트리를 관리하기 위해서 특별히 제작되었으며, 소프트웨어 개발에 관한 많은 특수 기능을 가지고 있습니다. 예를 들어 프로그래밍 언어를 직접 이해한다거나 소프트웨어를 만드는데 필요한 도구들을 제공합니다. 그러나 Subversion은 그러한 종류의 시스템은 아닙니다. Subversion은 소스 코드는 물론, 어떠한 종류의 파일의 집합도 관리할 수 있는 일반적인 시스템입니다. 1.2. Subversion의 역사1995년에 Karl Fogel과 Jim Blandy는 Cyclic Software 사를 창설했습니다. 이 회사는 Concurrent Versions System (CVS)를 상업적으로 개량하고 기술지원을 하는 기업이었습니다. Cyclic 사는 (Cygnus Software 사의 도움을 받아) 네트워크 상에서 사용할 수 있는 최초의 CVS를 공개했습니다. 1999년에, Karl Fogel은, CVS와 이로 인해 가능하게 된 Open Source 개발 모델에 대한 책을 출판했습니다. Karl과 Jim은 CVS의 대체 소프트웨어에 대하여 오랫동안 이야기했습니다. Jim은 새로운 이론적인 저장소 디자인에 대한 초안을 만들었고, 좋은 프로젝트 명칭을 생각해 냈습니다. 최종적으로 2000년의 2월, CollabNet 사 (http://www.collab.net)의 Brian Behlendorf는 Karl에게 CVS의 대체 소프트웨어를 개발하는 데 전념해 달라고 제의했습니다. Karl은 함께 일할 팀을 만들어 5월부터 작업에 들어갔습니다. Subversion은 라이센스 없이 공개된 형태로 개발되었으므로, 얼마 후 오픈 소스 개발자 커뮤니티의 주목을 받게 되었습니다. 최초의 설계 팀은 몇 개의 간단한 목표를 정했습니다. Subversion은, CVS의 기능을 대체할 수 있어야 한다고 결정했습니다. 즉, CVS의 기능을 그대로 보존하고 개발 모델을 계승하는 반면, 분명히 드러나는 결점을 보완해야 한다는 것입니다. CVS 사용자가 큰 무리 없이 이용할 수 있도록 Subversion은 CVS와 비슷해야 한다고 했습니다. 14개월의 코딩 뒤 Subversion은 2001/8/31에 "스스로 자신의 소스 코드 관리"를 할 수 있게 되었습니다. 즉, Subversion 개발자는 CVS 사용을 그만 두고, Subversion으로 소스 코드 관리를 할 수 있게 되었습니다. CollabNet 사가 개발 자체를 시작했고 풀 타임으로 일하는 Subversion 개발자 몇몇의 임금을 지불하는 등 대부분의 작업에 자금을 대긴 했지만, 이 프로젝트는 실력 중심주의에 따르는 전형적인 Open Source 프로젝트입니다. CollabNet 사가 코드의 저작권을 가지고 있지만, Apache/BSD 스타일의 라이센스를 따르고 있고 이는 Debian Free Software 가이드라인을 준수합니다. 바꾸어 말하면 누구라도 원한다면 자유롭게 Subversion을 다운로드해 수정하고 재배포할 수 있으며, CollabNet 사나 다른 누군가의 허가를 얻을 필요는 없습니다. 1.3. Subversion의 특징Subversion은 CVS의 디자인을 어떻게 개량했을까? 당신의 호기심을 자극하는 작은 이유들을 나열해보겠습니다. CVS에 익숙하지 않다면 이 기능들을 전부 이해할 수 없을 지도 모르지만 괜찮습니다, >에 좀 더 평이한 소개글이 있습니다.
1.4. Subversion의 인스톨Subversion은 APR(the Apache Portable Runtime library)로 불리는 인터페이스 위에 개발되고 있습니다. 이 때문에 Subversion은 Apache의 httpd 서버를 사용할 수 있는 운영체제라면 어디에서도 실행될 수 있습니다: Windows, Linux, 모든 BSD의 변종, Mac OX X, Netware 등입니다. Subversion을 손에 넣는 가장 간단한 방법은 자신의 운영체제용 바이너리 패키지를 다운로드하는 것입니다. Subversion 웹 사이트(http://subversion.tigris.org)에는 자원봉사에 의해 만들어진 다운로드 가능한 바이너리가 많이 있습니다. 이 사이트에는 보통 Microsoft Windows를 위한 그래픽 인스톨러 패키지도 있습니다. Unix 계열의 운영체제를 사용하고 있다면 (rpm, deb, ports tree 등의) 시스템 고유 패키지 배포 시스템을 사용할 수도 있습니다. 혹은 직접 소스 코드로부터 Subversion을 컴파일할 수도 있습니다. 웹 사이트에서 최신 소스 코드 릴리즈를 받을 수 있습니다. 압축을 해제한 뒤 INSTALL 파일의 설명에 따라 컴파일 하십시오. 소스 패키지에는 (apr, apr-util, neon 라이브러리 등의) 원격의 저장소에 접근하기 위한 커맨드 라인 클라이언트를 만드는데 필요한 것은 모두 갖추어져 있습니다. Subversion은 Berkeley DB나 잠재적으로는 Apache httpd 등 다른 여러 가지 소프트웨어에 의존하고 있다는 것을 주의해 주십시오. 만약 "완전하게" 빌드하려고 한다면 INSTALL 파일에 쓰여진 모든 패키지가 설치되어 있는 것을 확인해 주십시오. Subversion 자체에 대해 작업할 계획이라면 클라이언트 프로그램을 사용해 가장 최신의 소스 코드를 받을 수 있습니다. 사용 방법은 >에 나와 있습니다. 1.5. Subversion의 구성요소인스톨 뒤의 Subversion은 작은 프로그램들로 이루어져 있습니다. 간단한 개요를 아래에 씁니다. 1.5.1. 클라이언트 구성요소(사용자전용)
1.5.2. 서버 구성요소(관리자전용)이것들은 모두 >에 논의됩니다.
Subversion이 올바르게 인스톨 되었다면 이제 Subversion을 사용할 수 있습니다. 다음 두 개의 장에서는 커맨드 라인 클라이언트 프로그램 svn의 사용법을 설명합니다. |
By failing to prepare, you are preparing to fail. |











