문제

내 질문은 어떤 유형의 프로젝트에 어떤 버전 명명 체계를 사용해야하는지입니다.

Major.mior.fix는 매우 일반적이지만, 심지어 4 개의 숫자로 이어질 수 있습니다 (예 : Firefox 2.0.0.16). 일부는 홀수 숫자가 개발자 보상을 나타내고 숫자 안정적인 릴리스를 나타내는 모델을 가지고 있습니다. 그리고 모든 종류의 첨가물은 -dev3, -rc1, sp2 등과 같은 믹스에 들어갈 수 있습니다.

하나의 체계보다 하나의 체계를 선호하는 이유가 있으며 다른 유형의 프로젝트 (즉, 오픈 소스 대 폐쇄 소스)가 다른 버전 명명 체계를 가져야합니까?

도움이 되었습니까?

해결책

거기 있습니다 이것에 대한 좋은 답변 (많은 개인적인 취향, 종교 전쟁에 대한 Gizmo의 의견을 참조하십시오)

을 위한 공공의 응용 프로그램, 표준 전공 .minor.revision.build는 최상의 IMO- 공개 사용자가 자신이 가지고있는 프로그램의 어떤 버전과 어느 정도까지 버전이 얼마나 멀리 떨어져 있는지 쉽게 알 수 있습니다.

을 위한 집에서 사용자가 응용 프로그램을 요청하지 않은 응용 프로그램은 응용 프로그램에 의해 배포가 처리되며 사용자는 헬프 데스크에 전화를 걸고, 많은 상황에서 더 잘 작동하도록 연도를 찾았습니다. 따라서이 버전 번호는 해독되어 헬프 데스크에 더 유용한 정보를 제공하여 공개 버전 작성 번호 체계를 제공 할 수 있습니다.

그러나 하루가 끝나면 나는 무엇보다도 하나의 추천을 할 것입니다. 일관성을 유지할 수있는 시스템을 사용하십시오. 컴파일러를 설정/스크립트 할 수있는 시스템이있는 경우 매번 자동으로 사용할 수 있습니다. 그것을 사용하십시오.

일어날 수있는 최악의 일은 이전 버전 번호와 동일한 버전 번호를 가진 바이너리를 출시하는 것입니다. 최근에 자동화 된 네트워크 오류 보고서 (누군가 ELSES 응용 프로그램)를 다루고 있으며 연도. Month.day. 애플리케이션 자체를 원격으로 최신 상태로 만들지 않는 코어 덤프에 표시된 버전 번호를 빌드합니다 (응용 프로그램 자체는 실수가있는 스플래시 화면을 사용했습니다. 결과적으로 충돌 덤프가 2 년 된 바이너리 (버전 번호가 표시) 또는 2 개월 된 바이너리에서 오는지 알 수있는 방법이 없으므로 올바른 소스 코드를 얻을 수있는 방법이 없습니다 (소스 제어 없음! )

다른 팁

우리가 회사에서 사용하는 것은 다음과 같습니다. 주요한.미성년자.패치 버전.빌드 번호 .

그만큼 주요한 변경에는 마케팅 참여 등을 포함한 전체 릴리스주기가 포함됩니다.이 숫자는 R & D 외부의 힘에 의해 제어됩니다 (예 : 내가 근무한 장소 중 하나에서 마케팅은 다음 버전이 경쟁 업체와 일치하기 위해 '11'이라고 결정했습니다. 우리는 당시 버전 2에 있었다 :)).

미성년자 새로운 기능이나 주요 행동 변경이 제품에 추가 될 때 변경됩니다.

패치 버전 패치가 공식적으로 버전에 추가 될 때마다 하나씩 올라갑니다. 일반적으로 버그 수정 만 포함합니다.

빌드 버전 고객을 위해 특수 버전이 릴리스 될 때 사용됩니다. 일반적으로 버그 수정이 포함됩니다. 일반적으로 해당 수정 사항은 다음 패치 또는 마이너 버전에 대해 롤업됩니다 (제품 관리는 일반적으로 버그를 추적 시스템에서 "패치 3 용 릴리스"로 표시합니다).

나는 큰 팬입니다 시맨틱 버전 작성

다른 많은 사람들이 언급했듯이 이것은 XYZ 형식을 사용하고 그 이유에 대한 충분한 이유를 제시합니다.

R & D 부서는 1.0.0.0.0.000 : major.minor.patch.audience.critical_situation.build를 사용합니다

제발, 제발, 그렇게하지 마십시오.

이런 종류의 질문은 객관적인 측면보다 종교 전쟁에 관한 것입니다. 번호 계획 또는 다른 사람에 대한 항상 수많은 장단점이 있습니다. 사람들이 당신에게 줄 수있는 모든 것은 그들이 사용한 계획과 그들이 그것을 선택하는 이유입니다.

내 편에 xyz 구성표를 모두 사용합니다. 모든 숫자는 다음과 같습니다.

  • 엑스 뒤로 비 호환성을 소개하는 공개 API의 변경 사항을 나타냅니다.
  • 와이 일부 기능이 추가되었음을 나타냅니다
  • 수정을 표시합니다 (버그 수정, 기능에 영향을주지 않고 내부 구조를 변경)

결국 공식 릴리스가 완료되기 전에 사용자의 피드백을 원한다면 "Beta N"접미사를 사용합니다. 아무도 완벽하지 않기 때문에 "RC"접미사는 없으며 항상 버그가있을 것입니다 ;-)

나는 개인적으로 Major.minor.bugfix-suffix를 선호합니다 dev 개발 버전 (버전 제어 체크 아웃), rc1 / rc2 릴리스 후보 및 릴리스 버전에 대한 접미사가 없습니다.

개발 체크 아웃을위한 접미사가있는 경우 개정 번호가있는 경우에도 해당되기 위해 짝수/홀수를 만들 필요가 없습니다.

우리는 선호합니다 major.minor.milestone.revision-build 체계, 여기서 :

  • major: 중요한 건축 변화 또는 기능의 중요한 발전에 따라 증가합니다.
  • minor: 건축 변화가 필요하지 않은 작은 변화와 새로운 기능.
  • milestone: 코드의 안정성과 성숙도를 나타냅니다.
    • 개발/사전 알파의 경우 0
    • 알파의 경우 1
    • 베타 용 2
    • 릴리스 후보 (RC)의 3
    • 최종/생산 릴리스 용 4
  • revision: 릴리스, 패치 또는 버그 수정 번호를 나타냅니다.
  • build: 응용 프로그램의 특정 빌드 또는 버전에 대한 고유 한 참조. 빌드 번호는 순차적 정수이며 일반적으로 각 빌드에서 증가합니다.

예 :

  • 1.4.2.0-798: 버전의 첫 번째 베타 릴리스 1.4, 빌드 번호로 생성되었습니다 798.
  • 1.8.3.4-970: 1.8-RC4, 빌드 번호로 생성되었습니다 970.
  • 1.9.4.0-986: 버전의 첫 번째 프로덕션 릴리스 1.9, 빌드 번호로 생성되었습니다 986.
  • 1.9.4.2-990: 버전의 두 번째 버그 픽스 릴리스 1.9, 빌드 번호로 생성되었습니다 990.

Prodcution 릴리스는 항상 가지고 있기 때문입니다 4 버전 문자열의 3 자리에서는 생산 릴리스를 위해 숫자를 제거 할 수 있습니다.

라이브러리의 경우 버전 번호가 호환성 수준 두 릴리스 사이에서 업그레이드가 얼마나 어려울 지.

버그 수정 릴리스는 이진, 소스 및 직렬화 호환성을 보존해야합니다.

사소한 릴리스는 프로젝트마다 다른 것을 의미하지만 일반적으로 소스 호환성을 보존 할 필요는 없습니다.

주요 버전 번호는 세 가지 양식을 모두 깨뜨릴 수 있습니다.

나는 이론적 근거에 대해 더 많이 썼다 여기.

민첩한 소프트웨어 개발 관행과 SaaS 응용 프로그램을 통해 전공 대 미성년 릴리스에 대한 아이디어가 사라졌습니다. 릴리스는 정기적으로 매우 자주 나옵니다. 따라서 이러한 차이에 의존하는 릴리스 번호 체계는 더 이상 유용하지 않습니다.

우리 회사는 릴리스가 시작된 연도의 마지막 2 자리를 차지한 다음 해에 출시 숫자를 차지하는 번호 체계를 사용합니다.

따라서 2012 년에 시작된 4 번째 릴리스는 12.4입니다.

필요한 경우 "버그 수정"버전 번호를 포함시킬 수 있지만 이상적으로는 종종 필요하지 않은 경우 자주 공개하는 것입니다. "12.4.2".

이것은 매우 간단한 체계이며 이전에 사용한 다른 릴리스 번호 체계의 문제를 우리에게 제공하지 않았습니다.

가까운 소스 버전 번호 정책의 차이점은 상업적 측면, 주요 버전이 예를 들어 릴리스 연도를 반영 할 수있는 경우.

우리가 여기서했던 일은입니다 major.minor.platform.fix.

주요한:이 빌드에서 저장된 파일이 더 이상 이전 빌드와 호환되지 않으면이 숫자를 증가시킵니다.
예상: 버전 3.0.0.0에 저장된 파일은 버전 2.5.0.0과 호환되지 않습니다.

미성년자: 새로운 기능이 추가되면이 숫자를 늘립니다. 이 기능은 사용자가 확인해야합니다. 개발자에게는 숨겨진 기능이 아닙니다. 이 숫자는 메이저가 증가하면 0으로 재설정됩니다.

플랫폼: 이것은 우리가 개발에 사용하는 플랫폼입니다.
예상: 1은 .NET Framework 버전 3.5를 나타냅니다.

고치다 :이 새 버전에 버그 수정 만 포함되면이 숫자를 증가시킵니다. 이 숫자는 메이저 또는 마이너가 증가하면 0으로 재설정됩니다.

간단히

Major.Minor.Revision.Build
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top