Khi nào bạn thay đổi số phiên bản chính / phụ / bản vá?


40

Bản sao có thể có:
Bạn sử dụng quy ước đặt tên phiên bản nào?

Bạn có thay đổi số phiên bản chính / phụ / bản vá ngay trước khi phát hành hoặc ngay sau đó không?

Ví dụ: Bạn vừa phát hành 1.0.0 ra thế giới (huzzah!). Nhưng chờ đã, đừng ăn mừng quá nhiều. 1.1.0 sẽ ra mắt sau sáu tuần nữa! Vì vậy, bạn sửa một lỗi và làm một bản dựng mới. Tòa nhà đó được gọi là gì? 1.1.0.0 hoặc 1.0.0.xxxy (trong đó xxxy là số bản dựng của 1.0.0 tăng)?

Hãy nhớ rằng bạn có thể có 100 tính năng và lỗi để đi vào 1.1.0. Vì vậy, có thể tốt để gọi nó là 1.0.0.xxxy, vì bạn không ở gần 1.1.0. Nhưng mặt khác, một nhà phát triển khác có thể đang làm việc trên 2.0.0, trong trường hợp đó, bản dựng của bạn có thể được đặt tên tốt hơn là 1.1.0.0 và 2.0.0.0 thay vì 1.0.0.xxxy và 1.0.0.xxxz.


3
Tôi không hỏi nếu bạn sử dụng Major.minor.release.build hoặc một số chương trình khác. Tôi đang hỏi tại thời điểm nào trong chu kỳ phát hành, bạn có thay đổi số thành 3.2.0 không? Khi bạn lần đầu tiên bắt đầu mã hóa 3.2.0 hoặc khi bạn phát hành 3.2.0?
dave4351

Tôi mở lại câu hỏi vì đây không phải là câu hỏi "làm thế nào" mà thay vào đó là câu hỏi "khi nào". Tuy nhiên, nó vẫn rất giống với bản sao được đánh dấu trước đó và có thể được đóng lại.
maple_shaft

Bạn có thể được truyền cảm hứng - commons.apache.org/release/versioning.html
Artegon

Câu trả lời:


24

Sau khi bạn phát hành phần mềm, số phiên bản sẽ được tăng ngay lập tức.

Tại sao?

Giả sử bạn đang theo một sơ đồ như Phiên bản ngữ nghĩa và bạn có số bản dựng trong phiên bản. Vì vậy, bạn có thể có [Major]. [Minor]. [Patch]. [Build]. Tôi sẽ gọi [Thiếu tá]. [Nhỏ]. [Bản vá] chia phần phiên bản.

Bạn sẽ tạo nhiều bản dựng trong quá trình phát triển. Mỗi bản dựng là một ảnh chụp nhanh phát triển của bản phát hành tiếp theo của bạn. Thật hợp lý khi sử dụng cùng một phiên bản cho các bản dựng phát triển và phát hành của bạn. Phiên bản cho biết phiên bản bạn đang làm việc hướng tới .

Nếu bạn đang chuẩn bị phát hành và phần mềm vượt qua tất cả các thử nghiệm của nó, bạn sẽ không muốn xây dựng lại và kiểm tra lại phần mềm chỉ vì bạn phải cập nhật phiên bản. Cuối cùng, khi bạn phát hành, bạn nói rằng "bản dựng 1.1.0.23" từ đó sẽ được gọi là "phiên bản 1.1.0".

Mô hình gia tăng sau khi phát hành cũng có ý nghĩa cho việc phân nhánh. Giả sử bạn có một nhánh phát triển chính và bạn tạo các nhánh bảo trì cho các bản phát hành. Thời điểm bạn tạo nhánh phát hành, nhánh phát triển của bạn không còn được liên kết với số phiên bản của phiên bản đó. Nhánh phát triển chứa mã là một phần của phiên bản tiếp theo, vì vậy phiên bản sẽ phản ánh điều đó.


6

Tôi thường cố gắng sử dụng SemVer cho số phiên bản nội bộ. Thật tuyệt khi có thể biết điều gì đó về một bản phát hành dựa trên ngữ nghĩa của số phiên bản của nó.

Trong quá trình phát triển, tôi cố gắng thay đổi số phiên bản ngay lập tức (nếu có thể) . Đôi khi thật khó để biết liệu thay đổi có phải là thay đổi đột phá hay không (điều này sẽ ảnh hưởng đến số phiên bản của tôi), vì vậy không có gì là "đặt trong đá".

Để giải quyết ví dụ cụ thể của bạn:

  • Trong quá trình phát triển, các phiên bản tiền phát hành sẽ là 1.0.1-alpha.1, 1.0.1-alpha.2, v.v.
  • Bản phát hành cuối cùng của bản sửa lỗi sẽ là phiên bản 1.0.1.

Phải nói rằng, số phiên bản sản phẩm 'công khai' thường được đặt theo tiếp thị và hoàn toàn khác nhau. Điều này nằm ngoài tầm kiểm soát của tôi, vì vậy không có điểm nào đáng lo ngại về nó.


4

Hãy giả sử ABCD trong câu trả lời. Khi nào bạn tăng từng thành phần?

Nó cơ bản được xác định bởi chính sách công ty của bạn. Chính sách của công ty chúng tôi là:

  • A - Thay đổi hoặc bổ sung đáng kể (> 25%) trong chức năng hoặc giao diện.
  • B - những thay đổi nhỏ hoặc bổ sung về chức năng hoặc giao diện.
  • C - những thay đổi nhỏ phá vỡ giao diện.
  • D - sửa lỗi bản dựng không thay đổi giao diện.

4
Có, nhưng dave4351 đang hỏi về việc khi nào (theo thời gian) bạn có thực sự chỉnh sửa các giá trị này trong kiểm soát nguồn không? Bạn không thay đổi số phiên bản mỗi khi bạn đăng ký mã, phải không?
M. Dudley

Như bạn có thể thấy chỉ D là một ứng cử viên sẽ được thay đổi tự động trên mỗi bản dựng.
EL Yusubov

3

Trong các dự án / tổ chức lớn hơn, số phiên bản chính và phụ được kiểm soát bởi các bộ phận tiếp thị và thường được tăng lên vì lý do tiếp thị. Tại tổ chức của tôi, các nhóm nhằm phát hành một bản phát hành chính và một bản phát hành nhỏ mỗi năm. Kỳ vọng là các bản phát hành chính chứa chức năng mới quan trọng và có khả năng tương thích nhị phân giữa các API cho tất cả các bản phát hành có cùng số phiên bản chính. Tuy nhiên, tiếp thị có thể chọn hạ cấp một thay đổi phiên bản chính thành nhỏ vì các tính năng được hứa hẹn sẽ không được cung cấp hoặc ngược lại sẽ được xem là để cạnh tranh ếch, chẳng hạn.

Số lượng xây dựng chính và phụ (c và d trong abcd) thường được kiểm soát bởi sự phát triển. c là số bản dựng và d được sử dụng cho các bản vá trên một bản phát hành hoặc phiên bản cụ thể của c.

Trong trường hợp của bạn, khi bạn thay đổi số phiên bản chính và số phụ ít liên quan hơn là đảm bảo số bản dựng chính và phụ là chính xác. Tại tổ chức của tôi, chúng tôi thay đổi số lượng xây dựng chính và phụ như là một phần của quy trình phân nhánh trong kiểm soát nguồn. Chi nhánh chính thường chứa phiên bản mới nhất nhưng tiếp thị có thể chưa quyết định số phiên bản mà phiên bản sẽ có.


2

Chúng tôi thử và làm theo ví dụ Eclipse . Nó làm một công việc tốt hơn để giải thích hơn tôi có thể, nhưng hiệu quả đối với chúng tôi nó hoạt động như thế này:

Khi bạn phát hành 1.0.0.0, số phiên bản bạn thay đổi phụ thuộc vào loại thay đổi mà bạn đang thực hiện.

  • Một bản phát hành không ảnh hưởng đến API, hãy xem xét sửa lỗi phía sau hậu trường làm cho API hiện tại hoạt động theo cách mong đợi, được phát hành tại 1.0.1
  • Một bản phát hành bổ sung API nhưng không thay đổi API hiện có, bạn có thể đã thêm một tính năng mới không làm cho các máy khách hiện tại không thể so sánh được với phiên bản mới. Điều này có thể bao gồm bất kỳ số lượng các bản sửa lỗi ở trên là tốt.
  • Một bản phát hành phá vỡ API hiện tại, loại bỏ một cái gì đó, thay đổi một cái gì đó theo cách phá vỡ sự so sánh với các khách hàng hiện tại. Điều này có thể có bất kỳ số lượng lớn các bản sửa lỗi ở trên là tốt.

Về cách sử dụng phần thứ 4 trong số phiên bản, chúng tôi sử dụng phần này để phân biệt các bản dựng khác nhau trong Nuget (giải pháp quản lý gói chúng tôi sử dụng cho .net). Điều này cho phép chúng tôi tránh phải xóa bộ nhớ cache mỗi lần chúng tôi cần cập nhật phần mềm chưa phát hành.


Tôi đặc biệt hỏi về các bản dựng giữa các phiên bản. Sau bản phát hành 1.0.0 GA, bản dựng tiếp theo của bạn, hoạt động tới 1.1.0, có số phiên bản giống như 1.0.0.2592 hoặc 1.1.0.0 không?
dave4351

Có lẽ một cách khác để hỏi là: bản phát hành 1.0.0 của bạn có số bản dựng là 1.0.0.0 (thay đổi ở cuối chu kỳ) hay 1.0.0.2591 (thay đổi ở đầu chu kỳ) không?
dave4351

-1 Không giải quyết câu hỏi khi nào tăng phiên bản. Tài liệu Eclipse chỉ nói về ngữ nghĩa của số phiên bản.
M. Dudley

1

Không có bản dựng tiếp theo. Trên nhánh đó.

Phiên bản lý tưởng hóa chương trình của chúng tôi.

Nhận dạng phiên bản trên bất kỳ chi nhánh nào là PRETTY_BRANCH_NAME-build và PRETTY_BRANCH_NAME được cố định khi tạo chi nhánh.

Sơ đồ phân nhánh của chúng tôi (*) là như sau:

Các nhánh cấp cao nhất, PRETTY_BRANCH_NAME của mỗi loại là một tên mã, nói về số phiên bản ở cấp đó là vô nghĩa, có thể có một kế hoạch được lên kế hoạch nhưng nó sẽ thay đổi trước khi phát hành.

  • một nhánh TNG ( thế hệ tiếp theo ) nơi phát triển dài hạn được thực hiện. Thông thường chúng ta thậm chí không có nó và nó chưa bao giờ (phát hành) subbranches.

  • một nhánh TCG ( thế hệ hiện tại ) nơi phát triển hiện tại được thực hiện. PRETTY_BRANCH_NAME là tên mã.

  • một nhánh TPG ( thế hệ trước ). Thường không có sự phát triển nào được thực hiện ở đây, nhưng có thể có hoạt động trong các phân nhóm.

Một subbranch được tạo từ một nhánh cấp cao nhất (của TCG, với sự di chuyển chậm của TPG) khi bản beta cho một bản phát hành chính bắt đầu. PRETTY_BRANCH_NAME giống như "1.3.X" (X là chữ cái, không phải chữ số, có nghĩa là chúng tôi dự định gửi 1.3 bản phát hành từ đây), phản hồi từ beta được mã hóa vào tài khoản ở đây trong khi công việc cho bản phát hành chính tiếp theo được thực hiện trên chi nhánh TCG.

Lý tưởng nhất là bản phát hành nên được chụp nhanh trên nhánh đó, nhưng chúng tôi biết rằng chúng tôi không hoàn hảo và thường cần thực hiện các thay đổi vào phút cuối trong khi cho phép những người khác tiếp tục làm việc cho bản phát hành nhỏ tiếp theo. Do đó, các phân ngành được tạo ra để ổn định cuối cùng với các tên đẹp là số phiên bản chính thức (tại thời điểm đó, ngay cả tiếp thị cũng không muốn thay đổi nó) như "1.3", "1.3.1" trong nhánh "1.3.X", bản dựng cuối cùng trên mỗi bản là bản phát hành.

Nếu chúng tôi có cấp độ thứ tư, các tên của tiểu nhóm sẽ là "1.3.0.X" trong đó chúng tôi đã có ^ 3branches "1.3.0.0" "1.3.0.1".


(*) Ở cấp độ phát hành. Có thể có các tiểu dự án trên mỗi trong số này.


Cảm ơn vì điều đó. Tôi đã chấp nhận một câu trả lời khác phù hợp hơn với suy nghĩ của tôi, nhưng đây là thông tin tốt nếu bạn sử dụng các chi nhánh nhiều hơn một chút.
dave4351

1

Nếu bạn đang bán phần mềm thì bạn sẽ có một bản phát hành chính mới mỗi lần bán hàng / tiếp thị cần kiếm được phần thưởng lớn hơn :-).

Nếu bạn có một số kiểm soát thì:

  1. Phát hành chính khi:

    • Có một số không tương thích với bản phát hành trước đó yêu cầu chuyển đổi, v.v. như từ Python 2 sang Python 3.

    • Có một khối toàn bộ chức năng mới.

  2. Bản phát hành nhỏ cho bất kỳ thay đổi nhỏ trong chức năng.

  3. Bản vá phát hành để sửa lỗi.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.