Git

Sementic Versioning

시멘틱 버저닝(Semantic Versioning)은 소프트웨어 버전 번호를 명확하게 부여하기 위한 규칙으로, GitHub의 창업자 중 한 명이 제안한 방식이다. 이 규칙에 따르면 버전 번호는 Major.Minor.Patch 형태로 구성되며, 각 부분은 자연수로 표현된다. 이러한 방식은 소프트웨어의 변경 사항을 명확하게 표현하기 위해 고안되었다.

버전 표기법 Major.Minor.Patch

  • Major: 하위 버전과 호환되지 않는 변경 사항이 도입될 때 증가한다. 대규모 변경이 있을 경우 Major 버전을 증가시키며, 이때 Minor와 Patch 버전은 0으로 초기화된다.
  • Minor: 하위 버전과 호환되면서 새로운 기능이 추가될 때 증가한다. 새로운 기능이 추가되거나 기존 기능의 사용 방법에 변화가 있더라도, 기존 API와 호환되는 경우 Minor 버전이 증가한다.
  • Patch: 버그 수정이나 사소한 변경이 있을 때 증가한다. 이는 기존 기능의 오류 수정이나 소규모 개선을 의미하며, 기존 사용자가 변경 사항을 눈치채지 못할 수도 있다.

버저닝 규칙들

  • Major, Minor, Patch는 각각 자연수이고 앞자리에 0이 붙지 않는다.
  • 각 번호의 수는 항상 양의 방향으로 증가한다.
  • 특정 버전으로 패키지를 배포하고 나면, 그 버전의 내용은 절대 변경하지 말아야 한다.
  • 변경분이 있다면 반드시 새로운 버전으로 배포해야 한다.
  • Major 버전이 변경될 때 Minor과 Patch는 0으로 초기화 된다. (Minor 변경 시 Patch도 초기화)
Major 버전이 증가하는 경우
  • 하위 버전과 호환되지 않는 변화가 발생하는 경우
  • 대대적인 변화가 발생한 경우
  • 클라이언트가 1.0.0 버전의 API 접근방식으로 2.0.0 버전에 접속 불가능한 경우
Minor 버전이 증가하는 경우
  • 하위 버전과 호환이 되면서 새로운 기능이 추가되는 경우
  • 새로운 기능이 추가된 API가 나왔지만, 기존의 API와 하위 호환 가능한 경우
  • 기존의 기능이 변경되거나 사용 방법이 변경된 경우
Patch 버전이 증가하는 경우
  • 버그 수정
  • 기존의 클라이언트가 알아차리지 못하는 사소한 변화가 발생한 경우
  • 서버 코드 내부적으로 소스가 수정된 경우
기타
  • 시멘틱 버저닝을 쓰는 소프트웨어는 반드시 공개 API를 정의해야 하고 명시적으로 문서화되어야 한다.
  • Major 버전이 0인 경우 유저에게 공개되지 않은 알파 버전으로 간주된다.
  • 1.0.0 버전부터 공개 API를 정의하고 이후의 버전은 공개 API의 변화에 따라 영향을 받는다.
  • Patch 버전 뒤에 하이픈(-)을 붙이고 마침표(.)로 구분된 식별자를 더해 프리릴리즈(Pre-release) 버전을 표기할 수 있다.
시멘틱 버저닝 공식 웹사이트