CVS를 활용하기 위한 좋은 정책은?

taeyeung의 이미지

사내에 CVS를 도입해서 작업을 하려고 합니다.

자료들을 찾아 보면 CVS의 명령어에 대한 설명은 많지만

Check In / Check Out / Commnet나 Log 남기기나

기타 등등에 대한 정책을 설명해 주는 문서는 없는 것 같습니다.

좋은 정책들(CVS 사용 노하우?)이 있으면 알려 주세요.

monpetit의 이미지

제 경우엔 CVS Book이 도움이 되었습니다.
http://cvsbook.red-bean.com/

송지석의 이미지

마우스 클릭만으로 되게 합니다.
회사 사람들이 전부 윈도 사용자인데 tortoiseCVS 사용법을 세미나 해주고 서버 세팅해주었더니 잘 사용하시는군요.

eou4의 이미지

리눅스에서 GUI환경으로는 할수 없는건가요?

tortoiseCVS 보니까 윈도우용이네요..

ㅎㅁㅎ

perky의 이미지

eou4 wrote:
리눅스에서 GUI환경으로는 할수 없는건가요?

tortoiseCVS 보니까 윈도우용이네요..

tkcvs이 있습니다.
사실 저는 써보지는 않았습니다. ^^;

You need Python

Necromancer의 이미지

GUI cvs라면

CVS frontend인 celvisia였던가.. 이름이 가물가물하네요

kde 제공 프로그램 속에 있었던 걸로 알고 있습니다.

정확한 이름 아시는분 답글좀

Written By the Black Knight of Destruction

zelon의 이미지

자바 개발툴로 유명한 eclipse 를 cvs Client 로 멋지게 사용할 수 있더군요. 최근 들어간 회사에서는 eclipse 를 CVS Client 로 알고 있을정도로... ^^

물론 JRE 가 설치되어야 하구요. 정말 멋진(!!!) CVS Client 로 추천합니다^^/

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

taeyeung의 이미지

제가 원한 것은 CVS를 사용하면서 좋은 사용 습관 같은 것을 다른 분들에게

들어 보고 싶어서 글을 올렸는데 좋은 관리(사용) 습관에 대해서는 별 말씀이

없네요( 위에 한분 책을 소개해 주신 분 말구요 )

제가 다른 사이트에서 긁어온 글입니다.

저자는 박재호님입니다.

-----------------------------------------------------------------------------
check in 할 경우 규칙
i) 반드시 컴파일이 가능한 코드를 check-in 한다. showstopper를 만드는 동료는 주말에 맥주집에 가서 한턱 내는 벌금형에 처한다.
ii) 단위 테스트가 끝난 코드를 check-in 한다. 나중에 smoke test에서 걸리면 역시 맥주집...
iii) 관련있는 헤더 파일과 기타 파일은 트랜잭션 하나로 취급해서 항상 같이 check-in 한다.

comment 달 때 규칙
i) 절대 비어있는 공백으로 넣지 않는다.
ii) 오류를 잡았으면 어떤 오류를 잡았는지 기록한다.
iii) 기능을 추가했으면 어떤 기능을 추가했는지 기록한다.
iv) 기타 도움이 될만한 정보 - 예) 특수한 조건이나 환경 - 를 기록한다.

M.W.Park의 이미지

먼저 드리고 싶은 말씀은... SVN을 사용하시는 것을 추천합니다.
사용한지 두어달 되었는데 기능 면에서 SVN이 좀더 나은 것같더군요.

퍼오신 글의 내용도 괜찮네요. CVS든 SVN이든 다 적용되는 내용같습니다.

소규모 웍그룹의 경우는 "퇴근하기전 체크인"만 확실하게 하면 큰 문제는 생기지 않는 것같습니다.
물론 체크인시와 소스레벨에서의 적절한 코멘트도 중요하겠지요.
대규모 프로젝트는 제대로 된 것을 해본 적이 없어서... ^^;

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

offree의 이미지

cvs, svn 아직 적응을 못하고 있네요.
아직 손에 안익어서 그런가.. 또 실무가 아닌. 개인적인 접근이라 더 적응이 안되네요.

실무에 쓰면서 부딪혀 보아야 하나, 좀더 머리속과 자료를 정리를 하고 실무에 써봐야 겠습니다.

사용자가 바꾸어 나가자!!

= about me =
http://wiki.kldp.org/wiki.php/offree , DeVlog , google talk : offree at gmail.com

pyrasis의 이미지

CVS, Subversion 모두 체크인이라는 용어는 없는데도 많이 사용하고 계시군요.. 이상하네요..

체크인은 MS 소스세이프에 있는 용어죠,

CVS, Subversion은 Commit(커밋)이죠

kookooo의 이미지

pyrasis wrote:
CVS, Subversion 모두 체크인이라는 용어는 없는데도 많이 사용하고 계시군요.. 이상하네요..

체크인은 MS 소스세이프에 있는 용어죠,

CVS, Subversion은 Commit(커밋)이죠


checkout 때문일겁니다.
import & commit 을 checkin 의 개념으로 사용하는 것인지 둘중 하나인지는 모르겠군요...
commit 의 약어로 흔히 사용하는 ci 도 checkin 으로 오인하게 하는 요소인 듯 하네요..
잔디인형의 이미지

CVS를 사용하는 명령은 동일하지만 프로젝트를 관리하는 방식은 조금씩 차이가 있는 것 같습니다.

저는 프로젝트를 생성하고 /doc 디렉토리와 /src 디렉토리를 만들고 /doc 아래에 작업일지 파일(ChangeLog)을 생성하여 수정되는 내용을 최대한 자세히 적습니다.

Quote:

dev2003_12_10a
*작업내용

*작업된 파일
--------------------

이런 식으로 문두 삽입 방식으로 설명하고 작업을 하다가 어느정도 됐다 싶으면 프로젝트를 커밋하고 테그를 dev2003_12_10a로 붙입니다.

이전 버전의 변화를 확인할때 cvs의 log를 확인하기 보다는 작업일지를 확인하는 게 더 편하더라구요.

저는 지금까지는 작업일지를 ChangeLog로 했었는데, 기존의 오픈 프로젝트들에서 ChangeLog가 다른 용도로 사용되기 때문에 다른 이름으로 사용해야겠습니다.

CVS는 파일마다 버전이 달라지기 때문에 이렇게 하는 것이 제일 간편했습니다. 다행히 subversion에서는 이런 문제가 개선되긴 했지만 subversion은 아직 기능들이 완전하게 구현되지 않아 정식 프로젝트에 사용하기에는 시기상조인것 같습니다.

----
언젠가 여기 설치 및 활용에 올렸던 글입니다. 이 글타래는

http://bbs.kldp.org/viewtopic.php?t=28950&highlight=

여기에 있습니다.

perky의 이미지

pyrasis wrote:
CVS, Subversion 모두 체크인이라는 용어는 없는데도 많이 사용하고 계시군요.. 이상하네요..

체크인은 MS 소스세이프에 있는 용어죠,

CVS, Subversion은 Commit(커밋)이죠

다른 프로젝트들에서도 체크인이라는 용어를 많이 쓰고 있습니다. 특수 용어라기보다는 그냥 일반 동사구 정도로 쓴다고 보면 되겠죠.

http://www.google.co.kr/search?q=site%3Amail.python.org+checked.in
http://www.google.co.kr/search?q=site%3Alists.freebsd.org+checking.in
http://www.google.co.kr/search?q=cvs+check.in

You need Python

lacovnk의 이미지

pyrasis wrote:
CVS, Subversion 모두 체크인이라는 용어는 없는데도 많이 사용하고 계시군요.. 이상하네요..

체크인은 MS 소스세이프에 있는 용어죠,

CVS, Subversion은 Commit(커밋)이죠

man 페이지에 보면

Quote:
CVS/Checkin.prog
Name of program to run on `cvs commit'.

으음. 사실 ci 가 checkin의 약자인줄 알고 있었습니다 -_-;

뭐 용어는 없지만 일반적으로 쓰나 봅니다. man cvs 에 봐도 그렇고요

nohmad의 이미지

CVS의 모태라고 할 수 있는 RCS에도 checkout(co)/checkin(ci)이 있습니다. ;)

pynoos의 이미지

저는 cvs checkin(!)하기 전에 항상

cvs up
cvs diff <file>
cvs ci <file>

형태로 합니다.

파일 단위로 로그를 남기기 위해서이지요.
물론 변경 파일이 모두 같은 로그이면 한꺼번에 합니다.

그리고, vi 가 떠서 log남기는게 귀찮아서

cvs ci -lm "Message" <file>

형태로 주로 남깁니다.

-l 은 습관상 넣습니다... <file> 이면 전혀 필요없는데도....

그리고, 또 하나라면, skel.h, skel.c 를 만들고 vi 에서 skel.h, skel.c 등이 파일 추가될 때 저절로 불려지게하고 있고, (addon을 사용합니다.)
skel.h, skel.c 의 맨 하단에는

/* 
$Log$ 
*/

를 두어 파일 단위로 로그 남기는 것을 동일하게 파일 주석으로 남도록 합니다.

perky의 이미지

pynoos wrote:
저는 cvs checkin(!)하기 전에 항상

cvs up
cvs diff <file>
cvs ci <file>

형태로 합니다.

파일 단위로 로그를 남기기 위해서이지요.
물론 변경 파일이 모두 같은 로그이면 한꺼번에 합니다.

이렇게 되면 트랜잭션처리가 불가능하지 않나요?
커밋 메일도 다 따로따로 오게 되고..

You need Python

pynoos의 이미지

perky wrote:
pynoos wrote:
저는 cvs checkin(!)하기 전에 항상

cvs up
cvs diff <file>
cvs ci <file>

형태로 합니다.

파일 단위로 로그를 남기기 위해서이지요.
물론 변경 파일이 모두 같은 로그이면 한꺼번에 합니다.

이렇게 되면 트랜잭션처리가 불가능하지 않나요?
커밋 메일도 다 따로따로 오게 되고..

동시에 roll-back 하시는 것을 말씀하시는 거죠?

전 그렇게까지 대단위 roll-back할 일이 없던데, 또 전체를 한꺼번에 할 때는 그 checkin에 symbolic tag 를 해놓지 않으면 뒤로 돌리기도 어렵구요...

그리고 daily build를 하면서 daily tag가 붙으므로 제가 사용하는 방법이 문제를 일으킨적은 없었습니다. :)

atie의 이미지

팀원 모두에게 "commit 전에는 항상 update를 먼저 수행한다"라는 점과 commit시 comment를 간략하게라도 항상 의미있게 붙이도록 합니다. 작업은 eclipse에서 하고 branch 없이 HEAD만 사용하는데... 간단한 규칙이지만 여러명이 checkout 해서 수시로 commit 하는 프로젝트에도 매우 효과적입니다.

----
I paint objects as I think them, not as I see them.
atie's minipage