rcs 와 cvs 로 소스 관리

30
1 RCS 와 CVS 와 와와 와와 와 와 와 와와와와와와 와와와와와 2003 Fall

Upload: wray

Post on 11-Jan-2016

61 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: RCS 와  CVS 로 소스 관리

1

RCS 와 CVS 로 소스 관리

주 홍 택

컴퓨터공학과

계명대학교

2003 Fall

Page 2: RCS 와  CVS 로 소스 관리

2

RCS

주 홍 택

컴퓨터공학과

계명대학교

2003 Fall

Page 3: RCS 와  CVS 로 소스 관리

3

2003 Fall

도입 소프트웨어는 공동작업을 통하여 개발이 되고 발전하며

새로운 용도로 이용되기도 함 RCS(Revision Control System: 버전 관리 시스템 ) 은

유닉스에서 프로그램 개발을 돕는 소스 관리 도구임 대형 프로젝트 수행시 반드시 필요한 도구임 여러 개발자가 프로젝트 수행시 도움을 줌 소스 히드토리 관리 동시에 소스 수정을 방지함 다른 방향으로 진행된 개발 결과를 합칠 수 있음 변경 내용을 추적할 수 있음 자동으로 생성되는 것은 관리하지 않음

Page 4: RCS 와  CVS 로 소스 관리

4

2003 Fall

버전 트리 하나의 파일을 트리

구조로 버전을 관리함 각 버전은 버전 번호를

가짐– Release Revision branch

새로운 분기점 가능– 새로운 시도 , 새로운

시스템에 포팅등 두개의 버전을 통합하기

위하여 rcsmerge 를 사용함

root(1.1)

trunk(1.2)

trunk(1.3)

trunk(1.4)

tip(1.5)

branch(1.3.1.1)

branch(1.3.1.2)

tip(1.3.1.3)

Page 5: RCS 와  CVS 로 소스 관리

5

2003 Fall

기본적인 동작 : ci , co

Sources

Check out

Check in

Check out

Check in

Check out

Check in

Page 6: RCS 와  CVS 로 소스 관리

6

2003 Fall

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

소스 파일 관리를 시작하거나 새로운 버전을 만듬 원래의 소스 파일을 지우고 버전 관리를 위한 새로운

파일을 생성함– 예 : source.c source.c,v– 수정을 위하여는 추후에 co 명령어를 사용함

이력 관리를 위하여 설명문을 입력함 check in 을 소스에 대한 잠금 해제 (release lock) 로

해석되기도 함– 이후 부터 다른 사람도 소스를 수정할 수 있음

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

Page 7: RCS 와  CVS 로 소스 관리

7

2003 Fall

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

소스 파일 사용하기 위하여 가져옴 기본적으로 가장 최근의 파일을 가져옴

– source.c,v source.c check out 을 소스에 대한 잠금 설정 (set lock)

로 해석되기도 함– 이후에는 다른 사람은 수정을 위한 check out 을

수행할 수 없음 파일을 수정하기 위한 것과 파일을 읽기 용도를

분명히 구분할 것 누가 특정 파일을 check out 했는지 알아 볼 수

있음

Page 8: RCS 와  CVS 로 소스 관리

8

2003 Fall

기본적인 동작 : 예

Page 9: RCS 와  CVS 로 소스 관리

9

2003 Fall

RCS 디렉토리와 파일

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

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

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

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

버전이 증가함에 따라서 파일의 크기가 커짐 필요에 따라서 특정 버전을 삭제할 수 있음

– rcs –orange filename 특정 버전을 삭제하여도 버전 번호는 유지됨

Page 10: RCS 와  CVS 로 소스 관리

10

2003 Fall

버전로그

rlog

Page 11: RCS 와  CVS 로 소스 관리

11

2003 Fall

문자 식별 소스 파일에 특정 문자열 ( 마커 ) 을 삽입하면 RCS 는

이 문자열에 소스 관리에 대한 정보를 추가함 예

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

uht Exp $ 일반적으로 마커는 소스의 주석안에 놓음 특정 변수에 저장할 수도 있음

– 프로그램 실행시 소스 버전 출력 가능– 컴파일된 오브젝트 코드에서 소스 버전 확인 가능 (ident)

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

Page 12: RCS 와  CVS 로 소스 관리

12

2003 Fall

파일 잠금 모드 Strict Access 모드

– 기본적인 소스 잠금 모드 임– 모든 개발자는 소스 파일을 check out 한 후에 수정할 수 있음– 다른 사람이 check out 한 소스 파일을 수정을 할 수 없음

Open Access 모드– Rcs –U filename 과 rcs –L filename 으로 Strict Access

모드에서 빠져 나오거나 다시 돌아 갈 수 있음– 이 모드에서는 파일의 소유자만 수정을 위한 check out 없이

rcs 파일 수정이 가능함– co 명령시 – l 옵션을 사용하지 않음– 두 사람이 동시에 파일을 수정할 수 있음

Page 13: RCS 와  CVS 로 소스 관리

13

2003 Fall

Check in 에 대하여 Check in 을 실패하는 경우 두가지

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

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

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

이미 다른 개발자가 잠금을 설정한 경우이면 – 이전 버전에 대하여 잠금을 실행하고 이후에 합치는 작업을

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

Check in 과 check out 를 연속적으로 실행할 수 있음ci –l filename

Page 14: RCS 와  CVS 로 소스 관리

14

2003 Fall

버전 번호와 이름 관리 Check in 시 – r 옵션을 사용하여 새로운 버전

번호를 할당 할 수 있음– 많은 발전을 하여 새로운 Release 를 만드는 경우등

Check out 시에도 – r 옵션을 사용하여 오래된 버전을 가져 올 수 있음– 다양한 이유가 존재함

특정 버전에 버전 번호 대신에 버전 이름을 사용할 수 있음– rcs –nname:revision filename– ci –nrevision filename– 하나의 버전에 여러 개 이름 설정 가능

Page 15: RCS 와  CVS 로 소스 관리

15

2003 Fall

접근 리스트 (Access Control List)

rcs 소스 파일에 대한 권한– 파일의 소유자는 자신의 파일을 항상 읽을 수 있고

수정 가능– 슈퍼 유저는 모든 파일을 읽고 쓸 수 있음– 접근 리스트에 아무도 없으면 누구나 파일을 읽고 쓸

수 있음– 접근 리스트가 비어 있지 않으면 리스트에 있은

개자만 파일에 대하여 잠금을 설정할 수 있음 Rcs 명령의 – a 명령어를 사용하여 접근

리스트에 개발자를 추가하고 – e 로 삭제할 수 있음

Page 16: RCS 와  CVS 로 소스 관리

16

CVS

주 홍 택

컴퓨터공학과

계명대학교

2003 Fall

Page 17: RCS 와  CVS 로 소스 관리

17

2003 Fall

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

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

– 개발이 진행된 후 예전 버전을 다시 볼 수 있음– 작업한 내용을 글로 적어 함께 저장– 각 버전 별로 소스의 변경 내용만 저장함 : 공간 절약

여러 개발자가 하나의 프로젝트를 진행하는데 유용함– 수정 예약 방식을 사용하지 않음 잠금 설정 없음– 여러 개발자가 같은 파일을 동시에 수정할 수 있음

서로 다른 부분을 고치면 쉽게 합칠 수 있는 방법 제공같은 부분을 고치면 수정한 사람들이 협상하여 함

– 대다수의 공개 프로젝트에서 사용되어 그 효능을 입증하였음 Unix 환경은 물론 , Windows 나 Macintosh 에서도 사용

Page 18: RCS 와  CVS 로 소스 관리

18

2003 Fall

동작 방식 저장소

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

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

프로젝트– 여러 개의 프로젝트가 하나의 저장소를 공유할 수 있음– 시작시 파일 및 기본 디렉토리 구조를 자신의 작업 디렉토리에

만들고 , 이를 저장소로 옮김 프로젝트 진행

– 저장소에 있는 내용을 복사하여 자신의 작업 디렉토리를 만듬– 작업 결과를 저장소로 옮기고 , 다른 사람이 저장소에 올려 놓은

작업 결과를 받아오는 오면서 자신의 디렉토리에서 소프트웨어 개발을 실시함

Page 19: RCS 와  CVS 로 소스 관리

19

2003 Fall

작업 흐름도

Page 20: RCS 와  CVS 로 소스 관리

20

2003 Fall

CVS 저장소 설정 : CVS 서버 설치 저장소를 이용할 프로젝트들의 규모를

고려하여 충분한 공간 마련 저장소를 /home/cvs 에 만들기로 했다면

다음과 같이 초기화할 수 있음# cvs -d /home/cvs init– -d 는 저장소의 위치– init 가 CVS 명령

CVSROOT 디렉토리가 생성됨– CVS 의 각종 설정 내용을 담고 있는 디렉토리임

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

Page 21: RCS 와  CVS 로 소스 관리

21

2003 Fall

명령어 기본 기본 명령어 형식

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

모든 CVS 명령은 저장소의 위치를 알아야 수행됨– 환경변수 CVSROOT 의 값으로 저장소의 위치 지정– 또는 명령어 마다 – d 옵션 사용

시스템 인증 또는 CVS 서버 인증 과정이 모든 명령어 사용에 앞서 이루어져야 함cvs -d :pserver:[email protected]:/home/cvs login

Page 22: RCS 와  CVS 로 소스 관리

22

2003 Fall

프로젝트 생성 프로젝트의 이름을 결정 저장소에 새 프로젝트를 만들고 이 두 파일을

저장하기 위해서는 import 명령을 사용한다– $ cvs import -m “msg" pname vender_tag release_tag

– msg: 프로젝트 시작에 관한 메시지– pname: 프로젝트 이름 ( 디렉토리 )– vender_tag: 일반적으로 프로젝트 생성자의 이름– Release_tag: 프로젝트 생성시의 상태

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

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

Page 23: RCS 와  CVS 로 소스 관리

23

2003 Fall

프로젝트 시작

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

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

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

Page 24: RCS 와  CVS 로 소스 관리

24

2003 Fall

소스 편집

보통 파일 편집하는 것과 다른 점이 없음 파일 에 다음과 같은 RCS 지정자 ( 마커 ) 를

삽입하여 최근 수정일 , 고친 사람 , 개정판 번호 등의 정보를 알기 쉽게 함– $Id$ – $Date$ – $Revision$ – $Log$

Page 25: RCS 와  CVS 로 소스 관리

25

2003 Fall

파일 추가 파일 이나 디렉토리 모두 동일한 방법으로 아래와 같이 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 옵션을 주어야 한다 .

Page 26: RCS 와  CVS 로 소스 관리

26

2003 Fall

삭제

불필요한 파일 이나 디렉토리 를 CVS 저장소에서 삭제할 수 있음 bash$ rm newfile.c

bash$ cvs remove newfile.c

bash$ cvs commit

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

Page 27: RCS 와  CVS 로 소스 관리

27

2003 Fall

충돌 해결 방법

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

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

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

Page 28: RCS 와  CVS 로 소스 관리

28

2003 Fall

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

Page 29: RCS 와  CVS 로 소스 관리

29

2003 Fall

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

Page 30: RCS 와  CVS 로 소스 관리

30

2003 Fall

질의 및 토의