버전

세상에 완벽한 것은 없습니다. 코드도 마찬가지입니다. 배포 당시에는 발견하지 못했는데, 이후에 잘못된 동작을 하거나 예외적인 상황이 생겨 처리하지 못하는 동작들이 있을 수 있습니다. 또는 최종 사용자가 추가 기능을 요구할 때도 있습니다. 이때는 코드를 수정해야 합니다. 즉, 코드는 개발을 완료한 후에도 계속 수정됩니다.

코드를 수정했다면 개발자 또는 최종 사용자가 이를 확인하고 구별할 수 있어야 합니다. 코드에서 이러한 차이를 구별할 수 있게 하는 것이 바로 버전(version)입니다. 버전은 프로그램을 수정하거나 개선할 때마다 코드를 구분하려고 부여된 식별자를 의미하며, 보통 숫자를 사용합니다. 숫자가 클수록 최근에 수정된 코드입니다. 버전업(version up)은 오래된 버전의 프로그램을 최신 버전의 코드로 변경하는 것을 의미합니다.

버전 번호를 부여할 때는 약간의 규칙이 있습니다. 이 규칙은 오래 전부터 업계에서 사용하던 형태로 꼭 사용할 필요는 없지만, 가능하면 따르는 것을 권장합니다.

기본적인 버전은 단일 번호 하나로 구성되어 있습니다. 단일 번호는 프로그램에서 큰 기능을 변경했을 때 바뀝니다. 첫 자리가 0으로 시작하면 아직 초기 개발 중인 제품이라는 의미입니다. 정식 버전은 1부터 시작합니다. 이를 메이저(major) 버전이라고 합니다. 메이저 번호를 변경하면 하위 버전과 호환성이 낮아질 수도 있습니다.

메이저 버전 다음으로 작은 코드의 변화는 점(.)을 사용하여 구분합니다. 보통 두 자리 또는 세 자리 형태의 숫자로 작성합니다.

  • 두 자리: 1.0
  • 세 자리: 2.1.4

보통 두 번째 자리는 메이저 버전에서 기능을 추가하거나 변경 사항이 있을 때 바꿉니다. 다른 말로 마이너(minor) 번호라고도 합니다. 세 번째 자리는 버그 수정 등 미미한 변화가 있을 때 바꿉니다. 다른 말로 패치(patch) 버전이라고 합니다. 이처럼 세 자리 숫자 형태로 표기하는 버전을 SemVer(Semantic Versioning) 방식이라고 합니다.

Note: 버전 용어

•RC(Release Candidate): Candidate는 후보자, 지원자, 가능성 있는 사람이라는 뜻입니다. 즉, 정식 버전이 아닌 베타 버전을 의미합니다. 리눅스 배포판에서 RC 표시를 확인할 수 있습니다. RC는 안정적인 동작을 보장하지 않는 임시 제품이라고 보면 됩니다.

  • GA(General Availability): 테스트가 완료된 정식 릴리스 버전을 의미합니다. 안정된 버전입니다.

  • M(Milestone): 테스트 버전을 의미합니다. 기능들을 구현할 때마다 테스트하여 피드백을 받는 버전을 의미합니다.



깃교과서

버전 관리 시스템의 이해와 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지
깃, 소스트리, 깃허브로 실습하며 기본기를 탄탄하게 다진다!