g .     if !  .     ds lq ``
RCSINTRO(1)

명칭
rcsintro - RCS 입문

해설
RCS (Revision Control System)는, 파일의 리버젼을 복수 관리합니다. RCS 는 격납, 꺼내, 로그, 식별, 리버젼의 병합을 자동화합니다. RCS (은)는 빈번하게 갱신되는 텍스트, 예를 들어, 프로그램, 문서, 그래픽스, 논문, 정형 편지등을 취급하는데 편리합니다.

기본적인 유저 인터페이스는 매우 단순합니다. 초보자는 2 개의 명령, ci(1) (와)과 co(1) (을)를 기억하는 것만으로 사용할 수 있습니다. ci (은)는 체크인 “check in'' 를 생략 한 이름입니다. 이것은, 파일의 내용을 「RCS 파일」이라고 불리는 기록용의 파일에 격납합니다. RCS 파일은, 특정 파일의 전리버젼을 포함하고 있습니다. co (은)는 체크아웃“check out'' 를 생략 한 이름입니다. 이것은, RCS 파일로부터 리버젼을 꺼냅니다.

  RCS 의 기능

•   텍스트의 복수의 리버젼의 보존과 취득을 실시합니다. RCS 는 모든 낡은 리버젼을 효율적인 방법으로 보존합니다. 파일을 변경해도 원래의 리버젼이 실인 깨질 것은 없고, 모두 꺼내는 것이 가능합니다. 리버젼은, 리버젼 번호, 심볼명, 일자, 저자, 상태를 지정해 꺼낼 수 있습니다.

•   완전한 변경의 히스토리를 관리합니다. RCS 는, 모든 변경점을 자동적으로 기록합니다. 각 리버젼의 내용과 함께, 저자, 체크인 한 일시, 변경점을 요약한 로그 메세지가 기록됩니다. 로그에 의해, 어떠한 변경을 했는지를 한눈에 압니다. 소스 리스트를 보고 비교하거나 함께 작업하고 있다 프로그래머에게 묻거나 할 필요는 없습니다.

•   액세스 모순을 해결합니다. 복수의 프로그래머가 있는 파일의 같은 리버젼에 대해서 변경을 더하려고 했을 경우, RCS 는 경고를 발표해, 다른 사람이 간 변경을 엉망으로 해 버린다 의를 막습니다.

•   리버젼의 나무를 관리합니다. RCS 는 모듈 마다 독립했다 개발 라인을 관리할 수 있습니다. RCS 는, 리버젼의 계도를 표현한 나무를 보존합니다.

•   리버젼을 병합 해, 모순을 해결합니다. 어느 모듈의 2 개의 리버젼을 병합 할 수가 있습니다. 병합 하려고 하는 2 개의 리버젼이, 어느 코드의 같은 부분에 대하는 변경을 포함하고 있었을 경우, RCS 는 변경이 중복 하고 있다고 경고합니다.

•   릴리스와 구성을 관리합니다. 리버젼에는 심볼명을 붙일 수가 있습니다. 또, 「릴리스판(released)」, 「안정판(stable)」, 「실험판(experimental)」이라고 한 상태를 붙일 수도 있습니다. 이것에 의해, 단순하고 직접적으로 모듈의 구성을 나타낼 수가 있습니다

•   리버젼 번호, 작성 일시, 저자등을 자동적으로 식별할 수가 있습니다. 식별 정보는, 소인과 같이 텍스트의 적당한 장소에 묻는 것이 할 수 있습니다. 이것에 의해, 어느 소프트웨어의 구성에 어느 모듈의 어느 리버젼이 사용되고 있을까를 판단하는 것이 용이하게 됩니다.

•   필요한 디스크 용량을 최소로 합니다. RCS 는, 리버젼을 위해서(때문에) 최소의 스페이스(차분만) 밖에 소비하지 않습니다. 만약 도중의 리버젼이 삭제되었다면, 기록되고 있던 차분도 거기에 따라서 작아집니다.

  RCS 시무
RCS 의 관리하에 두고 싶다 f.c 그렇다고 하는 파일이 있다고 합니다. 만약, 아직 작성하지 않으면, RCS 디렉토리를 이하의 명령에 의해 작성합니다.

    mkdir RCS

다음에 ci (체크인) 명령을 실행합니다.

    ci f.c

이것에 의해, f.c 의 내용을 리버젼 1.1 으로서 기록 한 RCS 파일이 RCS 디렉토리내에 작성되어 f.c (은)는 삭제됩니다. 또, ci 하 f.c 에 관한 설명문의 입력을 재촉합니다. 설명문에는 파일의 내용을 요약하고 씁니다. 이후 ci (을)를 실행할 때마다, 파일에 가세한 변경의 요약을 입력하도록(듯이) 재촉합니다.

RCS 디렉토리에 있는 파일은 RCS 파일로 불려 그 이외의 파일은 워크파일과 불립니다. 앞의 예로 든 워크파일 f.c (을)를 되찾는다 에는 co (체크아웃) 명령을 실행합니다.

    co f.c

이 명령은 RCS 파일중의 최신의 리버젼을 꺼내 파일 f.c 에 써냅니다. 만약, f.c (으)로 변경을 더하고 싶으면, 다음의 명령을 사용해 체크아웃 해 락 하지 않으면 안됩니다.

    co -l f.c

이것으로 f.c (을)를 편집할 수가 있습니다.

어느 정도 편집했더니, 어떠한 변경을 더했는지 알고 싶어질 때가 있습니다. 이 경우는, 이하의 명령을 실행합니다.

    rcsdiff f.c

이 명령은, 마지막에 체크인 한 리버젼과 워크파일의 차이를 표시합니다. 편집이 끝나면(자), 이하의 명령에 의해, 한번 더 체크인 할 수가 있습니다.

    ci f.c

이것에 의해, 리버젼 번호가 다시 자동적으로 붙입니다.

만약 ci 하지만

    ci error: no lock set by your name

그렇다고 하는 에러 메세지를 출력했다면, 그것은, 잠그지 않고 체크아웃 한 파일을 체크인 하려고 했기 때문에입니다. 물론, 여기서 잠그어 체크아웃 다시 하는 것은 너무 늦습니다. 여기서 체크아웃 하면(자), 당신이 간 편집은 덧쓰기되어 잃게 되어 버리기 때문입니다. 대신에, 이하의 명령을 실행합니다.

    rcs -l f.c

이것은, 그 밖에 아무도 잠그지 않으면, 최신의 리버젼을 잠급니다. 만약, 벌써 누군가가 잠그어 버려 아픈들 , 그 사람과 상담하지 않으면 안됩니다.

잠그는 것으로, 당신만이 파일을 갱신(체크인) 할 수 있게 되어, 동시에 복수의 사람이 같은 파일을 편집할 때의 귀찮은 문제를 회피할 수가 있습니다. 비록 리버젼이 락 되고 있어도, 그 파일을 체크아웃 해 내용을 보거나 컴파일 하는 것은 가능합니다. 락 기구는, 잠근 사람 이외가 체크인 할 수 없게 할 뿐입니다.

만약 취급하는 RCS 파일이 개인적인 것, 즉 그 파일에 대해서 새로운 리버젼을 체크인 하는 것이 당신 뿐인 경우, 엄격한 락 기구는 필요없을 것입니다. 엄격한 락 기구는 오프로 할 수도 있습니다. 만약 엄격한 락 모드가 오프가 되어 있다면, RCS 파일의 소유자는 잠그지 않은 파일을 체크인 할 수가 있습니다(그 이외의 사람은 락이 필요합니다). 엄격한 락 모드의 온과 오프는, 각각 이하의 명령에 의해 실시합니다.

    rcs -L f.c 및 rcs -U f.c

만약 워크 디렉토리에 RCS 파일을 흩뿌리고 싶고 없으면, RCS 라는 이름의 디렉토리를 작성해, RCS 파일을 모두 그 아래로 이동합니다. RCS 명령은 RCS 파일을 찾을 때, 우선, RCS 디렉토리를 검색합니다. 이 경우도, 지금까지 말해 온 명령은 인수를 일체 변경하지 않고 실행할 수 있습니다(실제는 RCS 에 RCS 파일과 워크파일의 대를 지시하는 방법은 3 가지 있습니다: (a) 양쪽 모두를 지정하는, (b) 워크파일만을 지정하는, (c) RCS 파일만을 지정한다. RCS 파일과 워크파일은 자유로운 패스에 둘 수가 있습니다만, RCS 명령은 파일의 대를 인텔리전트에 찾습니다).

체크인 했을 때에 워크파일이 삭제되지 않게 한다 (편집을 계속하거나 컴파일 하거나 하는 경우)에는 이하의 명령을 사용합니다.

    ci -l f.c 혹은 ci -u f.c

이러한 명령은 통상 대로 f.c (을)를 체크인 합니다. 그러나, 자동적으로 체크아웃도 실시합니다. 최초의 예에서는 락을 실시해, 2 번째의 예에서는 락을 실시하지 않습니다. 이와 같이 하면 체크아웃 조작을 1 회 줄일 수 있습니다. 최초의 예는 편집을 계속하는 경우에, 2 번째의 예는 단지 파일을 읽고 싶기도 하고 컴파일 하거나 하는 경우에 편리합니다. 어느 쪽의 경우도, 워크파일중의 식별용 마커(후술)가 갱신됩니다.

ci 에 체크인 하는 리버젼의 번호를 지정할 수가 있습니다. 지금까지의 리버젼이 1.1, 1.2, 1.3... (이었)였다고 나무에, 이하의 명령에 의해 릴리스 2 를 개시할 수가 있습니다.

    ci -r2 f.c 혹은 ci -r2. 1 f.c

이것에 의해, 새로운 리버젼에는 번호 2.1 이 붙여집니다. 이후, ci (은)는 이 파일의 새로운 리버젼에 2.2, 2.3...(와)과 번호를 매겨 갑니다. 대응한 이하의 co 명령

    co -r2 f.c 및 co -r2. 1 f.c

(은)는, 리버젼 번호가 2.x 인 최신의 리버젼, 리버젼 2.1 을 각각 체크아웃 합니다. co 에 리버젼 번호를 지정하지 않는 경우, 간(trunk) 위의 최신의 리버젼 (즉, x.x 의 형식에서 최대의 리버젼 번호를 가지는 리버젼)(이)가 체크아웃 됩니다. 리버젼의 가지(branch)를 이용하기 위해서(때문에)는 3 개(살) 이상의 번호가 필요하게 됩니다. 예를 들어, 1.3 으로부터 가지를 작성하려면 , 이하의 명령을 실행합니다.

    ci -r1. 3.1 f.c

이것에 의해, 리버젼 1.3 상에 번호 1 의 가지를 작성해, 지상의 최신 리버젼으로서 1.3. 1.1 을 할당합니다. 가지의 상세한 것에 대하여는 rcsfile(5) (을)를 참조해 주세요.

  자동 식별
RCS 는, 리버젼의 식별을 위해서(때문에) 특별한 캐릭터 라인을 소스나 오브젝트 코드에 묻을 수가 있습니다. 리버젼의 식별을 실시하기 위해서(때문에)는, 이하의 캐릭터 라인(마크)

    $Id$

(을)를 코멘트등의 텍스트 부분에 씁니다. RCS 는, 이 마크를 다음의 형식의 캐릭터 라인에 치환합니다.

    $Id: 파일명 리버젼 일자 시각 저자 상태 $

이러한 마크를 모듈의 원시 코드의 1 페이지눈에 두는 것으로, 편집하고 있는 파일의 리버젼을 곧바로 판단할 수가 있습니다. RCS 는 마크의 갱신을 자동적으로 실시합니다. 마크를 오브젝트 코드에 짜넣으려면 , 그것을 리터럴인 캐릭터 라인중에 포함합니다. C 언어에서는, 이하와 같이 합니다.

    static char rcsid[] = "$Id$";

ident 명령은, 오브젝트 파일이나 덤프 출력으로부터도 마크를 찾아 표시하는 것이 할 수 있습니다. 따라서 ident 명령을 이용하는 것으로, 어느 프로그램이 어느 모듈의 어느 리버젼에 의해 작성되었는지를 알 수가 있습니다.

마크 $Log$ (을)를 텍스트나 코멘트내에 포함하는 일도 유용할지도 모릅니다. 이 마크는 체크인 때에 요구된 로그를 저축해 갑니다. 이것에 의해, 변경의 히스토리를 직접, 파일에 기록할 수가 있습니다. RCS 에는 그 밖에도 몇개의 마크가 있습니다. 자세하게는 co(1) (을)를 참조해 주세요.

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

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