SVN에서 브랜치, 태그 및 트렁크의 의미

2024-07-27

트렁크 (Trunk)

  • 프로젝트의 주 개발 라인을 나타냅니다.
  • 모든 새로운 코드 변경 및 업데이트는 먼저 트렁크에 커밋됩니다.
  • 가장 안정적이고 테스트된 코드 버전을 포함합니다.
  • 일반적으로 "trunk" 또는 "main"이라는 이름의 디렉토리에 저장됩니다.

브랜치 (Branch)

  • 트렁크에서 파생된 코드 복사본입니다.
  • 새로운 기능 개발, 버그 수정 또는 실험을 위해 사용됩니다.
  • 트렁크에 영향을 미치지 않고 코드 변경 작업을 수행할 수 있는 별도의 작업 공간을 제공합니다.
  • 여러 브랜치를 만들어 동시에 여러 작업을 진행할 수 있습니다.
  • 일반적으로 "branches" 디렉토리에 저장됩니다.

태그 (Tag)

  • 특정 시점의 트렁크 코드 스냅샷을 나타냅니다.
  • 릴리스 버전, 중요한 마일스톤 또는 배포 가능한 코드 버전을 식별하는 데 사용됩니다.
  • 코드 변경 내용을 추적하고 이전 버전으로 쉽게 돌아갈 수 있도록 합니다.

예시

  • 개발 팀은 새로운 기능을 개발하기 위해 트렁크에서 브랜치를 만들 수 있습니다.
  • 기능이 완료되고 테스트되면 브랜치를 트렁크에 병합하여 모든 사용자가 이용할 수 있도록 합니다.
  • 릴리스가 준비되면 릴리스 버전을 나타내는 태그를 만들 수 있습니다.

핵심 용어

  • 커밋 (Commit): 코드 변경 사항을 버전 관리 시스템에 저장하는 작업입니다.
  • 머지 (Merge): 두 개 이상의 코드 변경 사항을 결합하는 작업입니다.
  • 히스토리 (History): 코드베이스의 변경 사항을 추적하는 기록입니다.

SVN에서 브랜치, 태그 및 트렁크를 사용하면 다음과 같은 이점이 있습니다.

  • 코드 조직 및 관리 향상
  • 변경 사항 추적 및 이전 버전 복원 용이
  • 동시에 여러 작업 진행 가능
  • 릴리스 관리 및 배포 간소화



// SVN 저장소 구조 예시

// trunk 디렉토리: 프로젝트의 주 개발 라인을 포함합니다.
trunk/
    |-- src/
    |   |-- main.cpp
    |   |-- main.h
    |-- README.md
    |-- Makefile

// branches 디렉토리: 트렁크에서 파생된 브랜치를 포함합니다.
branches/
    |-- feature-new-login
    |   |-- src/
    |   |   |-- login.cpp
    |   |   |-- login.h
    |-- bugfix-memory-leak
    |   |-- src/
    |   |   |-- main.cpp

// tags 디렉토리: 특정 시점의 트렁크 코드 스냅샷을 포함합니다.
tags/
    |-- v1.0.0
    |   |-- src/
    |   |   |-- main.cpp
    |   |   |-- main.h
    |-- v1.1.0
    |   |-- src/
    |   |   |-- main.cpp
    |   |   |-- main.h
  • 이 예에서는 간단한 프로젝트의 SVN 저장소 구조를 보여줍니다.
  • trunk 디렉토리는 프로젝트의 주 개발 라인을 포함하며 src, README.mdMakefile과 같은 파일이 있습니다.
  • branches 디렉토리는 feature-new-loginbugfix-memory-leak와 같은 트렁크에서 파생된 브랜치를 포함합니다.
  • 각 브랜치에는 해당 작업과 관련된 코드 변경 사항이 포함된 자체 src 디렉토리가 있습니다.
  • tags 디렉토리는 v1.0.0v1.1.0과 같은 특정 릴리스 버전을 나타내는 태그를 포함합니다.
  • 각 태그는 해당 릴리스 시점의 트렁크 코드 스냅샷을 포함하는 자체 src 디렉토리를 가지고 있습니다.

이것은 SVN 저장소를 구성하는 방법의 간단한 예일 뿐이며 실제 프로젝트는 더 복잡한 구조를 가질 수 있습니다.

참고:

  • 이 예제는 설명 목적으로만 제공되며 실제 프로젝트에 직접 적용해서는 안 됩니다.



SVN 대체 솔루션

SVN 대신 사용할 수 있는 몇 가지 인기 있는 솔루션은 다음과 같습니다.

SVN 대체 솔루션을 선택할 때는 다음과 같은 요소들을 고려해야 합니다.

  • 팀 규모 및 작업 방식: 소규모 팀은 Git과 같은 사용하기 쉬운 시스템을 선호하는 반면, 대규모 팀은 Mercurial과 같은 더 많은 기능을 제공하는 시스템을 필요로 할 수 있습니다.
  • 기존 코드베이스: 이미 SVN 저장소를 사용하고 있다면 Git으로 마이그레이션하는 데 어려움이 있을 수 있습니다. 일부 도구는 SVN 저장소를 Git 저장소로 변환하는 데 도움을 줄 수 있습니다.
  • 필요한 기능: 특정 기능, 예를 들어 문제 추적 도구와의 통합이 필요한 경우 이를 지원하는 시스템을 선택해야 합니다.
  • 사용자 지식 및 선호도: 팀 구성원이 이미 특정 시스템을 사용하는 데 익숙하다면 이를 고려해야 합니다.

위에 언급된 옵션 외에도 다양한 버전 관리 시스템들이 존재합니다. 특정 요구 사항에 맞는 최적의 시스템을 찾는 것이 중요합니다.

추가 리소스


svn branch terminology

svn branch terminology