이클립스 프로젝트 필수 유틸리티 : subversion, Ant, JUnit, Trac이클립스 프로젝트 필수 유틸리티 : subversion, Ant, JUnit, Trac - 10점
민진우 외 지음/한빛미디어
이클립스를 기준으로 CVS,Subversion,Ant,JUnit,Trac에 관한 부부개발자의 경험담입니다. 초판에는 CVS,Ant,JUnit,Scarab을 다루었던 것으로 기억합니다. 책의 실습예제로 초간단 블로그 만들기 프로젝트를 다룹니다. 언어보다 더 빨리 변하는 것이 도구이기도 합니다. 이런 도구의 사용법을 문서로 전달한다는 것이 쉽지 않지만 개정판이 나와서 다행입니다.

최근 OKJSP에 트랙을 사용하기 시작했는데, 리눅스에 트랙설치는 쉽지 않은 일이었습니다. 윈도우환경으로는 저자 민진우님이 TOW라는 오픈소스 프로젝트를 진행하고 계십니다. http://sourceforge.net/projects/raconwindows

이런 도구를 다른 개발자에게 쓰도록 공감대를 형성하는 것은 툴 자체보다 어려운 듯 합니다.
지속적인 통합 빌드에서 crontab 처럼 주기적으로 빌드가 돌게 할 수 있습니다. 아래는 10분 주기로 실행하도록 한 결과입니다. trend 링크를 누르면 다음과 같이 그래프로도 확인이 가능합니다.

빌드의 실행 시점은 다음과 같이 정할 수 있습니다. 우측의 ? 아이콘을 클릭하면 해당항목에 대한 설명이 보이게 됩니다. 빌드에는 분 시간 일 월 요일 5가지 설정을 하게 됩니다. 매 10분마다 설정하려면 0,10,20,30,40,50 처럼 공백없이 분을 나열하고 이후 4항목을 * * * * 로 채우면 됩니다.

빌드 로그가 많이 남을까봐 Discard Old Builds처럼 옛날 빌드기록을 삭제할 수 있습니다. 7일간 최대 200개의 빌드기록을 보관한다는 의미입니다.


소스코드를 가져오는 방법은 다음과 같습니다. CVSROOT를 적어주면 됩니다. 아이디와 패스워드가 노출되는데, 인트라넷용이라는 전제가 있습니다. 또한 빌드전용 CVS아이디를 만들어 주는 것도 괜찮을 것입니다.

간략하게 hudson의 설정에 대해서 살펴보았습니다.





요즘 개발할 때 소스코드 보험은 필수입니다. CVS나 Subversion 같은 것 말이죠.
xcode에도 이 기능을 지원하네요.
메뉴에 SCM을 선택합니다. Source Code Management 의 약자일까요?
사용자 삽입 이미지

Xcode Preferences 창이 뜨면서 SCM 메뉴가 선택되어있습니다. 좌측 하단의 +를 클릭합니다.
사용자 삽입 이미지

okjsp 사이트 소스는 공개되어있습니다. anoncvs 계정과 anoncvs 패스워드로 접속가능합니다.
사용자 삽입 이미지

등록을 마치고 메뉴에서 Repositories 를 선택하면 접속이 됩니다.
사용자 삽입 이미지


좋군요.

OKJSP소스를 집과 회사에서 관리를 합니다. CVS update 후 에러가 보여서 확인해봤더니 모처럼만에 CVS Conflict가 났습니다.
아이콘이 이상하게 표시됩니다.

사용자 삽입 이미지



파일을 열어보면 <<<<<<< 표시와 >>>>>>> 표시가 보입니다.
사용자 삽입 이미지

의미상 ======= 을 기준으로 상단부분이 CVS update 이전 로컬에서 고쳐진 부분이고, 아랫부분에 >>>>>>> 1.2 위 까지 CVS 저장소에서 받아온 소스의 변경된 부분입니다. 같은 라인이네요. ^^; 아마도 로컬에서 작업하고 올리지 않고, 퇴근 후 작업해서 올렸기 때문에 회사에서 소스를 다시 동기화하니 발생한 문제 같습니다. null로 작업했는데, 그냥 writer로 굳혀버렸죠.


수정하는 방법은 다음과 같이 불필요한 부분을 다 지워주고, 에러가 없도록 정리해 줍니다. 그리고 커밋을 하면 됩니다.
사용자 삽입 이미지


만약 커밋이 필요없고, 로컬에 있는 내용을 모두 포기하려면 파일의 컨텍스트 메뉴에서 Replace With > Latest from HEAD 메뉴로 확 덮어씌우면 됩니다. 로컬에서 작업한 예전 내용은 대개의 경우 Compare With > History... 로 확인 가능합니다.
사용자 삽입 이미지

소스의 수정한 부분이 겹치지 않고 다른 부분이라면 Update할 때 eclipse에서 자동으로 Merge를 시켜줍니다.
겹치는 부분이 있다면 사람이 해결해야 되는 것이 맞죠.

cvs server file read

cvs server file read

파일탭에 보면 버전이 붙어있는 것은 수정되지 않습니다. J자 아이콘을 봐도 편집 가능한 경우와 차이가 있는 것을 알 수 있을 겁니다.
너무 열내지 마세요. ^^; cvs 서버의 파일은 직접 수정되지 않고, 로컬로 가져와서 수정한 다음 커밋해야 변경할 수 있으니까요.

[kenu@82s ~]$ ls /web/kenu/okjsp.80port.net/
DSC022.JPG    count.jsp  f.jsp        javaone2004/  lecture/  rss/
WEB-INF/      css/       family/      javaone2006/  letter/   slf/
agent.html    cvs/       favicon.ico  ...
[kenu@82s ~]$ cd okjsp2007/
[kenu@82s okjsp2007]$ pwd
/home/kenu/okjsp2007
[kenu@82s okjsp2007]$ ls
CHANGE.txt  README.txt        build.properties.default  docs/  test/
CVS/        build.properties  build.xml                 src/   web/
[kenu@82s okjsp2007]$ cvs update; ant

cvs 서버에서 서비스되는 서버 폴더에 소스를 보내기 전에 cvs와 sync하는 장소가 필요합니다. 이곳을 sandbox 라고 합니다. 여기에서는 /home/kenu/okjsp2007 경로가 sandbox입니다. cvs update 명령을 통해서 새로운 소스들 가져옵니다. ant 명령으로 build.xml 내용을 실행합니다. 이렇게 하면 sandbox의 내용이 서비스되는 경로( /web/kenu/okjsp.80port.net/ )로 보내지게(publish) 됩니다.

어제 세미나에서 미처 보여드리지 못한 내용이라 추가합니다.
cvs의 버전관리 기능을 이용해서 특정한 시간에 대한 소스 디렉토리와 파일들을 복원해 낼 수 있습니다. 타임머신과도 같은 기능이죠.
현재의 소스와 과거의 소스를 이클립스를 통해서 비교도 할 수 있습니다.
보시죠.

CVS Repositories에서 프로젝트를 선택해서 Check Out As...를 선택합니다. Check Out 할 경우는 cvs에 등록된 대로 바로 프로젝트가 생기게 되는 것은 다 아실 겁니다. 로컬의 디렉토리로 가져올 때 프로젝트 커스터마이징을 하기 위해서 Check Out As... 메뉴를 선택합니다
Check Out As...

Check Out As...


프로젝트 이름을 적당하게 바꿔줍니다. 이미 okjsp2007이라는 이름으로 프로젝트가 있는 상태이기 때문에 okjsp2007_timemachine이라는 프로젝트 이름을 지었습니다. ㅎㅎ 꽤 잘 지은 것 같습니다. Next 버튼을 클릭합니다. Finish 클릭하면 말짱 황입니다. 조심조심.
checkout project naming

checkout project naming


Tag를 설정하는 화면입니다. Dates를 선택하고 Add Date... 버튼을 클릭합니다. 중간 맨 오른쪽에 있죠.
Add Date...

Add Date...


캡쳐한 시점이 6월23일인데 한 달 전 시간 5월23일 저녁 6시 기준으로 소스를 가져오도록 하겠습니다. 시간 세팅은 어렵지 않겠죠.
Create Date Tag

Create Date Tag


시간 태그가 보일 겁니다. 그 태그를 선택하고 Finish 버튼을 클릭합니다.
Select Date Tag

Select Date Tag


퍼스펙티브를 바꿔서 프로젝트 두 개가 나란히 서있는 것을 볼 수 있습니다. ^^; 찌그러져 앉아있는지도 모르죠. 헙. 일단 두 개의 프로젝트를 선택합니다. 비교해 봐야죠.
Select projects compared

Select projects compared


컨텍스트 메뉴의 Compare With > Each Other 를 선택합니다. 말이 되네요. 비교해봐 > 서로
Compare With > Each Other

Compare With > Each Other


화면에 Compare tab이 나타날 겁니다. 탭을 더블클릭해서 전체 화면으로 만들고 비료하면 됩니다. 일단 파일을 선택하면 파일의 어느 부분이 바뀌었는지 우측에 구조 비교화면이 나오고 해당 메소드를 선택하면 하단에 소스가 비교되어 나옵니다. 왼쪽과 오른쪽 소스 상단에 프로젝트 이름이 보이니 어떤 것인지 혼동하지 않아도 됩니다.
Compare

Compare



이클립스에서 프로젝트 구조의 비교도 가능하다니 훌륭하지 않습니까? 이클립스가 조금 더 좋아지지 않나요? ^^ 이상 마치겠습니다.


+ Recent posts