Jordan K. Hubbard
<jkh@FreeBSD.ORG> 저.
김승영
<nobreak@kr.FreeBSD.org> 역.
1999년 6월 5일
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만이 유일한 수단입니다.
CVSROOT 환경 변수에 FreeBSD 프로젝트의
anoncvs 서버중 하나를 설정하는 것이 cvs(1)로
Anonymous CVS 저장고에 접근하기 위한 설정의 전부 입니다.
본 글을 쓰는 시점에서 다음의 서버들이 가능합니다:
사용자는 과거에 존재했거나 현재 유지되는(때론 앞으로 나올)
어떠한 버전의 FreeBSD 소스에 대해서도 CVS를 통해 "check out" 할 수
있기 때문에, cvs(1)의 리비전 (-r) 플래그와
FreeBSD 프로젝트 저장고에서 그것이 수용하는 부분에 대해 잘 알아둘
필요가 있습니다.
두가지 종류의 태그가 있는데, 리비전(revision) 태그와 브랜치(branch) 태그가 그것입니다. 리비전 태그는 특별한 버전을 가르키고, 그 의미는 영원히 변치 않습니다. 반면 브랜치 태그는 개발선상에서 그 순간의 마지막 최신 버전을 뜻합니다. 브랜치 태그가 특별한 버전을 뜻하진 않기 때문에, 내일은 오늘과 의미가 다를 수 있습니다..
다음은 사용자들이 관심 있어할 만한 브랜치 태그들입니다:
주요 개발 라인, FreeBSD-current를 가르킵니다. 리비젼이 명시되지 않았을때 기본값으로 사용됩니다.
FreeBSD-3.x 개발 라인입니다. FreeBSD-stable 로도 알려졌습니다. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.2.x 개발 라인입니다. 2.2-stable 로도 알려졌습니다. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.1.x 개발 라인입니다. - 본 가지는 거의 사용되지 않습니다. 포트 콜렉션에는 유효하지 않습니다.
다음은 사용자들이 관심 있어할 만한 리비젼 태그들입니다.
FreeBSD-2.2.6. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.2.5. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.2.2. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.2.1. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.2.0. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.1.7. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.1.6.1. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.1.6. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.1.5. 포트 콜렉션에는 유효하지 않습니다.
FreeBSD-2.1.0. 포트 콜렉션에는 유효하지 않습니다.
브랜치 태그를 사용할 경우엔, 일반적으로 개발선상의 최신 버전 파일을
받게 됩니다. 이전 버전을 받고자 할 경우에는, -D date 플래그를
사용해 특정 날짜를 지정하면 됩니다. 자세한 사용법은 cvs(1)
매뉴얼 페이지를 참고하세요.
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
다음은 CVS를 공부하는데 유용하리라 생각되는 자료들입니다: