솔루션 컨설팅 파트 소스 관리
-
TOW (Trac + SubVersion)
-
TOW 의 소개
-
TOW 0.2.2a Base : 플러그인이 전혀 설치되지 않고 트랙에 필요한 파일만 설치되어 있는 패키지
- Python,Trac 0.10.4,Apache HTTP Server,Subversioin,SQLite,mod_python,기타
-
TOW 0.2.2a Standard : 트랙과 이클립스 연동에 필요한 플러그인과 그 외 유용한 플러그인들이 함께 설치되어 있는 패키지.
- TOW 0.2.2a Base 패키지플러그인,WebAdmin,XmlRpc,Eclipse Intergration,WysiWyg,매크로,기타
-
-
Trac
-
Trac 의 소개
- Trac(보통 트랙이라고 발음함)은 오픈소스 웹 기반 프로젝트 관리 겸 버그 추적 툴이다. 엣지월 소프트웨어가 개발하였다.
- Trac은 파이썬 언어로 작성되어 있다. 2005년 중반까지는 GNU 일반 공중 사용 허가서 하에 라이선스 되었으나, 0.9 버전부터는 수정 BSD 라이선스 하에 라이선스되고 있다. 이 라이선스들은 자유 소프트웨어 라이선스들이다.
-
Trac 의 특징
- Trac은 버전 관리 소프트웨어의 웹 인터페이스 제공, 각종 개선점과 버그와 같은 프로젝트의 이슈 트래킹, 그리고 마지막으로 위키를 통한 문서 관리 및 각 리소스 연동을 주 기능으로 한다. Trac은 서브버전, Git (소프트웨어), 머큐리얼, 바자 (소프트웨어)와 같은 버전 관리 소프트웨어와 같이 연동될 수 있다. 기존 0.10 버전 이전의 Trac에서는, Trac의 웹 인터페이스의 구현이 클리어실버를 통해 구현되었으나, 0.11 버전 이후로는, 자체 개발한 겐시라는 이름의 템플릿 시스템을 사용하고 있다.
- Ticket system (bug tracking, tasks, etc.) : Ticket 사용의 간단함
- Timeline of all recent activity : 마일스톤 관리 가능
- Wiki : 위키가 제공하는 기능( 예: 페이지 작성, 하이퍼링크, 히스토리, 검색 )을 모두 제공
- VCS web interface : SubVersion 연동을 통해 소스 코드 탐색
- RSS Feeds
- Multiple project support
- Environment extensibility (via Python plugins)
-
기능별 구분
-
Wiki
-
트랙은 위키의 한 종류입니다. 위키는 게시판과 같이 글을 게시하고 표시하는 하나의 양식입니다. 위키는 크게 세 가지의 개념을 지니고 있습니다.
- 웹페이지 게시판에서 하나의 글을 작성하듯 위키에서는 하나의 페이지를 작성합니다
- 제목 게시판에서 제목을 작성하듯 위키에서도 페이지의 제목을 작성해야합니다. 다만 글과 다르게 페이지의 같은 제목은 단 하나만 존재할 수 있습니다. 제목은 위키에서 접근할 수 있는 주소가 됩니다.
- 하이퍼텍스트 위키는 각 페이지를 쉽게 넘나들 수 있도록 주소를 엮어줍니다. 즉 글 본문에 해당하는 제목을 쓰게 되면 그 제목에 해당하는 페이지를 링크로 걸어주는 시스템입니다. 위키의 가장 큰 특징이라 할 수 있습니다.
-
위키의 장,단점
-
장점
- 하이퍼텍스트로 인해 세부 내용을 일일이 링크 걸어주지 않아도 쉽게 참고할 수 있습니다.
- 같은 주제에 해당하는 글은 허용되는 누구나 수정할 수 있기 때문에 정보의 집중도가 커집니다.
- 글의 변화내역은 항상 저장되어 있으므로 누군가 실수로 잘못된 내용을 기입하였다면 전의 글로 롤백할 수 있습니다
- 변화된 페이지는 최신 변화 목록에서 항상 확인할 수 있습니다
-
단점
- 유저가 위키의 규칙을 잘 알아야합니다. 이는 위키의 접근장벽을 높입니다. 그렇지 않은 유저는 위키의 일관성을 해할 수 있습니다
- 위키의 페이지를 새로 만들었으면 그 페이지를 꼭 어딘가에 연결시켜놓아야 합니다. 그렇지 않으면 페이지는 존재하나 아무도 그 페이지의 존재를 모를 수 있습니다
-
-
위키 참고
- 가장 글 수가 많은 위키 - 위키백과( http://ko.wikipedia.org/wiki/%EC%9C%84%ED%82%A4 )
- 개발자의 위키 - KLDP( http://wiki.kldp.org/wiki.php )
-
-
서브버젼과의 연동
-
Timeline
- 서브버전의 시간대 별 관리사항을 알려줍니다
-
Browser Source
- 소스를 둘러볼 수 있습니다
- 파일 탐색기를 이용하듯 각 폴더를 이동할 수 있습니다. 또한 각 폴더의 리비젼이 몇인지, 최종 변경 날짜가 언제인지 등등의 정보가 나와있어 매우 편리합니다. 각 파일의 내용을 클릭하면 소스파일의 내용도 볼 수 있습니다.
- 리비전의 변화 내용을 한 눈에 살펴볼 수 있습니다.
- 강력하고 시각적인 탐색기능을 제공하고 있으며 이것이 별다른 설치 없이 누구에게나 보여줄 수 있습니다. 따라서 개발자가 아닌 다른 사람에게도 웹 페이지를 보여주는 것만으로 소스나 자원을 쉽게 가져가도록 할 수 있습니다. 물론 개발자가 보기에도 충분히 훌륭합니다.
-
-
프로젝트 관리
-
Ticket
-
하나의 개발 이슈입니다. 이것은 버그 수정이 될 수도 있고 새로운 기능 추가가 될 수도 있습니다. 프로젝트에 있어서 변경사항이 필요한 최소 단위라고 보시면 되겠습니다.
- 티켓 제목 Arrange Damage 라는 글자가 맨 위에 보이시는지요? 바로 이 티켓의 제목입니다. 티켓의 제목은 이 티켓의 내용을 함축하고 있어야겠죠.
- 발행 날짜
- Reported by 이건 티켓을 발행한 사람입니다. 티켓 발행자는 프로젝트 일원이면 누구나 발행할 수 있습니다. 버그를 발견했거나 기능을 추가할 필요성이 있을 때 그 당사자가 발행하면 되겠죠.
- Assigned to 개발자 자신이 티켓을 접수할 수도 있고, 혹은 프로젝트 매니저가 해당 개발자에게 직접 넘길 수도 있습니다. 티켓을 받은 사람은 티켓을 처리하거나 다시 티켓을 딴 사람에게 넘기던가 하면 됩니다.
- Priority 티켓의 중요도를 나타냅니다. 매우심각한 < 심각한 < 보통 < 사소한 < 매우사소한 의 순으로 나뉩니다.
- Milestone 이 티켓이 속한 마일스톤을 나타냅니다. 마일스톤에 대한 내용은 다음 항목에서 설명하도록 하겠습니다.
- Component 이 티켓이 관여하는 모듈이 무엇인지 나타냅니다. 예를 들어 클라이언트 어플리케이션이 있고 스크립팅 툴이 있다면 그것들이 컴포넌트가 될 수 있겠죠.
- Version 이 티켓이 유효한 버전을 나타냅니다. 이것은 리비젼과는 다르게 취급됩니다.
- Keywords 이곳에 해당하는 키워드들을 등록합니다. 이 키워드들은 나중에 검색할 때 효과적으로 동작합니다.
- Cc 티켓 발행자를 제외한 다른 사람에게도 이 티켓에 변경사항이 있을 때 메일을 보내도록 합니다. 참조라고도 하죠.
- Description 티켓의 세부 설명을 적습니다. 위키 문법을 이용할 수 있으므로 하이퍼텍스트로 다른 페이지를 연결하는 것도 가능합니다.
-
-
MileStone
- 마일스톤은 각각의 마감 시한을 나타냅니다.
-
패치 올리는 날, 클로즈 베타 시행하는 날, 프로토 타입을 올리는 날. 그 어떤 것이 될 수도 있습니다. 마일스톤은 그 마감 시한과 티켓들을 지니고 있으며 그것을 예쁜 그래프로 표시해줍니다.
-
-
-
-
SubVersion
-
SubVersion 소개
- Subversion은 자유 소프트웨어 버전관리 시스템으로 명령줄 프로그램 이름을 따서 SVN이라 줄여 부르기도 한다. 2000년 초 CollabNet, Inc사에서 CVS(Concurrent Versioning System)를 대체하기 위해 처음 개발되었다.
- 현재 Apache Software Foundation, KDE, GNOME, Free Pascal, GCC, Python, Ruby, Samba, Mono와 같은 많은 오픈소스 프로젝트에서 사용되고 있으며, SourceForge.net, Tigris.org, code.Google.com, BountySouce.com 에서는 오픈소스 프로젝트를 위해 서브버전 호스팅을 하고 있다.
-
버전 관리 시스템은 파일 서버와 동일하지만 이전의 변경사항들을 기억하고 있어서 다음과 같은 장점이 있다.
- 개발 버전과 릴리즈 버전이 섞이지 않고 쉽게 관리 할 수 있다.
- 소스를 잘못 수정 했더라도 기록이 남고 되돌리기가 쉽다.
- 수정, 추가, 삭제 등의 기록이 모두 남고 변경 사항을 추적하기 쉽다.
- 개발자들이 따로 따로 백업을 하지 않아도 된다.
-
SubVersion 특징
-
대부분의 CVS 특징을 가짐.
- Subversion은 CVS를 대체하기 위해 개발되어 클라이언트-서버 구조, 복사본 동시 작업, 비교, 로그, 스냅샷, 브랜치 관리, 압축 등 대부분의 CVS 특징을 가지고 있다.
-
디렉토리, 파일 이름 변경, 이동, 메타 데이터(속성) 버전 관리도 지원.
- CVS는 개별 파일의 히스토리만 기록하지만, Subversion은 디렉토리 전반의 모든 변화를 기록하며, 파일과 디렉토리에 보이지 않는 속성(임의의 키/값)을 설정하고 버전 관리할 수 있다.
-
커밋 단위가 파일이 아닌 체인지셋이다.
- CVS에서라면 여러 개의 파일을 한꺼번에 커밋하더라도 각각의 파일마다 리비전이 별도로 붙지만, Subversion에서는 파일별 리비전이 없고 한번 커밋할 때마다 전체 변경 사항에 대해 리비전이 하나씩 증가한다.
-
원자적 커밋
- CVS에서는 여럿이 동시 커밋할 때 종종 충돌이 발생하는데 Subversion에서는 더 이상 그런 일이 없어졌다.
-
효율적인 브랜칭/태깅
- Subversion은 브랜치와 태그들을 하드 링크와 비슷한 메커니즘을 이용하여 프로젝트를 단순 복사하는 방법으로 생성하므로 매우 빠르다.
-
CVS와 매우 유사한 사용법.
- CVS 사용자라면 누구나 어려움없이 금방 배울 수 있다
-
저장소/프로젝트별 환경 설정 가능. 트리별, 파일별 접근 제어 리스트
- 저장소 쓰기 접근을 가진 개발자라도 아무 소스나 수정하지 못하게 조절할 수 있다.
-
네트워크 계층 선택
- Subversion 고유 프로토콜(svn://), SSH로 svn 터널링 (svn+ssh://), Apache HTTP서버에 확장 모듈(WebDAV/DeltaV)로 플러그인(http://) 등을 선택할 수 있다.
-
확장성
- 잘 설계된 API를 제공하여 여러 언어에서 사용 및 유지보수가 쉽다.
-
커밋 통지 메일 스크립트 기본 제공
- CVS에서라면 스크립트를 따로 구해서 써야 하는 번거로움이 있었지만, Subversion은 기본 제공 스크립트를 이용해서 훨씬 손쉽게 설정이 가능하다.
-
-
SubVersion Arch'
-
-
Mylyn 의 소개
- 태스크들을 Eclipse로 완벽하게 통합하고, 그러한 태스크들의 콘텍스트(context)을 자동으로 관리함으로써 생산성을 향상 시킴
- 태스크 관리 장치와 Bugzilla, Trac, JIRA 같은 저장소와의 통합하여 관리
- 콘텍스트 관리로 쉬운 멀티 태스킹 및 정보 오버로드를 줄일 수 있음
- 상세내용 : http://www.ibm.com/developerworks/kr/series/j-mylyn.html
- Eclipse
-
TOW 와 Eclipse 간의 컴포넌트 구성도
-
by gliffy.com
-
-
-
프로젝트 관리
-
TOW 의 관리 특성
- TOW 는 하나의 Trac 에 하나의 SubVersion Repository 를 관리함
- 프로젝트 단위의 운영 (Wiki, SVN, Ticket)
-
대분류, 소분류를 통한 소스 관리
-
대분류 : u-CUBE, Glue, PosBee, UI-Maker
-
소분류
- u-CUBE : 00.GMES, channel, CubeManager, EAISender, ejbtest, GoodSoftware, jboss-4.0.3SP1, mestopic, QueueUtil, seadapter, seadapterJVM13, uUCBE_installer, uCUBE3_installer, uCUBEAdapter, uCUBEAdapterEntob, wrapper
- Glue :
- PosBee :
- UI-Maker :
-
-
-
설치 가이드
- TOW : Client 의 경우 설치 필요 없음
-
Eclipse + SubVersion + Mylyn + Trac
-
SubVersion 설치 및 연결
- eclipse menu Help->Software Updates->Find and Install.
- Search for new features to install -> Next.
- New Remote Site 선택.
-
Name에 "SubClipse" 입력, URL에 아래 입력
- Eclipse 3.2 이상의 경우 아래 URL 입력
- http://subclipse.tigris.org/update_1.4.x
-
위의 link 로 설치 작업으로 안될 경우 아래 Link 참고하여 설치
-
SubVersion 연결
- eclipse menu Window ->Show View ->Other -> SVN -> SVN Repository 선택.
- SVN Repository 화면에서 우클릭 NEW
- http://203.238.193.189:8080/svn/u-CUBE (생성한 Trac Project를 지정 : Glue, UI-Maker, PosBee)
- Finish 클릭
-
Mylyn 설치 방법
- eclipse menu Help->Software Updates->Find and Install.
- Search for new features to install -> Next.
- New Remote Site 선택.
-
Name에 "Mylyn" 입력 , URL에 아래 버젼에 맞도록 입력
- eclipse 버젼에 맞는 Mylyn선택
- Eclipse 3.2: http://download.eclipse.org/tools/mylyn/update/e3.2
- Eclipse 3.3: http://download.eclipse.org/tools/mylyn/update/e3.3
- Eclipse 3.4: http://download.eclipse.org/tools/mylyn/update/e3.4
- Select OK
- Mylyn box 선택 후 Finish
-
Mylyn Trac Connector (3.2 이하의 경우 사용불가)
-
Mylyn extra update 하지 않을 경우 trac 연결이 되지 않음
- eclipse menu Help->Software Updates->Find and Install.
- Search for new features to install -> Next.
- Mylyn Extra 선택 후 Finish
-
eclipse 3.3. 3.4 의 경우
- eclipse menu Help->Software Updates->Add Site
- http://www.eclipse.org/downloads/download.php?file=/tools/mylyn/update-archive/2.0.0/mylyn-2.0.0-e3.2.zip
-
-
Trac 연결
- eclipse menu Window -> Show View -> Other
- Tasks Task Repositories 선택
- Task Repositores -> 마우스 우측 버튼 선택 -> Add Task Repository
- Trac 선택 -> Next
- Server: http://203.238.193.189:8080/projects/u-CUBE (생성한 Trac Project를 지정 : Glue, UI-Maker, PosBee)
- Label : Test Trac Repository (본인이 원한는 이름으로 지정)
- Anonymous Access uncheck
- UserID : 발급된 id 입력 (회사 Mail ID)
- Password : 발급된 passwd 입력 (jms123)
- Save Password check
- Additionla Settings 선택
- Access Type : XML-RPC Plugin 선택
- Validate Settings 선택 후 연결이 잘되는지 확인
- Finish
- Add new query popup 창 뜨면 Yes 선택
- Query Title : 쿼리의 이름 지정(구분하기 쉽도록 지정)
- Component, Version, Milestone, Satus, Resolution Type, Priority 중 자기가 검색하고 싶은 조건 선택,
- Owner에 자기 id 입력 Status에 new, reopened를 선택
-
Trac 와 SubVesrion 의 연동
-
Project 에 SVN Property 설정
- bugtraq:number true
- bugtraq:message Ticket #%BUGID%
- bugtraq:label Trac Ticket Number
- bugtraq:logregex Ticket #(Wd*)
- bugtraq:url http://203.238.193.189:8080/projects/u-CUBE/ticket/%BUGID%
-
-
TortoisSVN (SubVersion Client)
-
아래 링크에서 다운 받으시고 기존 사용하시는 TortoisCVS 와 사용 방법은 같습니다.
- http://tortoisesvn.tigris.org/
-
-
-
사용 가이드
-
-
Wiki 어떻게 할 것인가 ?
- 관련 문서 : 솔루션 소개자료, 솔루션 가이드
- 최근 뉴스
- 최근 배포판 다운로드
- 로드맵 구성 어떻게 할 것인가 ?
-
SVN Repository 의 구조 및 설명
- SVN Repository 의 등록
-
저장소의 레이아웃 : 기존 CVS 구조와 유사한 형태로 관리
-
기존의 CVS
-
버젼 관리 프로세스
-
-
프로그램 변경 추가 및 버그 수정 요청
-
- 프로그램에 대한 문제점, 개선사항 등의 수정요청은 Trac 을 이용한다.
-
Trac 의 등록 방법
-
- 티켓의 형태 : 문제점, 개선사항, 해야 할일
-
문제점의 경우는 다음의 요소는 필수임
- 버그를 재현하기 위한 완벽한 단계 (Adapter 환경 파일, 테스트 환경, 테스트 버젼 etc)
- 예상되는 결과
- 실제 결과
-
- Trunk 의 소스를 Checkout 한 후 변경하고 테스트 및 결과를 바로 Trunk 에 작업한다.
- 테스트 완료 후 안정화 버젼을 Commit 한다.
-
Project Branches 생성
- 1주 이상의 작업이 소요되거나 충돌의 우려가 있는 경우에는 Branches 를 생성하여 별도로 작업한다.
-
Bransche 생성 방법 : Trunk 이외 Branches, Tag 는 의미만 다르고 실제 동작하는 방법은 같다. 서버의 특정 공간에 작업 사본을 복사하고 작업하는 방식임, Branches (임시 작업 보관 장소), Tags (각 버젼별 Source 보관 장소)
대상 Project 의 브랜치/태그를 선택한다.
작업내용으로 branches 를 생성
-
Commit (Branches)
- Branches 에 작업한 내용을 Branches 에 반영, 이 작업은 Trunk 에 Merge 되기 전까지 작업사항을 관리 할 수 있다.
-
Merge 작업 (Trunk) - 추가 보완 필요
- 병합 작업: 병합 작업은 Trunk에 Branches의 변경/수정된 소스 내용을 병합하는 것으로 같은 File의 수정내용을 병합하는 것이 아니라 추가/삭제된 파일을 병합하는데 의미가 있다. 만일 병합시 같은 File의 내용이 틀린 경우 "충돌"이 발생한다.
- Branches의 작업이 완료 되었다면 Trunk로 Merge 하여 하나의 소스로 관리 하여야 한다.
- Merge 작업은 Branches의 변경사항과 Trunk의 변경사항을 반영 하는 작업으로 서로의 변경 사항을 꼼꼼히 확인 하여야 한다.
-
배포 Jar 버젼 추가
- 수정된 프로그램을 포함하고 있는 배포 Lib 를 버젼업 한다.
-
Tags 버젼 및 소스 추가
- 배포하는 jar 에 해당하는 Project 소스를 Tags 폴더에 아래와 같이 관리한다.
- Tag 생성 => Branches 생성 방법과 동일
-
Commit 및 버젼 증가
- 모든 사항의 변경이 완료 되었다면 수정된 내용의 Commit 을 수행한다.
- 소스의 Commit 을 위해서는 반드시 Ticket 번호가 있어야 함
-
-
Mylyn 을 이용한 Context 관리 (공부 좀 더 해야)
-
Mylyn Task List 선택
- eclipse menu Window -> Show View -> Other
- Mylyn Task List 선택
- 발급된 ticket 선택
- ticket 옆의 context 버튼 선택 (조그만한 동그라미)
-
티켓과 관련된 소스만 open 후 작업
- 작업 중간 중간에 Description 수시 udpate
- Ticket의 하단에 Planning 탭 선택 후 작업 기간 선택
- 작업 완료시 Resove as '문제가 고쳐짐' 상태를 선택하고 Attach Context 선택 후 Submit
-
-
Story - 추가 보완 필요
-
버전 관리 시스템을 사용할 때 개발자들이 소스 코드를 Commit하는 일반적인 과정
- A 기능을 구현한다.
- A 기능의 구현이 완료되기 전에 B 기능의 버그를 수정한다.
- A 기능을 구현하는 중 다른 요구사항으로 인해 C 기능을 구현한다.
- A, B, C 기능들을 일괄적으로 Commit 한다.
- 일괄적으로 Commit을 했기 때문에 A, B, C 모든 기능들에 같은 주석을 추가한다.
- 위와 같은 과정을 통해 발생하는 첫 번째 문제점은 A 기능이 완료되지 않은 상태에서 일괄 Commit을 했기 때문에 컴파일 에러가 발생하고, 이로 인해 빌드가 정상적으로 되지 않는 경우가 많다. 두 번째 문제점은 일괄 Commit을 하면서 모든 기능에 대하여 같은 주석을 추가했기 때문에, 프로젝트를 진행하는 중에 과거 소스에 대한 이력을 보더라도 해당 시점에 무슨 작업으로 인해 Commit을 했는지가 명확하지 않다는 것이다.
-
Mylyn 을 이용한 Context 관리를 하면
- Task별로 Commit이 가능하기 때문에 Task별로 주석을 추가할 수 있다.
-
위의 그림과 같이 Trac가 관리하고 있는 Task명이나 Task의 상태, URL 등에 대한 주석을 자동적으로 추가할 수도 있다.
- 프로젝트를 진행하다보면 일정상의 이유 때문에 소스 코드를 Commit할 때 주석을 추가하지 않는 경우가 많은데 Eclipse Mylyn의 이 같은 기능은 개발자들이 주석을 추가하는데 투자해야할 부담을 덜어줄 것이다.
-
-
-
참고 사이트
-
TIP
-
소스서버(SVN)에 처음에 계정으로 접속한 이후에 따로 계정을 발급 받아 소스서버에서 작업하게 되는 경우 기존의 계정이 존재하여 이클립스의 subclipse와 같은 플러그인에서 계정을 변경할 방법이 없네요.
- 이런경우에는 C:\Documents and Settings\your_username\Application Data\Subversion\auth\svn.simple\ 폴더에 있는 파일을 삭제하면 소스서버(SVN)에 다시 접속을 하게 되면 다시 계정과 패스워드를 물어보게 됩니다.
-
소스서버(SVN) 및 Trac의 IP 변경 되었을 경우 처리 방법
-
소스서버 IP 변경
-
소스서버 IP 가 변경 되었을 경우에는 가급적 아래 작업을 수행하기 전에 모든 프로젝트를 삭제 이후 아래 작업을 수행하고 변경된 소스서버로 부터 Checkout 하는 것이 원할한 작업을 수행할 수 있음
- 주의 : Close 된 프로젝트가 있을 경우에는 아래 변경을 통하여 프로젝트의 Repository 변경 정보가 반영되지 않을 수 있음, 모든 프로젝트를 오픈하거나 삭제 후 작업 수행
-
변경 방법
-
SVN Repositories 에서 변경하고자 하는 소스서버 선택 => Relocate..
-
Next 클릭
-
변경된 IP 기입 후 Finish 클릭
-
-
-
Trac (Task) Repository 의 IP 변경
-
Task Repositories 에서 변경하고자 하는 Task 서버 선택 => Properties ..
-
변경된 IP 기입 후 Finish 클릭
-
-
-
'Programming' 카테고리의 다른 글
UML2.0 용어와 정의 - 펌 (0) | 2010.05.03 |
---|---|
tech.days 2010 오픈소스를 이용한 윈도우폰 UX 애플리케이션 개발 (0) | 2010.04.29 |
홈페이지 제작에 도움이 되는 무료 오픈소스 솔루션들 - hompy.info 펌 (0) | 2010.04.06 |
S/W테스트 자동화 (0) | 2009.12.15 |
개발중심의 경량화 개발 방법론 XP 개요 (0) | 2009.12.14 |