본문 바로가기
IT/linux

ClearCase 개요와 활용

by 어느해겨울 2022. 9. 5.

 

ClearCase 개요

IBM solution, Rational이 개발한 형상 관리 도구

- 라이프사이클 전반에서 파일, 디렉토리 및 기타 개발 자산을 관리

- 각 버전 이력에 대한 정보를 항상 기록하며 필요하면 버전 이력에 대한 보고서를 제시

- Release 시 마다 정확한 코드 복제를 보장

- 코드 버전의 분할(Branch) 및 통합(Merge) 기능 제공

 

ClearCase 핵심 키워드

키워드 의미
VOB Version Object Base
View Workspace
Element File or Directory
Branch A way to make parallel development possible
Label Tag
Attribute Name/Value pair

 

ClearCase 중요 기능 요소

버전 관리를 위한 기본적인 기능 목록

1. 버전 분할(Branch)
- 특정 버전에서 다른 이가 Check Out된 내용에 대한 수정 작업을 하거나, 기능적인 테스트를 위해 임시적인 버전을 구성하여 구성할 때 사용 하는 것을 의미한다.
- 보통 이런 작업은 버그 수정 작업을 하거나, 검증되지 않은 새로운 기능 추가할 때 사용한다.

2. 버전 통합(Merge)
- 하위 버전을 상위 버전에 포함 시키는 작업을 의미한다.
- 통합 결과 이상이 없다면 이런 단계를 통해 버전에 합쳐지게 된다.
- 통합될 필요가 없는 경우에는 하위 버전을 그냥 버릴 수 있다.

3. 버전 라벨 처리(Label)
- 각 버전에 이름을 붙이는 작업을 의미한다.
- 단순히 번호로 나열된 버전에 특정한 이름이나 버전을 붙여 의미를 나타내는 것을 말한다.

 

ClearCase 기능 특징

1. Check Out → 편집 → Check In 이라는 단순한 모델로 버전 관리를 한다.
2. 특별히 충돌하는 내용이 없는 변경사항에 대해 지능적인 Merging 기능을 제공하여 자동적으로 버전 통합(Merge) 해준다. (beyond compare 같은 merge tool의 merge 기능과 유사한 듯)
3. 그래픽 기반의 비교 및 통합(Merge) 도구를 제공한다.
4. Dynamic / Snapshot View라는 모델을 제공해 상황에 맞는 형태로 작업할 수 있도록 제공한다.

 

ClearCase 클라이언트 특성

클라이언트 연결 유형 소스 제어 오브젝트의 저장소에 연결 View 유형 사용자 인터페이스
ClearCase Local Client
(CCLC)
LAN VOB(Versioned Object Base)로의
RPC 연결
• 동적
• 스냅샷
• GUI: CTE
(ClearTeam Explorer)

• CLI: cleartool
ClearCase Remote Client
(CCRC)
WAN
/LAN
CCRC WAN 서버를 통한 VOB으로의
HTTP 연결
• 자동
• 웹
• GUI: CTE
(ClearTeam Explorer)
• CLI: rcleartool

 

Check Out / Check In

Check Out
- 파일에 쓰기 권한 주기, 이것을 먼저 해주어야 파일 관리가 된다.
- 처음에는 모두 읽기 권한만 있고 임의로 파일을 변경하면 hijacked 파일로 처리된다.

Check In
- 베이스 소스에 바꾼 내용을 적용한다.
- 다른 사람도 변경 내용을 볼 수 있게 된다. (SVN commit과 동일)

 

View / VOB

View
- 작업 공간 관리를 위한 기초 단위를 의미한다.
- 각각 개별적인 작업 공간으로 VOB에서 필요한 사항들만 나타내는 부분이다.
- 프로젝트에 해당하는 파일이나 디렉터리를 모두 공유해서 사용하지만, 마치 개별적인 특정 폴더 및 파일을 보여주는 것이다.

VOB (Versioned Object Base)
- 각 요소들을 저장하는 저장 장소로 모두 읽기 전용으로 제공된다.
- 네트워크 기반의 저장 장소로써 모든 이들의 소스를 저장하고 관리 받는 기준 소스 정보들이다.
- 각 사용자들은 이 VOB를 공유하게 되며 수정할 때는 View에서 수정하게 되며 최종적으로 변경 사항 적용될 때 View에서 VOB로 적용된다.

View / VOB의 관계
- 사용자의 환경에 따라 공통의 VOB를 View의 설정만 다르게 해서 필요한 내용을 사용하는 것.
- 만일 특정 소스를 변경했을 때 Check In 하지 않는 이상 VOB에 반영되지 않기 때문에, 다른 이들은 간섭 되지 않는다.
- 최종 변경 후 Check In이 되어야 VOB에 반영되며 반영되어야 다른 이들에게도 전파가 되게 된다.
(SVN으로 보자면 VOB는 Repository 를 의미하고 View는 Local workspace를 의미하는 듯)

Configuration Specification
- 사용자 별로, 버전 별로 보여주는 내용이 다르게 구성할 수 있다.
- View 내에 설정할 수 있는데, 그 설정을 Configuration Specification라고 한다.
- 이 안에 규칙에 필요한 사항을 정의하면 VOB 내용 중 Filter되어 해당 View에 전달되게 된다.
- 이 값은 Create View 할 때 기본값이 설정되며 필요 시 수정하여 변경할 수 있다.
  e.g.)
    > element * CHECKEDOUT
    > element * \main\LATEST
    → Check Out된 항목들과 Main의 LASTEST 항목들을 모두 가져오는 것을 의미.

 

View 종류

- 자신의 디렉토리에 소스를 복사하여 사용 : Snapshot View
- 자신의 디렉토리에 복사하지 안고 네트워크 드라이브에 연결하여 사용 : Dynamic View

Snapshot View
- 특정 시점의 내용을 표시하는 View이다.
- 모든 설정과 값들을 사용자의 환경에 그대로 가져와 사용하는 방식.
- 버전 자체가 만료될 수 있기 때문에 주기적인 서버 동기화 작업이 필요하다.
  (SVN의 Check Out → Local 작업 후 Commit을 의미하는 듯)

Dynamic View
- 각 요소들을 투명하게 연결하여, 항상 최신 버전을 유지하고, 변경된 사용만 업데이트 하기 때문에 적은 양만 업데이트 하며, 빌드에 대한 감사 등을 지원한다.
- 서버와 항상 동기화 작업을 수행하기 때문에 VOB에서 굳이 최신 버전을 받을 필요가 없다.

TIP
Dynamic View 사용 시 소스를 모두 받지 않고 접근 하고 싶은 것만 연결이 가능하다.

여러 버전의 소스를 Local Workspace에 모두 다 가지고 있으려면 복잡해지고 용량도 커지므로 가볍게 관리하고 싶을 때 주로 사용한다.

setview를 하여 어떤 View와 연결할지 정하고 /vobs/...(환경에 따라 다름) 처럼 정해진 디렉토리에 가상으로 소스가 연결된다.

View 디렉토리에 접근하여 FTP로 소스를 받을 수도 있고 Local에 있는 것과 다르지 않다.

실제로 소스는 Local에 있지 않고 네트워크 드라이브에 위치한다.

공통점
- Configuration Specification을 통해 버전 요소들을 선택할 수 있다.
- Check Out → 편집 → Check In 을 기본 행위로 동작한다.
- Check Out한 대상을 Reserved(예약)/(Unreserved)비 예약 상태로 설정할 수 있다.

 
ClearCase 소스 접근 명령어

1. Snapshot View 생성 
View 생성 시 Local Workspace에 소스 코드를 다운로드 한다.
소스 다운로드 → Check Out → 편집 → Check In

2. Dynamic View 생성
접속 시 cleartool setview "View 이름" 명령을 통해 View에 연결한다.
setview → Check Out → 편집 → Check In

3. View 삭제
rmview 명령어 사용

4. View 업데이트
Snapshot : update 명령어 사용
Dynamic : 자동으로 업데이트

 

ClearCase View 생성 명령어

Snapshot View
최신 소스가 다운로드 되어 Workspace에 소스 코드가 남아있기 때문에 최신 소스 사용 시 update 명령어를 통해 다시 받아야 한다.

cleartool mkview -tag <View 이름> -snapshot -vws <View 저장위치> <target path>
e.g.) cleartool mkview -tag TEST_VIEW -snapshot -vws TEST_PROJECT.vws ~/project


Dynamic View : Default
setview 시 동적으로 최신 소스가 load 되고 접속을 끊으면 unload 된다.
접속할 때 마다 최신 소스가 자동으로 업데이트 된다.

최신 버전과 변경 내용 보기최신 버전의 변경 내용을 바로 merge.

clear tool findmerge <target path> -flatest -merge -q
# -q : merge 하기 전에 물어보기
cleartool findmerge <target path> -flatest -print
cleartool mkview -tag <View 이름> <View 저장위치>
e.g.) cleartool mkview -tag TEST_VIEW TEST_PROJECT.vws

 

주요 명령어

check out
파일 수정 시 check out을 하지 않고 chmod 등으로 강제로 권한을 변경하여 사용하면 hijacked 이라고 알린다.check out한 사람 목록 조회

cleartool lsco <target path>

cleartool lsco -r
# -r : 하위 디렉토리까지 검색

cleartool lsco -r -me -cview
# -me : 내가 checkout 한 파일만 보여줌
cleartool co -c "comment" -unres <target path>
# -c     : comment
# -unres : unreserved, 다른 사람도 수정 가능


uncheck out
check out 한 파일 취소. 베이스 소스로 원복된다.

cleartool unco <target path>


check in
베이스 소스에 수정 내역을 반영한다.
SVN commit 과 동일

cleartool ci -c "comment" <target path>
# -c : comment


변경 hitstory 조회

cleartool lshist


View 목록 조회

cleartool lsview


version 조회

cleartool lsvtree


config spec. 내용 수정

cleartool edcs


config spec. 내용 보기

cleartool catcs


comment 변경

cleartool chevent -c "comment" <option>
# option list
# -replace : comment 교체
# -insert : comment 뒤에 내용 추가
e.g.) cleartool chevent -c "append_log" -insert

 

 

다른 버전과 내용 비교
- 이전 버전과 비교
- 최신 버전과 비교

cleartool diff <target path> <target path>@@/main/project/LATEST
cleartool diff -pred <target path>
# predecessor : 이전 버전과 비교


현재 view 이름 보기

cleartool pwv

 

활용 팁

다른 버전 파일 가져오기
Dynamic View에서는 다른 버전의 파일들을 보통의 파일처럼 바로 접근할 수 있다.
접근을 위해선 파일명@@/../버전 형태로 사용한다.
버전 정보는 cleartool lsvtree를 이용하여 볼 수 있다.Snapshot View에서 최신 소스 가져오는 방법은 다음과 같다.파일 복사(cp) 시 정상적으로 버전 복사가 되지 않는 경우가 있다.
이런 경우엔 redirection 이나 다른 방법을 통해 이용하자.

e.g.) cat file.c@@/main/project/LATEST > file.c
cleartool get -to <target file> <target file>@@/main/project/LATEST
e.g.) cleartool get -to file.c file.c@@/main/project/LATEST
vi <target file>@@/../<version>
e.g.) vi file.c@@/main/project/5
# file.c의 5 버전에 vi로 접근한다.

vi <target file>@@/../LATEST
e.g.) vi file.c@@/main/project/LATEST
# file.c의 최신 버전에 vi로 접근한다.

cleartool get -to file.c file.c@@/main/project/LATEST


새로운 파일 추가

# 디렉토리 check out -> 디렉토리 이동 -> mkelem 명령으로 파일 만들기
clear co -unres src
cd src
cleartool mkelem file.c
cleartool co -unres . # 현재 디렉토리 check out

# check in
cleartool ci src
cleartool ci . # 현재 디렉토리 check in


추가했던 파일 삭제

# 파일 삭제
cheartool rmelem file

# rmelem 사용 시 NO_RMELEM 옵션으로 인한 삭제가 안될 시
cleartool rmname file

 

 

댓글