버전 관리 시스템
이전
다음

버전 관리 시스템

버전 관리는 정보의 변경을 관리하는 예술적인 작업 입니다. 그것은, 소프트웨어에 적은 변경을 만들고 다음 날에 그 변경을 취소하는 데 그들의 시간을 사용하는 전형적인 프로그래머들을 위하여 오랫 동안 아주 중요한 도구이어 왔습니다. 그러나, 버전 관리의 유용함은 소프트웨어 개발 세상의 범주를 훨씬 넘어 확장되고 있습니다. 어느 곳에서든 여러분은 사람들이 종종 정보를 변경하는 것을 컴퓨터를 사용하여 관리하는 것을 볼 수 있을 겁니다. 거기에 버전 관리를 위한 필요가 있습니다.

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

접근 방법

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

표 4.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> 

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

htpasswd2 /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 저장소에서 코드를 체크 아웃 합니다.

CVS 서버

CVS는 버전 관리 시스템 입니다. 소스 파일의 이력을 기록하기 위하여 그것을 사용할 수 있습니다.

설치

터미널 프롬프트에서, cvs 를 설치하기 위하여 다음의 명령을 입력 합니다:

sudo apt-get install cvs

cvs 를 설치한 후에, cvs 서버를 시작하고 중지하려면 xinetd 를 설치하여야 합니다. 프롬프트에서, xinetd 를 설치하기 위하여 다음의 명령을 입력 합니다:

sudo apt-get install xinetd

설정

cvs 를 설치한 후에, 저장소는 자동적으로 초기화 됩니다. 기본 설정으로, 저장소는 /var/lib/cvs 디렉토리 밑에 위치 합니다. 이 경로를 변경하는 것은 다음의 명령을 사용할 수 있습니다:

cvs -d /your/new/cvs/repo init

초기 저장소가 만들어 진 후, CVS 서버를 시작하기 위하여 xinetd 를 설정할 수 있습니다. /etc/xinetd/cvspserver 파일에 다음 줄들을 복사 합니다.

service cvspserver
{
     port = 2401
     socket_type = stream
     protocol = tcp
     user = root
     wait = no
     type = UNLISTED
     server = /usr/bin/cvs
     server_args = -f --allow-root /var/lib/cvs pserver
     disable = no
}

참고

만약 기본 지정된 저장소 (/var/lib/cvs) 디렉토리를 변경하였다면 그 저장소를 편집하는 것을 확신 하십시오.

xinetd 를 설정한 후에 다음의 명령을 실행하여 CVS 서버를 실행할 수 있습니다:

sudo /etc/init.d/xinetd start

다음의 명령을 수행하여 CVS 서버가 실행 중인 것을 확인할 수 있습니다:

sudo netstat -tap | grep cvs

이 명령을 실행할 때, 여러분은 다음 줄 또는 그와 유사한 것을 보아야 합니다:

tcp 0 0 *:cvspserver *:* LISTEN 

이제 여기서 여러분은 사용자를 더하고, 새로운 프로젝트를 더하며, 그 CVS 서버를 관리하는 것을 계속할 수 있습니다.

주의

CVS는 OS 설치와는 무관하게 사용자를 추가할 수 있습니다. 아마도 가장 쉬운 것은 CVS를 위하여 리눅스 사용자를 사용하는 것이지만, 이것은 가능한 보안의 문제를 가지고 있습니다. 자세한 것은 CVS 매뉴얼을 참조 하십시오.

프로젝트 더하기

이 영역은 CVS 저장소로 어떻게 새로운 프로젝트를 추가하는 지에 대하여 설명 합니다. 디렉토리를 만들고 그 디렉토리로 필요한 문서와 소스 파일을 더합니다. 이제, CVS 저장소로 프로젝트를 추가하기 위하여 다음의 명령을 실행 합니다:

cd your/project
cvs import -d :pserver:username@hostname.com:/var/lib/cvs -m "Importing my project to CVS repository" . new_project start

작은 정보

여러분은 CVS 루트 디렉토리를 저장하기 위하여 CVSROOT 환경 변수를 사용할 수 있습니다. CVSROOT 환경 변수가 export 되면, 위의 cvs 명령에 -d 옵션을 주는 것을 피할 수 있습니다.

new_project 스트링은 벤더 태그이고, start 는 릴리스 태그 입니다. 그것들은 이 문맥에서는 아무 목적도 가지지 않지만, CVS가 그것들을 요구하므로 반드시 나타내야 합니다.

주의

새로운 프로젝트를 추가할 때, 여러분이 사용하는 CVS 사용자는 반드시 CVS 저장소 /var/lib/cvs) 의 쓰기 권한을 가져야 합니다. 기본 설정으로, src 그룹은 그 CVS 저장소로의 쓰기 권한을 가지고 있습니다. 그러므로, 여러분은 그 사용자를 이 그룹에 추가할 수 있고, 그런 후 그 사용자는 CVS 저장소 내의 프로젝트를 관리할 수 있습니다.

참조

Subversion 홈 페이지

Subversion 책

CVS 매뉴얼

이전
다음
처음으로