2010-01-12 36 views
25

Tôi đang tìm một lược đồ đánh số phiên bản thể hiện mức độ thay đổi, đặc biệt là tính tương thích.Lược đồ đánh số phiên bản nào để sử dụng?

Apache APR, ví dụ, sử dụng sơ đồ thứ tự phiên bản nổi tiếng

<major>.<minor>.<patch> 
example: 4.5.11 

Maven cho thấy một sơ đồ tương tự nhưng chi tiết hơn:

<major>.<minor>.<patch>-<qualifier>-<build number> 
example: 4.5.11-RC1-3732 

đâu là chương trình versioning Maven được xác định? Có các quy ước về vòng loại và số xây dựng không? Có lẽ đó là một ý tưởng tồi để sử dụng maven nhưng không tuân theo lược đồ phiên bản Maven ...

Bạn có biết các lược đồ đánh số phiên bản nào khác không? Bạn thích chương trình nào hơn và tại sao?

+0

Sẽ http://stackoverflow.com/questions/1889615/version-numbering-basics help? – VonC

Trả lời

24

Đây là current Maven version comparison algorithmdiscussion. Miễn là các phiên bản chỉ phát triển, và tất cả các trường ngoại trừ số bản dựng được cập nhật theo cách thủ công, bạn tốt. Các vòng loại hoạt động như thế này: nếu một là một tiền tố của cái kia, thì còn lâu hơn. Nếu không, chúng được so sánh theo thứ tự bảng chữ cái. Sử dụng chúng để phát hành trước.

Thứ hai việc sử dụng phiên bản ngữ nghĩa để thể hiện khả năng tương thích; chính là cho các thay đổi không tương thích ngược, nhỏ cho các tính năng tương thích ngược, vá các bản sửa lỗi tương thích ngược. Ghi lại tài liệu để người dùng thư viện của bạn có thể thể hiện sự phụ thuộc vào thư viện của bạn một cách chính xác. Ảnh chụp nhanh của bạn được tự động và không phải tăng các ảnh này, ngoại trừ ảnh chụp nhanh đầu tiên sau khi phát hành vì các tiền tố được so sánh.

23

Tôi muốn giới thiệu tiêu chuẩn Phiên bản ngữ nghĩa, mà hệ thống phiên bản Maven cũng xuất hiện. Vui lòng kiểm tra ra,

http://semver.org/

Nói tóm lại nó là <major>.<minor>.<patch><anything_else>, và bạn có thể thêm các quy tắc bổ sung cho phần bất cứ thứ gì như có vẻ phù hợp với bạn. ví dụ. -<qualifier>-<build_number>.

+6

Sơ đồ - - từ Maven có vẻ không khớp chính xác với đề xuất semver.org. semver.org: "Một số phiên bản đặc biệt CÓ THỂ được biểu thị bằng cách chắp thêm một chuỗi tùy ý ** ngay sau ** phiên bản vá. Chuỗi PHẢI bao gồm chỉ chữ và số cộng với dấu gạch ngang [0-9A-Za-z-] và ** PHẢI bắt đầu bằng ký tự alpha [A-Za-z] **. " – deamon

+3

@deamon semver.org có thể đã thay đổi cách đây nhiều năm nhưng đối với hồ sơ, nó tuân theo lược đồ maven: "Một phiên bản tiền phát hành CÓ THỂ được biểu thị bằng cách nối thêm một dấu nối và một chuỗi dấu phân cách được tách biệt ngay sau phiên bản vá. PHẢI bao gồm chỉ ASCII chữ và số và dấu gạch nối [0-9A-Za-z-]. Mã định danh PHẢI KHÔNG để trống. Số nhận dạng KHÔNG PHẢI bao gồm số 0 đầu. " – Kapep

+1

@kapep: Các định dạng vẫn chưa hoàn toàn tương thích, vì thuật toán so sánh từ semver phức tạp hơn nhiều so với những gì Maven sử dụng. Nhưng nếu bạn chỉ cần "-RC1", "-RC2" hoặc tương tự, bạn nên ổn. – sleske

4

Sau khi đọc rất nhiều bài viết/QA/Câu Hỏi Thường Gặp/cuốn sách tôi trở nên suy nghĩ rằng [MAJOR]. [NHỎ]. [REV] là schema phiên bản hữu ích nhất để mô tả khả năng tương thích giữa các phiên bản dự án (versioning schema dành cho nhà phát triển, không dành cho tiếp thị).

YẾU thay đổi này là lạc hậu không tương thích và yêu cầu thay đổi tên dự án, đường dẫn đến file, GUID vv

NHỎ thay đổi tương thích ngược. Đánh dấu giới thiệu các tính năng mới .

REV để bảo mật/sửa lỗi. Tương thích ngược và tiến.

schema phiên bản này lấy cảm hứng từ libtool ngữ nghĩa versioning và bởi bài viết:

http://www106.pair.com/rhp/parallel.html

LƯU Ý: tôi cũng khuyên bạn nên cung cấp build/ngày/tùy chỉnh/chất lượng thông tin như bổ sung (xây dựng số, ngày xây dựng, tên khách hàng, chất lượng phát hành):

Xin chào ứng dụng v2.6.34 cho ngân hàng quốc gia, 2011-05-03, beta, xây dựng

Nhưng thông tin này là không versioning thông tin!

6

Hoàn toàn cho sự hoàn chỉnh, tôi sẽ đề cập đến số old Apple standard for version numbers. Điều này có vẻ như phiên bản chính. phiên bản phụ. phiên bản lỗi. giai đoạn. phiên bản không phát hành. Stage là một mã số rút ra từ tập d (phát triển), một (alpha), b (beta), hoặc fc (tàu khách hàng cuối cùng - nhiều hay ít tương tự như phiên bản RC, tôi nghĩ rằng) .

Phiên bản và bản sửa đổi không phát hành chỉ được sử dụng cho các phiên bản không có bản phát hành phù hợp.

Vì vậy, phiên bản đầu tiên của thứ gì đó có thể là 1.0.0. Bạn có thể đã phát hành một bugfix là 1.0.1, một phiên bản mới (với nhiều tính năng hơn) là 1.1, và một bản viết lại hoặc nâng cấp lớn là 2.0. Nếu sau đó bạn muốn làm việc theo hướng 2.0.1, bạn có thể bắt đầu với 2.0.1d1, 2.0.1d2, thành 2.0.1d153 hoặc bất kỳ thứ gì bạn đã đưa ra, sau đó gửi 2.0.1a1 đến QA và sau khi họ đã phê duyệt 2.0.1a37 , gửi 2.0.1b1 cho một số người chơi sẵn sàng, sau đó sau khi 2.0.1b9 sống sót sau một tuần trong lĩnh vực này, hãy ghi 2.0.1fc1 và bắt đầu nhận được signoff. Khi 2.0.1fc17 có đủ, nó sẽ trở thành 2.0.1, và sẽ có nhiều hân hoan.

Định dạng này đã được chuẩn hóa đủ để có định dạng nhị phân được đóng gói cho nó và các thói quen trợ giúp trong thư viện để so sánh.

+0

Hoàn toàn cho đầy đủ (:-)), tôi muốn chỉ ra rằng IMHO yêu cầu xây dựng riêng biệt cho mọi giai đoạn (mà chương trình này ngụ ý) không phải là một ý tưởng tốt. Ít nhất các bản xây dựng cho QA/thử nghiệm cuối cùng phải hoạt động trong sản xuất không thay đổi. Bất kỳ sự khác biệt cần thiết trong hành vi nên được tiêm thông qua cấu hình. Xem ví dụ [Riêng biệt 'gỡ lỗi' và 'phát hành' xây dựng?] (Http://stackoverflow.com/questions/420343/separate-debug-and-release-builds). – sleske

+0

@sleske Tôi không nghĩ rằng nó có nghĩa là xây dựng riêng biệt cho từng giai đoạn. Nếu bạn đang trong giai đoạn thử nghiệm beta, bạn sẽ tạo ra 1.2.3b4 trong dev, đặt thông qua CI, nhận được QA để phê duyệt nó, thực hiện UAT, sau đó cuộn nó ra bản beta thử nghiệm, sử dụng cùng một nhị phân tất cả các cách. Thay vào đó, những gì nó ngụ ý là ở bất kỳ thời điểm nào, bạn biết cách xây dựng có thể đi xa như thế nào - vì vậy bạn biết khi nào bạn cam kết rằng nó sẽ chỉ được sử dụng trong phát triển, gửi đến người thử nghiệm beta, phát hành, v.v. , ví dụ: nếu 1.2.3b10 vượt qua thử nghiệm beta, cùng một mã có thể sẽ trở thành 1.2.3fc1, điều này không lý tưởng. –

0

Lưu ý rằng lược đồ số phiên bản (như x.y.0 so với x.y) có thể bị hạn chế bởi các yếu tố bên ngoài.

Hãy xem xét rằng announcement for Git 1.9 (Januaury 2014):

Một ứng cử viên phát hành Git v1.9-RC2 bây giờ đã có để thử nghiệm tại các vị trí thông thường.

Tôi đã nghe tin đồn rằng công cụ của bên thứ ba khác nhau không thích những con số phiên bản hai chữ số (ví dụ: "Git 2.0") và bắt đầu barfing trái và phải khi người dùng cài đặt v1.9-rc1 .
Trong khi đó là hấp dẫn để cười vào họ cho giả định cẩu thả của họ, tôi cũng thực tế và không nhớ gọi phát hành sắp tới v1.9.0 để giúp họ.

Nếu chúng ta đi con đường đó (và tôi nghiêng để đi mà tuyến đường tại thời điểm này), chương trình phiên bản sẽ là:

  • Các ứng cử viên phát hành tiếp theo sẽ là v1.9.0-rc3, không v1.9-rc3;
  • Bản phát hành bảo trì đầu tiên cho v1.9.0 sẽ là v1.9.1 (và thứ N là v1.9.N); và
  • Bản phát hành tính năng sau v1.9.0 sẽ là phiên bản v1.10.0 hoặc v2.0.0, tùy thuộc vào độ lớn của tính năng mà chúng tôi đang xem.
Các vấn đề liên quan