전체 혼란은 MS가 "빌드 번호", 특히 "개정"에 사용 하는 서로 다른 의미론 에서 비롯됩니다 . 용어는 단지 다른 것을 의미합니다.
대부분의 사람들 (자체 포함) 은 어떤 이유로 든 새 빌드를 만들어야 할 때마다 더 높은 빌드 번호를 얻는 의미 버전 번호 체계 를 사용합니다. 우리에게는 핫픽스가 또 다른 코드 변경으로 간주되며 CI 부분이 실행될 때마다 BUILD 부분이 자동으로 증가합니다. MAJ.MIN.REV가 동일한 모듈은 상호 교환 가능한 것으로 간주되며 BUILD는 가장 최근의 모듈을 알려줍니다.
그러나 개정 개정은 새로운 영구 릴리스 브랜치를 나타내므로 BUILD 앞에 배치해야합니다. 이러한 접근 방식의 단점은 다음과 같은 일련의 이벤트를 얻을 수 있다는 것입니다.
- 커밋 번호 4711 : Alice가 기능 A를 추가 함
- CI는 빌드 1.2.3.100을 생성합니다
- 커밋 번호 4712 : Bob이 피처 B를 수정했습니다.
- 커밋 번호 4713 : Alice 고정 기능 A ( "핫픽스")
- CI는 빌드 1.2.3.101을 생성합니다
보시다시피, 핫픽스는 다음 빌드에 포함 된 유일한 변경 사항이 아니며 Bob의 수정도 해당 빌드의 일부가됩니다. 현재 브랜치를 안정화하려면 Bob이 버그를 추가했는지 여부를 확신 할 수 없으므로 문제가 발생할 수 있습니다.
MS는 두 용어를 다르게 사용합니다. BUILD 번호는 자동으로 증가하지 않으며, 특정 버전의 코드에 사용되는 코드를 고정하기 위해 일종의 릴리스 브랜치로 간주 될 수 있습니다. REVISION은 해당 BUILD 브랜치에 적용된 추가 "핫"변경을 나타냅니다. 따라서 순서는 다음과 같습니다.
- 커밋 번호 4711 : Alice가 기능 A를 트렁크 / 마스터에 추가
- Carl은 빌드 브랜치를 만듭니다.
1.2.100
- CI는 빌드 1.2.100.0을 생성합니다
- 커밋 번호 4712 : 트렁크 / 마스터의 Bob 수정 기능 B
- 커밋 번호 4713 :
1.2.100
지점의 Alice 고정 기능 A
- CI는 빌드 1.2.100.1을 생성합니다
REVISION이라는 용어는
- 제품 개정 (그건 대부분의 사람들이 그것을 사용하는 방법)
- 특정 일일 빌드 개정 (MS 가하는 일)
두 프로세스의 주요 차이점은 CI 빌드에 핫픽스를 적용 할 수 있는지 여부와 프로세스의 어느 시점에서 분기가 만들어 지는지 여부입니다. 모든 테스트에 성공한 후 언제든지 특정 빌드를 선택하고 해당 버전을 제품의 다음 공식 릴리스로 승격시키려는 경우이 측면이 중요합니다.
이 경우 CI 도구는 리포지토리 태그를 생성하므로 필요한 정보를 항상 사용할 수 있습니다. SVN을 사용하면 태그와 분기가 동일한 방식으로 정확하게 구현되므로 태그가 더 단순 해집니다. 태그는에 위치한 분기에 지나지 않습니다 /tags
.
또한보십시오
TFS 분기 전략 의 FAQ 섹션에서 :
P1 (핫픽스) 티켓을 어떤 지점에서 수정해야합니까?
P1은 프로덕션에서 실행되는 코드베이스에 가장 가까운 지점에 고정되어야합니다. 이 경우 P1은 Prod 분기에 고정되어야합니다. 다른 지점에 수정 사항을 적용하고 프로덕션 변경 사항을 적용하면 후속 반복에서 반제품 또는 테스트되지 않은 코드가 릴리스 될 위험이 있습니다.
이제 Prod 브랜치에 대해 직접 작업하는 것이 안전한지 논쟁 할 수 있습니다. 즉각주의를 기울여야하는 P1은 시스템의 근본적인 문제가되어서는 안됩니다. 근본적인 문제인 경우 고객과의 추가 분석 및 논의가 필요할 수 있으므로 제품 백 로그에 추가해야합니다.
또 다른 좋은 읽을 거리는 TFS 분기 안내서입니다