Rcs cvs
This presentation is the property of its rightful owner.
Sponsored Links
1 / 30

RCS 와 CVS 로 소스 관리 PowerPoint PPT Presentation


  • 71 Views
  • Uploaded on
  • Presentation posted in: General

2004 Fall. RCS 와 CVS 로 소스 관리. 주 홍 택 컴퓨터공학과 계명대학교. 2004 Fall. RCS. 주 홍 택 컴퓨터공학과 계명대학교. 도입. 소프트웨어는 공동작업을 통하여 개발이 되고 발전하며 새로운 용도로 이용되기도 함 RCS(Revision Control System: 버전 관리 시스템 ) 은 유닉스에서 프로그램 개발을 돕는 소스 관리 도구임 대형 프로젝트 수행 시 반드시 필요한 도구임 여러 개발자가 프로젝트 수행 시 도움을 줌 소스 이력 관리 동시에 소스 수정을 방지함

Download Presentation

RCS 와 CVS 로 소스 관리

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Rcs cvs

2004 Fall

RCS와 CVS로 소스 관리

주 홍 택

컴퓨터공학과

계명대학교


Rcs cvs

2004 Fall

RCS

주 홍 택

컴퓨터공학과

계명대학교


Rcs cvs

도입

  • 소프트웨어는 공동작업을 통하여 개발이 되고 발전하며 새로운 용도로 이용되기도 함

  • RCS(Revision Control System:버전 관리 시스템)은 유닉스에서 프로그램 개발을 돕는 소스 관리 도구임

  • 대형 프로젝트 수행 시 반드시 필요한 도구임

  • 여러 개발자가 프로젝트 수행 시 도움을 줌

  • 소스 이력 관리

  • 동시에 소스 수정을 방지함

  • 다른 방향으로 진행된 개발 결과를 합칠 수 있음

  • 변경 내용을 추적할 수 있음

  • 자동으로 생성되는 것은 관리하지 않음


Rcs cvs

버전 트리

  • 하나의 파일을 트리 구조로 버전을 관리함

  • 각 버전은 버전 번호를 가짐

    • Release Revision branch

  • 새로운 분기점 가능

    • 새로운 시도, 새로운 시스템에 포팅등

  • 두개의 버전을 통합하기 위하여 rcsmerge를 사용함

root(1.1)

trunk(1.2)

trunk(1.3)

branch(1.3.1.1)

trunk(1.4)

branch(1.3.1.2)

tip(1.5)

tip(1.3.1.3)


Ci co

기본적인 동작: ci , co

Check out

Sources

Check in

Check out

Check out

Check in

Check in


Ci check in

기본적인 동작: ci (Check in)

  • 소스 파일 관리를 시작하거나 새로운 버전을 만듬

  • 원래의 소스 파일을 지우고 버전 관리를 위한 새로운 파일을 생성함

    • 예: source.c  source.c,v

    • 수정을 위하여는 추후에 co 명령어를 사용함

  • 이력 관리를 위하여 설명문을 입력함

  • check in을 소스에 대한 잠금 해제(release lock)로 해석되기도 함

    • 이후 부터 다른 사람도 소스를 수정할 수 있음

  • 수정 내용 없이 check in 하면 소스 파일만 지우는 효과를 가져 옴


Co check out

기본적인 동작: co (Check out)

  • 소스 파일 사용하기 위하여 가져옴

  • 기본적으로 가장 최근의 파일을 가져옴

    • source.c,v  source.c

  • check out을 소스에 대한 잠금 설정(set lock)로 해석되기도 함

    • 이후에는 다른 사람은 수정을 위한 check out을 수행할 수 없음

  • 파일을 수정하기 위한 것과 파일을 읽기 용도를 분명히 구분할 것

  • 누가 특정 파일을 check out 했는지 알아 볼 수 있음


Rcs cvs

기본적인 동작: 예


Rcs cvs

RCS 디렉토리와 파일

  • Check in과 check out을 실행하기 전에 항상 RCS라는 디렉토리가 존재하는지 확인을 함.

  • 만약 존재한다면 이 디렉토리를 파일을 보관하기 위한 용도로 사용함

  • RCS는 파일 별로 관리를 위한 rcs 파일을 생성(확장자 ,v)를 붙임

  • rcs 파일은 파일 내용과 함께 파일에 대한 세부 사항, 전체 경로, 현재 버전, 접근할 수 있는 사용자 리스트, 파일의 시간과 날자에 관한 정보를 보관

  • 버전이 증가함에 따라서 파일의 크기가 커짐

  • 필요에 따라서 특정 버전을 삭제할 수 있음

    • rcs –orange filename

  • 특정 버전을 삭제하여도 버전 번호는 유지됨


Rcs cvs

버전로그

  • rlog


Rcs cvs

문자 식별

  • 소스 파일에 특정 문자열(마커)을 삽입하면 RCS는 이 문자열에 소스 관리에 대한 정보를 추가함

  • $Header$

    $Header : /Home/juht/temp/test, v 1.3 2003/11/16 03:28:30 juht Exp $

  • 일반적으로 마커는 소스의 주석 안에 놓음

  • 특정 변수에 저장할 수도 있음

    • 프로그램 실행시 소스 버전 출력 가능

    • 컴파일된 오브젝트 코드에서 소스 버전 확인 가능(ident)

  • 그외 유용한 마커: $Author$, $Date$, $Locker$, $Revision$, $Source$, $State$


Rcs cvs

파일 잠금 모드

  • Strict Access 모드

    • 기본적인 소스 잠금 모드 임

    • 모든 개발자는 소스 파일을 check out 한 후에 수정할 수 있음

    • 다른 사람이 check out한 소스 파일을 수정을 할 수 없음

  • Open Access 모드

    • rcs –U filename 과 rcs –L filename으로 Strict Access 모드에서 빠져 나오거나 다시 돌아 갈 수 있음

    • 이 모드에서는 파일의 소유자만 수정을 위한 check out 없이 rcs 파일 수정이 가능함

    • co 명령시 –l 옵션을 사용하지 않음

    • 두 사람이 동시에 파일을 수정할 수 있음


Check in

Check in에 대하여

  • Check in을 실패하는 경우 두가지

    • Strict Access 방식에서 check out 할 때 파일에 잠금을 설정하지 않고 소스를 수정함

    • Open Access 방식에서 소유자 이외의 다른 개발자가 소스 파일에 잠금을 설정한 경우

  • 다른 개발자가 잠금을 설정하지 않은 경우이면 파일의 잠금을 실행할 수 있음

    rcs –l filename

  • 이미 다른 개발자가 잠금을 설정한 경우이면

    • 이전 버전에 대하여 잠금을 실행하고 이후에 합치는 작업을 실시함

    • 잠금을 실행한 다른 개발자와 협상을 실시함

  • Check in과 check out를 연속적으로 실행할 수 있음

    ci –l filename


Rcs cvs

버전 번호와 이름 관리

  • Check in시 –r 옵션을 사용하여 새로운 버전 번호를 할당 할 수 있음

    • 많은 발전을 하여 새로운 Release를 만드는 경우등

  • Check out시에도 –r 옵션을 사용하여 오래된 버전을 가져 올 수 있음

    • 다양한 이유가 존재함

  • 특정 버전에 버전 번호 대신에 버전 이름을 사용할 수 있음

    • rcs –nname:revision filename

    • ci –nrevision filename

    • 하나의 버전에 여러 개 이름 설정 가능


Access control list

접근 리스트(Access Control List)

  • rcs 소스 파일에 대한 권한

    • 파일의 소유자는 자신의 파일을 항상 읽을 수 있고 수정 가능

    • 슈퍼 유저는 모든 파일을 읽고 쓸 수 있음

    • 접근 리스트에 아무도 없으면 누구나 파일을 읽고 쓸 수 있음

    • 접근 리스트가 비어 있지 않으면 리스트에 있은 개자만 파일에 대하여 잠금을 설정할 수 있음

  • Rcs 명령의 –a 명령어를 사용하여 접근 리스트에 개발자를 추가하고 –e로 삭제할 수 있음


Rcs cvs

2004 Fall

CVS

주 홍 택

컴퓨터공학과

계명대학교


Rcs cvs

도입

  • 각종 파일의 버젼을 쉽게 관리할 수 있도록 도와주는 도구임

  • 소프트웨어 개발 단계 별로 소스를 저장할 수 있음

    • 개발이 진행된 후 예전 버전을 다시 볼 수 있음

    • 작업한 내용을 글로 적어 함께 저장

    • 각 버전 별로 소스의 변경 내용만 저장함: 공간 절약

  • 여러 개발자가 하나의 프로젝트를 진행하는데 유용함

    • 수정 예약 방식을 사용하지 않음 잠금 설정 없음

    • 여러 개발자가 같은 파일을 동시에 수정할 수 있음

      • 서로 다른 부분을 고치면 쉽게 합칠 수 있는 방법 제공

      • 같은 부분을 고치면 수정한 사람들이 협상하여 함

    • 대다수의 공개 프로젝트에서 사용되어 그 효능을 입증하였음

  • Unix 환경은 물론, Windows나 Macintosh에서도 사용


Rcs cvs

동작 방식

  • 저장소

    • 공동으로 작업하는 파일 및 버전에 관한 정보를 중앙에서 보관하는 장소

    • 디렉토리에 전반적인 설정 사항과 각 프로젝트의 파일들(문서, 프로그램 등)은 물론, 각 파일의 버젼 관리에 필요한 정보, 파일별 작업 기록들을 저장

  • 프로젝트

    • 여러 개의 프로젝트가 하나의 저장소를 공유할 수 있음

    • 시작시 파일 및 기본 디렉토리 구조를 자신의 작업 디렉토리에 만들고, 이를 저장소로 옮김

  • 프로젝트 진행

    • 저장소에 있는 내용을 복사하여 자신의 작업 디렉토리를 만듬

    • 작업 결과를 저장소로 옮기고, 다른 사람이 저장소에 올려 놓은 작업 결과를 받아오는 오면서 자신의 디렉토리에서 소프트웨어 개발을 실시함


Rcs cvs

작업 흐름도


Cvs cvs

CVS 저장소 설정: CVS 서버 설치

  • 저장소를 이용할 프로젝트들의 규모를 고려하여 충분한 공간 마련

  • 저장소를 /home/cvs에 만들기로 했다면 다음과 같이 초기화할 수 있음

    # cvs -d /home/cvs init

    • -d는 저장소의 위치

    • init가 CVS 명령

  • CVSROOT 디렉토리가 생성됨

    • CVS의 각종 설정 내용을 담고 있는 디렉토리임

  • CVS를 이용할 개발자들에게 저장소를 사용할 수 있는 권한을 부여


Rcs cvs

명령어 기본

  • 기본 명령어 형식

    $ cvs [cvs 옵션] 명령 [명령 옵션과 인자]

  • 모든 CVS 명령은 저장소의 위치를 알아야 수행됨

    • 환경변수 CVSROOT 의 값으로 저장소의 위치 지정

    • 또는 명령어 마다 –d 옵션 사용

  • 시스템 인증 또는 CVS 서버 인증 과정이 모든 명령어 사용에 앞서 이루어져야 함

    cvs -d :pserver:[email protected]:/home/cvs login


Rcs cvs

프로젝트 생성

  • 프로젝트의 이름을 결정

  • 저장소에 새 프로젝트를 만들고 이 두 파일을 저장하기 위해서는 import 명령을 사용한다

    • $ cvs import -m “msg" pname vender_tag release_tag

    • msg: 프로젝트 시작에 관한 메시지

    • pname: 프로젝트 이름(디렉토리)

    • vender_tag: 일반적으로 프로젝트 생성자의 이름

    • Release_tag: 프로젝트 생성시의 상태

  • pname에 있는 모든 파일들이 CVS 저장소로 이동됨

  • 이후에는 저장소에 저장된 것을 사용해야 함


Rcs cvs

프로젝트 시작

  • 프로젝트에 참여해서 작업하려면 먼저 프로젝트 디렉토리명 (또는 모듈명) 을 알아야 함

  • 작업할 프로젝트 디렉토리를 정했으면 cvs checkout 명령으로 저장소의 내용을 자신의 작업환경에 가져옴

    cvs checkout directoryname

  • CVSROOT 도 다른 디렉토리와 마찬가지로 취급됨


Rcs cvs

소스 편집

  • 보통 파일 편집하는 것과 다른 점이 없음

  • 파일에 다음과 같은 RCS 지정자(마커)를 삽입하여 최근 수정일, 고친 사람, 개정판 번호 등의 정보를 알기 쉽게 함

    • $Id$

    • $Date$

    • $Revision$

    • $Log$


Rcs cvs

파일 추가

  • 파일 이나 디렉토리 모두 동일한 방법으로 아래와 같이 CVS 저장소에 추가

    bash$ mkdir newdir

    bash$ cvs add newdir

    bash$ cd newdir

    bash$ vi newfile.c

    bash$ cvs add newfiles.c

    bash$ cp ~/somewhere/img/test.gif .

    bash$ cvs add -kb test.gif bash$ cd .. bash$ cvs commit

  • 단, cvs commit 명령을 수행하기 전까지는 실제로 CVS 저장소에 저장되지 않음

  • 문서가 아닌 이미지 같은 바이너리 파일 도 추가해서 CVS 저장소에 넣을 수 있는데 이때에는 반드시 -kb 옵션을 주어야 한다.


Rcs cvs

삭제

  • 불필요한 파일 이나 디렉토리 를 CVS 저장소에서 삭제할 수 있음

    bash$ rm newfile.c

    bash$ cvs remove newfile.c

    bash$ cvs commit

  • 추가와 마찬가지로 cvs commit 명령을 수행하기 전까지는 실제로 CVS 저장소에서 삭제하지 않음


Rcs cvs

충돌 해결 방법

  • 개발자들 간에 update 하고 commit 하는 시간차이가 있어 변경된 내용이 서로 일치하지 않으면 commit 할때 충돌 (conflict) 이 일어남

  • 충돌이 일어나면 해당 파일을 편집기로 열어 >>>>>>>> 부터 <<<<<<<< 사이의 충돌나는 부분을 편집한 후 다시 commit 을 시도 하면 됨.

  • 동일한 부분을 수정했으면 협상이 필요함


Snapshot

Snapshot 생성

  • 어느 한 시점에서의 프로젝트 파일들에 동일한 꼬리표 (TAG) 을 붙일 수 있음

    bash$ cvs commit

    bash$ cvs tag REL_1_0

  • 이것은 각각의 파일 들의 개정판 번호가 시간이 흐를수록 제각기 되기 때문에 특정 시점의 파일 들을 항상 동일하게 꺼낼 수 있게 해줌

  • 예를 들어 A 라는 프로그램이 a.c, b.c, c.c 라는 소스 파일로 구성되어 있을때 현재의 파일 들에게 REL_1_0 이라는 꼬리표를 붙임

  • REL_1_0 꼬리표를 사용해서 CVS 저장소로부터 꺼낸다.

    bash$ cvs co -rREL_1_0 prog_a

    bash$ cd prog_a


Resources

Resources

  • Homepage and FAQ

    • http://www.cvshome.org

  • “Open Source Development with CVS”

    • 2nd Edition, ISBN: 1-58880-173-X

    • http://www.coriolis.com

    • Available online at http://library.books24x7.com

    • http://database.sarang.net/study/cvs/cvs-han/cvs-guide.html


Rcs cvs

질의 및 토의


  • Login