CO(1)

명칭
co - RCS 파일로부터 리버젼을 체크아웃 한다

서식
co [options] file ...

해설
co (은)는, 각 RCS 파일로부터 리버젼을 꺼내, 대응한 워크파일에 격납합니다.

RCS 확장자(extension)에 매치 하는 파일명은 RCS 파일이라고 간주, 그 외의 파일명은 워크파일이라고 간주합니다. 파일명의 대응에 관해서는, ci(1) (을)를 참조해 주세요.

RCS 파일의 리버젼은, 잠그어도 하지 않아도 체크아웃 할 수 있습니다. 리버젼을 잠그는 것으로, 동시에 복수의 갱신을 하는 것을 방지합니다. 내용을 표시하거나 읽을 뿐(만큼)의 처리(예를 들어, 컴파일)로 이용하거나 하는 경우는 잠글 필요는 없습니다. 편집해 후에 체크인 할 생각으로 RCS 파일로부터 꺼내는 경우는, 통상, 잠그지 않으면 안됩니다. 다른 유저에 의해 락 되고 있는 리버젼을 잠그어 체크아웃 하려고 하면(자) 에러가 됩니다(락은 rcs(1) 에 의해 해제할 수가 있습니다). 더욱, 리버젼을 잠그어 체크아웃 하려면 , 체크아웃 하는 사람이 RCS 파일의 액세스 리스트에 등록되어 있는지, 그 파일의 소유자 혹은 슈퍼 유저인지, 액세스 리스트가 하늘일 필요가 있습니다. 잠그지 않고 꺼내는 경우는, 액세스 리스트나 타인의 락에 영향을 받을 것은 없습니다.

꺼내지는 리버젼을, 리버젼 번호, 가지 번호, 체크인 일시, 저자, 상태에 의해 지정하는 옵션이 존재합니다. 복수의 옵션이 짜 합쳐져 지정되었을 경우, co (은)는 모든 조건에 합치하는 리버젼중에서 최신의 것을 꺼냅니다. 리버젼 지정 옵션이 지정되지 않았던 경우, co (은)는, 디폴트가지(통상은 간: rcs(1) 의 -b 옵션의 항을 참조)의 최신의 리버젼을 꺼냅니다. 리버젼 번호 혹은 가지 번호는, 이하의 옵션을 사용해 지정할 수가 있습니다: -f, -I, -l, -M, -p, -q, -r, -u 옵션 -d (일시), -s (상태), -w (저자)(은)는, 단일의 가지로부터 꺼냅니다. 이 가지는 선택되었다 가지이며, -f, . . ., -u 옵션 혹은 디폴트가지에 의해 지정됩니다.

리버젼을 1 개도 가지지 않는 RCS 파일에 대해서 co 명령을 적용하면(자), 길이 0 의 워크파일이 작성됩니다. co (은)는, 항상 키워드 치환을 실시합니다 (아래와 같이 참조).

옵션

-r[rev]
    리버젼 번호 rev 이전( rev (와)과 같은 것도 포함한다)로 최신의 리버젼을 꺼냅니다. rev 하지만 리버젼은 아니고 가지를 지정해 있는 경우, 그 지상의 최신 의 리버젼이 꺼내집니다. rev 하지만 생략 되었을 경우, 디폴트가지 ( rcs(1) 의 -b 옵션의 항을 참조)의 최신의 리버젼이 꺼내집니다. rev 하지만 $ 의 경우, co (은)는 리버젼 번호를 워크파일의 키워드로부터 꺼냅니다. 이것들 이외의 경우, rev (은)는 리버젼을 나타내는 피리어드로 단락지어진 숫자 또는 심볼의 열입니다. rev 하지만 피리어드로 시작되는 경우, 디폴트의 가지(통상은 간)가 설정됩니다. rev 하지만 피리어드를 뒤로 붙인 가지 번호이다면, 그 가지의 최신의 리버젼이 사용됩니다. 심볼은, ci(1) (이)나 rcs(1) 에 의해 리버젼 번호와 묶을 수가 있습니다.

-l[rev]
    -r (와)과 같은 동작입니다만, 꺼낸 리버젼을 호출한 유저에서 잠급니다.

-u[rev]
    -r (와)과 같은 동작입니다만, 꺼낸 리버젼이 호출한 유저에 의해 락 되고 있었다면, 그 락을 해제합니다. rev 하지만 생략 되었을 경우, co (을)를 기동한 유저가 잠근 리버젼이 1 개 있으면, 그 리버젼을 꺼냅니다; 그렇지 않으면, 디폴트가지의 최신의 리버젼을 꺼냅니다.

-f[rev]
    워크파일의 덧쓰기를 강제합니다； 후술의 -q 옵션을 사용하는 경우, 함께 -f 옵션도 지정하면(자) 편리한 경우가 있습니다. 파일 모드 의 항도 참조해 주세요.

-kkv
    워크파일에 디폴트 형식의 키워드 캐릭터 라인을 묻습니다. 예를 들어, 키워드 Revision 에 대해서는, 캐릭터 라인 $Revision: $ (을)를 생성합니다. ci -l (이)나 co -l 그리고 파일이 락 될 때 마셔, Header, Id, Locker 키워드에 락자명을 삽입합니다. 이것이 디폴트의 동작입니다.

-kkvl
    -kkv (와)과 거의 같습니다만, 지정된 리버젼이 락 되고 있었을 경우에는 언제나, 락자명을 삽입합니다.

-kk 키워드 캐릭터 라인중의 키워드명만의 캐릭터 라인을 생성해, 값은 생략 합니다. 후술의 키워드 치환 (을)를 참조해 주세요. 예를 들어, 키워드 Revision 에 대해서는, 통상의 $Revision: $ 의 것인지 비교적, $Revision$ (을)를 생성합니다. 이것은, 다른 리버젼의 내용을 비교하는 경우, 키워드 값의 차이를 무시할 수 있으므로, 편리합니다. -kk 하지만 지정되어도, 키워드 $Log$ 의 후에는 로그 메세지가 삽입됩니다. 이것은 리버젼을 통합하는 변경에, 보다 편리한 것을 의도하고 있습니다.

-ko 체크인 되기 전의 워크파일중의 키워드 캐릭터 라인을 그대로 출력합니다. 예를 들어, 키워드 $Revision$ 에 대해서는, 체크인 되기 전에 전개되고 있던 캐릭터 라인 $Revision: 1.1 $ 하지만, $Revision: $ 대신에 전개됩니다. 키워드 캐릭터 라인의 형식을 취하는 바이트열이 치환되어 버려서는 곤란한 것 같은 경우(역주:바이노리필드등 )에 편리하겠지요.

-kb 원래의 키워드 캐릭터 라인의 바이너리 이미지를 생성합니다. 이것은, -ko (와)과 거의 같습니다만, 입출력하는 모든 워크파일을 바이너리 모드로 취급하는 점이 다릅니다. 이것은, Posix 와 Unix 의 호스트간으로는 굉장한 차이에서는 없습니다. 하지만, DOS 와 같은 시스템에서는 바이노리필드를 취급하는 경우, RCS 파일의 초기화에는 rcs -i -kb (을)를 사용하지 않으면 되지 않을 것입니다. 또, 모든 환경에 있어, rcsmerge(1) (은)는 통상, -kb 하지만 일하고 있는 경우는 파일의 통합을 받아들이지 않습니다.

-kv 키워드 캐릭터 라인으로서 키워드치만을 생성합니다. 예를 들어, 키워드 Revision 에 대해서, 통상의 $Revision: $ 의 것인지 비교적 (을)를 생성합니다. 이것은, 키워드 캐릭터 라인으로부터 $Revision: $ (와)과 같은 키워드 단락을 취 제외한 것이 곤란한 프로그램 언어용의 파일등을 생성하기 위해서 사용합니다. 그렇지만, 키워드명이 제거되어 버리면(자), 그 이후에 키워드 치환을 실시할 수가 없기 때문에, 주의가 필요합니다. 키워드를 잃는 것은 이와 같이 위험하기 때문에, 본옵션을 -l 옵션과 조합해 사용할 수 없습니다. 또, 워크파일의 기입권은 오프가 됩니다; 다음에 워크파일을 편집하는 경우는, -kv 옵션을 지정하지 않고 워크파일을 꺼내고 나서 실시합니다.

-p[rev]
    워크파일에 격납하는 대신에, 대상이 되는 리버젼을 표준 출력에 써냅니다. co (을)를 파이프의 일부로서 사용하는 경우에 편리합니다.

-q[rev]
    조용한 모드; 진단 메세지를 표시하지 않습니다.

-I[rev]
    대화 모드; 비록 표준 입력이 단말이 아니어도, 유저에 대해서 문의를 실시합니다.

-ddate
    선택된 지상의, date 이전의 등록일부를 가지는, 최신의 리버젼을 꺼냅니다. 일자와 시각은 자유형식에서 지정합니다. 타임 존으로서 LT (을)를 지정하는 것으로써, 로컬 타임을 사용할 수가 있습니다; 다른 일반적인 타임 존도 사용할 수가 있습니다. 예를 들어, 이하에 드는 몇개의 date 지정은, 태평양 표준시에 있어서의 1990 년 1 월 11 일 오후 8 시와 동시각을 나타냅니다 (태평양 표준시는 협정 세계시 (UTC)보다 8 시간 늦게).

        8:00 pm lt
        4:00 AM, Jan.  12, 1990	디폴트는 UTC
        1990-01-12 04:00:00+00	ISO 8601 (UTC)
        1990-01-11 20:00:00-08	ISO 8601 (로컬 시각)
        1990/01/12 04:00:00	전통적 RCS 형식
        Thu Jan 11 20:00:00 1990 LT	ctime(3) + LT출력
        Thu Jan 11 20:00:00 PST 1990	date(1) 출력
        Fri Jan 12 04:00:00 GMT 1990
        Thu, 11 Jan 1990 20:00:00 -0800	인터넷 RFC 822
        12-January-1990, 04:00 WET

    대부분의 일자의 항목에는 기본값이 있습니다. 디폴트의 타임 존은 UTC 입니다. 이것은 -z 옵션에서 우선 지정할 수가 있습니다. 다른 기본값은, 년, 월, 일, 시, 분, 초의 차례로 결정됩니다. 이러한 항목 가운데, 적어도 1 개(살)이 지정되지 않으면 안됩니다. 지정이 있는 항목보다 먼저 결정되는 항목이 생략 되고 있는 경우에는, 타임 존에 있어서의 현재의 값을 사용합니다. 다른 생략 된 필드에는 최소치가 채용됩니다. 예를 들어, -z 없음의 20, 10:30 의 경우는, UTC 타임 존의 현재의 세월의 20 일 10:30:00 UTC 가 채용됩니다. 일자의 지정에 공백이 포함되는 경우에는, 일자의 지정을 쿼츠로 묶을 필요가 있는 것에 주의해 주세요.

-M[rev]
    작성되는 워크파일의 최종 갱신 일자를, 꺼내지는 리버젼의 일자에 합니다. 본옵션을 지정하면(자) make(1) 하지만 올바르게 동작하지 않게 되므로, 주의해 사용할 필요가 있습니다.

-sstate
    선택된 지상의, 상태 state (을)를 가지는 최신의 리버젼을 꺼냅니다.

-T  RCS 파일의 변경 일자를 변경하지 않습니다. 락 되거나 락 해제 되거나 해 RCS 파일이 변경되었을 경우에서도입니다. 이 옵션은, 카피한 RCS 파일의 워크파일을 사용해 make(1) (을)를 걸칠 때에 재컴파일을 시키고 싶지 않은 경우에 편리하겠지요. 이 옵션은 필요함에도 불구하고 재컴파일을 행하지 않는 것에 되어 버리는 경우가 있으므로 주의가 필요합니다. 그것은, 락의 변경이 다른 워크파일의 키워드 캐릭터 라인의 변경을 실시할 때입니다.

-w[login]
    선택된 지상의, 유저명 login 에 의해 등록된 최신의 리버젼을 꺼냅니다. login 하지만 생략 되었을 경우는, co (을)를 기동한 유저명을 사용합니다.

-jjoinlist
    joinlist 그리고 지정된 리버젼을 결합한 새로운 리버젼을 작성합니다. 본옵션은, 구버젼과의 호환성을 위해서(때문에) 남아 있습니다. 통상, 리버젼의 결합에는 rcsmerge(1) (을)를 이용합니다.

    joinlist 하 rev2:rev3 형식의 리버젼의 대를 코론으로 단락지어 늘어놓은 리스트입니다. 여기서, rev2 (와)과 rev3 (은)는(상징적 또는 숫자의) 리버젼 번호입니다. 이하의 설명으로, rev1 (은)는 이하의 리버젼을 나타내는: (1) joinlist 에 열거함 대 가운데, 최초의 것은, 상기의 -f, . . ., -w 옵션에 의해 선택된 리버젼입니다. (2) 그 이외의 대에 대해서는, 직전의 대로부터 작성된 리버젼 (즉, 1 개의 대에 의해 작성된 리버젼은 다음의 결합 (을)를 위한 입력이 됩니다).

    각각의 대에 대해서, co 하 rev1 (와)과 rev3 (을)를 rev2 (와)과 비교하면서 결합합니다. 즉, rev2 (을)를 rev1 (와)과 동일하게하기 위한 변경을, rev3 의 카피에 대해서 적용합니다. rev2 (을)를 동일한 조상으로 하는 2 개의 가지의 말단의 리버젼 rev1 (와)과 rev3 (을)를 결합하는데 잘 이용됩니다. 만약, 3 개의 리버젼이 동일한 지상에 있어, 리버젼 번호가 rev1<rev2<rev3 (이)라면, 결합의 결과는, rev3 의 내용 가운데, rev1 (으)로부터 rev2 에의 변경을 무효로 한 것이 됩니다. 만약, rev2 (으)로부터 rev1 에의 변경이 rev2 (으)로부터 rev3 에의 변경과 중복 하고 있다 (이)라면, co 하 merge(1) 에 나타낸 것 같은 보고를 실시합니다.

    최초로 지정하는 대에서는 rev2 (을)를 생략 할 수가 있습니다. 이 경우는, rev1 (와)과 rev3 의 공통의 조상 리버젼을 rev2 (으)로서 사용합니다. 만약, 몇개의 인수 하지만 리버젼은 아니고 가지를 나타내고 있다면, 그 지상의 최신의 리버젼이 용 있을 수 있습니다. 동시에 -l 옵션이나 -u 옵션을 지정하면(자), rev1 하지만 락 또는 락 해제됩니다.

-V  RCS's 의 버젼 번호를 표시합니다.

-Vn 버젼 n 의 RCS 시스템의 동작을 에뮤레이트 합니다. n 하 3, 4, 5 의 머지않아인가입니다. 이것은, 낡은 RCS 를 사용하고 있는 유저와 RCS 파일을 교 환 할 경우에 편리합니다. 사용하고 있는 RCS 가 어느 버젼인지를 조사하려면 , rcs -V (을)를 실행하는; 이것은 최근의 버젼의 RCS 에서는 동작합니다. 이것이 동작하지 않는 경우는 적당한 RCS 파일에 대해서 rlog (을)를 기동하는; 최초의 몇 줄기에 캐릭터 라인 branch: 하지만 없으면, 그것은 버젼 3 입니다; 또, 일자에 나타나는 해가 2 자리수의 숫자라면, 그것은 버젼 4 입니다; 어느 쪽도 아니면, 버젼 5 입니다. RCS 버젼 3 을 에뮤레이트 해 작성된 RCS 파일로부터는 디폴트 가지의 정보가 없어집니다. 버젼 4 또는 그 이전의 버젼을 에뮤레이트 해 작성되었다 리버젼은, 최대 13 시간 어긋난 일자를 가지게 됩니다. 버젼 4 또는 그 이전의 버젼을 에뮤레이트 해 꺼내졌다 파일에는 yy/mm/dd 형식의 일자가 키워드중에 전개됩니다. 또, $Log$ 키워드에서는 공백의 해 질 무렵이 다릅니다.

-xsuffixes
    RCS 파일의 확장자(extension)로서 suffixes (을)를 사용합니다. 자세한 것은 ci(1) (을)를 참조해 주세요.

-zzone
    키워드 치환에서의 일자의 출력 서식의 지정을 실시해, 또, -ddate 옵션에서의 date 의 디폴트의 타임 존의 지정을 실시합니다. zone (은)는, 생략 하는 일도, UTC 로부터의 수치차이로 지정하는 일도, 특별한 캐릭터 라인 LT (을)를 사용해 로컬 시간에 지정하는 일도 할 수 있습니다. 디폴트에서는 zone (은)는 하늘이며, 이 경우는 전통적인 RCS 포맷, 즉 타임 존 없음의 UTC 이며 일자를 slash로 단락짓습니다; 그렇지 않은 경우는 시각은 타임 존부의 ISO 8601 포맷입니다. 예를 들면, 로컬 타임이 1990 년 1 월 11 일 태평양 표준시간 (UTC 의 8 시간서) 오후 8 시의 경우, 시간의 출력은 다음과 같이 됩니다:

        옵션시각의 출력
        -z	1990/01/12 04:00:00	(디폴트)
        -zLT	1990-01-11 20:00:00-08
        -z+05:30	1990-01-12 09:30:00+05:30

    -z 옵션은 RCS 파일에 격납되고 있는 일자(항상 UTC 입니다)에는 영향을 주지 않습니다.

키워드 치환
텍스트중에 존재한다 $keyword$ 또는 $keyword:...$ 형식의 캐릭터 라인은, $keyword:value$ 형식의 캐릭터 라인에 치환됩니다. keyword (와)과 value 의 대에 대해서는 후술 합니다. 키워드는 리터럴인 캐릭터 라인으로서 혹은 리버젼을 특정하기 위한 코멘트로서 묻을 수 있는 일이 있습니다.

우선, 유저는 $keyword$ 되는 형식의 캐릭터 라인을 입력합니다. 체크아웃시에, co (은)는 이 캐릭터 라인을 $keyword:value$ 에 치환합니다. $keyword:value$ 형식의 캐릭터 라인을 포함하는 것이 체크인 되었을 경우, value 의 부분은 다음에 체크아웃 되었을 때에 새로운 값에 치환됩니다. 이와 같이, 체크아웃을 실시할 때 마다 키워드의 값은 갱신되어 갑니다. 이 자동 갱신은 -k 옵션에 의해 변경할 수가 있습니다.

키워드의 종류와 그 값:

$Author$
    리버젼을 등록한 유저의 로그인명.

$Date$
    리버젼이 등록된 일시. -zzone (을)를 지정했을 경우, 수치에 의한 타임 존 오프셋(offset)가 추가됩니다; 지정하지 않는 경우는, 일시는 UTC 입니다.

$Header$
    표준적인 헤더. RCS 파일의 풀 패스명, 리버젼 번호, 일시, 저자, 상태, 락자(락 되고 있는 경우)가 포함됩니다. -zzone (을)를 지정했을 경우, 수치에 의한 타임 존 오프셋(offset)가 추가됩니다; 지정하지 않는 경우는, 일시는 UTC 입니다.

$Id$
    $Header$ (와)과 거의 같습니다. RCS 파일명은 패스를 붙이지 않고 파묻힙니다.

$Locker$
    리버젼을 잠근 유저의 로그인명(락되어 있지 않은 경우는 하늘입니다).

$Log$
    체크인시에게 준 로그 메세지. 그 전에, RCS 파일명, 리버젼 번호, 저자, 일시가 파묻힙니다. -zzone (을)를 지정했을 경우, 수치에 의한 타임 존 오프셋(offset)가 추가됩니다; 지정하지 않는 경우는, 일시는 UTC 입니다. 벌써 파묻히고 있는 로그 메세지는 변경 되지 않습니다. 새로운 로그 메세지만이 $Log:...$ 의 후에 추가됩니다. 원시 파일의 완전한 로그를 기록할 경우에 편리합니다.

    삽입되는 행의 전에는 $Log$ 의 행의 전의 프레픽스 캐릭터 라인이 붙습니다. 예를 들면, $Log$ 의 행이 “// $Log: tan.cc $” 인 경우, 로그의 각 행의 전의 RCS 프레픽스는 “// ” 됩니다. 이것은 코멘트가 줄 끝까지 미치는 언어에서 편리합니다. 다른 언어에 대해서는, 복수행 코멘트 내부에서 “ * ” 프레픽스를 사용하는 것이 관례입니다. 예를 들면, C 프로그램의 최초의 로그의 코멘트는 관례적으로 이하의 형식입니다:

        /*
        * $Log$
        */

    낡은 버젼의 RCS 와의 백 워드 컴패터빌리티 (호환성)이기 때문에, 로그의 프레픽스가 /* 또는 (* (이어)여 옵션의 공백에서 둘러싸여 있는 경우, 삽입되는 로그의 행은 / (이)나 ( 대신에 공백이 이용됩니다; 그러나 이 사용 방법은 낡고, 이 동작에 의존해 되지 않습니다.

$Name$
    존재하는 경우, 리버젼을 체크아웃 하기 위해서 사용한 상징적명. 예를 들면 co -rJoe 하 $Name: Joe $ (을)를 생성합니다. 단지 co (을)를 지정했을 경우는, $Name: $ 됩니다.

$RCSfile$
    패스명을 포함하지 않는 RCS 파일명.

$Revision$
    리버젼 번호.

$Source$
    RCS 파일의 풀 패스명.

$State$
    리버젼에 rcs(1) 인가 ci(1) 의 -s 옵션에 의해 할당할 수 있었던 상태.

키워드 캐릭터 라인의 체재를 정돈하기 위해서(때문에), 이하의 캐릭터를 키워드중에 이용하려면 , escape sequence를 사용합니다.

    캐릭터 escape sequence
    tab	\t
    newline	\n
    space	\040
    $	\044
    \	\\

파일 모드
워크파일은, RCS 파일의 읽기와 실행의 허가 속성을 계승합니다. 게다가 유저에 대한 기입권이 설정됩니다. -kv 옵션이 설정되어 있는 경우와 엄격 락 모드( rcs(1) 참조)에서 잠그지 않고 꺼냈을 경우는, 기입권이 설정되지 않습니다.

벌써, 워크파일과 동명의 기입해 가능한 파일이 존재하고 있으면(자), co (은)는 취득을 중단해, 만약 가능하면 삭제하는지 어떤지를 문의합니다. 만약, 벌써 존재하는 파일이 기입해 금지이거나 -f 옵션이 지정되어 있었을 경우에는, 문의를 실시하지 않고 삭제합니다.

관련 파일
co 하 ci (와)과 거의 같은 정도의 파일에 액세스 합니다. 다만, $ 하지만 지정되어 있지 않으면 워크파일을 읽을 것은 없습니다.

환경 변수

RCSINIT
    본변수에 공백에서 단락지은 옵션을 설정하는 것으로, 명령행 인수에 앞서 처리됩니다. 자세하게는 ci(1) (을)를 참조해 주세요.

진단
RCS 패스명, 워크파일 패스명, 꺼내지는 리버젼의 번호를 진단 출력합니다. 모든 처리가 성공했을 경우만, 종료 스테이터스 0 을 돌려줍니다.

저자
Author: Walter F. Tichy.
Manual Page Revision: ; Release Date: .
Copyright © 1982, 1988, 1989 Walter F. Tichy.
Copyright © 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.

관련 항목
rcsintro(1), ci(1), ctime(3), date(1), ident(1), make(1), rcs(1), rcsclean(1), rcsdiff(1), rcsmerge(1), rlog(1), rcsfile(5)
Walter F. Tichy, RCS--A System for Version Control, Software--Practice & Experience 15, 7 (July 1985), 637-654.

제한 사항
RCS 파일, 워크파일의 링크는 보존되지 않습니다.

키워드를 $keyword:$ 이외의 형식에 갱신이외에, 일부의 키워드의 보고를 전개시키는 방법이 없습니다. nroff 나 troff 에서는 키워드중에 눌 캐릭터 \& (을)를 묻는 것으로 전개를 막을 수가 있습니다.