FreeBSD 핸드북 : 개발의 최전선: FreeBSD-current와 FreeBSD-stable : 인터넷 상에서 소스 트리를 동기화하기 : Anonymous CVS
Previous: 인터넷 상에서 소스 트리를 동기화하기
Next: CTM

18.3.1. Anonymous CVS

Jordan K. Hubbard <jkh@FreeBSD.ORG> 저.

김승영 <nobreak@kr.FreeBSD.org> 역.
1999년 6월 5일

18.3.1.1. 개요

Anonymous CVS(anoncvs로도 알려져 있습니다)는 원격 CVS 저장고(repository)와의 동기화를 위해 FreeBSD의 CVS 유틸리티 번들로 제공되는 기능입니다. 이를 통해 FreeBSD 사용자는 특별한 권한 없이도 FreeBSD 프로젝트의 공식 anoncvs 서버중 하나로부터 읽기 전용 CVS 명령을 수행할 수 있습니다. Anonymous CVS를 사용하기 위해서는 CVSROOT 환경변수에 적절한 anoncvs 서버를 설정한후 지역 저장고를 사용하듯 cvs(1) 명령을 통해 접근하면 됩니다.

CVSup과 anoncvs 서비스가 근본적으로 같은 기능을 하지 않는가 하는 말을 합니다만, 사용자의 동기화 방법 선택에 영향을 줄만한 몇가지 차이점(trade-off)이 있습니다. 요약해 말하면, CVSup은 네트워크 자원을 대단히 효율적으로 활용하며 기술적으로 매우 세련되었지만 까다로운 면이 있습니다. CVSup을 사용하기 위해서는 데이터를 끌어오기 위해 특별한 클라이언트를 먼저 설치해야 하고, CVSup에서 collections이라 칭하는 묶음 단위로만 작업이 가능합니다.

그에 반해 Anoncvs는 CVS 모듈명을 지정함으로써 개별 파일에서부터 특별한 프로그램(ls나 grep 같은)까지 조작이 가능합니다. 물론, anoncvs는 CVS 저장고에 대해 읽기 전용 작업만이 가능하므로, FreeBSD 프로젝트와 공유된 독자적인 저장고에서 개발을 하고자 한다면, CVSup만이 유일한 수단입니다.

18.3.1.2. Anonymous CVS 사용하기

CVSROOT 환경 변수에 FreeBSD 프로젝트의 anoncvs 서버중 하나를 설정하는 것이 cvs(1)로 Anonymous CVS 저장고에 접근하기 위한 설정의 전부 입니다. 본 글을 쓰는 시점에서 다음의 서버들이 가능합니다:

사용자는 과거에 존재했거나 현재 유지되는(때론 앞으로 나올) 어떠한 버전의 FreeBSD 소스에 대해서도 CVS를 통해 "check out" 할 수 있기 때문에, cvs(1)의 리비전 (-r) 플래그와 FreeBSD 프로젝트 저장고에서 그것이 수용하는 부분에 대해 잘 알아둘 필요가 있습니다.

두가지 종류의 태그가 있는데, 리비전(revision) 태그와 브랜치(branch) 태그가 그것입니다. 리비전 태그는 특별한 버전을 가르키고, 그 의미는 영원히 변치 않습니다. 반면 브랜치 태그는 개발선상에서 그 순간의 마지막 최신 버전을 뜻합니다. 브랜치 태그가 특별한 버전을 뜻하진 않기 때문에, 내일은 오늘과 의미가 다를 수 있습니다..

다음은 사용자들이 관심 있어할 만한 브랜치 태그들입니다:

HEAD

주요 개발 라인, FreeBSD-current를 가르킵니다. 리비젼이 명시되지 않았을때 기본값으로 사용됩니다.

RELENG_3

FreeBSD-3.x 개발 라인입니다. FreeBSD-stable 로도 알려졌습니다. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_2

FreeBSD-2.2.x 개발 라인입니다. 2.2-stable 로도 알려졌습니다. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_1_0

FreeBSD-2.1.x 개발 라인입니다. - 본 가지는 거의 사용되지 않습니다. 포트 콜렉션에는 유효하지 않습니다.

다음은 사용자들이 관심 있어할 만한 리비젼 태그들입니다.

RELENG_2_2_6_RELEASE

FreeBSD-2.2.6. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_2_5_RELEASE

FreeBSD-2.2.5. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_2_2_RELEASE

FreeBSD-2.2.2. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_2_1_RELEASE

FreeBSD-2.2.1. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_2_0_RELEASE

FreeBSD-2.2.0. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_1_7_RELEASE

FreeBSD-2.1.7. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_1_6_1_RELEASE

FreeBSD-2.1.6.1. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_1_6_RELEASE

FreeBSD-2.1.6. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_1_5_RELEASE

FreeBSD-2.1.5. 포트 콜렉션에는 유효하지 않습니다.

RELENG_2_1_0_RELEASE

FreeBSD-2.1.0. 포트 콜렉션에는 유효하지 않습니다.

브랜치 태그를 사용할 경우엔, 일반적으로 개발선상의 최신 버전 파일을 받게 됩니다. 이전 버전을 받고자 할 경우에는, -D date 플래그를 사용해 특정 날짜를 지정하면 됩니다. 자세한 사용법은 cvs(1) 매뉴얼 페이지를 참고하세요.

18.3.1.3. 예제

cvs(1)로 무언가 해보기 전에 매뉴얼 페이지를 충분히 검토하길 바랍니다. 여기선 간략한 예를 통해 본질적으로 Anonymous CVS를 어떻게 사용하는지 살펴봅니다:

-current로부터 무언가(ls(1)) 끌어온 후 다시 삭제합니다:

% setenv CVSROOT anoncvs@anoncvs.freebsd.org:/cvs
% cvs co ls
% cvs release -d ls

2.2-stable 가지상의 ls(1)를 끌어옵니다:

% setenv CVSROOT anoncvs@anoncvs.freebsd.org:/cvs
% cvs co -rRELENG_2_2 ls
% cvs release -d ls

FreeBSD 2.2.2와 FreeBSD 2.2.6에서의 ls(1) 수정내역을 조회(unidiff로)합니다:

% setenv CVSROOT anoncvs@anoncvs.freebsd.org:/cvs
% cvs rdiff -u -rRELENG_2_2_2_RELEASE -rRELENG_2_2_6_RELEASE ls

다른 가능한 모듈명을 알아봅니다:

% setenv CVSROOT anoncvs@anoncvs.freebsd.org:/cvs
% cvs co modules
% more modules/modules
% cvs release -d modules

18.3.1.4. 참고 자료

다음은 CVS를 공부하는데 유용하리라 생각되는 자료들입니다:


FreeBSD 핸드북 : 개발의 최전선: FreeBSD-current와 FreeBSD-stable : 인터넷 상에서 소스 트리를 동기화하기 : Anonymous CVS
Previous: 인터넷 상에서 소스 트리를 동기화하기
Next: CTM