rcs 와 cvs 로 소스 관리

Post on 11-Jan-2016

61 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

1

RCS 와 CVS 로 소스 관리

주 홍 택

컴퓨터공학과

계명대학교

2003 Fall

2

RCS

주 홍 택

컴퓨터공학과

계명대학교

2003 Fall

3

2003 Fall

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

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

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

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)

5

2003 Fall

기본적인 동작 : ci , co

Sources

Check out

Check in

Check out

Check in

Check out

Check in

6

2003 Fall

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

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

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

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

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

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

7

2003 Fall

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

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

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

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

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

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

있음

8

2003 Fall

기본적인 동작 : 예

9

2003 Fall

RCS 디렉토리와 파일

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

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

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

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

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

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

10

2003 Fall

버전로그

rlog

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$

12

2003 Fall

파일 잠금 모드 Strict Access 모드

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

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

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

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

13

2003 Fall

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

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

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

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

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

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

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

14

2003 Fall

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

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

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

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

15

2003 Fall

접근 리스트 (Access Control List)

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

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

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

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

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

16

CVS

주 홍 택

컴퓨터공학과

계명대학교

2003 Fall

17

2003 Fall

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

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

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

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

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

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

18

2003 Fall

동작 방식 저장소

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

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

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

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

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

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

19

2003 Fall

작업 흐름도

20

2003 Fall

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

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

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

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

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

21

2003 Fall

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

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

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

시스템 인증 또는 CVS 서버 인증 과정이 모든 명령어 사용에 앞서 이루어져야 함cvs -d :pserver:minskim@cvs.webdox.or.kr:/home/cvs login

22

2003 Fall

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

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

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

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

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

23

2003 Fall

프로젝트 시작

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

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

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

24

2003 Fall

소스 편집

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

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

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 옵션을 주어야 한다 .

26

2003 Fall

삭제

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

bash$ cvs remove newfile.c

bash$ cvs commit

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

27

2003 Fall

충돌 해결 방법

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

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

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

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

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

30

2003 Fall

질의 및 토의

top related