CVS for Project management

27
[email protected] 1 CVS for Project management 김김김 [email protected]

description

CVS for Project management. 김기형 [email protected]. What is CVS?. CVS : the Concurrent Version System 각종 파일의 버전을 쉽게 관리할 수 있도록 도와주는 도구 매 단계마다 파일관리 백업 & 버그 수정 용이 공동 프로젝트 에서 파일 관리 여럿이서 공동 작업 가능. 동작 방식. 저장소 (Repository) 작업 파일들이 보관되는 공간 Directory managed by CVS Start a Project. - PowerPoint PPT Presentation

Transcript of CVS for Project management

[email protected] 1

CVS for Project management

김기형[email protected]

[email protected] 2

What is CVS?• CVS : the Concurrent Version System

• 각종 파일의 버전을 쉽게 관리할 수 있도록 도와주는 도구– 매 단계마다 파일관리– 백업 & 버그 수정 용이

• 공동 프로젝트 에서 파일 관리– 여럿이서 공동 작업 가능

[email protected] 3

동작 방식• 저장소 (Repository)

– 작업 파일들이 보관되는 공간– Directory managed by CVS

• Start a Project

개발자

저장소 개발자

checkout

[email protected] 4

동작방식 요약• 저장소 초기화

– CVS 설치시 1 번 .• 프로젝트 초기화

– 새로운 프로젝트 시작시 필요• 작업 공간 마련• 작업• 작업 내용을 저장소를 통해서 교류

[email protected] 5

저장소 설정• $ cvs –d /home/cvs init

– ‘init’ 은 cvs 명령어– /home/cvs/CVSROOT

• Cvs 의 각종 설정 내용

• /home/cvs 를 직접 건드리지 말것 !– Cvs 명령어 이용 !

• .bash_profile ( 저장소 위치 지정 )– CVSROOT=/home/cvs– export CVSROOT

[email protected] 6

System 계정 이용• 그룹 생성 후 개발자들을 추가

– Groupadd 로 그룹 생성– /etc/group 파일에서 사용자 등록

• Directory 에 권한 부여– $ chgrp –R cvs /home/kkhsoft/cvs– $ chmod –R g+w /home/kkhsoft/cvs

[email protected] 7

System 계정 없이 이용• System 계정 없이 이용하는 방법

– CVS 암호 인증 방식 이용– 개발자들은 CVS 계정을 부여 받으며 inetd 를

통해 정해진 포트로 CVS 를 사용

– 시스템 관리 측면에서 유리– 공개 프로젝트에서 주로 사용

• 아파치 , 모질라 등

[email protected] 8

inetd 설정• /etc/services

– cvspserver 2401/tcp – cvspserver 2401/udp

• /etc/inetd.conf– cvspserver stream tcp nowait root /usr/bin/cv

s cvs -f --allow-root=/home/cvs pserver

• $ killall -HUP inetd – Inetd 재시작

[email protected] 9

개발자 관리• $ htpasswd -n test

– ID:encrypt_passwd • test:f9HKoh.qN/Dz2

• Passwd file 위치– /home/cvs/CVSROOT/passwd – ID:encrypt_passwd:REAL_ACCOUNT

• test:f9HKoh.qN/Dz2:cvs

[email protected] 10

Readers, Writers• /home/cvs/CVSROOT/

• readers : 읽기 권한만 가진 개발자

• writers : 읽기 & 쓰기 권한 모두 가진 개발자

• Just add user ID in reader or writer file.

[email protected] 11

프로젝트 초기화• Directory 구조 설계

• 해당 소스가 있는 Directory 로 이동 후 소스들을 CVS 로 보낸다 .– $ cvs import –m "myprj" khpro kkhsoft start– N khpro/hello.c– No conflicts created by this import

[email protected] 12

Start a Project• System 에 계정 있을 경우

– $ cvs -d /home/cvs 명령

• System 에 계정 없을 경우– $ cvs -d :pserver:[email protected]:

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

/home/cvs 명령

[email protected] 13

Checkout• Checkout

– $ cvs checkout khpro– cvs checkout: Updating khpro– U khpro/hello.c

[email protected] 14

Commit• 파일 수정 후 업로드 하기

• $ cvs commit –m “adding maker” hello.c

[email protected] 15

Update• 저장소에서 다른 사람의 작업 결과를 받는 일

• $ cvs update– cvs update: Updating .

– “M 파일명” : 수정된 파일– “U 파일명” : 갱신된 파일

저장소me others

chekout chekout

commit

modify

updateM

[email protected] 16

Conflicts

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

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

저장소me others

chekout chekout

commit

modify

updateC

[email protected] 17

Example

[email protected] 18

Add file• $ cvs add read.txt

– “read.txt” 를 추가한다는 것을 기록– 실제로 저장하려면 “ commit” 이용

[email protected] 19

Delete file• $ cvs delete read.txt

– “read.txt” 를 삭제한다는 것을 기록– 실제로 삭제하려면 “ commit” 이용

[email protected] 20

log• 작업 기록 확인

• $ cvs log 파일명

[email protected] 21

Tag #1• 프로그램이 2 개 이상의 소스를 가지고 있을 때

한 시점에서 소스들을 묶어 둘 수 있다 .• cvs tag 는 현재 작업 Directory 와 서브 Directory

에 있는 모든 파일들에 tag 를 붙인다 .

• cvs tag 태그명 파일명 • cvs tag 태그명

– 현재 작업 Directory 에 있는 모든 파일에 태그를 붙인다

[email protected] 22

Tag #2• cvs checkout -r 태그명 module 명

– Directory 를 새로 만든다 .• cvs update -r 태그명

• 작업중인 Directory 에서 checkout 이나 update를 하게되면 tag 가 있는 버전이 작업 Directory에 있는 파일들을 덮어 쓰게 된다 .

[email protected] 23

Branching #1• 현재 코드를 변경하지 않고 옛 버전의 코드에

있는 버그를 수정 .• 가지를 사용하면 메인 모듈에 영향을 주지 않고

메인 모듈의 다양한 버전을 저장하고 가져올 수 있다 .

• 가지 만들기– cvs tag -b branchtag 명

• 가지 가져오기– cvs checkout -r branchtag 명 module 명– cvs update -r branchtag 명

[email protected] 24

Branching #2• Branch 를 main 과 합치기

– cvs checkout module 명– cvs update -j branchtag 명

[email protected] 25

Make Patch• CVS 로 관리하는 코드에 대해서 특정 버전을

기준으로 한 패치를 작성한다 .

• cvs -z3 diff -u > file.diff

• 이 파일을 CVS 를 사용하지 않는 다른 사람들에게 전달하여 그들의 소스 코드를 패치하도록 할 수 있다 .

[email protected] 26

Subversion• 커밋 단위가 파일이 아니라 체인지셋 .• 파일별 리비전이 없고 한번 커밋할 때마다 변경

사항별로 리비전이 하나씩 증가• CVS 에 비해 엄청나게 빠른 업데이트 / 브랜칭 /

태깅 시간• CVS 와 거의 동일한 사용법• 파일 이름변경 , 이동 , 디렉토리 버전 관리도

지원• 여러개의 파일을 커밋하다 커밋이 실패하면 모두

이전 상태로 되돌아감

[email protected] 27

The End부족한 부분 많은데 끝까지 봐 주셔서 감사합니다 ^^