2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

서브버전 SVN의 트렁크, 브랜치, 태그의 차이점은?

_____
Q1: SVN에서 트렁크(trunk)란 무엇인가요?
A1: 트렁크는 프로젝트의 주 개발 라인(mainline)입니다. 새로운 기능 추가나 버그 수정 등의 모든 주요 개발 작업이 기본적으로 트렁크에서 이루어집니다. 보통 최신 안정화 버전이 반영되는 곳으로, 개발자들이 협업하는 중심 지점입니다.

Q2: 브랜치(branch)란 무엇이며, 어떤 용도로 사용하나요?
A2: 브랜치는 트렁크의 복사본으로, 독립적인 개발 작업을 위해 생성됩니다. 예를 들어, 새로운 기능 개발, 실험적 수정, 또는 특정 버그 수정을 격리시켜 작업할 때 사용합니다. 브랜치를 통해 메인 라인에 영향을 주지 않고 병행 작업이 가능하며, 작업 완료 후 트렁크에 병합(merge)할 수 있습니다.

Q3: 태그(tag)란 무엇인가요?
A3: 태그는 특정 시점의 소스코드 스냅샷(snapshot)입니다. 주로 릴리즈 버전(예: v1.0, v2.1.3)이나 중요한 마일스톤에 해당하는 상태를 기록하여 변경하지 않도록 관리합니다. 태그는 주로 읽기 전용으로 사용하며, 이후에 변경하는 일이 거의 없습니다.

Q4: 트렁크, 브랜치, 태그의 구조적 차이는 무엇인가요?
A4: SVN 저장소에서는 보통 다음과 같은 디렉토리 구조를 가집니다.
- `/trunk` : 메인 개발 라인
- `/branches` : 여러 작업용 브랜치들이 위치
- `/tags` : 릴리즈 등 특정 시점 소스의 복사본들 위치
이 구조는 규약이며 SVN 자체가 강제하는 것은 아니지만 표준 관행입니다.

Q5: 트렁크, 브랜치, 태그를 어떻게 생성하나요?
A5: 각각은 `svn copy` 명령어를 사용하여 생성합니다. 예를 들어:
- 브랜치 생성: `svn copy ^/trunk ^/branches/my-feature-branch -m "Create feature branch"`
- 태그 생성: `svn copy ^/trunk ^/tags/release-1.0 -m "Tagging release 1.0"`
트렁크는 기본적으로 프로젝트 시작 시 생성되며, 직접 복사하지 않습니다.

Q6: 트렁크, 브랜치, 태그의 변경 가능성 차이는?
A6:
- 트렁크 : 지속적으로 변경 및 커밋됨
- 브랜치 : 변경 및 커밋 가능, 독립적인 개발 위해 사용
- 태그 : 일반적으로 변경하지 않고 고정된 상태를 유지함 (읽기 전용으로 간주)

Q7: 브랜치와 태그는 왜 복사(copy)로 생성하나요?
A7: SVN의 `copy` 명령어는 디스크 공간을 효율적으로 사용하면서도 별도의 복사본처럼 작업할 수 있게 합니다. 결국 태그와 브랜치는 트렁크의 특정 시점 소스코드의 "가상 복사본"이며, 독립 관리가 가능합니다.

---

요약하면,
- 트렁크 : 주 개발 라인, 일상적인 개발과 변경이 일어나는 메인 경로
- 브랜치 : 트렁크에서 파생된 독립 작업 공간, 기능 개발이나 실험에 사용
- 태그 : 특정 시점의 코드 스냅샷, 릴리즈 버전 등 변경하지 않는 고정본

이 세 구분은 SVN을 통한 안정적 개발과 릴리즈 관리를 위해 매우 중요합니다.
Subversion(SVN)에서의 트렁크(trunk), 브랜치(branch), 태그(tag)는 버전 관리 시스템에서 중요한 역할을 하고 있으며, 각각의 목적과 용도가 다릅니다.

1. 트렁크 (Trunk) - 정의 : 트렁크는 주 코드베이스를 의미합니다.

프로젝트의 주요 개발 라인으로, 가장 안정적이고 최신의 상태가 반영되어야 하는 영역입니다.

- 용도 : 일반적으로 개발자들은 트렁크에서 직접 작업하며, 기능 추가나 버그 수정 등이 이루어집니다.

개발이 완료된 후에 이 코드는 배포 및 릴리스를 위해 사용됩니다.



2. 브랜치 (Branch) - 정의 : 브랜치는 트렁크로부터 분기된 개발 라인입니다.

주로 새로운 기능을 개발하거나 실험적인 변경 사항을 적용할 때 사용됩니다.

- 용도 : 특정 기능 작업이나 버그 수정을 위해 독립적인 변경을 하도록하여 안정성과 논의의 혼란을 피할 수 있습니다.

개발이 완료되면 필요에 따라 트렁크에 병합할 수 있습니다.

브랜치는 여러 개의 독립적인 작업을 동시에 진행하고자 할 때 유용합니다.



3. 태그 (Tag) - 정의 : 태그는 소프트웨어의 특정 지점을 "스냅샷"으로 저장한 것입니다.

버전 번호나 릴리스 정보를 기반으로 보통 생성됩니다.

- 용도 : 태그는 주로 릴리스 버전이나 특정 이벤트(예: 주요 업데이트)를 기록하기 위해 사용됩니다.

태그는 변경이 불가능하고, 보통 stable 상태의 코드를 참조합니다.

프로젝트의 특정 버전을 다시 검사하거나 이후에 참조할 때 유용합니다.

요약 - 트렁크 : 주 개발 라인, 최신 코드베이스. - 브랜치 : 독립적인 기능 개발이나 실험을 위한 복사본. - 태그 : 특정 릴리스 버전의 스냅샷, 변경 불가능.

이러한 구조를 통해 SVN은 효율적으로 코드 변경을 관리하고, 협업을 원활하게 할 수 있도록 지원합니다.

작성자: 최다연 [비회원] | 작성일자: 1년 전 2025-03-21 15:50:59
조회수: 198 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.