클래식 의미 체계 버전 지정 체계 "MAJOR.MINOR.PATCH"가 의미가있는 경우 배포 대상, 특히 최종 사용자 에게 배포하는시기 및 빈도에 따라 다릅니다 . 이 구성표는 4.5.0으로 시작하는 안정 릴리스 "4.5"로 작업 할 때 가장 유용합니다. 버전 4.5.1, 4.5.2 등에는 버그 수정 만 포함되어 있으며 내부적으로 이미 버전 4.6에서 작업하고 있습니다.
예를 들어, 최종 사용자에게 "안정적인 브랜치"를 제공하는 경우 초기 배포에는 버전 4.5.0, 패치를 릴리스 할 때마다 4.5.1, 4.5.2를 제공하십시오. 내부 "민첩한"개발 및 스프린트 중간 배포에서는 이미 버전 4.6을 가질 수 있으며 "베타 버전"이라고합니다. 스프린트 중간에 배포 할 때마다 "4.6.beta build 123"과 같은 자동 생성 빌드 번호를 추가하십시오. 스프린트가 끝나면 "4.6.0"을 할당하고 다음 스프린트의 버전 번호를 내부적으로 "4.7"로 전환하십시오. ".0"으로 시작하는 것은 규칙 일뿐 아니라 ".0"을 사용하여 베타 버전에 태그를 지정하고 최종 사용자의 경우 ".1"로 시작할 수도 있습니다. IMHO "베타"라는 단어는 훨씬 더 표현력이 뛰어나며, 스프린트가 "아직 완료되지 않았다"고 말합니다.
각 베타 버전으로 전체 최종 사용자 변경 로그를 릴리스하지만 적어도 스프린트 끝에서 변경 로그를 완료해야하며 최종 사용자에게 버그 수정을 제공 할 때마다 업데이트해야합니다. 역사 문서.
Inkscape, Firefox 또는 7-zip과 같은 많은 오픈 소스 제품에서 두 개의 분리 된 분기, 의미 버전 번호가있는 "안정된"분기 및 빌드 번호 또는 이와 유사한 것으로 표시된 "개발 분기"를 릴리스하는 전략을 찾을 수 있습니다.
그러나 별도의 안정적인 분기 및 개발 분기로 작업하지 않고 매일 최종 사용자에게 새 버전을 릴리스하는 경우 매일 버전 번호를 늘려야합니다. 이러한 경우 버전 번호 "4.5.1", "4.5.2"는 ... 개별 배포를 반영하고 버그 수정과 다른 변경의 차이를 나타내지 않습니다. 괜찮을 수도 있습니다. 더 이상 고전적인 "의미 적 버전 관리"가 아닙니다. 이 시나리오에서는 실제 차이가없는 버전 4.5, 4.6, 4.7, 4.8을 배포 할 수도 있습니다.
변경 로그의 항목에 대한 질문 : IMHO 최종 사용자에게 표시되는 항목은 변경 사항을 배포하자마자 변경 로그의 항목에 해당합니다. 예를 들어, 기능 토글을 사용하고 아직 사용자에게 활성화되지 않은 일부 구운 기능을 변경하면 해당 기능이 변경 로그에 속하지 않습니다. 사용자가 눈에 띄게 변경하지 않고 리팩토링 만 수행하는 경우 변경 로그에 속하지 않습니다. 일부 사용자에게 영향을 줄 수있는 버그를 수정하면 변경 로그에 해당 버그가 있으며 버그 수정을 배포 할 때 동시에 언급해야합니다. 매일 또는 매월 또는 매년 릴리스해도 문제가되지 않습니다.