유의적 버전 2.0.0 (Semantic Versioning) 명세 요약
Source
Evernote/Inbox/유의적 버전 2.0.0 Semantic Versioning.md
Summary
의존성 지옥을 해결하기 위해 제안된 버전 관리 규칙으로, 공개 API의 변경 정도에 따라 버전 번호(X.Y.Z)를 체계적으로 올리는 방식입니다. 주 버전은 비호환 변경, 부 버전은 호환되는 기능 추가, 수 버전은 호환되는 버그 수정 시 각각 증가합니다. 또한 정식 배포 전 버전과 빌드 메타데이터 표기법 및 우선순위 규칙을 포함합니다.
Key Points
- 버전 형식: X.Y.Z (주.부.수) 형식을 사용하며, 각 숫자는 음이 아닌 정수여야 하고 0으로 시작할 수 없습니다.
- 주 버전(Major) 증가: 공개 API에 기존과 호환되지 않는 변경이 있을 때 증가하며, 부/수 버전은 0으로 초기화됩니다.
- 부 버전(Minor) 증가: 공개 API에 호환되는 새로운 기능이 추가되거나, 기존 API가 deprecated로 표시될 때 증가하며, 수 버전은 0으로 초기화됩니다.
- 수 버전(Patch) 증가: 기존 API와 호환되는 버그 수정 시에만 증가합니다.
- 초기 개발 버전: 주 버전이 0(0.y.z)인 경우 초기 개발 단계로 간주되며, 공개 API는 안정적이지 않아 언제든지 변경될 수 있습니다.
- 정식 배포 전 버전(Pre-release): 수 버전 뒤에 ’-‘를 붙여 표기하며(예: 1.0.0-alpha), 일반 버전보다 우선순위가 낮습니다.
- 빌드 메타데이터(Build Metadata): ’+’ 기호를 사용하여 표기하며(예: 1.0.0+20130313), 버전 우선순위 비교 시 무시됩니다.
- 버전 불변성: 배포된 특정 버전의 내용은 절대 변경해서는 안 되며, 변경 시 새로운 버전으로 배포해야 합니다.