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: 자동으로 업데이트 됨

 

- 뷰(view) 만들기 (최신소스받기)

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에서 정한 시간대로 변함

                                      LATEST = 현재 -> time

       ...

   end time <---- 새로추가

 

    주의: 과거시점 파일 check-out ----> version옵션

    time에서 지정한 시간의 버전에서 check-out하려면 version옵션을 주어야한다.

    clearcase co -version   파일이름

    만약 version옵션을 주지 안으면 time에서 정한 시간이 아니라 현재 실제 시간의 파일에서

    check-out 되어버린다.

 

    version옵션의 주의점: 베이스 소스가 있고 여기서 다시 브랜치를 따서 새로운 버전을 만들

    경우 맨처음 check-out 하는 파일은 version옵션을 쓰면 이전 베이스소스에서 check-out

    되어버린다.

 

    base src ------> branch src ----------- <------------|

        |                           |                                             |

        |                           |--------------------> 두번째 이상 check-out 파일 branch/1 /2 /3 ...

        |                           |

        |                           |

        |                           |---------> 첫번째 check-out 파일 base/0  <----- 주의

        |                                                 |

        -------------- <------------------| 이전 베이스 소스에서 check-out 함

 

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

     cleartool co -unres  . (현재디렉토리 check-out)

    후에 check in 할 경우 디렉토리까지 check in 해주어야 한다.

     cleartool ci src

     cleartool ci  . (현재디렉토리 check-in)

4. 추가했던 파일 삭제

   cleartool rmelem file

   을 할 경우 'NO_RMELEM' 옵션에 의해 삭제가 안될 수 있다. 이때는

     cleartool rmname file

   해주면 삭제된다.   

 

5. CQ (clear quest) - 문제점 데이타 베이스, clearcase와 연동

개발업무 관리 시스템이다. 테스트를 하면서 발생되었던 문제들을 웹상에서

그 내용과 수정내용들을 등록한다. 관련된 소스를 수정후에는 해당 CQ번호와

연결하여 check-in 해주어야한다.소스과 왜 수정되었는 지에 대한 설명과

개발과정의 전체 히스토리가 남게된다.

 

테스트팀은 테스트중에 발생되었던 문제들을 CQ에 입력하고 개발총책임자는

해당CQ를 담당자에게 할당해주고 담당자는 자신에게 할달된 CQ를 해결한후

소스를 check-in한다.

 

보통 개발자들이 실적에 얽매여 심리적으로 이 시스템에 종속는 경우가 있다. 

20세기 대량생산체제에서 발달된 사람을 관리하는 툴로 이용되는 것이다.

 

6. CQ (clear quest)와 연동된 경우

CQ와 연동된 경우는 자신에게 할당된 CQ번호가 없으면 check-in 할 수가 없다.

check-in할때 수정한 파일과 연관된 CQ번호를 지정해주어야 한다.

check-in을 시도하면 CQ 아이디와 암호를 넣으라고 뜨고, 입력하고 나면 메뉴가 보인다.

그중 자신에게 할당된 CQ번호를 보여주는 메뉴를 선택하면 자신에게 할당된 CQ리스트가

보인다. 그것을 선택후 OK를 선택하면 check-in이 완료된다.


'개발/활용정보' 카테고리의 다른 글

Oauth  (0) 2013.07.18
UML 기본편  (0) 2011.12.05
blotware, crapware  (0) 2011.05.27
구글맵 api 를 이용한 map service  (0) 2011.05.20
디자인패턴  (0) 2011.05.06
And