지난 문서에 이어서..
자, 이제 서버는 설치 되었으므로
Client측에서 사용할 수 있는 프로그램을 설치 하도록 하자.
1. TortoiseCVS 설치 및 설정
WinCVS혹은 tortoiseCVS 프로그램이 있으나
필자는 tortoiseCVS를 사용하도록 하겠다. 아래 주소에서 다운로드 받는다.
http://www.tortoisecvs.org/
CVS에서 "새 모듈 생성" 을 클릭하면 아래와 같은 창이 나타난다.
모듈설정 을 하여야 하는데, 이때 목록가져오기를 하면 CVSNT서버에서 저장소에 있는 패키지의 목록이 나오게 되어
선택하게 되면, 기존의 패키지와 연결된다.
이때 모듈을 Client가 임의로 작성하게 된다면 CVSNT서버에는 새로운 패키지가 생성되게 된다.
상황에 맞추어 세팅하도록 한다.
프로토콜 : 말그대로 CVS에서 사용할 프로토콜설정이다. Pserver는 암호기반 인증 프로토콜이다.
서버: CVSNT서버가 설치되어있는 주소
포트: 입력하지 않으면 CVS 기본 포트인 2401 로 맵핑된다.
저장소폴더 : CVSNT서버에서 설정한 저장소 폴더로 매칭시켜준다.
사용자명 : CVS를 사용할 사용자 이름
Tortoise의 사용법은 로컬 리소스가 있는 폴더에서 마우스 오른쪽 버튼을 클릭하면
메뉴가 나오게 되는데 사용법이 쉬우므로 따로 언급하지않겠다.
대신 다음에 나오는 이클립스IDE에서의 CVS Client설정 및 사용법에 대해 이야기 하겠다.
2. Eclipse IDE에서의 CVS Client 설정
이클립스를 실행한후,
Window > Open Perpective > CVS Repository Exploring 선택
CVS저장소에는 각 CVS서버가 등록되고, Head와 Branches, Versions를 나열한다.
마우스 오른쪽버튼 > New > Repository Locaton을 선택하여 CVS저장소를 추가한다.
CVS서버 정보를 입력하여 등록한다.
Head,Branches,Version등을 확장하면 이때 저장소에 존재하는 모듈이 나타나며,
모듈을 확장하여 Checkout을 할수있다.
이와 같이 체크아웃을 하게 되면, 이클립스의 workspace로 잡혀있는 폴더에 저장되게 된다.
다른 체크아웃의 방법으로 다음으로 체크아웃을 누르게 되면 아래와 같은 다이얼로그가 뜨게 된다.
이클립스 버젼에 따라 차이가 있을수 있다.
옵션들을 살펴보면
1) Check out as a project configured using the New Project Wizard옵션
말그대로 프로젝트 생성 위자드를 이용하여 체크아웃을 하는것이다.
2) Check out as a project in the workspace옵션
이클립스의 workspace로 잡혀있는 위치에 체크아웃을 하게 된다.
3) Check out into an exising project옵션
기존에 존재하는 프로젝트 를 선택하여 그 하위로 체크아웃을 하겠다는 옵션이다.
그외 버젼별로 대동소이 하므로 어렵지 않게 체크아웃을 할수있으며, 실제로 각 옵션들을 직접 해보면 어렵지 않다는 것을 알수있다.
또한 CVS저장소로 부터 체크아웃을 할때 기존의 프로젝트에 덮어씌기 될수 있으므로, 주의하여
작업을 하여야 한다.
이제 Navigator나 Project Explorer를 살펴보면, 새로운 프로젝트가 생성된것을 볼수 있다.
이로써 체크아웃을 완료했다.
만약 CVS저장소에 아무 파일도 존재하지않으며, 클라이언트가 작업한 파일들을 CVS저장소에
최초 등록해야한다면 Import과정을 수행하여야 한다.
CVS에서 말하는 Import를 이클립스에서는 Share Project와 의미가 같다.
Import하려는 (CVS저장소에 최초 등록하려는) 프로젝트를 선택
마우스 오른쪽버튼 > Team > Share Project를 선택한다
아래와 같은 다이얼로그가 나타난다.
Import할 대상 CVS저장소를 선택후 다음을 클릭.
세가지 옵션이 있는데
각각, Import하려하는 프로젝트와 같은 이름으로 Import ,이름을 지정하여 Import , 기존에 있는 모듈명으로 Import 등을 선택한후 다음을 누른다.
그러면 아래와 같이 CVS저장소에 Import될 리소스를 볼수있는데 확인후 완료선택.
CVS에 적용될 사항들을 확인후 완료버튼을 클릭한다.
실제 CVS서버에 적용이 되며, 이로써 Import를 완료할수 있게 되었다.
이제 이클립스로 소스 Update를 해보자.
다른 작업자가 checkout후, 소스를 변경한후 commit하였다면, 이 변경된 소스를 업데이트 해주어야한다.
이클립스에서는 update하는 방법이 두가지가 있는데
하나는 팝업메뉴에서 Team > Update 와 Syncronize뷰를 이용하는것이다.
이 두가지의 차이점은 CVS에서 소스를 다른방식으로 가져온다는것이다.
CVS에서 소스를 가져오는 방식은 다음과 같은 상황에 따라 달라진다.
1. 소스 충돌이 없을때 : 로컬에 있는 소스가 변경되지않은 상황으로, 파일이 자동으로 CVS서버의
내용으로 변경된다.
2. 자동 병합(merge)이 발생할때 : 동시에 같은 리비전(revision) 의 ASCII 파일을 commit하려 할때
서로 변경한 내용이 다른 줄의 것을 고친 경우 자동으로 병합된다.
3. 비 병합 충돌이 발생할때 : 자동병합과 같이 동시에 같은 리비전의 ASCII파일을 commit하려 할때
같은 줄의 내용을 고친 경우에 자동으로 병합되지 않고 충돌이 일어난다. 바이너리(Binary) 파일이라면 이경우 항상 충돌로 간주된다.
이클립스에서 Team > Update 메뉴를 선택하면 이 세가지 충돌 상황이 모두 발생가능하다는
것에 유념하자.
위의 1번과 2번의 경우 추가적인 처리없이 바로 Update 작업이 완료된다.
3번의 상황일때는 ASCII파일의 경우 로컬 리소스가 CVS마크업 텍스트 를 사용하여 병합되고,
바이너리 파일의 경우엔 로컬 리소스가 .# 파일로 변경되면서 서버로 부터 파일을 다운로드 한다.
이와 같은 경우, 로컬 리소스를 update하기전에 어떤 부분이 변경되었는 지 알고 잇어야 이 충돌상황을 대처할수있다.
이클립스에서 update할수있는 또다른 방법중에 하나인 Synchronize 뷰에서는
다음 순서대로 수행하면 된다.
1. Navigator 혹은 Package 뷰에서 update 하고자 하는 소스를 선택
2. 오른쪽버튼 > Team > Synchronize with Repository 선택, Synchronize뷰가 열린다.
3 Update할 소스를 파악하기 위해 Synchronize View > Tool Bar > Incomming Mode선택
이떄 Update에 두가지 방법이 있는데
소스를 선택후 오른쪽버튼 Team > Update from Repository 혹은 Override and Update 가 있다.
1) Update from Repository : 비 충돌상황의 소스인 경우 update가 수행된다. 즉 자동병합 소스와 비 병합 충돌 소스의 경우는 update되지 않고 남아있게 된다.
2) Override and Update : 이 메뉴는 자동병합혹은 비병합의 경우에 사용하는 메뉴로 다이얼로그 창에 자동으로 병합할지 아니면 덮어쓰기 할지의 여부를 선택하는것이다. 자동병합을 선택하면 소스가 자동으로 병합되어 로컬소스가 변경되고(update) , 덮어쓰기를 선택하면 로컬소스가 모두 서버의 소스로 대체된다. 그러므로 덮어쓰기를 할 경우 주의하여야 한다.
이제 이클립스로 소스 Commit작업을 해보자.
로컬에서 작업하여 변경된 소스를 다른 작업자가 update할수 있도록 이클립스에서 commit을 해보자.
이역시, 소스선택후 오른쪽버튼 클릭 Team > Commit메뉴 혹은 Synchronize뷰에서 할수있다.
소스선택후 오른쪽버튼 클릭 Team > Commit메뉴 선택인 경우를 예를 들겠다.
Commit할때 코멘트를 입력하는 다이얼로그
만약 충돌 상황이 발생하면 commit이 실패하게 된다.
이때는 update나, Synchronize뷰에서 충돌된 상황을 위에서 처럼 해결해 주어야 한다.
이러한 상황을 피하려면, 소스를 commit하기전에 미리 update를 받아서 최신의 소르를 로컬에
받아둔 다음에, commit을 하는 절차로 작업을 수행하는 것이 바람직하다.
만약 commit 하려던 소스가 CVS저장소에 존재하지 않는다면, commit하기전에 Add 할지를 묻는
다이얼로그가 나오고 add를 먼저 수행해 주면 된다.
이클립스로 소스 delete 하고 Recover하기
삭제하려는 소스 선택후 오른쪽 버튼클릭 > delete선택
이때 주의할 점은 로컬에서만 파일이 삭제 되었다는 점이다.
CVS저장소에서도 해당 소스를 삭제하기 위해서는 로컬소스를 삭제후,
프로젝트나 삭제 소스의 해당 디렉토리를 선택후 Team > commit를 클릭해주면 된다.
CVS서버에 History기능이 있기때문에 잘못 삭제 한 경우에도 복원은 가능하다.
복원방법은 아래 와 같이 팝업메뉴 > Team > Restore From Repository 클릭한다.
아래와 같은 다이얼로그가 뜨게 되고, 복원할 파일을 선택후 복원할 버젼을 선택해주고 완료를 클릭 해주면 복원이 된다.
아래와 같이 복원되는 것을 볼수있다.
그외의 기능.
1. 이클립스로 소스 Tagging 하기
Tagging을 하는 것은 곧 소스의 버젼을 생성하는 것이라 할수 있다.
Tagging은 CVS Repositories뷰와 Pakage Explorer에서 할수 있고, 방법은 동일하다.
2. 이클립스로 소스 Merging하기
소스를 병합하는 것으로 두가지 방법이 있다.
기존에 버젼이 존재할때 Merge Wizard를 이용하는 방법과 Synchronize뷰에서 소스 비교 프레임을 이용하는 방법이다.
이로써 CVS 설치및 설정에 대한 간략한 글을 마치며, 미흡한 점 이 있어도 양해 바랍니다.
조금이라도 도움이 되는 글이었길 바라며, 짧은 어투로 말씀드린거 양해 바랍니다.