강력한 소스 관리툴 - ClearCase
clearcase - IBM사의 제품. Rational에서 개발
여러사람들이 공동으로 소스를 수정하면서 발생하는 문제들을 관리
1. 각 사용자에게 최신 소스 제공
2. 베이스 소스 보호
3. 각 개인이 수정한 내용이 다른 사람들의 것과 섞이지 않게 관리
4. 동시에 수정된 파일 관리
5. 사용자들이 변경한 이력 보여주기
6. 변경 내용 추적하기
7. 이전 버전과 비교하기
8. 개인이 수정한 내용을 베이스 소스에 적용하기
가장 기본적인 개념 check in, check out
check out: 파일에 쓰기 권한 주기 (처음에는 모두 읽기 권한만 있음). 이것을 먼저 해주어야 파일 관리가 됨.(임의로 변경하면 hijacked파일로 처리됨)
check in: 베이스 소스에 바꾼 내용 적용시키기 (다른 사람도 변경 내용을 볼 수 있게 됨)
자신의 디렉토리에 소스를 복사해 놓고 싶으면 스냅샷 뷰로,
자신의 디렉토리에 복사하지 않고 네트웍 드라이브에 연결하여 사용하고 싶으면 다이나믹 뷰로.
(다이나믹 뷰로 하면 소스를 다가지고 있을 필요가 없고 접근 하고 싶을 때만 연결.
여러 버전의 소스를 개인 디렉토리에 모두 다 가지고 있으려면 복잡해지고 용량도
커지므로 가볍게 관리하고 싶을때 다이나믹 뷰 사용. 대신 setview를 하여 어느
뷰를 로드 할지를 정해주고 그 소스가 가상으로 연결됨. 주로 /vobs/... 아래 정해진
디렉토리에 가상으로 소스가 연결됨. 그 디렉토리에 접근하여 ftp로 소스를 받을 수도
있고 자신의 디렉토리에 복사되어 있는 것과 다르지 안다. 자신의 디렉토리에 소스가
있지 안고 네트웍 드라이버에 저장되어 있음)
- clearcase로 소스 접근 하는 순서
1. snapshot view: 처음 뷰를 만들때 서버의 소스를 개인의 디렉토리로 다운받음
소스 다운로드 -> check out 파일: 쓰기 모드 주기 -> 소스 수정 -> check in 파일: 서버에 적용
2. dynamic view: 접속 할때 마다 cleartool setview "뷰이름" 를 해주어 자신의 소스를
로드 시킴. setview를 안해 주면 소스가 보이지 안음.
setview -> check out 파일: 쓰기 모드 주기 -> 소스 수정 -> check in 파일: 서버에 적용
3. view 없애기
rmview 명령어 사용
4. 최신 소스 업데이트
snapshot: update 명령어 사용
dynamic: 자동으로 업데이트 됨
- 최신 소스 받기
1. snapshot view 만들기
cleartool mkview -tag 뷰이름 -snapshot -vws 뷰저장위치 자신의디렉토리
자신의 디렉토리에 최신 소스가 복사됨. 개인 디렉토리에 소스가 계속 남아 있음.
최신 소스 적용이 안됨( update 명령어 필요)
예. cleartool mkview -tag inkim -snapshot -vws inkim.vws ~/project
2. dynamic view 만들기: clearcase에서는 다이니믹 뷰가 디폴트이다.
cleartool mkview -tag 뷰이름 뷰저장위치
setview를 한후에 동적으로 최신 소스가 로드 됨. 접속을 끊으면 소스가 언로드 됨.
접속 할때 마다 최신 소스가 자동으로 업데이트 됨.
예. cleartool mkview -tag inkim inkim.vws
- snapshot view와 dynamic view
snapshot: view를 처음 생성하는 순간의 서버의 소스를 자신의 개인 디렉토리로 복사해옴.
그 후에 다른 사람이 변경한 (check in)한 내용은 바로 적용이 안됨. 만약 최신의 변경
내용을 적용하려면 update명령을 사용. update를 하면 check out한 파일 이외의
파일들이 최신버전으로 변경됨.
dynamic: check out한 파일 이외의 파일들은 다른 사람들이 변경한(check in)한 내용이
바로 바로 적용됨. 자신이 check out한 파일에 대해서도 업데이트 해주려면
cleartool findmerge . -flatest -print
최신 버전과 변경 내용 보기
cleartool findmerge . -flatest -merge -q
최신 버전의 변경 내용을 바로 merge
-q: merge 하기전에 물어보기
- 주요 명령어
1. check out 파일
clearcase에서 서버로 부터 기본 소스를 다운받고 나면 모든 파일은 읽기만 가능하다. 수정하려고
하는 파일은 check out 해주어야 쓰기가 가능해진다. chmod로 강제로 쓰기 권한을 주면 그 파일은
hijacked 되었다고 메세지가 뜬다. 꼭 먼저 수정할 파일은 check out 할 것!
예. src/hello.c 파일을 수정하고 한다면 먼저 check out 해줌
cleartool co -c "inkim co: modifying hello.c" -unres src/hello.c
-c : comment 설명
-unres: unreserved 다른 사람도 수정할 수 있게 함
2. check out 한 파일 보기
예. clearcase lsco src/hello.c
hello.c를 check out한 사람들을 보여줌
clearcase lsco -r
-r: 하위 디렉토리까지 모두 검색하여 check out 파일을 모두 보여줌
많이 사용하는 조합
clearcae lsco -r -me -cview
me: 내가 check out 한 파일만 보여줌
cview: 현재 뷰에서 만
3. uncheck out
check out 한 파일 취소. 수정한 내용은 없어지고 베이스 소스로 변경됨.
베이스 소스로 원복 하고 싶을 때 사용.
예. cleartool unco src/hello.c
4. check in 하기
수정한 파일을 최종적으로 서버에 업데이트 시키기. check in을 하고 나서야 다른 사람도 내가
수정한 내용을 볼 수 있음.
예. clearcase ci -c "inkim ci: modified hello.c" src/hello.c
-c: comment 설명
5. 변경 history 보기
cleartool lshist
6. 이전 버전과 비교
xclearcase &
그래픽 툴
탐색기 창에서 파일 선택. 메뉴에서 diff 아래 다른 버전과 비교 메뉴 선택
파일 변경 history 창이 뜸. 자신이 비교해 보고 싶은 버전의 파일 클릭.
두 파일의 차이를 보여주는 창이 뜸.
7. view 리스트 보기
cleartool lsview
8. 버전 정보 보기
cleartool lsvtree
9. config spec 내용 수정
cleartool edcs
10. config spec 내용만 보기
cleartool catcs
11. comment 바꾸기: chevent 사용
cleartool chevent -c "new comment" -replace
replace: 코멘트 새로교체
insert: 기존 코멘트 뒤에 추가
12. 다른 버전과 내용 비교
- 이전 버전과 내용 비교
cleartool diff -pred file.c
predecessor: 이전버전과 비교
- 최신소스와 비교: @@/..../LATEST를 붙여준다.
cleartool diff file.c file.c@@/main/project/LATEST
- 윈도우상에서 버전 비교
cleartool diff -graphical file.c file.c@@/main/project/LATEST
13. 현재 뷰이름 보기
cleartool pwv
- 유용한 팁들
1. 소스 전체를 과거 시점으로 돌아가 작업하고자 할 때
: edcs에 원하는 과거 시간의 time추가.
config spec에 이전 버전으로 돌아가기를 원하는 날짜의 time을 추가해준다.
time지정이 없으면 LATEST는 최신의 소스로 업데이트 한다.
cleartool edcs
#LATEST의 기준 시간을 Aug-22 19:00로 변경 (#은 코멘트)
time Aug-22.19:00 <--- 원하는 과거시간 새로추가
...
element * / .../LATEST <---- LATEST시점이 time에서 정한 시간대로 변함
...
end time <---- 새로추가
2. 다른 버전 파일 가져오기
다이나믹 뷰에서는 다른 버전의 파일들을 보통의 파일처럼 바로 접근할 수 있다.
다만 파일이름 뒤에 버전 정보를
파일이름 @@/..../버전
형태로 붙여준다. 버전 정보는 cleartool lsvtree를 이용하여 볼수 있다.
예제. 다이나믹 뷰에서 file.c의 다른 버전 가져오기
- vi 에디터에서 file.c의 버전 5가져오기
vi file.c@@/main/project/5
- vi 에디터에서 file.c의 최신 소스 가져오기
버전을 LATEST로 적어주면 된다. clearcase에서는 LATEST가 최신 버전 소스를 의미한다.
vi file.c@@/main/project/LATEST
주의: cp file.c@@/main/project/LATEST 를 하면 제대로 copy되지안는 현상이 있다.
이럴 경우는 cat file.c@@/main/project/LATEST > file.c 의 트릭을 이용할 수 있다.
예제. 스냅샷 뷰에서 최신 소스 가져오기
cleartool get -to file.c file.c@@/main/project/LATEST
3. 새로운 파일 추가
해당 디렉토리 check out ----> 해당 디렉토리로 이동 ----> 파일 만들기 mkelem 사용
cleartool co -unres src cd src cleartool mkelem file.c
후에 check in 할 경우 디렉토리까지 check in 해주어야 한다
Source Insight용 명령어