소개

소프트웨어나 문서 등의 수정을 구분하기 위한 방식이다.

문서 등지에서 영어 단어 ‘revision (리비전)’이라는 용어를 사용하기도 한다.

규칙

버전은 작성자가 붙이는 것임으로, 정해진 규칙은 없다. 다만 버전은 보통 공개되며 모두가 알아볼 수 있어야 한다는 점 때문에 암묵적으로 익숙한 버전 규칙을 사용하는 경우가 많다.

문서를 작성하는 경우 1판 혹은 v1 처럼 정수로 간단하게 표기하기도 한다.

Semantic Versioning 2

수정 된 내용에 따라 메이저.마이너.패치로 구분하여 버전을 매기는 규칙이다.

  • 이전 버전과 호환되지 않는다면 메이저
  • 이전 버전과 호환, 새로운 기능이 추가되면 마이너
  • 이전 버전과 호환, 버그 수정 등은 패치

안정된 버전이 아닌 개발 버전, pre-release 버전을 표기할 수 있다:

패치 버전 뒤에 마이너스(-)와 마침표(.)를 이용해 표기. (ex. 1.0.0-alpha , 1.0.0-alpha.1)

  • 식별자는 반드시 ASCII 문자, 숫자, 마이너스(-)만 사용.
  • 식별자는 반드시 한 글자 이상으로 함.
  • 식별자가 숫자면 앞에 0을 붙여서는 안됨.

pre-release 버전은 일반 버전보다 우선순위가 낮고, 일반 버전과 호환되지 않을 수 있음.

빌드 메타데이터는 더하기(+)와 마침표(.)로 구성하여 표기:

  • 식별자는 반드시 ASCII 문자, 숫자만 사용.
  • 식별자는 반드시 한 글자 이상으로 함.

빌드 메타데이터는 버전 간의 우선순위 판단 시에 무시되어야 한다. 빌드 메타데이터만 다른 버전의 우선순위는 같다. (ex. 1.0.0-alpha+build.20240306 == 1.0.0-alpha+sha.5114f85)

사례

  • MariaDB는 Semantic Versioning을 따르지만, MySQL과의 버전 별 기능에 따른 혼동을 방지하기 위해 5.5 이후 메이저 버전을 건너뛰어 10.x 부터 사용한다. 참고
  • Minecraft는 alpha 버전 이후로 익숙한 x.x.x 표기를 사용했다. 다만 alpha → beta 로 넘어갈 때마다 버전을 1.0부터 새로 매겼다. 참고

TMI

  • 버전은 1580년대 프랑스어로 ‘번역’을 뜻하는 말이었다고 한다. 출처
  • 만든 프로젝트의 버전을 올리다, 버저닝이 올바르게 되고 있지 않은 듯하여 정리하기 위해 작성했다.
태그
정리
반응과 댓글 시스템은 Giscus에 의해 호스팅되며, 모든 대화는 GitHub에 저장됩니다.

출처가 명확하지 않은 내용을 신뢰하지 마세요. 글 작성자는 이로 인해 발생하는 책임을 지지 않습니다.

피드백 무엇이든 환영합니다 🤗

doda.devlicensegithubmade with ☕️