Programing

모범 사례 : 소프트웨어 버전 관리

lottogame 2020. 4. 29. 08:03
반응형

모범 사례 : 소프트웨어 버전 관리


여가 시간에 개발 한 소프트웨어를 재미있게 버전 관리하는 방법에 대한 지침이나 표준 모범 사례가 있습니까? 그럼에도 불구하고 일부 사람들이이를 사용합니까? 나는 당신이 알고있는 버전 1에 대해 (예 : 버그 수정, 지원 등) 알 수 있도록 그러한 소프트웨어를 버전 화해야한다고 생각합니다.

그러나 버전 관리는 어디서 시작합니까? 0.0.0? 또는 0.0? 그런 다음 숫자를 늘리는 방법은 무엇입니까? 주요 릴리스. 사소한 변경? 버전 관리 시스템에 대한 커밋이 다른 버전이 아니어야합니까? 아니면 생산적인 방식으로 사용되는 버전에만 해당됩니까?


"릴리스"한 첫 번째 버전이 어떤 방식으로 불완전하다는 것을 모르면 버전 1로 시작해야합니다.

버전을 증가시키는 방법에 대해서는 사용자에게 달려 있지만, 메이저, 마이너, 빌드 번호 매기기를 가이드로 사용하십시오.

소스 제어를 위해 커밋 한 모든 버전을 다른 버전으로 가질 필요는 없습니다. 곧 매우 큰 버전 번호를 갖게 될 것입니다. 새 버전을 외부에 출시 할 때 버전 번호 만 증가하면됩니다 (어떤 방식 으로든).

따라서 버전을 크게 변경 한 경우 버전 1.0.0.0에서 버전 2.0.0.0 (예 : WinForms에서 WPF로 변경)으로 이동합니다. 더 작은 변경을 1.0.0.0에서 1.1.0.0으로 옮기는 경우 (PNG 파일에 대한 지원 추가) 약간만 변경하면 1.0.0.0에서 1.0.1.0으로 변경됩니다 (버그를 수정했습니다).

정말로 자세한 정보를 얻으려면 모든 체크인 / 커밋마다 증가하는 빌드 번호로 최종 번호를 사용하십시오 (그러나 너무 멀어 보입니다).


내가 사용하는 것이 x.y.z버전의 종류

x-주요 릴리스
y-부 릴리스
z-빌드 번호


기본적으로이 패턴을 따릅니다.

  • 0.1.0에서 시작

  • 준비가되면 소스 저장소, 코드 0.1.0에서 코드를 분기하고 0.1.0 분기를 생성하면 헤드 / 트렁크는 0.2.0 스냅 샷 또는 이와 비슷한 것이됩니다

  • 트렁크에만 새로운 기능을 추가하지만 지점에 대한 백 포트 수정 사항과 시간이 지남에 따라 0.1.1, 0.1.2, ...

  • 제품이 기능 완료로 간주되고 큰 단점이없는 경우 버전 1.0.0을 선언합니다.

  • 그때부터-모든 사람이 언제 메이저 버전을 증가 시킬지 결정할 수 있습니다 ...


내 응용 프로그램에이 규칙을 사용합니다.

xyz

어디:

  • x = 주 버전 번호, 1 ~
  • y = 기능 번호, 0-9. 변경 사항에 버그 수정이 있거나없는 새로운 기능이 포함 된 경우이 수를 늘리십시오.
  • z = 핫픽스 번호, 0 ~ 변경 사항에 버그 수정 만 포함 된 경우이 수를 늘리십시오.

예:

  • 새 응용 프로그램의 경우 버전 번호는 1.0.0으로 시작합니다.
  • 새 버전에 버그 수정 만 포함 된 경우 버전 번호가 1.0.1이되도록 핫픽스 번호를 늘리십시오.
  • 새 버전에 버그 수정이 있거나없는 새 기능이 포함 된 경우 기능 번호를 늘리고 핫픽스 번호를 0으로 재설정하여 버전 번호가 1.1.0이되도록하십시오. 기능 번호가 9에 도달하면 기본 버전 번호를 늘리고 기능 및 핫픽스 번호를 0으로 재설정하십시오 (2.0.0 등).

우리는 abcd를 사용합니다.

  • -전공 (고객에게 배송시 증가)
  • b-미성년자 (고객에게 배송시 증가)
  • c-개정 (내부 릴리스에서 증가)
  • d-빌드 (크루즈 컨트롤에 의해 증가)

A.B.C접근 방식의 또 다른 예 Eclipse 번들 버전 관리 입니다. 이클립스 번들에는 네 번째 세그먼트가 있습니다.

Eclipse에서 버전 번호는 4 개의 세그먼트 (3 개의 정수 및 각각 이름이 지정된 문자열)로 구성됩니다 major.minor.service.qualifier. 각 세그먼트는 다른 의도를 포착합니다.

  • 주요 세그먼트는 API의 파손을 나타냅니다
  • 작은 세그먼트는 "외부 적으로 보이는"변화를 나타냅니다
  • 서비스 세그먼트는 버그 수정 및 개발 스트림 변경을 나타냅니다.
  • 한정자 세그먼트는 특정 빌드를 나타냅니다

도있다 최신 버전 기법은 , 예를 들면 : YYYY.MM, YY.MM,YYYYMMDD

첫 번째 모습은 출시 날짜에 대한 인상을주기 때문에 상당히 유익합니다. 그러나 제품 수명주기에서 항상 정확한 지점을 알고 싶어하기 때문에 xyz 체계를 선호합니다 (Major.minor.release)


기본적인 대답은 "그것은 달려있다"입니다.

버전 관리의 목표는 무엇입니까? 많은 사람들이 version.revision.build를 사용하고 dev. 버전이 아닌 릴리스 버전이므로 version.revision을 전 세계에 광고합니다. 체크인 '버전'을 사용하면 버전 번호가 빠르게 커집니다.

프로젝트를 계획하는 경우 사소한 변경이있는 릴리스의 개정판을 늘리고 주요 변경 사항, 버그 수정 또는 기능 / 기능이있는 릴리스의 증분 버전을 증분합니다. 베타 또는 야간 빌드 유형 릴리스를 제공하는 경우 버전을 확장하여 빌드를 포함하고 모든 릴리스마다 빌드를 늘리십시오.

아직도, 하루가 끝날 때, 그것은 당신에게 달려 있으며 그것은 당신에게 의미가 있습니다.


Mahesh가 말한 것처럼 : xyz 종류의 버전 관리를 사용합니다.

x-메이저 릴리스 y-마이너 릴리스 z-빌드 번호

you may want to add a datetime, maybe instead of z.

You increment the minor release when you have another release. The major release will probably stay 0 or 1, you change that when you really make major changes (often when your software is at a point where its not backwards compatible with previous releases, or you changed your entire framework)


You know you can always check to see what others are doing. Open source software tend to allow access to their repositories. For example you could point your SVN browser to http://svn.doctrine-project.org and take a look at the versioning system used by a real project.

Version numbers, tags, it's all there.


We follow a.b.c approach like:

increament 'a' if there is some major changes happened in application. Like we upgrade .NET 1.1 application to .NET 3.5

increament 'b' if there is some minor changes like any new CR or Enhancement is implemented.

increament 'c' if there is some defects fixes in the code.


I start versioning at the lowest (non hotfix) segement. I do not limit this segment to 10. Unless you are tracking builds then you just need to decide when you want to apply an increment. If you have a QA phase then that might be where you apply an increment to the lowest segment and then the next segement up when it passes QA and is released. Leave the topmost segment for Major behavior/UI changes.

If you are like me you will make it a hybrid of the methods so as to match the pace of your software's progression.

I think the most accepted pattern a.b.c. or a.b.c.d especially if you have QA/Compliance in the mix. I have had so much flack around date being a regular part of versions that I gave it up for mainstream.

I do not track builds so I like to use the a.b.c pattern unless a hotfix is involved. When I have to apply a hotfix then I apply parameter d as a date with time. I adopted the time parameter as d because there is always the potential of several in a day when things really blow up in production. I only apply the d segment (YYYYMMDDHHNN) when I'm diverging for a production fix.

I personally wouldn't be opposed to a software scheme of va.b revc where c is YYYYMMDDHHMM or YYYYMMDD.

All that said. If you can just snag a tool to configure and run with it will keep you from the headache having to marshall the opinion facet of versioning and you can just say "use the tool"... because everyone in the development process is typically so compliant.

참고URL : https://stackoverflow.com/questions/2864448/best-practice-software-versioning

반응형