문제

회사는 건설 제품입니다.그것은 버전이 관리하여 SVN.그것은 웹 애플리케이션 그래서 기본적으로 없을 것 버전 밖에는 없는 몇 가지 기능에서 그들을 따라할 수 있으로 표시됩니다.하지만 이후가 될 것 기업의 제품을 내가 정말 원하지 않는"불안정한 watchout"습니다.그래서 어떻게 갈 것에 대한 버전 관리는?1.0 안정되어 있는가?해야를 구축 날짜에있는 버전 번호?말해 당신이 무엇을 생각하는 사람!

도움이 되었습니까?

해결책

[주요한].[미성년자].[풀어 주다].[짓다]

주요한: 정말 마케팅 결정. 버전 1.0을 호출 할 준비가 되셨습니까? 회사는 이것을 고객이 더 많은 비용을 지불 해야하는 주요 버전으로 간주합니까, 아니면 무료 일 수있는 현재 주요 버전의 업데이트입니까? R & D 결정이 적고 제품 결정이 더 많습니다.

미성년자: 언제든지 0에서 시작합니다 주요한 증가합니다. 공개되는 모든 버전에 대해 +1.

풀어 주다: 개발 이정표에 도달하고 제품을 내부적으로 (예 : QA에 이르기까지) 출시 할 때마다 이것을 증가시킵니다. 이것은 조직의 팀 간의 커뮤니케이션에 특히 중요합니다. 말할 것도없이, 동일한 '릴리스'를 두 번 (내부적으로) 방출하지 마십시오. 마이너 ++ 또는 메이저 ++에서 0으로 재설정하십시오.

짓다: SVN 개정이 될 수 있습니다. 가장 잘 작동합니다.

다른 팁

xyzg

G의 증분은 불안정합니다. (또는 RCS) z의 증분은 안정적이며 평균 버그 수정입니다.
Y의 증분은 안정적이며 새로운 기능을 의미합니다.
X의 증분은 안정적이며 100% 후진 호환성이없는 주요 릴리스입니다.

나는 한때 큰 프로젝트를 위해 정교한 "버전 스타일 가이드"를 썼습니다. 프로젝트는 실현되지 않았지만 스타일 가이드는 여전히 온라인으로 제공됩니다. 그것은 나의 개인적인 의견 일 것입니다. 아마도 그것은 당신에게 도움이 될 것입니다 (또는 영감).

긴 텍스트이며 제품 버전화와 그와 비슷한 것들로 구성됩니다. 또한 OSS 커뮤니티에서 인기있는 일부 버전 관리 체계에 대한 강력한 의견을 표현하지만, 나는 그것들을 표현합니다. ;-)

예를 들어 전복 개정 번호를 사용하는 것에 동의하지 않습니다. 트렁크에서 계속 개발하는 동안 릴리스 버전을 유지할 수 있으므로 유지 보수 지점을 설정하면 개정 번호 버전 설정이 배수됩니다.

편집하다: 요약하면 버전 소스 파일, 구성 요소 및 전체 제품을 구별합니다. 구성 요소와 제품에 별도의 XY Versoning 시스템을 사용하며, 어떤 구성 요소 버전이 어떤 제품 버전이 사소한 지에 속하는 트레이싱을 만드는 두 가지 사이의 상호 의존성을 사용합니다. 또한 시스템을 깨지 않고 알파 / 베타 / 릴리스 / 패치 사이클을 처리하는 방법에 대해서도 이야기합니다. 실제로, 그것은 전체 개발주기를위한 modus operandi이므로 체리 픽을 원할 수도 있습니다. ;-)

편집 2 : 충분한 사람들이 내 기사가 이것을 "좋은 답변"으로 만들기 위해 유용하다는 것을 알았을 때, 나는 기사를 다시 시작하기 시작했습니다. PDF 및 Latex 버전을 사용할 수 있으며, 더 나은 언어 및 설명 그래픽을 포함한 완전한 재 작성이 시간을 찾을 수있는 즉시 따라갈 것입니다. 투표에 감사드립니다!

Wikipedia에서 영감을 얻으십시오. "소프트웨어 버전 설정"

또 다른 "신규"및 "비교적 인기있는"옵션은 시맨틱 버전 작성

요약:

버전 번호 major.minor.patch가 주어지면 다음을 증가시킵니다.

  1. 호환되지 않는 API를 변경할 때 주요 버전
  2. 후진 호환 방식으로 기능을 추가 할 때 마이너 버전
  3. 패치 버전 뒤로 호환 버그 수정을 만들 때.

프리 릴리스 및 빌드 메타 데이터를위한 추가 레이블은 major.minor.patch 형식의 확장으로 제공됩니다.

ABCD

증분 : 언제
- : 버그 수정
- : 유지 보수, 예를 들어 성능 향상
- : 새로운 기능
- : 아키텍처 변화

필수는 가장 많이 남은 것입니다. 예를 들어 새 기능과 버그가 고정 된 경우 예를 들어 .

내 경험을 바탕으로 함께 복잡한 엔터프라이즈 플랫폼 수준의 종속성 관리 및 릴리스 버전 관리하러 왔 접근법을 추천합니다 전화를 좋아하는 Semi-의미의 버전 관리.

기본적으로의 구축 적 버전 2.0 하지만 아주 엄격합니다.

Semi-의미 버전 세그먼트:

<primary.release.segment>[-<pre.release.segment>][+<post.release.segment>]

기본 릴리스 세그먼트의 형식은:

MARKETTING.요.MINOR.패치

각 세그먼트를 허용해야 합니다 알파벳과 숫자이지만,순수한 수치는 추천에 대한 논리적이 변경 됩니다.

다음과 같 SemVer,내가 추천 Major,Minor,그리고 패치의 구성 요소 을 나타내는 반환 계층,하지만 또한 추천 앞에 추가 구성요소 마케팅.이 제품이 소유자,기능 에픽/그룹과 비즈니스 문제에 충돌하는 기본 구성 요소의 독립적 기술 호환성 문제입니다.

과 달리 다른 답변,나는 추천 추가하여 빌드 번호하는 기본 세그먼트입니다.대신,추가 Post-세그먼트 릴리스 다음에'+'(ex:1.1.0.0+니다.42).SemVer 이를 구축 메타데이터,하지만 제가 생각하는 포스트-릴리스 세그먼트는 명확하다.이 세그먼트는 위대한 선언하는 접미사 데이터로지에 관련된 호환성 정보에 기본 릴리스 세그먼트.의 지속적인 통합 구축할 수 있어 이전 버전 번호를 추가 증가를 구축 수 있는 리셋 후에는 각 차 릴리스(ex:1.1.0.0->1.1.0.0+니다.1->1.1.0.0+니다.2->1.1.0.1).어떤 사람들은 교대를 넣어 svn 개정 번호로 여기 또는 git commit sha 을 쉽게 넥타이드합니다.또 다른 옵션은 사용하는 포스트-릴리스 세그먼트를 위한 핫픽스 및 패치,tho 그것을 고려 가치가있을 수도 있습을 추가하는 새로운 주 릴리스 구성 요소입니다.그것은 항상 떨어졌을 때 패치 요소가 증가되며,이후 버전을 효과적으로 왼쪽 정렬하고 분류되어 있습니다.

이외에 출시하고 출시 이후 세그먼트,사람들은 종종 사용하고 싶 Pre-세그먼트 릴리스 을 나타내는 거의 안정 pre-자료 같은 알파,베타 버전과 릴리스 후보자.이 SemVer 접근 방식이 잘 작동하지만,나는 추천을 분리하는 수치에서 구성 요소를 영숫자류(예:리 1.2.0.0+alpha.2 거리 1.2.0.0+RC.2).일반적으로 당신은 범프 릴리스 세그먼트 같은 시간에 추가로 게시물 릴리스 세그먼트 및 그때 드롭 pre-릴리스 세그먼트의 경우 다음에 범프 주 릴리스 세그먼트(ex:1.0.1.2->리 1.2.0.0RC.1->리 1.2.0.0).Pre-릴리스 세그먼트에 추가되는 것을 나타내 릴리스 버전은,일반적으로만 고정된 설정의 기능에 대한 더 많은 테스트 및 공유 변경되지 않는 분에 기반을 더 추가한다.

의 아름다움을 갖는 모든이의 의미상으로 정의하는 방법에 있는 거의 모든 사용 사례는할 수 있는 구문 분석,정렬하고,비교하고 증가시키는 그들을에서는 표준 방법입니다. 이를 사용하는 경우 특히 중요 CI 시스템에 대한 복잡한 응용 프로그램의 많은 작은 독립적으로 버전 구성 요소(처럼 마이크로 서비스)각각 자신의 관리된 종속성입니다.

당신이 관심이 있다면,내가 쓴 semi-의미 parser 루비.를 사용하지 않도이지만 패턴을 관리할 수 있는 다른 응용 프로그램은 그것을 사용했다.

"버전 번호"는 내부 버전 제어 시스템의 문제입니다. 릴리스 번호는 다른 문제입니다 (그리고 다르게 유지해야 함).

간단한 전공을 고수하십시오. Minor 릴리스 시스템 (V1.27 : 전공)은 호환성 레벨 (버전 2.x는 버전 1.x와 호환되지 않거나 적어도 다른)이며 Minor는 버그 픽스 릴리스 또는 사소한 향상입니다. . XY 형식을 따르는 한 Year.month (2009.12) 또는 Year.Release (2009.3)와 같은 다른 시스템을 사용할 수도 있습니다. 그러나 실제로 당신은 아마도 당신이하지 말아야 할 좋은 이유가 없다면 전공을 고수하는 것이 가장 좋습니다.

배포판, 공지 웹 사이트 등이 어려워지면 프로젝트의 인기에 심각한 영향을 줄 수 있기 때문에 XY 형식에 맞지 않는 것을 사용하지 않습니다.

(바람직하게 분산 된) 버전 제어 시스템에서 지점과 태그를 사용하여 각각 전공 및 미성년자와 관련된 특정 내부 버전 번호를 표시하십시오.

그렇습니다. 1.0은 안정적이어야합니다. 알파, 베타 또는 RC로 표시되지 않는 한 모든 릴리스는 안정적이어야합니다. 알려진 파괴 및 불만에 알파를 사용하십시오. 알려진 파괴에 대한 베타. "시도해보십시오. 아마도 우리가 놓친 것들을 발견 할 것"에 대한 RC. 이들 중 하나가없는 것은 (물론, 물론) 테스트, 잘 알려진 좋은 방법, 최신 매뉴얼 등을 가지고 있어야합니다.

요즘에는 전복 개정 번호를 사용하는 것이 매우 인기가 있습니다.

SVN이라면 SVN 개정 번호를 사용하지 않는 이유는 무엇입니까?

이 웹 페이지의 오른쪽 하단을 보면 SVN 개정 번호 인 스택 오버 플로우 버전 번호가 표시됩니다.

버전싱은 당신에게 달려 있습니다. 내가 확신 한 첫 번째 버전에 1.0을 넣었습니다. 일부 소프트웨어 공급 업체가 1.0에 나쁜 평판을 주었기 때문에 다른 버전으로 신속하게 따라 가고 싶을 수도 있습니다.

버전 번호를 사용한 정확한 빌드에 묶는 방법을 원하지만 최종 사용자에게는 좋고 간단하기를 원할 것입니다. 표준 버전 번호를 사용하고 포함 된 버전 번호로 SVN 저장소를 태그하십시오.

Subversion 개정 번호를 사용하는 것은 훌륭하고 간단하지만 버전 번호에서 정보를 제거합니다. 사용자는 이것을 나쁜 것으로 생각할 수 있습니다.

귀하의 WebApp에 일종의 배포 절차가 있다고 가정하므로 전복의 각 개정이 실제로 게시되지는 않습니다. "외부"(사용자의 관점에서)에서 릴리스시기를 결정하는 것은 불가능하기 때문에 코드가 그 사이에 얼마나 많은 개정을 받는지 결정하는 것은 불가능하기 때문에 숫자를 거의 무작위로 만듭니다. 그들은 증가 할 것이고, 추측 할 수 있다고 생각합니다 약간 두 가지 수정을 비교하는 것과의 거리가 많지만 많지는 않습니다.

클래식 버전 숫자는 릴리스를 "드라마 화"하는 경향이 있으므로 사용자는 어떤 종류의 기대를 구축 할 수 있습니다. "버전 1.0을 가지고 있습니다. 이제 버전 1.1은 이것을 추가하고 있습니다."어제 우리는 2587, 오늘은 3233이 더 좋을 것입니다! "라고 생각하는 것보다 흥미로운 것 같습니다."

물론,이 드라마 화도 팽창 할 수 있으며, 회사는 제품의 실제 차이에 의해 동기를 부여하는 것보다 더 흥미로운 버전 번호를 선택하면서 수정 번호로 진행하는 것이 이것에 대해 약간의 카운터를 고려할 수 있습니다.

버전 체계 : [Major] [Minor]. [DevRel] [Mark
전공] : 개발에 급격한 변화가있는 경우 증분.
마이너] : 개발에 약간의 변화가있는 경우 증분.
DevRel] : 버그 수정이있는 경우 증분. 메이저 ++ 또는 마이너 ++ 인 경우 0으로 재설정하십시오.
Mark] : A, B 또는 RC : A는 알파 릴리스, B는 베타 릴리스, RC는 릴리스 후보입니다. 1.3.57A 또는 1.3.57B 또는 1.3.57RC와 같은 버전은 버전 1.3.57 이전입니다. 0.0.0에서 시작하십시오.

우리는 주요 버전을 증가시킬 때를 결정하는 데 너무 많은 시간을 보냈습니다. 일부 상점은 거의하지 않으므로 1.25.3과 같은 릴리스를 갖고 다른 상점은 15.0을 제공하는 데 도움이 될 것입니다.

나는 그것에 지쳐졌고 모든 사람들이 주요 릴리스 번호가 한 해에 불과하고 미성년자는 연중 순차적 릴리스 일 것이라고 확신했습니다. 사용자는 그것을 좋아하는 것처럼 보였고 다음 버전 번호를 가지고 다니는 것은 쉬운 일이 아닙니다.

연도. release.build

  • 연도 = 현재 연도
  • 릴리스 = 새로운 기능을 갖춘 공개 릴리스의 시퀀스 # - 매년 1으로 재설정
  • Build = 버그 수정 및 내부 릴리스에 대해 증가했습니다

편집하다

** 이제 이것은 지속적으로 향상된 내부 앱을위한 것이 었습니다 **

이것은 아마도 마케팅 및 재무 목적으로 연중 다른시기에 주요 릴리스를 갖는 것이 중요한 상용 앱에서는 효과가 없을 것입니다.

나는이 지역에서 경험이 거의 없습니다. 그러나 여기에 내가하는 일이 있습니다.

  1. 번호 매기기에 대한 계획을 선택하고이를 고수하십시오. 일관성을 유지하십시오.
  2. 각 버전 변경은 표시되어야합니다 중대한 변화. 변화가 얼마나 작은 지, 버전 번호에 반영되는 변화 수준은 귀하에게 달려 있습니다.

물론 SVN 개정 번호 만 사용할 수 있습니다.

이게 도움이 되길 바란다.

이 질문이 존재하는 이유는 구성 관리를 수행하는 방법에 동의하지 않았기 때문입니다.

내가 버전 번호를 좋아하는 방식은 1에서 1의 증분 정수입니다. 설명하거나 문서화해야 할 다중 부품 버전 번호를 원하지 않습니다. 그리고 SVN Rev 번호를 사용하고 싶지는 않습니다. 설명이 필요합니다.

이런 일을하기 위해서는 SVN 위에 릴리스 스크립트가 필요합니다.

우리는 간단한 전공을 사용합니다 .minor.julian_date 구문.

어디에;

  • 메이저 - 첫 번째 릴리스는 1이고, 우리가 주요 새로운 기능이나 변화를 소개 할 때,이 숫자는 뒤로 호환되지 않습니다.
  • 미성년자 - 주요 이정표 릴리스. 생산에 의해 푸시 된 각 빌드에 대해이 수는 증가합니다.
  • Julian_date- 줄리안의 날 빌드는 QA로 밀려났다.

1/15에 QA로 푸시 된 첫 번째 릴리스의 예는 -> 1.0.015입니다.
3/4에서 생산으로 푸시 된 첫 번째 릴리스의 예 -> 1.1.063

완벽하지는 않지만 매일 QA로 빌드를 푸시 할 때 편리합니다.

여기에 좋은 정보 :

파일/어셈블리 버전을 변경할 때

우선, 파일 버전과 어셈블리 버전은 서로 일치 할 필요가 없습니다. 파일 버전이 각 빌드마다 변경되는 것이 좋습니다. 그러나 동일한 파일의 두 버전의 차이를 알 수 있도록 각 빌드마다 어셈블리 버전을 변경하지 마십시오. 파일 버전을 사용하십시오. 어셈블리 버전을 변경할시기를 결정하면 배송 및 비 기능을 고려해야 할 빌드 유형에 대해 논의합니다.

비 선적 빌드는 일반적으로 비 직원 어셈블리 버전을 배송 빌드간에 동일하게 유지하는 것이 좋습니다. 이로 인해 버전 불일치로 인한 어셈블리로드 문제를 강력하게 표시하지 않습니다. 어떤 사람들은 게시자 정책을 사용하여 각 빌드에 대한 새로운 어셈블리 버전을 리디렉션하는 것을 선호합니다. 그러나 비 직원 빌드의 경우이를 권장합니다. 모든 로딩 문제를 피하는 것은 아닙니다. 예를 들어, 파트너 X-Copies 앱인 경우 게시자 정책을 설치하는 것을 모를 수 있습니다. 그러면 앱이 컴퓨터에서 잘 작동하더라도 앱이 깨질 것입니다.

그러나 동일한 기계의 다른 응용 프로그램이 다른 버전의 어셈블리에 바인딩 해야하는 경우가있는 경우 해당 빌드에 다른 어셈블리 버전을 제공하여/등을 사용하지 않고도 각 앱의 올바른 것을 사용할 수 있도록하는 것이 좋습니다.

배송 빌드는 배송 빌드를 위해 해당 버전을 변경하는 것이 좋습니다. 최종 사용자를위한 바인딩을 원하는 방법에 따라 다릅니다. 이 빌드가 나란히 또는 장소가되기를 원하십니까? 두 빌드 사이에 많은 변화가 있습니까? 그들은 일부 고객을 깨뜨릴까요? 당신은 그것이 그들을 깨뜨리는 것에 관심이 있습니까 (아니면 사용자가 중요한 업데이트를 사용하도록 강요하고 싶습니까)? 그렇다면 어셈블리 버전 증분을 고려해야합니다. 그러나 다시 한 번, 너무 많이 그렇게하면 구식 어셈블리로 사용자의 디스크를 쓰러 뜨릴 수 있다고 생각하십시오.

어셈블리 버전을 변경하여 하드 코드 버전을 새 버전으로 변경하면 헤더 파일의 버전으로 변수를 설정하고 소스의 하드 코딩을 변수로 교체하는 것이 좋습니다. 그런 다음 빌드 중에 프리 프로세서를 실행하여 올바른 버전을 넣으십시오. 바로 배송 직후 버전을 변경하는 것이 좋습니다. 따라서 변경으로 인해 버그를 잡을 시간이 더 많습니다.

또는 '생각'버전 번호 Comma Subversion 번호를 사용하려면 .. ZB :

1.0.101 // 개정 101, 릴리스

또는 1.0.101-090303 // 릴리스 날짜와 함께, 나는 이것을 사용한다.

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