· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
KLDP.net의 CVS 사용하기 HOWTO

!KLDPNet의 CVS 사용하기


1. 서문

KLDPNet에서 프로젝트를 진행려고 하시거나. 프로젝트를 진행 중인데 KLDPNet의 CVS 사용법을 알고자 하시는 분

KLDPNet은 GForge로 구성된 FreeSoftware, OpenSource 개발 커뮤니티 사이트 입니다.

외국에 있는 FreeSoftware, OpenSource 개발 커뮤니티 사이트 중에는 SourceForge가 가장 많은 사용자를 가지고 있으며 그 외에도 [http]GNU Savannah, [http]berlios.de 등이 있습니다.

2. KLDPNet의 메일링 리스트에 CVS 커밋 메시지 포스팅 하기

CVS로 소스코드를 관리할때 가장 필요한 것이 CVS로그를 남기는 것입니다. 로그를 남기지 않으면 누가 어떤 파일을 어떻게 수정 했는지 알기 힘듭니다.

KLDPNet에서는 메일링 리스트를 서비스 하고 있습니다.

KLDPNet의 CVS에 커밋을 하면 CVS 커밋 메시지를 메일링 리스트에 자동으로 포스팅 되도록 설정하는 방법을 설명하겠습니다.

2.1. CVSROOT 설정

여러분들이 만든 프로젝트에는 CVS 저장소를 함께 제공하고 있습니다.

각각의 프로젝트 페이지의 CVS 메뉴에서 CVS 저장소 둘러보기(ViewCVS)에 들어가 보면 CVS 저장소의 모습을 웹으로 표시해 줍니다.

프로젝트를 처음 만들었을 경우 CVSROOT라는 디렉토리만 있을 것입니다.

CVSROOT 디렉토리에서 CVS의 환경설정을 할 수 있습니다.

CVSROOT 디렉토리 안에는 다음과 같은 파일들이 존재 합니다.
checkoutlist
commitinfo
config
cvswrappers
editinfo
loginfo
modules
notify
rcsinfo
taginfo
verifymsg


자신의 프로젝트의 CVS 저장소에서 CVSROOT 디렉토리를 체크아웃 한 뒤에 파일을 수정한 다음 다시 커밋을 하여 설정 파일을 수정합니다.

people은 프로젝트 멤버의 ID 입니다.

exproject는 프로젝트 이름입니다.


ssh를 이용한 체크아웃

cvs -z3 -d:ext:people@cvs.kldp.net:/cvsroot/exproject co CVSROOT

@log_accum.pl.gz (4.35 KB) 이 파일을 받고 압축을 푼 뒤 아래 $MAIL_TO 부분을 자신의 CVS 커밋 로그 메일링 리스트 주소로 바꿉니다.
$MAIL_TO       = 'cvs-example@lists.kldp.net';

To: 부분도 알맞게 바꿉니다.
    print(MAIL "To: Example CVS Commit Message <$MAIL_TO>\n");

log_accum.pl을 방금 체크아웃 받은 CVSROOT 디렉토리에 복사합니다. CVSROOT에 추가하고 뒤 커밋 합니다.
CVSROOT# cvs add log_accum.pl
CVSROOT# cvs commit


이제 아래 두 파일을 수정 합니다.

checkoutlist
# The "checkoutlist" file is used to support additional version controlled
# administrative files in $CVSROOT/CVSROOT, such as template files.
#
# The first entry on a line is a filename which will be checked out from
# the corresponding RCS file in the $CVSROOT/CVSROOT directory.
# The remainder of the line is an error message to use if the file cannot
# be checked out.
#
# File format:
#
#       [<whitespace>]<filename><whitespace><error message><end-of-line>
#
# comment lines begin with '#'
log_accum.pl file not found
#options file not found

loginfo
# The "loginfo" file controls where "cvs commit" log information
# is sent.  The first entry on a line is a regular expression which must match
# the directory that the change is being made to, relative to the
# $CVSROOT.  If a match is found, then the remainder of the line is a filter
# program that should expect log information on its standard input.
#
# If the repository name does not match any of the regular expressions in this
# file, the "DEFAULT" line is used, if it is specified.
#
# If the name ALL appears as a regular expression it is always used
# in addition to the first matching regex or DEFAULT.
#
# You may specify a format string as part of the
# filter.  The string is composed of a `%' followed
# by a single format character, or followed by a set of format
# characters surrounded by `{' and `}' as separators.  The format
# characters are:
#
#   s = file name
#   V = old version number (pre-checkin)
#   v = new version number (post-checkin)
#
# For example:
#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog
# or
#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog
DEFAULT /usr/bin/perl $CVSROOT/CVSROOT/log_accum.pl %s

이제 이 파일들도 커밋 합니다.
CVSROOT# cvs commit

메일링 리스트 설정에서 각 멤버들의 이메일 주소를 추가해야 합니다. @users.kldp.net으로 커밋 메일이 보내지기 때문에 해당 메일을 허용해 주어야 합니다. 허용해 주지 않으면 메일링 리스트에 포스팅 되지 않습니다.

메일링 리스트 관리자 페이지로 들어갑니다.

Privacy options -> Sender filters -> Non-member filters(List of non-member addresses whose postings should be automatically accepted.)
개인 정보 보호 정책 -> 보낸이 걸러내기 -> 비회원 걸러내기(비회원의 주소중 보낸 글을 자동으로 받아들일 목록을 나열하세요.)

hello@users.kldp.net
hi@users.kldp.net

각 멤버들의 메일 주소를 추가합니다.

이제부터 소스를 수정하고 커밋을 하면 메일링 리스트로 커밋 메시지가 포스팅 될 것입니다.


3. KLDPNet의 CVS, SSH 암호 없이 사용하기

개발자들은 anonymous 로 접속하지 않고, 자신의 계정으로 cvs로 접속하여 소스를 수정할 수 있습니다. 이때, 매번 암호를 물어 보게 되는데, 이는 CVS가 외부 프로그램으로 SSH를 사용하면서 SSH의 인증 방식을 따르기 때문입니다.

KLDPNet cvs 저장소의 개인 계정에는 sshd의 public key method 인증 방식에 사용되는 ~/.ssh/authorized_keys 파일이 있어, 외부의 public key를 등록하는 방법을 설명하겠습니다.

openssh를 사용할 때를 가정하고 설명드리겠습니다.

rsa1 용 private/public key pair 를 만들기

$ ssh-keygen -t rsa1
Generating public/private rsa1 key pair.
Enter file in which to save the key (/hunkim/.ssh/identity):
Enter passphrase (empty for no passphrase): xxxx
Enter same passphrase again: xxxx
Your identification has been saved in /hunkim/.ssh/identity.
Your public key has been saved in /hunkim/.ssh/identity.pub.
The key fingerprint is:
ba:47:d9:81:81:14:d0:ca:f5:f5:9b:27:11:62:25:5d hunkim@ucsc.edu

passphrase란 private key를 암호화하는데 사용되는 암호입니다. 이 함호를 공백으로 해도 좋지만 보안상 지정을 해두시고 다음과 같이 ssh-agent를 사용하시는것이 좋습니다.

ssh-agent는 다음과 같이 사용하시면 됩니다.
$ eval `ssh-agent`
Agent pid 14502

$ ssh-add
Enter passphrase for /hunkim/.ssh/identity: xxxx
Identity added: /hunkim/.ssh/identity (/hunkim/.ssh/identity)

~/.ssh/identity.pub 파일이 생성된 public key입니다.

만든 public key 를 KLDPNet 에 등록

KLDPNet의 ~/.ssh/authorized_keys 파일에 등록하는 방법입니다.


이 페이지를 로그인한뒤 열어보면, 생성한 public key를 등록하는 창이 나옵니다. 이 창에 생성된 Public key인 ~/.ssh/identity.pub 파일의 내용을 복사해 넣습니다. 주의할 것은 위 내용이 줄바꿈되어 들어가는 일이 없도록해야한다는 것입니다. 맨 앞과 뒤의 공백은 상관없습니다.

등록된 public key는 바로 반영되지 않습니다. crontab에 등록된 작업이 실행될 때에 일어나기 때문입니다.

SSH Version 1.0 사용 설정

KLDPNet는 ssh version 1.0 으로 작동하므로 이 사이트에 대해서는 기본적으로 버전을 바꾸도록 합니다.

~/.ssh/config 파일을 다음과 같이 작성합니다.

Host *.kldp.net
Protocol 1

public key update가 일어났을거라 생각된 후 :) 시도해보세요.

4. Q&A (질문과대답)

Q: kldp.net의 cvs에서 cvs -z3 -d:pserver:anonymous@cvs.kldp.net:/cvsroot/프로젝트명 co modulename 으로 되어 있는데, 여기에서 modulename 은 무엇을 말하는 것인가요?

A: 확인해보니 CVSROOT 의 하위 폴더가 modulename 이 되는 것 같은데. 맞죠?


Q: 현재 KLDPNetCVS가 !SSL1으로 연결 가능합니까? SSL2로 접속해야 하는 것 같은데, 혹시 확인 가능하신 분께서는 확인해주시면 감사하겠습니다.





sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-03-15 21:12:57
Processing time 0.0737 sec