2010-05-26 1 views
3

내가 표준 Major.Minor.Build.Revision을 알고 버전 번호 체계와 도움이 필요하지만, 때때로 하루 한 번 이상 - 우리는 거의 매일 내부 출시 할

다소 고유 한 우리에게 몇 가지 고려 사항이있다.

- Windows Installer doesn't check Revision 그래서 우리의 목적에 거의 부합합니다.

-Major 및 Minor numbers는 공개 릴리스 용으로 만 업데이트되며 수동으로 수행해야합니다.

- 그러면 자동으로 업데이트해야하는 빌드 번호가 남습니다.

우리는 Visual Studio에서 xx *를 사용하지 않고 다른 컴퓨터에서 서로 다른 숫자를 생성 할 수 있으므로 각 개발자의 컴퓨터에서 내부 릴리스를 수행 할 수 있기를 원하며 각 빌드가 너무 이른.

- 제품의 일부로 약 15 개 정도의 프로젝트가 있으므로 SVN에 버전 번호를 저장하면 모든 파일이 커밋되기 때문에 이상적이지 않습니다.

이러한 기준을 감안할 때 나는 좋은 버전 관리 체계를 제시 할 수 없습니다. 마지막 2 가지 기준은 삭제할 수 있지만 모두 충족하는 것이 이상적입니다. 우리가 하루에 여러 번 작업을 수행 할 수 있고 날짜가 Uint16 (약 64000) (WiX를 사용하면 Int16.MaxValue보다 높은 숫자에 대해 불평 함)이 주어지기 때문에 날짜 스탬프가 불충분합니다. 날짜/시간이 맞지 않습니다.

답변

3
  1. SVN 커밋 번호 또는 다른 커밋 ID를 사용하십시오 (대부분 git describe 출력을 사용하므로 대부분의 경우 완벽합니다). 빌드는 추적 가능해야합니다. 실행중인 제품을 실제로 확인할 수 있도록하려면 커밋 된 소스에서만 빌드하는 것이 중요합니다.
  2. 초 단위로 시간/날짜를 사용하십시오 (UNIX 기본 시간). 숫자가 너무 큰 경우 다른 신기원 (예 : 2000 년)을 사용하십시오.

또한 Uint32는 2^16 (65535)로 제한되지 않으며, 32 비트는 2^32 또는 대략 40 억을 제공합니다.

+0

내 실수는 UInt와 Int32 대신 ushort와 short입니다. – Davy8

+0

하지만 커밋 번호가 작동한다고 가정합니다. 우리는 잠시 동안 10K를 돌파하지 않았으므로 당분간 좋을 것입니다. – Davy8

2

msi는 리비전을 확인하지 않기 때문에 msi 빌드 시스템에서 세 번째와 네 번째 버전 부분을 전환했습니다.

예를 들어 실제 버전이 1.2.3.4678 인 경우 (4678은 앱이 빌드 된 SVN 버전 임), msi 버전을 1.2.4678.3으로 만듭니다.