본문 바로가기
코딩취미/프로그램 지식

트렁크(trunk)/브랜치(branch)/태그(tag) 프로젝트 흐름

by 브링블링 2024. 1. 10.
반응형

트렁크(trunk)/브랜치(branch)/태그(tag) 프로젝트 흐름

트렁크(trunk), 브랜치(branch), 태그(tag)를 사용하는 프로젝트 관리 방법은 버전 관리 시스템, 특히 Git과 같은 분산 버전 관리 시스템에서 중요합니다. 이 방법론은 소프트웨어 개발 프로젝트의 구조화 및 관리를 용이하게 하며, 팀 작업의 효율성과 코드의 안정성을 높이는 데 기여합니다.

 

1. 트렁크(Trunk)

  • 정의: 트렁크는 프로젝트의 주 개발 라인입니다. 이는 항상 안정적인 상태를 유지해야 하며, 프로젝트의 최신 "작업 가능" 버전을 나타냅니다.
  • 사용 방법: 모든 주요 개발은 트렁크를 기반으로 시작됩니다. 새로운 기능이나 큰 변경이 필요한 경우, 트렁크에서 브랜치를 생성하여 작업합니다.
  • 목적: 트렁크는 항상 릴리스 가능한 상태를 유지해야 하며, 프로젝트의 안정성과 지속적인 진행을 보장합니다.
프로그래밍에서 "트렁크(trunk)"라는 용어는 소프트웨어 개발의 버전 관리 시스템에서 유래합니다. 이는 큰 나무의 '줄기'나 '본체'를 의미하는데, 소프트웨어 개발에서는 프로젝트의 주요 개발 라인을 의미합니다. 트렁크는 가장 안정적이고, 가장 최신의 개발 상태를 반영하는 코드의 '기본선'이 됩니다. 여기서 파생되는 브랜치(branch)는 트렁크에서 분기하여 별도로 개발되는 코드의 줄기를 의미하며, 이는 나중에 다시 트렁크에 병합(merge)될 수 있습니다.

2. 브랜치(Branch)

  • 정의: 브랜치는 트렁크로부터 분기되어 별도의 개발 작업을 위한 경로를 제공합니다.
  • 사용 방법: 특정 기능 개발, 버그 수정, 실험적인 변경 등을 위해 브랜치를 생성합니다. 브랜치는 트렁크와 독립적으로 작업할 수 있으며, 작업이 완료되면 트렁크에 병합(merge)됩니다.
  • 목적: 브랜치를 사용하면 복잡한 기능 개발이나 실험적인 변경을 주 개발 라인에 영향을 주지 않고 진행할 수 있습니다.

3. 태그(Tag)

  • 정의: 태그는 프로젝트의 특정 지점을 표시하는 데 사용됩니다. 보통 안정적인 릴리스 버전을 표시하는 데 사용됩니다.
  • 사용 방법: 소프트웨어가 새로운 안정적인 버전으로 릴리스될 준비가 되면, 해당 시점의 트렁크에 태그를 생성합니다. 태그는 변경되지 않는 스냅샷처럼 작동합니다.
  • 목적: 태그를 사용하면 특정 버전의 코드를 쉽게 찾고, 릴리스 버전을 명확히 구분할 수 있습니다.
분류 설명 특징 해야 할 일
트렁크(Trunk) 소프트웨어 프로젝트의 메인 라인, 가장 기본적이고 안정적인 코드 상태 프로젝트의 핵심 코드, 항상 안정적인 상태 유지, 모든 개발의 기준점 브랜치를 통한 새 기능 개발 후 검증을 거쳐 트렁크로 병합
브랜치(Branch) 특정 목적을 위해 트렁크에서 분기한 개발 라인 (예: 새 기능 개발, 버그 수정) 특정 목적을 위한 별도의 개발 라인, 트렁크와 독립적인 작업 공간, 다양한 실험과 수정 가능 목적에 따른 작업 수행 후 테스트 및 검증을 거쳐 트렁크에 병합
태그(Tag) 특정 시점의 프로젝트 상태를 표시 (주로 안정적인 릴리스 버전) 특정 시점의 스냅샷, 변경되지 않음, 릴리스나 중요한 마일스톤 표시 안정적인 릴리스 버전 마련 시 해당 시점을 태그로 표시
반응형

프로젝트 관리 흐름

  1. 프로젝트 시작(초기화): 프로젝트를 시작하고, 버전 관리 시스템(예: Git)에 트렁크를 만듭니다. 이 트렁크는 프로젝트의 주요 개발 라인이 됩니다.
  2. 기능 개발 또는 변경: 새 기능이나 변경사항이 필요한 경우 트렁크에서 브랜치를 생성합니다.
  3. 브랜치 개발: 브랜치에서 개발 작업을 진행하고, 필요한 테스트를 완료합니다.
  4. 코드 리뷰와 테스트: 개발된 기능이나 수정 사항은 코드 리뷰를 거치고, 테스트를 통해 안정성을 검증합니다.
  5. 병합(Merging): 검증된 코드는 트렁크에 병합되어, 트렁크가 최신 상태를 유지하게 됩니다.
  6. 릴리스 준비: 안정적인 버전이 준비되면 트렁크에 태그를 생성하여 릴리스 버전을 표시합니다.

 

* 프로젝트 진행 예시 :

  • 프로젝트 이름: MyProject
  • 트렁크(Trunk):
    • 메인 개발 라인인 trunk에는 프로젝트의 안정적인 코드가 유지됩니다.
  • 브랜치(Branch):
    • 새로운 기능 'FeatureA' 개발을 위해 trunk에서 feature-A 브랜치를 생성합니다.
    • 버그 수정을 위해 bug-fix-001 브랜치를 생성합니다.
  • 태그(Tag):
    • 안정적인 릴리스 버전 v1.0을 준비할 때, 해당 시점에서 v1.0 태그를 생성합니다.

이 프로젝트에서 각 단계는 다음과 같은 흐름으로 진행됩니다: trunk에서 feature-A와 bug-fix-001 브랜치를 생성 → 각 브랜치에서 개발 및 테스트 수행 → 완료 후 trunk에 병합 → 안정적인 릴리스 버전이 준비되면 v1.0 태그 생성. 이러한 과정을 통해 효율적이고 체계적인 개발 관리가 가능합니다.

반응형