버전관리와 wincvs
DESCRIPTION
버전관리와 WinCVS. www.themegallery.com. CVS?. Concurrent Versions System 소프트웨어 프로젝트의 버전 관리를 도와준다 . RCS 를 기반으로 작성되어 있음 RCS 는 파일 단위의 버전 관리를 해줌 대표적인 사용 예 : WikiWiki. 참고 – 소프트웨어 프로젝트 관리의 3 요소. Unit test Build automation Version Control. 버전 관리란 ?. 버전이 뭔지는 알죠 ? - PowerPoint PPT PresentationTRANSCRIPT
CompanyLogoHAJE
@
버전관리와 WinCVS
www.themegallery.com
HAJE in KAIST
CVS?
Concurrent Versions System 소프트웨어 프로젝트의 버전 관리를 도와준다 .
RCS 를 기반으로 작성되어 있음 RCS 는 파일 단위의 버전 관리를 해줌 대표적인 사용 예 : WikiWiki
HAJE in KAIST
참고 – 소프트웨어 프로젝트 관리의 3요소
Unit test
Build automation
Version Control
HAJE in KAIST
버전 관리란 ?
버전이 뭔지는 알죠 ?
어떤 파일이 언제 어떻게 누구에 의해 변경 /추가 되었는지를 알게 해준다 .
Branch, Milestone 관리에 용이 .
숙련된 개발자가 경험에 의존하던 프로젝트 자원 관리를 자동화 해줌 .
HAJE in KAIST
버전 관리의 장점 (1)
실수에 대한 복구가 쉬움 버전 관리 없는 프로젝트는 Backspace 키가
없는 키보드와 같다 팀원들의 co-work 를 돕는다 .
비단 프로그래머 뿐만 아니더라도 .. 프로젝트의 역사를 통째로 남길 수 있다 .
Ex: 2003 년 5 월 17 일에 release 한 제품에 버그가 보고되었는데 , 2002 년 12 월 11 일에는 분명히 이 버그가 없었다 . 이 두 버전간의 차이를 분석해 버그를 수정하였다 .
HAJE in KAIST
버전 관리의 장점 (2)
프로젝트의 “ 문맥 (context)” 를 쉽게 파악할 수 있게 해준다 . 나쁜 팀 프로젝트 습관
파일의 맨 앞에 history log 남기기 // modified by adaline 따위 붙이기 수정할 때 옛날 부분 주석처리 해서 남기기 등
버전관리 소프트웨어를 사용하면 이런 나쁜 습관을 없앨 수 있다 .
소스 파일에는 순수한 코드와 핵심적인 주석만 있어야 한다 .
HAJE in KAIST
구조
CVS 저장소 (Repository)
개발자 1
개발자 2
개발자 3
HAJE in KAIST
Repository
프로젝트의 모든 버전들의 원본이 담겨 있는 핵심 장소이다 .
자신의 컴퓨터 (local) 일 수도 있고 , 외부 컴퓨터로 지정할 수도 있음 .
하제의 경우 /home/cvs
많은 오픈 소스 프로젝트들이 CVS 를 통해 배포를 하고 있음
HAJE in KAIST
Project
어떤 소프트웨어를 이루는 자원 (= 파일 ) 의 집합 한 저장소는 여러 프로젝트를 담고 있을 수 있음
여러 파일과 폴더로 이루어짐 . 소스 코드 각종 리소스나 도큐먼트 테스트 데이터 등
HAJE in KAIST
시나리오 1
경돈이는 모 게임 회사에 취직해 프로젝트 “ α” 제작에 참여하게 되었다 . “α” 는 CVS 로 관리되고 있는 프로젝트이다 . 경돈이는 ‘ check out’ 을 하여 저장소의 프로젝트 파일들을 자신의 컴퓨터로 전송하였다 .
cvs –d … checkout alpha
Check out 이란 저장소의 파일을 자신의 컴퓨터로 통째로 가져오는 것을 말한다 . cf. VSS 의 check out
HAJE in KAIST
시나리오 2
경돈이가 아침에 출근을 해서 , 그 동안 다른 사람들이 그 동안 수정한 사항들을 자기 컴퓨터에 반영하고 싶어한다 .
cvs –d … update
Update 란 자신 컴퓨터에 있는 파일들을 저장소의 최신 파일들로 갱신하는 것을 말한다 .
HAJE in KAIST
시나리오 3
경돈이가 화랑의 발차기를 현재보다 2 배 느리게 하는 것이 좋겠다고 생각하여 hwoarang.cpp 파일을 수정한 후 , “commit” 을 하여 저장소의 파일을 갱신하였다 . 다른 팀원들이 update 를 하면 이 수정한 내용이 갱신될 것이다
cvs –d … commit hwoarang.cpp
Commit 이란 저장소의 최신 버전을 자신의 파일로 갱신하는 것을 말한다 .
HAJE in KAIST
Commit 할 때의 주의점
빌드가 깨지지 않게 할지어다
항상 충분한 테스트를 거칠지어다
Commit 할 때는 메시지를 남기도록 되어 있다 . 일종의 log 역할을 함 무엇을 했는지만 적지 말고 왜 했는지 적으시오
캐릭터 구조체에 가속도 필드를 추가 (x) 미끄러지는 효과가 필요했음 (o)
HAJE in KAIST
Hello.cpp
Revision 이란 각 파일의 버전을 말한다 . 시작과 동시에 모든 파일은 1.1 이라는 버전을
갖는다 .
void main(){
printf(“hello world\n”);}
HAJE in KAIST
Merge (1/3)
만약 두 사람이 같은 파일을 동시에 고치면 ?
경돈의 경우
#include <stdio.h>
void main(){
printf(“hello world\n”);}
세훈의 경우
int main(){
printf(“hello world\n”);return 0;
}
HAJE in KAIST
Merge (2/3)
1. 경돈이 자신의 수정본을 commit 함1. 성공 . 저장소의 버전은 1.2 가 됨 .
2. 세훈이 자신의 수정본을 commit 함1. 실패 . 저장소의 버전은 1.2 인데 자신이 편집한
파일은 1.1 이므로 Up-to-date check failure3. 세훈이 update 를 시도함
1. 성공적으로 Merge 됨 .4. 세훈이 Merge 된 파일에 이상이 없음을 확인하고
commit 함1. 성공 . 저장소의 버전은 1.3 이 됨 .
HAJE in KAIST
Merge (3/3)
CVS 는 optimistic lock scheme
Merge 된 파일#include <stdio.h>
int main(){
printf(“hello world\n”);return 0;
}
HAJE in KAIST
Confliction 이 일어나는 경우
<<<<<<< hello.cpp#include <stdio.h>=======#include <cstdio>>>>>>>> 1.2
int main(){
printf(“hello world\n”);return 0;
}
해결책 : 전화를 한다
HAJE in KAIST
WinCVS
cvs 커맨드는 다양하고 복잡 . WinCVS 는 GUI frontend 를 통해 CVS 를 윈도우에서 쉽게 사용할 수 있게 해주는 프로그램이다 .
자매품 : MacCVS, gCVS
HAJE in KAIST
설치 (1/2)
http://www.wincvs.org/download.html
HAJE in KAIST
설치 (2/2)
WinCVS 설치가 끝나면 CVSNT 를 설치할 것이냐고 물어봄 반드시 설치해야 함 !
WinCVS 를 제대로 사용하기 위해서는 Python 2.1 이상의 버전을 설치해야 한다
HAJE in KAIST
실행화면
HAJE in KAIST
새 프로젝트 만들기
새 프로젝트를 처음으로 만들 때 한번만 해준다 .
1. 작업중이던 프로젝트 메인 폴더 설정2. 메뉴의 Remote -> Import module
1. CVSROOT 설정2. 확인 버튼 누르면 끝 !
HAJE in KAIST
CVSROOT ???
저장소의 위치를 지정함
HAJE in KAIST
Check out
기존에 돌아가고 있는 프로젝트에 참여하고 싶을 때 . 메뉴의 Remote -> Check module
HAJE in KAIST
ex> Noah2k
HAJE in KAIST
히스토리 보기 파일을 오른쪽 버튼으로 클릭하고 Graph 를 선택해보자
HAJE in KAIST
Update update 하고자 하는 디렉토리 ( 혹은 개별 파일 )
에서 오른쪽 버튼을 누르고 Update 선택
HAJE in KAIST
Commit (1/2) 파일 수정 시 자동으로 인식해서 다음과 같이 나온다
HAJE in KAIST
Commit (2/2) 수정한 파일에서 오른쪽 버튼을 누르고 Commit 을 선택한다
폴더에서 하면 변경된 파일들이 모두 commit 됨 Revision 이 올라감 . (1.1 -> 1.2)
HAJE in KAIST
새 파일 추가 (1/2) 새로운 파일이 생기면 다음과 같이 나온다
HAJE in KAIST
새 파일 추가 (2/2) 파일을 선택하고 메뉴에서 Modify Add 선택
HAJE in KAIST
마치며 (1/3) 사용하는 IDE 가 버전 관리를 지원하면 적극
사용하자 (Visual Studio, Eclipse 등 )
Eclipse and CVS live together in perfect harmony
HAJE in KAIST
마치며 (2/3)
Branch, Tag 와 같은 멋진 기능이 많으니 必히 공부해 보자 .
Team project 를 하게 되는 경우 , 혹은 혼자 하는 project 라도 사용하면 매우 편리하다 .
프로그램 소스코드 뿐만 아니라 , 중요한 문서 등을 관리할 때에도 사용하면 좋다 .
동아리 방에 “ 실용주의 프로그래머를 위한 버전관리 using CVS” 책을 참고하자
HAJE in KAIST
마치며 (3/3)
참고할만한 자료
“ 실용주의 프로그래머를 위한 버전관리 using CVS” 동방에 있음 -_ -;
http://home.bawi.org/~minskim/moin.cgi/CVS%20 사용