[[TableOfContents]] === 스토리 1 프로젝트 시작 === 홍길동 씨는 C++로 Hello World를 작성하려고 한다. 간단한 소스지만 CVS에 넣어 볼겸 한번 만들어 본다. 먼저 다음 내용의 cvs login을 위한 cvs_set_remote.bat 란 세팅 배치 파일을 만들었다. cvs_set_remote.bat 내용 (한글부분은 채워넣어 주세요.) {{{~cpp SET CVSROOT=:pserver:아이디@165.194.17.15:/home/CVS SET PATH=%PATH%;"C:\Program Files\GNU\WinCvs 1.3" }}} 도움말 {{{~cpp SET CVSROOT=:pserver:자신의아이디@서버주소:서버의CVS홈주소 }}} ==== 로그인 ==== 원하는 디렉토리에서 배치 파일을 실행해서 cvs가 실행되는지 확인하고 로그인을 한다. (문서의 작성자는 자신이 알고 있는 서버를 이용하였으니 개의치 마세요.) {{{~cpp .\>cvs_set_remote.bat .\>cvs login Logging in to :pserver:neocoin2@165.194.17.15:2401/home/CVS CVS password: ******** }}} ==== 프로젝트 생성 ==== 프로젝트 진행 폴더를 만들고, 프로젝트를 서버에 등록한다. (이문서를 여러분께서 실행하신다면, 중복될지 모르니, 충돌나면 다른 프로젝트 이름으로 만들어 보세요.) {{{~cpp .\> mkdir HelloWorld .\> cd HelloWorld .\HelloWorld> cvs import -m "Hello World를 출력 하는 프로젝트" HelloWorld zeropage HelloWorld }}} 도움말 : 프로젝트를 서버에 등록한다. 만약 내부에 소스같은 자원이 있다면 같이 등록된다. {{{~cpp cvs import -m "코멘트" 프로젝트이름 VenderTag ReleaseTag }}} ==== 프로젝트 받아오기 (checkout) ==== 서버에 등록된 프로젝트를 받아온다. 이제 어디에서나 checkout을 하면 프로젝트를 받아 올수 있다. 프로젝트 전체를 가지고 오는 개념이라서 상위 디렉토리에서 수행한다. (프로젝트 폴더 내부에 CVS가 생겼으면 성공한 것이다.) {{{~cpp .\HelloWorld>cd.. .\>cvs checkout HelloWorld cvs server: Updating HelloWorld .\> cd HelloWorld }}} 도움말 : 지정하는 프로젝트(모듈) 전체를 받아 온다. local에 처음 프로젝트를 받아 올때 사용한다. {{{~cpp cvs checkout 프로젝트이름(모듈이름) }}} ==== 소스 추가 ==== 길동씨는 프로젝트 세팅이 끝나고 간단히 HelloWorld.java 라는 프로그램을 작성했다. {{{~cpp .\HelloWorld> notepad HelloWorld.cpp }}} 소스 {{{~cpp #include int main(int argc, char* argv[]){ printf("Hello World\n"); return 0; } }}} 소스를 작성후 이 파일을 서버에 등록(add)하고, 소스를 올린다. {{{~cpp .\HelloWorld>cvs add HelloWorld.cpp cvs server: scheduling file `HelloWorld.cpp' for addition cvs server: use 'cvs commit' to add this file permanently .\HelloWorld>cvs commit -m "Hello World를 출력한다." cvs commit: Examining . RCS file: /home/CVS/HelloWorld/HelloWorld.cpp,v done Checking in HelloWorld.cpp; /home/CVS/HelloWorld/HelloWorld.cpp,v <-- HelloWorld.cpp initial revision: 1.1 done }}} 도움말 : add 서버에 추가되는 자원을 등록한다. commit 서버에 변경사항을 반영시킨다. {{{~cpp cvs add 자원이름 cvs commit -m "코멘트" }}} === 스토리 2 홍길동씨 프로그램 고치다. === 홍길동씨는 이렇게 프로그램을 서버에 올리고 자신의 PC에 있는것은 지워 버린후 몇일 잊어 버리고 있었다. 그러다가, 잡지를 보던중 C++ OOP 프로그래 밍에 관한 기사를 읽고 자신의 프로그램을 잘못 작성되었다고 생각하고 고치려 한다. ==== 소스 받기 ==== 동일하고 cvs_set_remote.bat 을 실행 로그인을 하고, checkout을 한다. 시작 디렉토리는 c:\user> 로 가정하였다. {{{~cpp C:\User>cvs_set_remote.bat . . . C:\User>cvs login Logging in to :pserver:neocoin2@165.194.17.15:2401/home/CVS CVS password: ******** C:\User>cvs checkout HelloWorld cvs server: Updating HelloWorld U HelloWorld/HelloWorld.cpp C:\User>cd HelloWorld C:\User\HelloWorld>notepad HelloWorld.cpp }}} 도움말 : checkout 서버에 등록되어 있는 모듈(프로젝트)를 받아온다. {{{~cpp cvs checkout 모듈이름(프로젝트이름) }}} ==== 소스 고치고 다시 올리기 ==== 그리고 이렇게 고치고, {{{~cpp #include using namespace std; int main(int argc, char* argv[]){ cout << "Hello World!" << endl; return 0; } }}} 변경된 소스를 올린다. {{{~cpp C:\User\HelloWorld>cvs commit -m "iostream을 쓴것" cvs commit: Examining . Checking in HelloWorld.cpp; /home/CVS/HelloWorld/HelloWorld.cpp,v <-- HelloWorld.cpp new revision: 1.2; previous revision: 1.1 done }}} 도움말 : commit 서버에 변경된 자원을 반영한다. {{{~cpp cvs commit -m "코멘트" }}} ==== 지금까지 log 보기 ==== 길동씨는 HelloWorld.cpp 의 코멘트를 본다. {{{~cpp C:\User\HelloWorld>cvs log HelloWorld.cpp RCS file: /home/CVS/HelloWorld/HelloWorld.cpp,v Working file: HelloWorld.cpp head: 1.2 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 2; selected revisions: 2 description: ---------------------------- revision 1.2 date: 2002/07/30 16:45:16; author: neocoin2; state: Exp; lines: +2 -0 iostream을 쓴것 ---------------------------- revision 1.1 date: 2002/07/30 16:26:13; author: neocoin2; state: Exp; Hello World를 출력한다. ============================================================================= }}} ==== diff 버전간 차이 보기 ==== 홍길동씨는 로그의 버전을 보고 버전간에 차이점을 보고 싶다. {{{~cpp .\HelloWorld>cvs diff -r "1.1" -r "1.2" HelloWorld.cpp Index: HelloWorld.cpp =================================================================== RCS file: /home/CVS/HelloWorld/HelloWorld.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -r1.1 -r1.2 1,2c1,3 < #include < --- > #include > using namespace std; > 4c5 < printf("Hello World\n"); --- > cout << "Hello World!" << endl; }}} 도움말 : diff 두 버전간의 차이를 비교 한다. 파일이름을 생략하면 해당 프로젝트의 모든 소스들의 버전들을 체크해서 ㅗ인다. {{{~cpp cvs diff -r "버전" -r "버전" (파일이름) }}} === Thread === * 수많은 엔터프라이즈 툴들이 CVS를 지원합니다. (Rational Rose, JBuilder, Ecilpse, IntelliJ, Delphi etc) 이들 툴로서 gui의 접근도 가능하고, 컴퓨터에 설치하신 WinCVS로도 가능합니다. 하지만 그런 툴들도 모두 이러한 과정을 거치는것을 단축하고 편의성을 제공합니다. (WinCVS 역시) Visual Studio는 자사의 Source Safe외에는 기본 지원을 하지 않는데, 플러그인을 찾게되면, 링크 혹은 아시면 링크 걸어 주세요. --["상민"] * 문서에서는 굉장히 기초적인 부분만을 다루었습니다. WinCVS는 gui라 문자로 설명이 부족해서 하지 않았지만, 시간이 나시면 둘러 보는 것을 추천해 드립니다. ---- ["CVS"]