CVS(Concurrent Versioning System) TOC o "1-4" u 1. CVS 란 PAGEREF _Toc143444454 h 51.1 정의 PAGEREF _Toc143444455 h 51.2 사용목적 PAGEREF _Toc143444456 h 51.2.1 부가적인 목적 PAGEREF _Toc143444457 h 51.3 알아야 할 용어들 PAGEREF _Toc143444458 h 61.3.1 저장소 PAGEREF _Toc143444459 h 61.3.2 지역 작업공간(local workspace) PAGEREF _Toc143444461 h 61.3.3 체크아웃 PAGEREF _Toc143444462 h 61.3.4 전송 PAGEREF _Toc143444463 h 61.3.5 꼬리표 PAGEREF _Toc143444464 h 61.3.6 Main trunk PAGEREF _Toc143444466 h 61.3.7 branch PAGEREF _Toc143444467 h 71.4버전관리시스템 종류 PAGEREF _Toc143444468 h 81.5 CVS의 장점 및 단점 PAGEREF _Toc143444469 h 91.5.1 장점 PAGEREF _Toc143444470 h 91.5.1 단점 PAGEREF _Toc143444471 h 92. Windows 및 Linux Version CVS PAGEREF _Toc143444472 h 102.1 Windows version: PAGEREF _Toc143444473 h 10CVSNT ( Server/Client ) 2.5.02 Build 2115 PAGEREF _Toc143444474 h 102.2Linux version : PAGEREF _Toc143444475 h 10CVS 1.11.2 ( Server/Client ) Red Hat 9.0 패키지 포함 PAGEREF _Toc143444476 h 103. 사용법 PAGEREF _Toc143444477 h 103 때문이다.소스 백업도 일종의 보험이긴 하지만, 버전 관리는 소스 백업에 비해 좀더 체계적인 소스 보험의 형태라고 이해하면 된다. 이 때문에 버전관리 툴은, 팀이 아닌 단독으로 개발할 때도 매우 유용하다.후일, 매우 좋은 소스 매뉴얼이면서 교육 자료가 되기 때문이다.팀 작업에서는, 신입사원에게 매우 유용한 프로그램 교육자료로 활용할 수 있다. 신입사원에게 엄청난 량의 최종 소스들만 주고, 분석해 보라고 하기 보다는, 개발 과정 변천사를 일목요연하게 보여줄 수 있는 자료가 월등히 좋은 교육 자료이다. 개발자에게 가장 좋은 교육자료는 당연히 프로그램 소스이기 때문이다.1.3 알아야 할 용어들1.3.1 저장소(내부를 알지 못하는 블랙박스처럼 다루어져야 한다. ): 여러 명이 함께 작업할 수 있는 환경을 제공하려면 어떠한 요소가 필요할까? 가장 먼저 떠오르는 것은 같이 작업하는 파일을 보관할 장소일 것이다. CVS는 이러한 역할을 하는 곳을 저장소(repository)라 부른다. 그렇다고 특별한 데이터베이스나 다른 저장 매체를 사용하는 것이 아니라 그저 하나의 디렉토리에 불과하다. 이 디렉토리에는 CVS의 전반적인 설정 사항과 각 프로젝트의 파일들(문서, 프로그램 등)은 물론, 각 파일의 버전 관리에 필요한 정보, 파일 별 작업 기록들을 저장하게 된다. 여기에 있는 파일들은 모두 CVS가 관리하므로 사용자는 이 파일들을 직접 건드릴 필요가 전혀 없다.지역 작업공간(local workspace): 프로젝트에서 맡은 부분을 작업하려면 필요한 모든 것을 저장소에서 복사해 우리 컴퓨터에 가져다 놓은 것을 말한다. 직업 작업공간은 작업 디렉토리, 코드의 작업본 사본이라고 불리기도 한다.체크아웃: 작업공간을 처음으로 만들려면, 저장소에서 파일을 가져와야 한다. 버전관리 시스템마다 이 과정을 부르는 이름이 다르지만, 가장 널리 사용되는 용어는 체크아웃이다. 저장소에서 체크아웃을 하면, 저장소에 있는 파일을 작업 공간으로 복사해 와서 지역복사본을 만든다.전송: 프로젝트를 하면서, http://www-306.ibm.com/software/rationalBitKeeper리눅스 커널이 BitKeeper를 이용해서 개발 하고 있습니다. 상용 소프트웨어입니다. HYPERLINK "http://www.bitkeeper.com" t "_blank" http://www.bitkeeper.com1.5 CVS의 장점 및 단점1.5.1 장점자신의 코드 변천사를 보면서 잘한 부분과 못한 부분에 대한 자아 성찰 도구가 될 수 있다.각 팀원이 개별적으로 추가한 코드의 질을 판단할 수 있는 지침자료가 된다CVS를 이용하면 매 작업 단계마다 코드를 저장할 수 있음은 물론, 원하는 단계의 코드를 언제라도 꺼내 볼 수 있다.CVS는 각 단계에서 변경된 부분만을 저장하기 때문에 저장 공간도 많이 필요로 하지 않는다. 각 단계마다 작업한 내용을 글로 적어 함께 저장할 수 있으므로 개발 내용을 한눈에 알아볼 수 있게 해 준다.CVS는 심지어 같은 파일도 여러 사람이 함께 작업할 수 있게 해 준다. 각자 한 파일 내의 다른 부분을 수정한다면 CVS가 그 내용을 하나로 합쳐 줄 것이다.두 사람이 동시에 같은 줄을 고친다면 CVS가 그것을 합쳐줄 도리는 없다. 하지만 그럴 경우라도 서로 같은 줄을 고쳤음을 개발자에게 알려주고 그 내용도 보여주어서 개발자가 적절한 조치를 취할 수 있도록 해 준다.Unix 환경은 물론, Windows나 Macintosh에서도 사용할 수 있어 각 개발자들이 원하는 환경에서 작업할 수 있다.1.5.1 단점dll이나 cab 파일 같은 이진파일은 깨질 수가 있다.TortoiseCVS로 넣은 프로젝트는 폴더 이름이 바뀌지 않는다.원자적 commit을 지원하지 않는다.여러 파일을 commit할 때 중간에 commit이 실패 하더라도 이전에 commit한 내용이 남아 있다.2. Windows 및 Linux Version CVS2.1 Windows version:CVSNT ( Server/Client ) 2.5.02 Build 2115WinCVS 2.0.2-4tus파일 상태 보기history각종 히스토리 보기tagfreeze프로젝트 파일들 태깅하기rtag저장소 디렉토리에 태깅하기release모듈 release4. CVS 서버 설정4.1먼저, CVS 설치 여부 확인 작업저장소 디렉토리 생성 및 초기화/home/bnb 로 디렉토리 생성 후 초기화 과정4.2 cvs 유저 생성 및 권한 설정4.3 사용자 등록*사용자 암호 생성*/home/bnb/CVSROOT/passwd 파일을 다음과 같이 생성.4.4 CVS 서버 실행을 위한 준비- xinetd 데몬을 재시작한다.service xinetd restart- cvspserver 동작 하는지 확인netstat –an | grep 24014.5 CVS 서버 로그인:[접속방법]:[CVS사용자ID]@[원격지 CVS저장소 디렉토리 주소]예) :pserser:dhkim@127.0.0.1:2401/home/bnb▬ 빨간색 박스 친 곳은 CVS 서버에 명령을 내리기 위해서는 매번 작성해야 하는 불편함이 있어서 ~/.bash_profile에 작성하면 cvs login 과 같은 형식으로 명령을 할 수 있다.4.6 CVS서버에 프로젝트 파일 등록5. 프로젝트 진행5.1 프로젝트 파일 받아오기설명: 로컬에서 개발자 자신의 디렉토리를 생성 후 체크아웃으로 저장소의 bnbproject 모듈을 로컬로 파일을 받아 오는 것을 보여주고 있다.빨간 박스의 CVS 는 서버 정보와 파일들의 정보가 들어 있다.5.2 수정한 내용을 저장소 디렉토리에 반영설명: 로그인 후 저장소에 수정된 파일을 갱신하는 그림이다.-m 뒤에 내용 확인 : cvs log [파일명]5.3 현재 작업 디렉토리에 최신 소스 반영cvs update 또는 cvs up설명: 다수의 개발자가 프로젝트에 참가한다면 cvs up 명령을 자주 내려서 항상 저장소 디렉토리에 적용된 최신의 소스 파일을 자신의 작업 디렉토리에 적용시켜야 한다.6. 기타6.1 파일과 디렉토리 추가 및 삭제파일 추가 ( 디렉토리 추가 방법도 동일 )명령어: cvs add [파모든 파일을 저장소의 최신 정보로 갱신주의: 갱신할 작업 디렉토리에서 명령할 것Base Command: cvs update [Option]Option:-d: 프로젝트의 모든 파일과 디렉토리를 갱신참고: 파일 상태 기호(갱신 작업 동안)A지역에서 추가되긴 했지만 아직 저장소로 전송되지 않은 파일 표시Cfile을 갱신하는 과정에서 충돌 발생(즉, 지역버전의 변경 내용과 저장소 버전의 변경 내용 사이에 충돌)file의 지역 버전의 충돌 위치에 충돌 표시가 들어가며, 원래 지역 버전 파일은 “.#file.버전번호”라는 이름의 파일로 작업 공간에 백업M지역에서 수정된 파일U, P그 파일의 저장소 버전이 지역 작업 공간에 있는 버전보다 더 최신이어서 지역 파일이 갱신되었음을 표시R(cvs remove가 사용되어서) 작업용 복사본에서 file이 제거됨을 표시저장소에 잇는 버전은 cvs commit를 수행할 때 제거?file이 작업 공간에는 있지만 저장소에는 그것에 대한 정보가 없다.파일을 추가하려면 cvs add를 사용.cvsignore를 수정해서 CVS에게 이 파일을 무시하라고 지시3. 파일과 디렉토리 추가하기Description: 파일이나 디렉토리를 저장소에 추가Base Command: cvs addOption:-m: 파일이나 디렉토리를 추가하면서 메시지 추가-kb: 파일에 바이너리 표시를 하기 위해서 사용참고: CVS는 프로그램 소스 코드, XML 등등 텍스트가 담긴 파일을 주로 다루도록 설계매번 내용이 바뀔 때마다 전체 파일 내용을 모두 저장하지 않고, 변경된 줄만 저장해서 모든 개정판을 다 저장하면서도 디스크 용량을 절약운영체제마다 다른 줄 구분 글자를 적절하게 다룸4. 특정 파일들을 무시하기Description: 지역작업그룹의 특정 파일을 저장소에 전송하지 않기 위해서 사용Usage: 어떤 디렉토리에 .cvsignore라는 이름의 파일을 생성하여, CVS가 무시해도 좋은 파일 목록을 작성5. 파일 이름을 바꾸기Description: 파일 이름을 바꾸고자 하는 C 1
※등록 파일<b>PlugIn1.java</b><b>JAVA Calculator Project.ppt</b>- Java 프로그램을 바탕으로 User Interface는 java.awt 사용. File I/O는 java.io 사용.- Calculator Logic 입력된 값을 받아서 연산자와 피연산자 구별. 각 입력된 값마다 구현부분을 작성해서 각 값에 의한 계산을 실시