Khi nào một cam kết không được gắn thẻ phiên bản?


30

Bối cảnh: Gần đây tôi đã tìm hiểu về Phiên bản ngữ nghĩa và đang cố gắng xác định cách sử dụng nó tốt nhất thực tế cho các dự án của riêng tôi.

Cho rằng semver có những thay đổi lớn, những thay đổi nhỏ và các bản vá vào tài khoản để tạo phiên bản, khi nào thì một cam kết không được gắn thẻ với một phiên bản cập nhật? Dường như với tôi, mọi thay đổi sẽ phù hợp với một trong những loại này, và vì vậy mọi thay đổi nên được phiên bản, nhưng khi tôi xem các dự án phổ biến khác nhau trên GitHub thì đây dường như không phải là cách mọi thứ được thực hiện (chỉ nhìn vào Thực tế là các dự án lớn có hàng chục ngàn cam kết, chỉ với hàng trăm thẻ).


23
Có phải mọi cam kết để làm chủ một bản phát hành ổn định, được kiểm tra, đảm bảo chất lượng trong dự án của bạn?
Alex Reinking

1
@AlexReinking Mọi cam kết đều được kiểm tra, nhưng tôi chỉ đang cố gắng làm quen với các thông lệ chung với các dự án cá nhân của mình, vì vậy chỉ có tôi làm việc với nó và như vậy thực sự không có một hệ thống nào khác ngoài "thay đổi, kiểm tra Chính tôi, cam kết nó ".
VortixDev

Cũng lưu ý rằng các thẻ có thể được thay đổi sau này. Mã định danh cam kết rắn duy nhất là khóa băm xác nhận.
Thorbjørn Ravn Andersen

9
mọi cam kết làm chủ ??? bạn không bao giờ nên cam kết làm chủ. Mỗi hợp nhất để làm chủ âm thanh tốt hơn rất nhiều.
xyious

2
Tôi nghĩ rằng @xyious đánh vào đầu đinh. Mỗi cam kết kết thúc trên master nên được gắn thẻ với một phiên bản bởi vì mọi cam kết trên master phải là một sự hợp nhất phát hành từ phát triển .
BJ Myers

Câu trả lời:


71

SemVer liên quan đến phiên bản phát hành , không cam kết . Nếu mô hình kiểm soát phiên bản của bạn xảy ra để yêu cầu mọi cam kết thành thạo phải là một bản phát hành, thì có, mọi cam kết sẽ cần phải được gắn thẻ theo mức độ thay đổi.

Tuy nhiên, nhìn chung, các dự án phát triển một sản phẩm chủ yếu ổn định trên bản chính và gắn thẻ các bản phát hành mà họ cho là xứng đáng để hỗ trợ. Khi họ làm như vậy, họ sẽ gắn thẻ theo sơ đồ phiên bản của họ, mà không nhất thiết phải là SemVer nói riêng.


5
SemVer chủ yếu chỉ có ý nghĩa đối với các thư viện nơi người dùng là các bit mã khác chứ không phải con người. Thực sự không có bất kỳ thay đổi "phá vỡ" nào trong hầu hết các ứng dụng mà người dùng phải đối mặt vì người dùng có thể tự động thích ứng với phiên bản mới.
Qwertie

5
Tôi cho rằng các phiên bản dòng lệnh của ứng dụng mà người dùng phải đối mặt nên được phiên bản theo ngữ nghĩa vì cờ và định dạng đầu ra của chúng có thể hoạt động khác nhau. Bit của một khu vực màu xám.
Alex Reinking

5
@Qwertie Kỳ vọng của người dùng ít cứng nhắc hơn kỳ vọng phần mềm nhưng chúng vẫn tồn tại. Tôi đã DEFINITELY sử dụng nhiều phần mềm đã ban hành những gì tôi sẽ xem xét thay đổi 'phá vỡ' giao diện hoặc chức năng của chúng. Quyết định những gì cấu thành một bản phát hành chính so với bản phát hành nhỏ chắc chắn chủ quan hơn so với các thư viện, nhưng đó không nhất thiết là một lý do để tránh nó.
Iron Gremlin

11
@Qwertie - giữ lại nâng cấp. Có bao nhiêu người vẫn chạy các phiên bản chính cũ của Windows và Office?
Alex Reinking

5
@Qwertie Họ có thể được truyền cảm hứng để đọc kỹ tài liệu hoặc nhật ký thay đổi để họ có thể điều chỉnh cách họ sử dụng hệ thống để sử dụng các tính năng mới hoặc sửa đổi hoặc tìm cách khắc phục cho một tính năng đã bị xóa. Đó là trường hợp tương tự, việc sử dụng phần mềm của họ cần phải thay đổi vì phần mềm đã thay đổi, vì vậy bạn nên nói với họ về sự thay đổi đó một cách rõ ràng.
Iron Gremlin

11

Số phiên bản được phân bổ để phát hành. Nói chung không phải mọi cam kết nên là một bản phát hành. Cái này có một vài nguyên nhân.

Đầu tiên, trong khi bạn nói rằng bạn "kiểm tra" mọi cam kết đều có các cấp độ kiểm tra. Chạy thử nghiệm tự động trên một máy là tốt và tốt, nhưng trong phần mềm phức tạp, nó chắc chắn sẽ không nắm bắt được mọi vấn đề. Một số vấn đề có thể là phần cứng hoặc cấu hình cụ thể, một số vấn đề có thể liên quan đến sự cân nhắc chủ quan của con người hơn là về các yêu cầu khó kiểm tra.

Thứ hai va chạm số phiên bản chính nên là một hành động hiếm. Về cơ bản, điều đó có nghĩa là mọi thứ phụ thuộc vào phần mềm của bạn cần được kiểm tra thủ công để xem liệu nó có phụ thuộc vào bất kỳ tính năng bị xóa nào không.

Hậu quả của việc này là bạn chỉ nên thêm các tính năng vào "API công khai" trong các bản phát hành đầy đủ (không phải alpha / beta) nếu bạn chuẩn bị hỗ trợ các tính năng đó ở dạng hiện tại lâu dài.

Thứ ba, thật hữu ích để giảm số lượng phiên bản được sử dụng rộng rãi. Ngay cả trên một nhánh ổn định, tốt hơn là tập hợp một số bản sửa lỗi lại với nhau và tạo một bản phát hành duy nhất hơn là tạo một bản phát hành cho mỗi bản sửa lỗi.


2

Có vẻ như rõ ràng để nói, nhưng: mục đích số phiên bản là để cho phép bạn dễ dàng xác định phiên bản phần mềm mà bất kỳ ai đang chạy.

Nếu có bất kỳ ai có quyền truy cập vào một lần lặp mã cụ thể và không dễ dàng xác định một mã định danh duy nhất, thì lần lặp đó sẽ có một số phiên bản duy nhất. Tôi thấy đây là 'quy tắc đầu tiên'. Kết quả là, các bản phát hành riêng biệt rõ ràng sẽ muốn số phiên bản riêng biệt.

Tuy nhiên, nhiều hơn vào chơi:

Một cách để chắc chắn về điều này là tăng số phiên bản với mỗi lần xác nhận nhưng đây thường không phải là một ý tưởng hay. Có thể phải thực hiện một số lần cam kết / lặp lại để có một thay đổi tương đối nhỏ hoạt động và thật khó hiểu với thế giới bên ngoài để xem phiên bản 0.0.1 -> 0.0.2 do một số lượng lớn các thay đổi tích lũy sau đó 0,0.2 -> 0,0 .56 vì ai đó đã cam kết không gian trắng sửa một tệp tại một thời điểm và không thay đổi bất kỳ chức năng nào.

Khoảng cách từ "một phiên bản cho mỗi bản phát hành đầy đủ" đến "một phiên bản cho mỗi cam kết" thực sự tùy thuộc vào: bạn, những người dùng khác và những hệ thống nào bạn sẵn sàng sử dụng để lấp đầy các khoảng trống.

Cá nhân tôi đã từng làm việc trong các dự án nhỏ và rất vui khi sử dụng git băm cho đến khi một phiên bản mà người khác sử dụng và một phiên bản cho mỗi người trong số họ (cho dù tôi có mong đợi có bao nhiêu người để có được nó). Tuy nhiên, trong các công ty lớn hơn và các dự án lớn hơn, một số phiên bản ngữ nghĩa, nhưng độ trung thực thấp hơn so với từng cam kết, như đánh số ứng viên phát hành được sử dụng. Những cái này có lợi thế nhưng thêm phức tạp.


0

Mỗi yêu cầu kéo được hợp nhất thành chủ nên được phiên bản.

Nếu nó không phải là một phiên bản mới (ít nhất là một bản vá), thì có khả năng nó không nên được hợp nhất thành chủ vì tính năng / sửa chữa / vv chưa hoàn tất.

Tuy nhiên, tùy thuộc vào quy trình làm việc của nhóm bạn, bạn vẫn có thể kết thúc với nhiều cam kết thành thạo mà không có phiên bản. Nếu có một số cam kết trong yêu cầu kéo mà không bị xóa (Theo ý kiến ​​của chúng thì không nên), bạn vẫn có thể kết thúc với 10 lần xác nhận và chỉ 1 phiên bản mớ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.