기본 콘텐츠로 건너뛰기

CVS 사용방법

    1. CVS 명령어 사용법
      1.1. 계정생성
      1.2. 새 프로젝트는 어떻게 만드나요?
      1.3. Login
      1.4. Check out
        1.4.1. 메인버젼 꺼내 오기
        1.4.2. 특정버젼 꺼내 오기
      1.5. Update
      1.6. Commit(저장)
      1.7. Diff(비교)
      1.8. Remove(삭제)
      1.9. Add(파일 추가)
      1.10. branch는 어떻게 만들죠?
    2. 참고 자료

1 CVS 명령어 사용법

1.1 계정생성

  • cvs가 설치되어있는 위치 CVSROOT의 passwd파일에 사용자 ID와 PASSWORD를 입력한다.
    $ cd /home/cvs/CVSROOT/
    $ mkpasswd
    makepasswd - generates system password entry for cvsd

    usage: ./mkpasswd user password

    $ ./mkpasswd test test123
    makepasswd - generates system password entry for cvsd

    put this line into /CVSROOT/passwd
    test:xB0y/2RhqIHx6:cvs

    # passwd파일을 open후 "test:xB0y/2RhqIHx6:cvs"이 라인을 복사하여 추가한다.
    $ vi passwd

1.2 새 프로젝트는 어떻게 만드나요?

$ ls proj/
README a.c a.h
$ cd proj/
$ cvs import -m "this is the project" proj VENDOR INIT
$ ls /var/cvsroot/
CVSROOT/ proj/
$ ls /var/cvsroot/proj/
README,v a.c,v a.h,v

1.3 Login

  1. 최초 로그인 시
    touch ~/.cvslogin
  2. CVSROOT설정
    bash, ksh
    export CVSROOT=:pserver:xxx@test.mobigen.com:/home/cvs
    csh
    setenv CVSROOT :pserver:xxx@test.mobigen.com:/home/cvs

    xxx부분에 계정명을 입력한다.
    예)
    $ export CVSROOT=:pserver:eek@test.mobigen.com:/home/cvs
  3. cvs 를 사용하기 위해서 cvs에 접근하기 위한 권한을 얻는 방법으로 로그인을 합니다. 계정을 만드는 방법은 추후에 내용을 추가 하겠습니다.
    $ cvs login
    Logging in to :pserver:eek@test.mobigen.com:2401/home/cvs
    CVS password:

    비밀번호를 입력합니다.

1.4 Check out

1.4.1 메인버젼 꺼내 오기

  • 현재 개발하고 있는 프로젝트 이름을 입력합니다. 예) mobi
    cvs checkout mobi

1.4.2 특정버젼 꺼내 오기

  • 메인버젼을 개발 도중 특정 버젼으로 패키지한 버젼의 소소코드를 꺼내오기 싶은경우
    cvs checkout -r 버젼_번호 프로젝트명
    예)
    cvs checkout -r r2-8-0 mobi

1.5 Update

  1. checkout한경우 변경된 내용만 받아 올 수 있도록 하는 기능
    • check out한 디렉토리로 이동하여 명령을 실행한다.

    $ cvs update
    ? Makefile
    cvs server: Updating .
    ...
    U htable.C
    U htable.h
    ...
  2. U, P 표시는 cvs에서 수정이 된 파일 기존에 파일이 변경됨
  3. M 표시는 사용자가 파일을 수정한 경우 M flag가 표시됨
  4. C 표시는 사용자가 파일을 수정한 경우 CVS 메인 버젼과 충돌이 생긴 경우
    • 충돌 후 해결을 참조
  5. ? 표시는 CVS에 저장 되어 있지 않는 파일 또는 디렉토리
  6. A 표시는 CVS에 사용자기 추가하기 전 상태 삭제를 적용하기 위해서는 cvs commit명령을 수행한다.
  7. R 표시는 CVS에 있는 파일을 삭제하기 전 상태 삭제를 적용하기 위해서는 cvs commit 명령을 수행한다.

1.6 Commit(저장)

  1. repository로 보낼려면 commit을 수행하면 됩니다.
    수정한 파일 하나만 올린다
    $ cvs commit 파일명
    또는
    수정한 모든 파일을 올린다
    $ cvs commit

1.7 Diff(비교)

  1. 수정된 내용을 확인하고 싶은경우
    $ cvs diff 파일명
  2. 수정된 내용을 이전버젼과 비교하고 싶은경우
    $ cvs diff -r 1.2 파일명

1.8 Remove(삭제)

  1. 파일 지우기
    $ rm 파일명
    $ cvs remove 파일명
    $ cvs commit
    Removing 파일명;
    파일명,v <-- 파일명
    new revision: delete; previous revision: 1.1
    done

1.9 Add(파일 추가)

  1. 파일 추가
    $ cvs update
    ? add_file <-- 아직 추가 되어있진 않은 상태로 보인다.
    $ cvs add add_file1 [add_file2] [add_file3] [add_file4]
    $ cvs update
    A add_file <-- 추가되기 위한 전단계
    $ cvs commit add_file <-- 파일추가
  2. Dir 추가
    • Dir을 추가 하고 앞에 있는 파일은 파일 추가 절차에 따른다.

    $ mkdir a_dir
    $ cvs add a_dir
    $ cvs commit a_dir
    $ cd a_dir
    $ ls
    CVS/
    $

1.10 branch는 어떻게 만들죠?

  1. 특정 버젼 쉽게 만드는 법
    브랜치를 쉽게 만드는 방법입니다.
    $ cvs tag -b BRANCHNAME
    이 명령을 실행한 작업소는 앞으로 이 브랜치로 작업을 하게 됩니다.
  2. ※ 특정 버젼을 가지고 오는 방법을 찾조하시면 됩니다. ;)
$ cvs checkout project; cd project
$ cvs update foo.c
$ cvs tag release-1 .
$ cd ..; cvs release -d project

$ cvs checkout -r release-1 project
$ cvs release -d project


$ cvs rtag -b -r release-1 release-1-patches project
$ cvs checkout -r release-1-patches project
$ cvs commit -m "Fixed printf bug" foo.c
$ cd ..; cvs release -d project

--------------------------------------------------------------------------------
cvs를 사용할 때 Branch를 해서 버젼을 만들고 메인 버젼이 올라가면 다시 메인버젼과 머지를 하고.. 등의 작업을 수행할 때, 먼저 브랜치를 할 파일들에 태그를 달아주고 태그를 기준으로 브랜치를 만드는 것이 편한 것 같습니다.


명령어는 다음과 같습니다.


cvs rtag -r arab -b arab_xxx ggg


이렇게 하면 ggg라는 프로젝트에서 arab 태그가 붙은 것을 arab_xxx 브랜치로 작성하겠다. 라는 의미가 됩니다. 태그는 먼저 달아주어야 하겠지요.


그리고 태그와 브랜치는 다르다는 점을 미리 아시면 좋겠고.. 만일 wincvs를 사용하신다면 graph를 보시게 되면 tag는 검정색 얇은 선 브랜치는 파란색 굵은 선으로 나뉘는 것을 알 수 있습니다. --최성우 / eatingstars.com


브랜치를 쉽게 만드는 방법입니다.
$ cvs tag -b BRANCHNAME
이 명령을 실행한 작업소는 앞으로 이 브랜치로 작업을 하게 됩니다.

2 참고 자료

댓글

이 블로그의 인기 게시물

사람들이 보드게임을 하는 이유

사람들이 보드게임을 통해 얻고자 하는 건 무엇일까? 보드게임을 디자인함에 있어, 가장 먼저 `왜 사람들은 보드게임을 하려고 하는지`에 대한 문제에 접하게 된다. 사람들은 많은 이유들로 인해 보드게임을 즐긴다. 이제 그 이유들을 살펴보기로 하자. 성공적인 게임의 중요한 요소 중 하나는 플레이어가 현명한 판단을 내려 말을 이동시키거나 올바른 답을 찾았을 때 느끼는 희열에 있다. Whit Alexander와 Richard Tait는 어느 잡지사와의 인터뷰에서 자신들이 개발한 `크레니움(Cranium; 1998년에 발매된 유명한 파티게임)은 친구들 앞에서 영리하고 재미있는 사람으로 인정받을 수 있게 하기 위해 만들었다고 했으며, 최소한 게임을 진행하는 동안 1번 이상 같은 편끼리 하이파이브를 할 수 있도록 고안했다고 한다. 모든 성공적인 보드게임들은 플레이어 자신이 현명하고 창조적이며 냉철하다고 느낄 수 있게 해 준다. 이러한 `감정적 보상`은 사람들이 계속해서 보드게임을 즐기게 해 준다. 보드게임을 하는 가장 큰 이유 중의 하나는 친구들과 함께 어울릴 수 있는 기회를 제공하고 사교에 도움을 주기 때문이다. `던전 앤 드래곤(Dungeons & Dragons: TRPG의 대표작)` 같이 어렵고도 시간이 많이 걸리는 게임의 디자이너들 조차도 게임의 즐거움은 친구들과 같이 떠들고 얘기하는데 있다는 것에 동의한다. 사람들이 몸짓으로 단어 맞추기 보드게임을 하는 것을 살펴보라. `감정적 보상`이란 것이 무엇인지를 깨닫는 것은 어렵지않다. 보드게임중에 나오는 웃음의 양에 따라 그 보드게임이 전략 보드게임인지 사교 보드게임(파티 보드게임이라고도 불린다.)인지를 판단할 수 있다. 즉, 좋은 전략 보드게임은 플레이어들이 조용히 생각하도록 만든다. 그러나, 좋은 사교 보드게임은 시끌벅적한 소리와 웃음을 만든다. 전략 보드게임은 상대방에게 자신의 두뇌회전이 뛰어남을 과시할 수 있는 기회를 준다. 그들에게 있어서의 `감정적 보상`은 상대방이 놓...

oradiag_??? 로그 생성안되게 하는 방법

cx_Oracle이나 oci로 개발된 프로그램을 사용하다 보면 $HOME에 orgdiag_사용자계정으로 로그가 대량으로 저장되는 경우가 발생합니다. 이런 경우에 로그가 남지 않도록 하던지 아님 다른 경로에 저장하는 방법은  아래와 같은 방법으로 처리할 수 있습니다. 로그 안남기는 방법은. 환경변수에 추가 export TNS_ADMIN=/home/eek/conf/ 해당경로에 sqlnet.ora파일 생성해서 DIAG_ADR_ENABLED=off TRACE_LEVEL_CLIENT=off LOG_FILE_CLIENT=/dev/null 설정값을 추가하면 로그 파일이 생성되지 않음. 자세한 설정 정보는 http://docs.oracle.com/cd/B28359_01/network.111/b28317/sqlnet.htm#BIIDEAFI 참고하세요. 끝.

Oracle Instant Client + sqlldr install

Instant Client Downloads + SQL*Loader 설치 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 아래와 같이 버젼에 따라서 3가지를 다운로드 합니다. basic, sdk, sqlplus instantclient-basic-linux.x64-11.2.0.3.0.zip instantclient-sdk-linux.x64-11.2.0.3.0.zip instantclient-sqlplus-linux.x64-11.2.0.3.0.zip 설치되어있는 oracle 에서 rdms , nls , sqlldr 를 복사합니다. cp -r /home/oracle/product/10/rdbms ~eek/usr/instantclient_10_2/ cp -r /home/oracle/product/10/nls ~eek/usr/instantclient_10_2/ # 파일 복사 cp -r /home/oracle/product/10/bin/sqlldr ~eek/usr/instantclient_10_2/ # 권한설정 chown -R eek.eek ~eek/usr/instantclient_10_2/ # 환경변수 등록 export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601 export ORACLE_HOME=/home/eek/usr/instantclient_10_2 export ORA_NLS10=$ORACLE_HOME/nls/data