Subversion

Subversion 은 오픈소스 버전 관리 시스템 입니다. Subversion을 사용하여, 소스 파일과 문서의 이력을 기록할 수 있습니다. 그것은 시간에 걸쳐 파일과 디렉토리를 관리 합니다. 파일의 트리는 중앙 저장소로 놓여집니다. 저장소는 보통의 파일 서버와 매우 비슷하지만, 이제껏 만들어진 파일과 디렉토리의 모든 변경을 기억하고 있습니다.

설치

HTTP 프로토콜을 사용하여 Subversion 저장소를 접근하기 위해, 여러분은 반드시 웹 서버를 설치하고 설정하여야 합니다. 아파치2는 Subversion과 잘 동작하는 것이 증명 되었습니다. 아파치2를 설치하고 설정하기 위하여 아파치2 영역 내의 HTTP 부 영역을 참조 하십시오. HTTPS 프로토콜을 사용하여 Subversion 저장소에 접근하려면, 반드시 여러분의 아파치2 웹 서버 내에 디지털 인증서를 설치하고 설정하여야 합니다. 디지털 인증서를 설치하고 설정하기 위하여 아파치2 영역 내의 HTTPS 부 영역을 참조 하십시오.

Subversion은 설치하려면, 터미널 프롬프트에서 다음의 명령을 실행 합니다:

sudo apt-get install subversion libapache2-svn

서버 설정

이 절차는 위에서 언급된 꾸러미가 여러분의 시스템에 설치된 것으로 간주 합니다. 이 영역은 Subversion 저장소를 어떻게 만들고 프로젝트를 접근할 수 있는지를 설명 합니다.

Subversion 저장소 만들기

Subversion 저장소는 터미널 프롬프트에서 다음의 명령을 사용하여 만들 수 있습니다:

svnadmin create /path/to/repos/project

Importing Files

Once you create the repository you can import files into the repository. To import a directory, enter the following from a terminal prompt:

svn import /path/to/import/directory file:///path/to/repos/project

접근 방법

Subversion 저장소는 로컬 디스크 상의 많은 다른 방법들 또는 다양한 네트워크 프로토콜을 통하여 접근(체크아웃)될 수 있습니다. 그러나, 하나의 저장소 위치는 언제나 URL 입니다. 다음 표는 어떻게 다른 URL 체계를 사용가능한 접근 방법으로 대치할 수 있는지를 기술 합니다.

표 13.1. 접근 방법

Schema

Access Method

file://

직접 저장소 접근 (로컬 디스크 상)

http://

Subversion을 인식하는 아파치2 웹 서버로 WebDAV를 통하여 접근

https://

http://와 같으나, SSL 암호화를 사용

svn://

svn를 사용하는 서버로 Subversion 프토토콜을 통하여 접근

svn+ssh://

svn://와 같으나, SSH 터널을 사용


이 영역에서는, 모든 접근 방법을 위하여 Subversion을 어떻게 설정하는 지를 보일 겁니다. 여기서는, 그 기초를 다룹니다. 좀 더 고급의 사용예에 대한 자세한 것은, svn 책을 참고 하십시오.

직접 저장소 접근 (file://)

이것은 모든 접근 방법 중의 가장 단순한 것 입니다. 이것은 Subversion 서버의 프로세스가 실행 중인 것을 필요로 하지 않습니다. 이 접근 방법은 같은 기계에서 Subversion을 접근할 때 사용 됩니다. 명령의 문법은, 터미널 프롬프트에서, 다음과 같이 입력 합니다:

svn co file:///path/to/repos/project

또는

svn co file://localhost/path/to/repos/project

[참고]

만약 호스트 이름을 지정하지 않았다면, 세 개의 슬래쉬 (///)가 있습니다. 두 개는 프로토콜을 위한 것이고 (이 경우는 file), 마지막 하나는 경로를 나타내는 슬래쉬 입니다. 만약 호스트 이름을 지정한다면, 반드시 두 개의 슬래쉬(//)를 사용 합니다.

저장소의 접근 권한은 파일 시스템의 접근 권한에 의존 합니다. 만약 사용자가 읽기/쓰기 접근 권한을 가지고 있다면, 그 저장소에서 체크아웃을 하고 저장소로 커밋을 할 수 있습니다.

WebDAV 프로토콜을 사용하여 접근 (http://)

WebDAV 프로토콜을 사용하여 Subversion 저장소를 접근하기 위하여, 여러분은 반드시 아파치2 웹 서버를 설정하여야 합니다. 반드시 다음의 예를 여러분의 /etc/apache2/apache2.conf 파일에 추가 합니다:

 <Location /svn>
  DAV svn
  SVNPath /path/to/repos
  AuthType Basic
  AuthName "Your repository name"
  AuthUserFile /etc/subversion/passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require valid-user
  </LimitExcept>
  </Location> 

To import or commit files to your Subversion repository over HTTP, the repository should be owned by the HTTP user. In Ubuntu systems, normally the HTTP user is www-data. To change the ownership of the repository files enter the following command from terminal prompt:

sudo chown -R www-data:www-data /path/to/repos
[참고]

By changing the ownership of repository as www-data you will not be able to import or commit files into the repository by running svn import file:/// command as any user other than www-data.

다음에, /etc/subversion/passwd 파일을 반드시 만듭니다. 이 파일은 사용자 인증의 상세한 것을 가집니다. 예를 들어 사용자를 추가하는 것과 같이 항목을 추가하려면, 터미널 프롬프트에서 다음의 명령을 사용할 수 있습니다:

sudo htpasswd -c /etc/subversion/passwd user_name

이 명령은 여러분이 암호를 입력하도록 물어 봅니다. 암호를 입력한 후, 그 사용자는 더해 집니다. 이제, 다음의 명령을 실행하여 저장소를 접근할 수 있습니다:

            
              svn co http://servername/svn
            
          
[주의]

암호는 일반 텍스트로 전송 됩니다. 만약 암호를 훔쳐보는 것을 걱정한다면, SSL 암호화를 사용할 것을 권고 합니다. 자세한 것은, 다음 부분을 참고 하십시오.

SSL 암호화와 함께 WebDAV 프로토콜을 사용하여 접근 (https://)

SSL 암호화와 함께 WebDAV 프로토콜(https://)을 사용하여 Subversion 저장소를 접근하는 것은 http://를 사용하는 것과 비슷하나 차이점은, 여러분은 반드시 아파치2 웹 서버에 디지털 인증서를 설치하고 설정하여야 합니다.

디지털 인증서는 Verisign과 같은 인증 기관에서 발행된 것을 설치할 수 있습니다. 다른 방법으로는, 여러분이 스스로 사인한 인증서를 설치할 수도 있습니다.

이 절차는 여러분의 아파치2 웹 서버에 디지털 인증서를 설치하고 설정하였다고 간주 합니다. 이제, Subversion 저장소를 접근하기 위하여, 윗 부분을 참조 하십시오! 접근 방법은 정확히 똑같고, 단지 프로토콜이 다릅니다. 여러분은 반드시 Subversion 저장소를 접근하기 위하여 https://를 사용하여야 합니다.

Subversion 프로토콜을 사용하여 접근 (svn://)

Subversion 저장소가 만들어진 후, 여러분은 접근 조종을 설정할 수 있습니다. 접근 조종을 설정하기 위하여 /path/to/repos/project/conf/svnserve.conf 파일을 편집할 수 있습니다. 예를 들어, 인증을 설정하는 것은, 그 설정 파일의 다음 줄들을 주석 해제 합니다:

# [general]
# password-db = passwd

위의 줄들을 주석 해제한 후에, passwd 파일에 사용자 목록을 관리할 수 있습니다. 그러므로, 같은 디렉토리 내의 passwd 파일을 편집하기 위하여 열고 새로운 사용자를 추가 합니다. 문법은 다음과 같습니다:

username = password

더 자세한 것은, 그 파일을 참조 하십시오.

이제, svn:// 프로토콜을 사용하여, 같은 기계 또는 다른 기계에 있는 Subversion 저장소를 접근하고, svnserve 명령을 사용하여 svn 서버를 실행할 수 있습니다. 문법은 다음과 같습니다:

$ svnserve -d --foreground -r /path/to/repos
# -d -- daemon mode
# --foreground -- run in foreground (useful for debugging)
# -r -- root of directory to serve

For more usage details, please refer to:
$ svnserve --help

이 명령이 수행된 후, Subversion은 기본 설정 포트 (3690)을 듣기 시작 합니다. 프로젝트 저장소를 접근하려면, 터미널 프롬프트에서 다음의 명령을 반드시 실행하여야 합니다:

svn co svn://hostname/project project --username user_name

서버 설정에 따라, 암호를 물어 봅니다. 인증이 된 후, Subversion 저장소에서 코드를 체크 아웃 합니다. 로컬 복사본과 프로젝트 저장소를 동기화 하는 것은, update 부 명령을 실행 합니다. 그 명령의 문법은, 다음과 같이 터미널 프롬프트에서 입력 합니다:

cd project_dir ; svn update

각각의 Subversion 부 명령을 사용하는 것에 대한 더 자세한 것은, 매뉴얼을 참조 하십시오. 예를 들어, co (checkout) 명령에 대한 것을 배우려면, 터미널 프롬프트에서 다음의 명령을 실행 합니다:

            
              svn co help
            
          

SSL 암호화와 함께 Subversion 프로토콜을 사용하여 접근 (svn+ssh://)

설정과 서버 절차는 svn:// 접근 방법 내의 것과 같습니다. 자세한 것은, 위의 영역을 참조 하십시오. 이 절차는 여러분이 위의 절차를 따라왔고 svnserve 명령을 사용하여 Subversion 서버을 실행하였다고 간주 합니다.

또한 그 기계에 ssh 서버가 실행 중이고 들어오는 접속을 허용하는 중이라는 것도 가정 합니다. 확인을 하려면, ssh를 사용하여 그 기계에 로그인을 시도해 보십시오. 만약 로그인을 할 수 있으면, 모든 것은 완벽 합니다. 만약 로그인을 할 수 없다면, 더 진행하기 전에 그것을 먼저 고치십시오.

svn+ssh:// 프로토콜은 SSL 암호화와 함께 Subversion 저장소를 접근하기 위하여 사용 됩니다. 자료 전송은 이 방법을 사용하여 암호화 됩니다. 프로젝트 저장소를 접근하려면 (예를 들어 체크 아웃으로), 여러분은 반드시 다음의 명령 문법을 사용하여야 합니다:

svn co svn+ssh://hostname/var/svn/repos/project

[참고]

이 접근 방법을 사용하여 Subversion 저장소를 접근하려면 반드시 완전한 경로명을 (/path/to/repos/project) 사용하여야 합니다.

서버 설정에 따라, 암호를 물어 봅니다. 반드시 ssh 통하여 로그인 할 때 사용하는 암호를 입력 합니다. 인증이 된 후, Subversion 저장소에서 코드를 체크 아웃 합니다.