cvs(5)

명칭
cvs - 콘커렌트(common agenda) 버젼 시스템의 서포트 파일

서식

$CVSROOT/CVSROOT/commitinfo, v

$CVSROOT/CVSROOT/cvsignore, v

$CVSROOT/CVSROOT/cvswrappers, v

$CVSROOT/CVSROOT/editinfo, v

$CVSROOT/CVSROOT/history

$CVSROOT/CVSROOT/loginfo, v

$CVSROOT/CVSROOT/modules, v

$CVSROOT/CVSROOT/rcsinfo, v

$CVSROOT/CVSROOT/taginfo, v

해설
cvs (은)는, 소스 디렉토리의 계층적인 집합을 관리하는 시스템입니다. cvs 를 사용할 때의 명령와 수속은 cvs(1) 에 기술되고 있습니다. cvs (은)는, 리버젼 관리된 파일의 마스터 카피를 포함한 디렉토리이다 소스 리포지터리(repository) 를 관리해, 여기에서 개발자의 개인적인 작업 디렉토리 에 특정의 리버젼의 파일을 카피하거나 작업 디렉토리로부터 수정을 채용하거나 합니다. 파일의 구성이라고 하는 점으로부터 보면(자), 각 소스 리포지터리(repository)는 $CVSROOT 의 직하의 서브 디렉토리가 됩니다. 여기서 가리키는 파일은 보조적인 파일이며, cvs 를 이용하기에 즈음해 필수가 아닙니다만, cvs 를 보다 유연하게 조작할 수 있게 됩니다. cvs 에 의해 관리되고 있는 소스의 집합에 알기 쉽다 이름을 붙이기 위해서(때문에), `modules'를 이용할 수 있습니다. `modules'가 존재하지 않으면, 개발자는 cvs 명령로 파일을 조작할 때에 완전한 패스명 (절대 패스 혹은 $CVSROOT (으)로부터의 상대 패스)를 지정하지 않으면 안됩니다. `cvs commit'가 실행될 때에 항상 실행되는 프로그램을 정의하기 위해서, `commitinfo'파일을 이용할 수 있습니다. 이러한 프로그램은, 수정, 추가, 삭제된 파일이 정말로 위탁될 준비가 되어 있는지 어떤지를 체크하는 「위탁전의」 체크로서 이용됩니다. 이 체크를, 소스 리포지터리(repository)의 일부 (혹은 전체)로부터 특정의 사람이나 그룹을 제외하기 위해서 이용하고 있는 사람도 있습니다. 또, 변경된 파일이 그 사이트의 코딩 규약에 따르고 있는지 어떤지를 확인하기 위해서도 이용되겠지요. 파일이 리포지터리(repository)에 체크인 될 때나, 리포지터리(repository)로부터 체크아웃 될 때에 사용되는 나팔 명령을 cvs 에 등록하기 위해서, `cvswrappers'파일을 이용할 수 있습니다. 나팔은 CVS 에 들어 온다, 혹은 CVS 로부터 나가는 파일이나 디렉토리를 가공할 수가 있습니다. 사용법은 여러 가지 있습니다만, 일례로서는, 파일이 체크인 되기 전에 C 파일을 정형해, 리포지터리(repository)내의 모든 코드의 볼품을 가지런히 한다고 하는 용법이 있습니다. commit 후에 항상 실행되는, 리포지터리(repository)내의 변경에 관한 로그 엔트리를 기입하는 프로그램을 정의하기 위해서, `loginfo'파일을 이용할 수 있습니다. 이러한 프로그램은, 파일에 로그 메세지를 추가하거나 전자 메일을 통해서 개발자의 그룹에 로그 메세지를 보내거나 특정의 뉴스 그룹에 로그 메세지를 투고하거나 하기 위해서 사용됩니다. tag 조작이나 rtag 조작의 후에 실행되는 프로그램을 정의하기 위해서, `taginfo'파일을 이용할 수 있습니다. 이러한 프로그램은, 새로운 태그명과 그 태그를 작성한 프로그래머명의 일람 파일에 메세지를 추가하거나 개발자의 그룹에 메일을 보내거나 특정의 뉴스 그룹에 메세지를 투고하거나 하기 위해서 사용됩니다. 로그 메세지의 서식을 정의하기 위해서, `rcsinfo'파일을 이용할 수 있습니다. `cvs commit'의 로그 엔트리를 편집·확인할 때에 실행한다 프로그램을 정의하기 위해서, `editinfo'파일을 이용할 수 있습니다. 이것은 `rcsinfo'의 서식 지정과 함께 이용하면(자) 매우 편리하고, 변경을 위탁하는 유저가, 서식의 적절한 란을 묻고 있는 것을 체크할 수가 있습니다. update 때에 무시하는 디폴트의 파일 일람을 지정하기 위해서, `cvsignore'파일을 이용할 수 있습니다. 리포지터리(repository)에 영향을 미치는 cvs 명령을 기록하기 위해서, `history'파일을 이용할 수 있습니다. 이 파일을 작성하면(자) 역사가 기록되게 됩니다.

관련 파일

modules
    `modules'파일은, 당신이 원시 코드의 집합에 붙인 이름을 기록합니다. cvs 를 사용해, 올바른 서식에서 파일을 `$CVSROOT/CVSROOT/modules, v'에 체크인 하면(자), cvs 는 이러한 정의를 이용하게 됩니다. `modules'파일은, 모듈 정의 이외에도, 공행이나 코멘트 (`#'로부터 시작되는 행)(을)를 포함할 수가 있습니다. 긴 행은, 행의 마지막 캐릭터에 backslash (``\'')를 두는 것으로 다음의 행에 이을 수가 있습니다. 모듈 정의 는 `modules'파일의 단일행으로, 2 개의 서식이 있습니다. 어느 쪽에 대해도 mname 는 모듈명을 나타내, 행의 나머지는 그 정의가 됩니다. mname -a aliases. . .
    이것은 모듈 mname 를 정의하는 가장 간단한 방법입니다. `-a'는 이 정의가 단순한 별명 (alias)인 것을 나타냅니다. cvs 는 (명령의 인수로서) mname 가 사용되면(자), 대신에 aliases 의 이름의 리스트가 지정된 것으로서 취급합니다. aliases 에는, 다른 모듈명 혹은 패스를 지정합니다. aliases 에 패스를 지정하면(자), cvs 의 인수에 명시적으로 패스가 지정했을 경우와 같이, `cvs checkout'는 작업 디렉토리에의 모든 중간 디렉토리를 작성합니다.
    mname [ options ] dir [ files. . .  ] [ &module. . .  ]
    무엇보다 단순한 경우, 이 형식의 모듈 정의는 `mname dir' 됩니다. 이것은 디렉토리 dir 내의 모든 파일을 모듈 mname 로서 정의합니다. dir 는 ($CVSROOT 으로부터, 소스 리포지터리(repository)내에 있다) 원시 파일의 디렉토리에의 상대 패스입니다. 이 경우, checkout 시에는 작업 디렉토리로서 mname 라고 하는 단일의 디렉토리만이 작성되어 dir 가 복수 디렉토리 계층을 포함한 패스여도, 중간의 디렉토리는 디폴트에서는 작성되지 않습니다. 모듈 정의의 dir 의 다음에 files 를 명시적으로 지정하는 것으로, dir 내의 특정의 파일을 선택할 수가 있습니다. modules 에 있는 샘플 정의는, 어느 디렉토리의 단일의 파일로부터 정의되는 모듈의 예가 되고 있습니다. 여기에서는 다른 예를 나타냅니다:
    m4test  unsupported/gnu/m4 foreach.m4 forloop.m4
    이 정의에서는, `cvs checkout m4test'를 실행하면(자), 단일 계층의 작업 디렉토리 `m4test'가 작성되어 cvs 소스 리포지터리(repository)내의 깊은 계층의 디렉토리에 있는, 지정된 2 개의 파일이 놓여집니다. 모듈 정의중에 `&module'라고 쓰는 것에 의해, 다른 모듈을 참조할 수가 있습니다. checkout 시에는, 작업 디렉토리내에 각 module 마다의 디렉토리가 작성됩니다.
    cvs 1.3 의 신기능; 모듈 정의 파일을 낡은 버젼의 cvs 와 공유하는 경우는, 이 기능은 사용하지 말아 주세요. 그리고, 모듈 정의에 이하의 options 를 더할 수가 있습니다: `-d name', 모듈명이 아니고, 다른 이름을 작업 디렉토리의 이름으로서 이용합니다.
    cvs 1.3 의 신기능; 모듈 정의 파일을 낡은 버젼의 cvs 와 공유하는 경우는, 이 기능은 사용하지 말아 주세요. `-i prog'를 이용하면(자), 모듈내의 파일이 위탁되었을 때에 실행되는 프로그램 prog 를 지정할 수 있습니다. prog 는, 소스 리포지터리(repository)내의 영향을 받는 디렉토리에의 풀 패스를 단일 인수로서 받습니다. 위탁 시에 프로그램을 실행하기 위해서는, `commitinfo', `loginfo', `editinfo'파일을 사용하는 방법도 있습니다. `-o prog'를 이용하면(자), 모듈내의 파일이 체크아웃 되었을 때에 실행되는 프로그램 prog 를 지정할 수 있습니다. prog 는, 모듈명을 단일 인수로서 받습니다. `-e prog'를 이용하면(자), 모듈내의 파일이 export (export) 되었을 때에 실행된다 프로그램 prog 를 지정할 수 있습니다. prog 는, 모듈명을 단일 인수로서 받습니다. `-t prog'를 이용하면(자), 모듈내의 파일에 태그를 붙일 수 있었을 때에 실행되는 프로그램 prog 를 지정할 수 있습니다. prog 는, 모듈명과 rtag 로 지정된 상징적 태그의 2 개를 인수로서 받습니다. `-u prog'를 이용하면(자), 체크아웃 된 모듈의 탑 디렉토리에서 `cvs update'가 이용되었을 때에 실행되는 프로그램 prog 를 지정할 수 있습니다. prog 는, 이 모듈의 소스 리포지터리(repository)에의 풀 패스를 단일 인수로서 받습니다.

commitinfo, loginfo, rcsinfo, editinfo
    이러한 파일은 모두, `cvs commit'처리동안의 여러가지 장면에서 불려 가는 프로그램을 지정합니다. 이러한 파일은 공통의 구조를 가집니다. 각 행은, 다음의 2 개의 필드를 가집니다: 즉, 정규 표현과 공백의 뒤에 파일명이나 명령행의 템플릿입니다. 정규 표현의 1 개가 리포지터리(repository)내의 디렉토리명에 매치 하면(자), 행의 나머지가 사용됩니다. 행이 캐릭터 # 로 시작되어 있는 경우, 코멘트로서 무시됩니다. 필드간의 공백도 무시됩니다. `loginfo'에서는, 행의 나머지는 실행되는 명령행의 템플릿이 됩니다. 템플릿은 프로그램명 뿐만이 아니라, 좋아할 뿐(만큼) 인수를 붙일 수도 있습니다. 인수 리스트의 어디엔가 `%s'를 지정하면(자), cvs 는 그 자리소에 위탁 에 의해 영향을 받는다 파일 리스트를 열거합니다. 리스트의 최초의 엔트리는, 소스 리포지터리(repository)내의 변경을 하는 위치에의 상대 패스입니다. 리스트의 나머지는, 이 위탁 에 의해 수정·추가·삭제된다 파일이 됩니다. `taginfo'에서는, 행의 나머지는 실행되는 명령행의 템플릿이 됩니다. 명령에게 건네지는 인수는, 차례로 태그명 , 조작 (즉, add (은)는 `tag'를, mov (은)는 `tag -F'를, del (은)는 `tag -d` 를 각각 의미합니다), 리포지터리(repository) 되어, 나머지는 모두 파일명 (와)과 리버젼 의 조가 됩니다. 필터 프로그램이 0 이외를 돌려주어 종료하면(자), 태그 처리는 중단됩니다. `commitinfo'에서는, 행의 나머지는 실행되는 명령행의 템플릿이 됩니다. 템플릿은 프로그램명 뿐만이 아니라, 좋아할 뿐(만큼) 인수를 붙일 수도 있습니다. 템플릿에는 현재의 소스 리포지터리(repository)에의 풀 패스를 덧붙일 수 있어 위탁에 의해 (추가·삭제·수정 등) 영향을 미진다 파일의 파일명이 계속됩니다. `rcsinfo'에서는, 행의 나머지는 로그 메세지용의 템플릿에 읽히는 파일에의 풀 패스입니다. `editinfo'에서는, 행의 나머지는 실행되는 명령행의 템플릿이 됩니다. 템플릿은 프로그램명 뿐만이 아니라, 좋아할 뿐(만큼) 인수를 붙일 수도 있습니다. 현재의 로그 메세지용 템플릿 파일에의 풀 패스가 마지막에 추가됩니다. 정규 표현 대신에, 이하의 2 개 중 어느 쪽인가의 특수 캐릭터 라인 (을)를 사용할 수가 있습니다: `ALL'에서는 항상 실행되는 명령행 템플릿 (을)를 지정해, `DEFAULT'에서는 어느 정규 표현에도 매치 하지 않았을 때에 이용되는 명령행 템플릿을 지정합니다. `commitinfo'파일에는, 다른 위탁 조작을 하는 전에 실행되는 명령을 지정해, 위탁 를 하기 전에 채워야 할 상황을 체크하기 위해서 이용할 수 있습니다. 위탁 조작의 나머지는, 이 파일로 지정된 명령 모두가 종료 스테이터스 0 로 종료했을 때에 마셔 속행됩니다. `rcsinfo'파일에 의해, 위탁 의 로그 작성때의 로그용 템플릿 를 지정할 수 있습니다. 이 템플릿의 서식을 묻어 가는 것만으로, 위탁 로그를 작성할 수 있게 됩니다. 이 파일에서는, 정규 표현보다 후의 필드는 명령 템플릿이 아니고, 로그용 템플릿 서식 파일 (복수가능)의 파일명이 됩니다. `editinfo'파일에 의해, 위탁이 개시하기 전 로 로그 정보가 기록된 후의 단계에서 실행되는 스크립트를 지정할 수 있습니다. 이러한 「편집」스크립트는, 로그 파일에 기록된 정보를 확인할 수가 있습니다. 편집 스크립트가 0 이외의 종료 스테이터스를 돌려주었을 경우, 위탁은 중단됩니다. `loginfo'파일에 의해, 위탁의 최종 단계 로 실행된다 명령을 지정할 수 있습니다. 위탁 로그 메세지로서 지정된 텍스트는 명령에 파이프 됩니다: 자주 있는 용법으로서는, 메일을 보내는, 뉴스 그룹의 기사로 하는, 중앙 파일에 추가 기입한다고 하는 것이 있습니다.

cvsignore, .cvsignore
    `cvs update'안에 무시되는 디폴트의 파일 (혹은 sh(1) 의 파일명 패턴)의 리스트입니다. 우선 최초로, cvs 는 컴파일시에 짜넣어진 디폴트의 파일명 패턴의 리스트를 읽어들입니다 ( cvs(1) (을)를 참조). 그 후, $CVSROOT/CVSROOT/cvsignore 파일이 존재하면, 그 중의 리포지터리(repository) 마다의 리스트를 읽어들입니다. 그리고, `$HOME/.cvsignore'에 있는 유저 마다의 리스트를 읽어들입니다. 마지막으로, cvs 는 디렉토리를 더듬을 때에 디렉토리안에 `.cvsignore'파일이 있으면, 그것을 읽어들입니다. 이러한 디렉토리 마다의 파일은, 그것을 포함한 디렉토리에게만 유효해, 서브 디렉토리에는 작용하지 않습니다.

history
    역사를 기록하려면 $CVSROOT/CVSROOT 에 이 파일을 작성합니다 (자세한 것은 `cvs history'의 기술을 참조).

관련 항목
cvs(1),

COPYING
Copyright © 1992 Cygnus Support, Brian Berliner, and Jeff Polk

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.