· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
CVS Notify

CVSNotify Project Home Page

설치

구하기


위 프로젝트 홈페이지에서 파일 릴리즈를 구할 수 있습니다. 다운로드 링크는 http://kldp.net/download.php/1224/cvsnotify-1.1.0.tar.gz 와 같습니다.


위 홈페이지에서 최종 릴리즈에 대한 기능 설명과 화면 스냅샷을 볼 수 있습니다.

압축 풀기

받은 cvsnotify-1.1.0.tar.gz 를 다음과 같이 풉니다.
$ gunzip -c cvsnotify-1.1.0.tar.gz | tar xvf -

gnu tar를 쓴다면, 다음과 같이 풀 수 있습니다.
$ tar xvzf cvsnotify-1.1.0.tar.gz

설치

수동으로 하나씩 설치하고자하는 분은 아래 6. 수동설치/제거로 이동하십시오. 설치에 앞서, 설치하고자하는 CVS Repository를 의미하는 환경변수 CVSROOT 를 먼저 지정해야합니다.
$ export CVSROOT
$ CVSROOT=/work/cvsrepository

또는, 원격지 설치모드에서는
$ export CVSROOT
$ CVSROOT=:pserver:yourid@hostname:/work/cvsrepository

와 같이 할 수 있습니다. 그리고, CVSROOT 접근을 매번 암호를 묻는 방식으로 하는 경우는 상당히 많은 암호를 넣어야하므로, 참고하셔서 한번의 암호를 입력하는 경우로 바꿔주시는것도 좋습니다.

다음 명령들은 cvsnotify-1.1.0 디렉토리에서 하시기 바랍니다.
$ make install

제거

제거하는 방법은 동일하게 CVSROOT 환경변수를 세팅하고,
$ make uninstall

입니다.

script 오류 대처법

갑자기 script 오류가 나며 동작하지 않을 때, 대처방법.
$ make clean-checkout
$ cd CVSROOT
$ vi commitinfo

DEFAULT 란을 주석처리합니다.
$ cvs ci

아무 로그 메시지나 넣고 에디터를 종료합니다.

수동설치/제거

일단 수동으로 설치 제거하기위해서는 CVSROOT 라는 모듈을 받아와야 합니다. 이 모듈은 전반적인 CVS Repository의 행동에 대한 내용이 들어 있습니다.
$ cvs co CVSROOT
$ cd CVSROOT
$ cp <souce-of-cvsnotify-make untarred dir>/.indent.pro .
$ cp <souce-of-cvsnotify-make untarred dir>/cvsnotify-* .
$ cp <souce-of-cvsnotify-make untarred dir>/cvsnotify.cf.sample .
$ cp <souce-of-cvsnotify-make untarred dir>/cvsnotify.pm .
$ mv cvsnotify.cf.sample cvsnotify.cf

수동으로 설치/제거하는 것은 checkoutlist의 원리를 알고 잘 이용하는 것에 있습니다. CVS Repository에 저장되는 것은 버전 컨트롤 파일인 파일 끝이 ",v"로 끝나는 것들만 오게 되어 있습니다. 하지만, 여기서 제공하는 스크립트들은 CVS Repository상에 그대로 존재해야만 합니다. 이를 위해서,
$ vi checkoutlist

.indent.pro			.indent.pro checkout failure
cvsnotify.pm			cvsnotify.pm checkout failure
cvsnotify.cf			cvsnotify.cf checkout failure
cvsnotify-lang-ko.tpl		cvsnotify-lang-ko.tpl checkout failure
cvsnotify-lang-en.tpl		cvsnotify-lang-en.tpl checkout failure
cvsnotify-filenamechk.pl	cvsnotify-commitinfo.pl	checkout failure
cvsnotify-commitinfo.pl	cvsnotify-commitinfo.pl	checkout failure
cvsnotify-loginfo.pl		cvsnotify-loginfo.pl checkout failure
cvsnotify-indent.pl		cvsnotify-indent.pl checkout failure
cvsnotify-doxygenchk.pl	cvsnotify-doxygenchk.pl	checkout failure
cvsnotify-logsend.pl		cvsnotify-logsend.pl checkout failure
cvsnotify-contentsend.pl	cvsnotify-contentsend.pl checkout failure
cvsnotify-lock.pl	cvsnotify-lock.pl checkout failure

위 내용을 넣습니다.

그리고, commitinfo, logininfo 파일에 각각 다음과 같이 넣습니다.
$ vi commitinfo
CVSROOT echo Skip.. 
DEFAULT $CVSROOT/CVSROOT/cvsnotify-commitinfo.pl

$ vi loginfo
CVSROOT echo Skip.. 
DEFAULT $CVSROOT/CVSROOT/cvsnotify-loginfo.pl %{sVv}

위와 같이 해야만, commit, log 남길 경우에 자동으로 불려지게 됩니다.

모든 내용을 넣고서
$ cvs up

하면 "?" 로 나오는 파일들이 있습니다. 이 모든 파일들을 CVSROOT모듈에 추가해야합니다.
$ cvs add cvsnotify*
$ cvs add .indent.pro

그리고, 반영 하는 것이죠.
$ cvs ci

이상으로 설치를 마칩니다.

기능을 일시적으로 중지 시키려면, commitinfo, loginfo 파일만 원래대로 돌려놓으면 됩니다. 완전히 없애려면, checkoutlist 까지 수정하세요.

실전 응용

다음은 CVSROOT 모듈안에 cvsnotify.cf 혹은 각 모듈의 해당 디렉토리안의 CVSADMIN 파일을 수정하는 예제입니다.

로그, 내용 전송

Q. 저는 silvermoon 이라는 모듈에서 작업하고 있으며, 이 silvermoon의 로그를 dev@mymail.com 라는 주소로 보내고 싶습니다. 또한 silvermoon-doc 이라는 모듈에는 .txt 파일과 .doc 파일이 들어 있습니다. 이들의 변경 사항을 메일로 알려주소 싶습니다.

A. CVSROOT/cvsnotify.cf 파일을 다음과 같이 수정하신뒤 cvs commit 하세요.
# silvermoon이 들어 있는 모든 모듈에 대해 dev@mymail.com 로 로그를 전송합니다.
log_notify = /silvermoon/    dev@mymail.com 

log_notify는 cvsnotify.cf에서 쓰이며, 현재 작업중인 디렉토리가 평가됩니다. 예를 들어 현재 silvermoon/src/main.c 라는 파일을 수정할 경우, silvermoon/src 라는 디렉토리명이 정규식에 참여하게 됩니다. silvermoon-doc/CVSADMIN 이라는 파일을 하나 만드시고 Add 하시기 바랍니다. 내용은 다음과 같습니다.
diff_notify   = /.*txt$/     dev@mymail.com 
attach_notify = /.*doc$/     dev@mymail.com 

diff_notify, attach_notify 는 단지 파일명만 평가하기 때문에, cvsnotify.cf에 두면 commit되는 모든 파일에 대해 유효하게 됩니다. 따라서 특정 디렉토리안에서 일어나는 행동에대한 notify를 원한다면 지역 configuration인 CVSADMIN을 사용하는게 좋습니다.

로그 전송 내용 편집

Q. 저희 팀에서 CVS를 사용하는 모든 사람들에게 긍지를 넣어주고자, 메시지 안에 팀 목표등을 넣고 싶습니다.

A. cvsnotify는 skin을 제공하므로, 다른 나라 언어로 포팅하거나 다른 메시지를 넣을 수 있습니다.

cvsnotify.cf의 내용중,
template = cvsnotify-lang-ko.tpl

이 지정하는 cvsnotify-lang-ko.tpl 을 적절하게 수정하시면 됩니다. 팀 로고등을 넣을 수 있겠지요.

이름 규칙

Q. 회의록을 파일로 작성하고 싶은데, 항상 앞에 날짜를 넣도록 제한하고 싶습니다. 다른 이름으로는 못들어오게 할 수 없을까요? 그리고, 날짜외에 Review라고 시작하는 파일명은 월에 한 번씩 사용하므로 허용하고 싶습니다.

A. cvsnotify.cf 에 다음과 같이 들어 있는지 확인하십시오.
commitinfo = name

원하는 모듈의 디렉토리에 지역 설정파일(CVSADMIN)을 추가하고 다음과 같이 넣습니다.
file_name_permit = /^\d{8}_.*/                  반드시 YYYYMMDD_ 형식으로 시작해야합니다.
file_name_permit = /^Review_.*/                 Review_ 형식으로 월간보고용 파일입니다.


Q. 대문자로 된 파일명은 올 수 없게 하고 싶습니다. 그리고, README, Makefile은 허용하고 싶습니다.

A. 해당 디렉토리내에 CVSADMIN 파일을 두고, 다음과 같이 넣어 줍니다.
file_name_permit = /^[a-z]+$/                   파일명은 소문자만 넣으십시오
file_name_permit = /README/                     README가 들어간 파일은 괜찮습니다.
file_name_permit = /Makefile/                   Makefile은 괜찮습니다.

file_name_permit 은 반드시 CVSADMIN 에만 와야합니다. file_name_permit이 없으면 모든 파일명을 허용하며, 있으면 일단 모두 제한하고, 허용된 정규식을 평가해봅니다. 만약 이들중에 하나라도 걸리지 않으면 맨 뒤에 기술한 메시지와 함께 에러를 출력하고 commit을 실패로 만듭니다.

indent 연동

Q. 우리팀은 들여쓰기 맞추는 것을 통일하고 싶은데, 말을 듣지 않습니다. 강제로 하고 싶습니다.

A. indent를 서버에 설치해야합니다. 그리고, indent의 option을 잘 선택해야합니다. 선택된 option들은 .indent.pro 라는 이름으로 CVSROOT에 두어야합니다. 배포되는 .indent.pro는 무난한 형태의 샘플이므로 참고하시고 option을 바꾸시기 바랍니다. 그리고, 적당한 cvsnotify.cf의 변수를 확인하십시오.
commitinfo = indent
indent_ext = h hxx c cc C cxx

확장자가 indent_ext에 있는 것들은 모든 파일들은 강제로 맞춰지게 됩니다. 기능을 사용하고 싶지 않을 경우 commitinfo = indent를 주석처리하세요.



ID
Password
Join
"Heck, I'm having a hard time imagining the DOM as civilized!" -- Fred L. Drake, Jr.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-03-03 16:00:24
Processing time 0.0086 sec