explain versionning related with release.
with this could know what is trunk, branch and tag each.
배포와 관련하여 버전닝을 설명합니다.
trunk, branch, tag가 왜 있고, 어떻게 사용되는지 설명합니다.
some-0.1.2-SNAPSHOT.jar
• 그냥 현재의것을 패키징한 것이다. 배포한 것이 아니다.
• 패키징 할 때의 소스가 확보되어 있지 않다.
some-0.1.2.jar
• 버전관리되어 배포된 것이다.
• 패키징 할때의 소스가 확보되어 있다.(tag 0.1.2로)
DEV server
some-0.1.2-SNAPSHOT.jar
19.
• 패키징되어 배포된소스의 영구 보관을 의미.
• 그렇기 때문에 반드시 READ ONLY이다.
• 수정도 삭제도 안된다.
SVN
trunk
pom.xml
branches
0.1.x
tags
0.1.2
20.
• 작업 공간을의미.
• main인 trunk말고 특정 작업이 필요할 경우 생성.
• 보통 작업이 완료되면 삭제한다.
SVN
trunk
pom.xml
branches
0.1.x
tags
0.1.2
SVN
trunk
pom.xml : 0.1.2-SNAPSHOT
branches
cool
pom.xml: 0.1.2-cool-SNAPSHOT
tags
0.1.2
TEST ENV
NEXUS
some-0.1.2.jar
• 브랜치 cool는 개발을 진행하며 수시로 패키징하고 개발 서버에 설치해 볼 수도 있다.
• 하지만 배포가 아니기에 버전을 수정하거나 관리하지 않는다.
개발, 패키징
DEV server
some-0.1.2-cool-SNAPSHOT.jar 설치
SVN
trunk
pom.xml : 0.1.2-SNAPSHOT
branches
cool
pom.xml: 0.1.2-cool-SNAPSHOT
0.2.x
pom.xml : 0.2.1-SNAPSHOT
tags
0.1.2
TEST ENV
NEXUS
some-0.1.2.jar
• 0.2로 배포 준비 시작
• 배포 작업을 위한 branch 0.2.x를 생성.
• 브랜치 0.2.x의 pom 버전을 0.2.1-SNAPSHOT으로 변경
브랜치 생성
SVN
trunk
pom.xml : 0.1.2-SNAPSHOT
branches
cool
pom.xml: 0.1.2-cool-SNAPSHOT
0.2.x
pom.xml : 0.2.2-SNAPSHOT
tags
0.1.2
TEST ENV
some-0.2.2-SNAPSHOT.jar
NEXUS
some-0.1.2.jar
• 브랜치 0.2.x의 pom.xml의 버전을 0.2.2-SNAPSHOT으로 수정.
• 다시 패키징 하여 테스트 환경에 설치
패키징
설치
30.
SVN
trunk
pom.xml : 0.1.2-SNAPSHOT
branches
cool
pom.xml: 0.1.2-cool-SNAPSHOT
0.2.x
pom.xml : 0.2.9-SNAPSHOT
tags
0.1.2
TEST ENV
some-0.2.9-SNAPSHOT.jar
NEXUS
some-0.1.2.jar
• 테스트가 계속 실패한다. 브랜치의 버전은 계속 변경되어 0.2.9-SNAPSHOT이 되었다.
• 이와중에 trunk와 cool 브랜치에서는 별개의 개발이 동시에 진행되어도 무방하다.
계속 디버깅
계속 테스트 실패
개발 진행
개발 진행
SVN
trunk
pom.xml : 0.2.10-SNAPSHOT
branches
cool(pom.xml : 0.1.2-cool-SNAPSHOT)
1.0.x (pom.xml : 1.0.1-SNAPSHOT)
tags
0.1.2
0.1.3
0.2.10
TEST ENV
NEXUS
some-0.1.2.jar
some-0.1.3.jar
some-0.2.10.jar
• 오래 개발해 오던 기능 cool 개발이 완료되었다.
• trunk에서 복사하여 브랜치 1.0.x를 생성
• 브랜치 1.0.x의 버전을 1.0.1-SNAPSHOT로 변경
브랜치 생성
특정 버전에 대한배포 단계를 의미
1.2-a1(1st alpha test version)
1.2-b1(1st beta test version)
1.2-b2(2nd beta test version)
1.2-rc1(1st release candidate version)
1.2-rc2(2nd release candidate version)
1.2-r(release version)
1.2-r2(release version with another bug fixed)
1.2-r3(release version with 2nd bug fixed)
52.
some-3.5.6.jar
3 : majorversion. 아주 굵직한 변경. 하위호환포기면 무조건 Major.
5 : minor version. 기능 추가.
6 : micro/patch/build/revision version. 버그 픽스, 사소한 변경.