본문 바로가기
Programming

TOW 가이드

반응형

솔루션 컨설팅 파트 소스 관리

  1. TOW (Trac + SubVersion)

    1. TOW 의 소개

      1. TOW 0.2.2a Base : 플러그인이 전혀 설치되지 않고 트랙에 필요한 파일만 설치되어 있는 패키지

        • Python,Trac 0.10.4,Apache HTTP Server,Subversioin,SQLite,mod_python,기타
      2. TOW 0.2.2a Standard : 트랙과 이클립스 연동에 필요한 플러그인과 그 외 유용한 플러그인들이 함께 설치되어 있는 패키지.

        • TOW 0.2.2a Base 패키지플러그인,WebAdmin,XmlRpc,Eclipse Intergration,WysiWyg,매크로,기타
    2. Trac

      1. Trac 의 소개

        • Trac(보통 트랙이라고 발음함)은 오픈소스 웹 기반 프로젝트 관리 겸 버그 추적 툴이다. 엣지월 소프트웨어가 개발하였다.
        • Trac은 파이썬 언어로 작성되어 있다. 2005년 중반까지는 GNU 일반 공중 사용 허가서 하에 라이선스 되었으나, 0.9 버전부터는 수정 BSD 라이선스 하에 라이선스되고 있다. 이 라이선스들은 자유 소프트웨어 라이선스들이다.
      2. 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)
      3. 기능별 구분

        1. Wiki

          1. 트랙은 위키의 한 종류입니다. 위키는 게시판과 같이 글을 게시하고 표시하는 하나의 양식입니다. 위키는 크게 세 가지의 개념을 지니고 있습니다.

            1. 웹페이지  게시판에서 하나의 을 작성하듯 위키에서는 하나의 페이지를 작성합니다
            2. 제목  게시판에서 제목을 작성하듯 위키에서도 페이지의 제목을 작성해야합니다. 다만 글과 다르게 페이지의 같은 제목은 단 하나만 존재할 수 있습니다. 제목은 위키에서 접근할 수 있는 주소가 됩니다.
            3. 하이퍼텍스트  위키는 각 페이지를 쉽게 넘나들 수 있도록 주소를 엮어줍니다. 즉 글 본문에 해당하는 제목을 쓰게 되면 그 제목에 해당하는 페이지를 링크로 걸어주는 시스템입니다. 위키의 가장 큰 특징이라 할 수 있습니다.
          2. 위키의 장,단점

            1. 장점

              • 하이퍼텍스트로 인해 세부 내용을 일일이 링크 걸어주지 않아도 쉽게 참고할 수 있습니다.
              • 같은 주제에 해당하는 글은 허용되는 누구나 수정할 수 있기 때문에 정보의 집중도가 커집니다.
              • 글의 변화내역은 항상 저장되어 있으므로 누군가 실수로 잘못된 내용을 기입하였다면 전의 글로 롤백할 수 있습니다
              • 변화된 페이지는 최신 변화 목록에서 항상 확인할 수 있습니다
            2. 단점

              • 유저가 위키의 규칙을 잘 알아야합니다. 이는 위키의 접근장벽을 높입니다. 그렇지 않은 유저는 위키의 일관성을 해할 수 있습니다
              • 위키의 페이지를 새로 만들었으면 그 페이지를 꼭 어딘가에 연결시켜놓아야 합니다. 그렇지 않으면 페이지는 존재하나 아무도 그 페이지의 존재를 모를 수 있습니다
          3. 위키 참고

        2. 서브버젼과의 연동

          1. Timeline

            • 서브버전의 시간대 별 관리사항을 알려줍니다
          2. Browser Source

            • 소스를 둘러볼 수 있습니다
            • 파일 탐색기를 이용하듯 각 폴더를 이동할 수 있습니다. 또한 각 폴더의 리비젼이 몇인지, 최종 변경 날짜가 언제인지 등등의 정보가 나와있어 매우 편리합니다. 각 파일의 내용을 클릭하면 소스파일의 내용도 볼 수 있습니다.
            • 리비전의 변화 내용을 한 눈에 살펴볼 수 있습니다.
            • 강력하고 시각적인 탐색기능을 제공하고 있으며 이것이 별다른 설치 없이 누구에게나 보여줄 수 있습니다. 따라서 개발자가 아닌 다른 사람에게도 웹 페이지를 보여주는 것만으로 소스나 자원을 쉽게 가져가도록 할 수 있습니다. 물론 개발자가 보기에도 충분히 훌륭합니다.
        3. 프로젝트 관리

          1. Ticket

            1. 하나의 개발 이슈입니다. 이것은 버그 수정이 될 수도 있고 새로운 기능 추가가 될 수도 있습니다. 프로젝트에 있어서 변경사항이 필요한 최소 단위라고 보시면 되겠습니다.

              1. 티켓 제목  Arrange Damage 라는 글자가 맨 위에 보이시는지요? 바로 이 티켓의 제목입니다. 티켓의 제목은 이 티켓의 내용을 함축하고 있어야겠죠.
              2. 발행 날짜
              3. Reported by 이건 티켓을 발행한 사람입니다. 티켓 발행자는 프로젝트 일원이면 누구나 발행할 수 있습니다. 버그를 발견했거나 기능을 추가할 필요성이 있을 때 그 당사자가 발행하면 되겠죠.
              4. Assigned to  개발자 자신이 티켓을 접수할 수도 있고, 혹은 프로젝트 매니저가 해당 개발자에게 직접 넘길 수도 있습니다. 티켓을 받은 사람은 티켓을 처리하거나 다시 티켓을 딴 사람에게 넘기던가 하면 됩니다.
              5. Priority  티켓의 중요도를 나타냅니다. 매우심각한 < 심각한 < 보통 < 사소한 < 매우사소한 의 순으로 나뉩니다.
              6. Milestone  이 티켓이 속한 마일스톤을 나타냅니다. 마일스톤에 대한 내용은 다음 항목에서 설명하도록 하겠습니다.
              7. Component  이 티켓이 관여하는 모듈이 무엇인지 나타냅니다. 예를 들어 클라이언트 어플리케이션이 있고 스크립팅 툴이 있다면 그것들이 컴포넌트가 될 수 있겠죠.
              8. Version  이 티켓이 유효한 버전을 나타냅니다. 이것은 리비젼과는 다르게 취급됩니다.
              9. Keywords  이곳에 해당하는 키워드들을 등록합니다. 이 키워드들은 나중에 검색할 때 효과적으로 동작합니다.
              10. Cc  티켓 발행자를 제외한 다른 사람에게도 이 티켓에 변경사항이 있을 때 메일을 보내도록 합니다. 참조라고도 하죠.
              11. Description  티켓의 세부 설명을 적습니다. 위키 문법을 이용할 수 있으므로 하이퍼텍스트로 다른 페이지를 연결하는 것도 가능합니다.
          2. MileStone

            1. 마일스톤은 각각의 마감 시한을 나타냅니다.
            2. 패치 올리는 날, 클로즈 베타 시행하는 날, 프로토 타입을 올리는 날. 그 어떤 것이 될 수도 있습니다. 마일스톤은 그 마감 시한과 티켓들을 지니고 있으며 그것을 예쁜 그래프로 표시해줍니다.

    3. SubVersion

      1. 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 에서는 오픈소스 프로젝트를 위해 서브버전 호스팅을 하고 있다.
        • 버전 관리 시스템은 파일 서버와 동일하지만 이전의 변경사항들을 기억하고 있어서 다음과 같은 장점이 있다.

          • 개발 버전과 릴리즈 버전이 섞이지 않고 쉽게 관리 할 수 있다.
          • 소스를 잘못 수정 했더라도 기록이 남고 되돌리기가 쉽다.
          • 수정, 추가, 삭제 등의 기록이 모두 남고 변경 사항을 추적하기 쉽다.
          • 개발자들이 따로 따로 백업을 하지 않아도 된다.
      2. SubVersion 특징

        1. 대부분의 CVS 특징을 가짐.

          • Subversion은 CVS를 대체하기 위해 개발되어 클라이언트-서버 구조, 복사본 동시 작업, 비교, 로그, 스냅샷, 브랜치 관리, 압축 등 대부분의 CVS 특징을 가지고 있다.
        2. 디렉토리, 파일 이름 변경, 이동, 메타 데이터(속성) 버전 관리도 지원.

          • CVS는 개별 파일의 히스토리만 기록하지만, Subversion은 디렉토리 전반의 모든 변화를 기록하며, 파일과 디렉토리에 보이지 않는 속성(임의의 키/값)을 설정하고 버전 관리할 수 있다.
        3. 커밋 단위가 파일이 아닌 체인지셋이다.

          • CVS에서라면 여러 개의 파일을 한꺼번에 커밋하더라도 각각의 파일마다 리비전이 별도로 붙지만, Subversion에서는 파일별 리비전이 없고 한번 커밋할 때마다 전체 변경 사항에 대해 리비전이 하나씩 증가한다.
        4. 원자적 커밋

          • CVS에서는 여럿이 동시 커밋할 때 종종 충돌이 발생하는데 Subversion에서는 더 이상 그런 일이 없어졌다.
        5. 효율적인 브랜칭/태깅

          • Subversion은 브랜치와 태그들을 하드 링크와 비슷한 메커니즘을 이용하여 프로젝트를 단순 복사하는 방법으로 생성하므로 매우 빠르다.
        6. CVS와 매우 유사한 사용법.

          • CVS 사용자라면 누구나 어려움없이 금방 배울 수 있다
        7. 저장소/프로젝트별 환경 설정 가능. 트리별, 파일별 접근 제어 리스트

          • 저장소 쓰기 접근을 가진 개발자라도 아무 소스나 수정하지 못하게 조절할 수 있다.
        8. 네트워크 계층 선택

          • Subversion 고유 프로토콜(svn://), SSH로 svn 터널링 (svn+ssh://), Apache HTTP서버에 확장 모듈(WebDAV/DeltaV)로 플러그인(http://) 등을 선택할 수 있다.
        9. 확장성

          • 잘 설계된 API를 제공하여 여러 언어에서 사용 및 유지보수가 쉽다.
        10. 커밋 통지 메일 스크립트 기본 제공

          • CVS에서라면 스크립트를 따로 구해서 써야 하는 번거로움이 있었지만, Subversion은 기본 제공 스크립트를 이용해서 훨씬 손쉽게 설정이 가능하다.
      3. SubVersion Arch'

        • 2009-07-01_114833.png
    4. Mylyn 의 소개

      • 태스크들을 Eclipse로 완벽하게 통합하고, 그러한 태스크들의 콘텍스트(context)을 자동으로 관리함으로써 생산성을 향상 시킴
      • 태스크 관리 장치와 Bugzilla, Trac, JIRA 같은 저장소와의 통합하여 관리
      • 콘텍스트 관리로 쉬운 멀티 태스킹 및 정보 오버로드를 줄일 수 있음
      • 상세내용 : http://www.ibm.com/developerworks/kr/series/j-mylyn.html
    5. Eclipse
    6. TOW 와 Eclipse 간의 컴포넌트 구성도

      •  2009-07-02_133612(1).png by gliffy.com
  2. 프로젝트 관리

    1. TOW 의 관리 특성

      1. TOW 는 하나의 Trac 에 하나의 SubVersion Repository 를 관리함
      2. 프로젝트 단위의 운영 (Wiki, SVN, Ticket)
    2. 대분류, 소분류를 통한 소스 관리

      1. 대분류 : u-CUBE, Glue, PosBee, UI-Maker

      2. 소분류

        1. u-CUBE : 00.GMES, channel, CubeManager, EAISender, ejbtest, GoodSoftware, jboss-4.0.3SP1, mestopic, QueueUtil, seadapter, seadapterJVM13, uUCBE_installer, uCUBE3_installer, uCUBEAdapter, uCUBEAdapterEntob, wrapper
        2. Glue :
        3. PosBee :
        4. UI-Maker :
  3. 설치 가이드

    1. TOW : Client 의 경우 설치 필요 없음
    2. Eclipse + SubVersion + Mylyn + Trac

      1. SubVersion 설치 및 연결

        1. eclipse menu Help->Software Updates->Find and Install.
        2. Search for new features to install -> Next.
        3. New Remote Site 선택.
        4. Name에 "SubClipse" 입력, URL에 아래 입력

        5. SubVersion 연결

          1. eclipse menu Window ->Show View ->Other -> SVN -> SVN Repository 선택.
          2. SVN Repository 화면에서 우클릭 NEW
          3. 2009-07-03_110722.png
          4. http://203.238.193.189:8080/svn/u-CUBE (생성한 Trac Project를 지정 : Glue, UI-Maker, PosBee)
          5. Finish 클릭
      2. Mylyn 설치 방법

        1. eclipse menu Help->Software Updates->Find and Install.
        2. Search for new features to install -> Next.
        3. New Remote Site 선택.
        4. Name에 "Mylyn" 입력 , URL에 아래 버젼에 맞도록 입력

        5. Select OK
        6. Mylyn box 선택 후 Finish
      3. Mylyn Trac Connector (3.2 이하의 경우 사용불가)

      4. Trac 연결

        1. eclipse menu Window -> Show View -> Other
        2. Tasks Task Repositories 선택
        3. Task Repositores -> 마우스 우측 버튼 선택 -> Add Task Repository
        4. Trac 선택 -> Next
        5. Server: http://203.238.193.189:8080/projects/u-CUBE (생성한 Trac Project를 지정 : Glue, UI-Maker, PosBee)
        6. Label : Test Trac Repository (본인이 원한는 이름으로 지정)
        7. Anonymous Access uncheck
        8. UserID : 발급된 id 입력 (회사 Mail ID)
        9. Password : 발급된 passwd 입력 (jms123)
        10. Save Password check
        11. Additionla Settings 선택
        12. Access Type : XML-RPC Plugin 선택
        13. Validate Settings 선택 후 연결이 잘되는지 확인
        14. Finish
        15. 2009-07-02_135801.png
        16. Add new query popup 창 뜨면 Yes 선택
        17. Query Title : 쿼리의 이름 지정(구분하기 쉽도록 지정)
        18. Component, Version, Milestone, Satus, Resolution Type, Priority 중 자기가 검색하고 싶은 조건 선택,
        19. Owner에 자기 id 입력 Status에 new, reopened를 선택
      5. Trac 와 SubVesrion 의 연동

        1. Project 에 SVN Property 설정

      6. TortoisSVN (SubVersion Client)

        1. 아래 링크에서 다운 받으시고 기존 사용하시는 TortoisCVS 와 사용 방법은 같습니다.

          • http://tortoisesvn.tigris.org/
  4. 사용 가이드

    1. Wiki 어떻게 할 것인가 ?

      1. 관련 문서 : 솔루션 소개자료, 솔루션 가이드
      2. 최근 뉴스
      3. 최근 배포판 다운로드
    2. 로드맵 구성 어떻게 할 것인가 ?
    3. SVN Repository 의 구조 및 설명

      1. SVN Repository 의 등록
      2. 저장소의 레이아웃 : 기존 CVS 구조와 유사한 형태로 관리

        • 2009-07-13_144439.png
      3.  기존의 CVS 

    4. 버젼 관리 프로세스

      • 2009-07-02_153604(1).png
      1. 프로그램 변경 추가 및 버그 수정 요청

        1. 프로그램에 대한 문제점, 개선사항 등의 수정요청은 Trac 을 이용한다.
        2. Trac 의 등록 방법

          1. 티켓의 형태 : 문제점, 개선사항, 해야 할일
          2. 문제점의 경우는 다음의 요소는 필수임

            • 버그를 재현하기 위한 완벽한 단계 (Adapter 환경 파일, 테스트 환경, 테스트 버젼 etc)
            • 예상되는 결과
            • 실제 결과
        1. Trunk 의 소스를 Checkout 한 후 변경하고 테스트 및 결과를 바로 Trunk 에 작업한다.
        2. 테스트 완료 후 안정화 버젼을 Commit 한다.
      2. Project Branches 생성

        1. 1주 이상의 작업이 소요되거나 충돌의 우려가 있는 경우에는 Branches 를 생성하여 별도로 작업한다.
        2. Bransche 생성 방법 : Trunk 이외 Branches, Tag 는 의미만 다르고 실제 동작하는 방법은 같다. 서버의 특정 공간에 작업 사본을 복사하고 작업하는 방식임, Branches (임시 작업 보관 장소), Tags (각 버젼별 Source 보관 장소)

          1. 2009-07-03_112142.png대상 Project 의 브랜치/태그를 선택한다.
          2. 2009-07-03_112451.png 작업내용으로 branches 를 생성
        3. Commit (Branches)

          • Branches 에 작업한 내용을 Branches 에 반영, 이 작업은 Trunk 에 Merge 되기 전까지 작업사항을 관리 할 수 있다.
        4. Merge 작업 (Trunk) - 추가 보완 필요

          1. 병합 작업: 병합 작업은 Trunk에 Branches의 변경/수정된 소스 내용을 병합하는 것으로 같은 File의 수정내용을 병합하는 것이 아니라 추가/삭제된 파일을 병합하는데 의미가 있다. 만일 병합시 같은 File의 내용이 틀린 경우 "충돌"이 발생한다.
          2. Branches의 작업이 완료 되었다면 Trunk로 Merge 하여 하나의 소스로 관리 하여야 한다.
          3. Merge 작업은 Branches의 변경사항과 Trunk의 변경사항을 반영 하는 작업으로 서로의 변경 사항을 꼼꼼히 확인 하여야 한다.
        5. 배포 Jar 버젼 추가

          • 수정된 프로그램을 포함하고 있는 배포 Lib 를 버젼업 한다.
        6. Tags 버젼 및 소스 추가

          1. 배포하는 jar 에 해당하는 Project 소스를 Tags 폴더에 아래와 같이 관리한다.
          2. Tag 생성 => Branches 생성 방법과 동일
      3. Commit 및 버젼 증가

        1. 모든 사항의 변경이 완료 되었다면 수정된 내용의 Commit 을 수행한다.
        2. 소스의 Commit 을 위해서는 반드시 Ticket 번호가 있어야 함
        3. 2009-07-03_090050.png
    5. Mylyn 을 이용한 Context 관리 (공부 좀 더 해야)

      1. Mylyn Task List 선택

        1. eclipse menu Window -> Show View -> Other
        2. Mylyn Task List 선택
      2. 발급된 ticket 선택
      3. ticket 옆의 context 버튼 선택 (조그만한 동그라미)
      4. 티켓과 관련된 소스만 open 후 작업

        • 작업 중간 중간에 Description 수시 udpate
        • Ticket의 하단에 Planning 탭 선택 후 작업 기간 선택
      5. 작업 완료시 Resove as '문제가 고쳐짐' 상태를 선택하고 Attach Context 선택 후 Submit
    6. Story - 추가 보완 필요

      1. 버전 관리 시스템을 사용할 때 개발자들이 소스 코드를 Commit하는 일반적인 과정

        • A 기능을 구현한다.
        • A 기능의 구현이 완료되기 전에 B 기능의 버그를 수정한다.
        • A 기능을 구현하는 중 다른 요구사항으로 인해 C 기능을 구현한다.
        • A, B, C 기능들을 일괄적으로 Commit 한다.
        • 일괄적으로 Commit을 했기 때문에 A, B, C 모든 기능들에 같은 주석을 추가한다.
        • 위와 같은 과정을 통해 발생하는 첫 번째 문제점은 A 기능이 완료되지 않은 상태에서 일괄 Commit을 했기 때문에 컴파일 에러가 발생하고, 이로 인해 빌드가 정상적으로 되지 않는 경우가 많다. 두 번째 문제점은 일괄 Commit을 하면서 모든 기능에 대하여 같은 주석을 추가했기 때문에, 프로젝트를 진행하는 중에 과거 소스에 대한 이력을 보더라도 해당 시점에 무슨 작업으로 인해 Commit을 했는지가 명확하지 않다는 것이다.
      2. Mylyn 을 이용한 Context 관리를 하면

        1. Task별로 Commit이 가능하기 때문에 Task별로 주석을 추가할 수 있다.
        2. 위의 그림과 같이 Trac가 관리하고 있는 Task명이나 Task의 상태, URL 등에 대한 주석을 자동적으로 추가할 수도 있다. 

          • 프로젝트를 진행하다보면 일정상의 이유 때문에 소스 코드를 Commit할 때 주석을 추가하지 않는 경우가 많은데 Eclipse Mylyn의 이 같은 기능은 개발자들이 주석을 추가하는데 투자해야할 부담을 덜어줄 것이다.
        3.  
  5. 참고 사이트

    1. http://www.ibm.com/developerworks/kr/series/j-mylyn.html
    2. http://www.dbguide.net/blog/post/post_view.jsp?urlid=nicekkh&pnum=14537
    3. http://www.open.collab.net/scdocs/SVNTips.html.ko
    4. http://docs.ssen.name/entry/AS3-Friends-Trac-on-Windows-Subclipse-Mylyn
    5. http://minimonk.tistory.com/437
  6. TIP

    1. 소스서버(SVN)에 처음에 계정으로 접속한 이후에 따로 계정을 발급 받아 소스서버에서 작업하게 되는 경우 기존의 계정이 존재하여 이클립스의 subclipse와 같은 플러그인에서 계정을 변경할 방법이 없네요.

      • 이런경우에는 C:\Documents and Settings\your_username\Application Data\Subversion\auth\svn.simple\ 폴더에 있는 파일을 삭제하면 소스서버(SVN)에 다시 접속을 하게 되면 다시 계정과 패스워드를 물어보게 됩니다.
    2. 소스서버(SVN) 및 Trac의 IP 변경 되었을 경우 처리 방법

      1. 소스서버 IP 변경

        1. 소스서버 IP 가 변경 되었을 경우에는 가급적 아래 작업을 수행하기 전에 모든 프로젝트를 삭제 이후 아래 작업을 수행하고 변경된 소스서버로 부터 Checkout 하는 것이 원할한 작업을 수행할 수 있음

          • 주의 : Close 된 프로젝트가 있을 경우에는 아래 변경을 통하여 프로젝트의 Repository 변경 정보가 반영되지 않을 수 있음, 모든 프로젝트를 오픈하거나 삭제 후 작업 수행
        2. 변경 방법

          1. SVN Repositories 에서 변경하고자 하는 소스서버 선택 => Relocate..

            • 2009-12-11_101343.jpg
          2. Next 클릭

            • 2009-12-11_103117.jpg
          3. 변경된 IP 기입 후 Finish 클릭

            • 2009-12-11_103208.jpg
      2. Trac (Task) Repository 의 IP 변경

        1. Task Repositories 에서 변경하고자 하는 Task 서버 선택 => Properties ..

          • 2009-12-11_103833.jpg
        2. 변경된 IP 기입 후 Finish 클릭

          • 2009-12-11_103944.jpg

 

 http://dhokim.springnote.com/pages/3745369?print=1 퍼옴

반응형