Có vẻ như bạn đang bỏ qua các quy ước thông thường chỉ để tránh quá trình kiểm toán / kiểm toán. Điều đó ... gây ấn tượng với tôi.
Những gì bạn đang làm là thực sự tạo ra một số phiên bản bổ sung (chữ số PCI nhỏ của bạn) một cách có chủ ý để di chuyển các số phiên bản tính năng / nhỏ của bạn trở lại một vị trí, để không còn kích hoạt các tiêu chí kiểm toán nội bộ của bạn.
Dù sao, nhận được câu hỏi của bạn về phiên bản ngữ nghĩa, thông số kỹ thuật cho các trạng thái Phiên bản ngữ nghĩa :
Cho số phiên bản MAJOR.MINOR.PATCH, tăng:
- Phiên bản CHÍNH khi bạn thực hiện các thay đổi API không tương thích,
- Phiên bản MINOR khi bạn thêm chức năng theo cách tương thích ngược và
- Phiên bản PATCH khi bạn thực hiện sửa lỗi tương thích ngược.
- Các nhãn bổ sung cho siêu dữ liệu trước khi phát hành và xây dựng có sẵn dưới dạng các phần mở rộng cho định dạng MAJOR.MINOR.PATCH .
Nhấn mạnh mỏ.
Vì vậy, câu hỏi là, bạn đang sử dụng ký tự thứ tư cho siêu dữ liệu trước khi phát hành / xây dựng? Hoặc về cơ bản là một dấu hiệu phiên bản khác mà bạn đang phát hành?
Nếu "có" thì thông số kỹ thuật của phiên bản ngữ nghĩa sẽ cho phép nó. Nếu "không" thì về mặt kỹ thuật bạn không tuân theo phiên bản ngữ nghĩa.
Và như một câu hỏi phụ cấp cao hơn và nhiều tranh cãi hơn, nó có thực sự quan trọng không?
Cho dù bạn có muốn cứng nhắc làm theo hay không là quyết định mà bạn và nhóm của bạn phải đưa ra. Mục đích của phiên bản ngữ nghĩa là để giúp tương thích API:
Sửa lỗi không ảnh hưởng đến việc tăng API phiên bản vá lỗi, bổ sung / thay đổi API tương thích ngược làm tăng phiên bản nhỏ và thay đổi API không tương thích ngược làm tăng phiên bản chính.
Tôi gọi hệ thống này là "Phiên bản ngữ nghĩa." Theo sơ đồ này, số phiên bản và cách chúng thay đổi truyền đạt ý nghĩa về mã cơ bản và những gì đã được sửa đổi từ phiên bản này sang phiên bản tiếp theo.
Đây là một hệ thống giúp làm cho nó rõ ràng hơn khi phiên bản ảnh hưởng đến người dùng API hạ nguồn.
Miễn là API của bạn rõ ràng tương tự, đó không phải là vấn đề lớn mà bạn chọn. Phiên bản ngữ nghĩa chỉ đơn giản là đơn giản, ví dụ nếu tôi đang sử dụng 3.4.2 và cần nâng cấp lên 3.4.10 Tôi biết tôi có thể làm như vậy mà không làm hỏng bất cứ điều gì. Nếu phiên bản mới là 3.5.1, tôi biết nó tương thích ngược. Và tôi biết phiên bản 4.0.1 sẽ là một sự thay đổi đột phá.
Đó là tất cả các phần của số phiên bản có nghĩa.
@enderland Có cơ bản. CHÍNH (PCI) .MINOR (PCI). TÍNH NĂNG.HOTFIX + BUILD. Về cơ bản, chúng tôi chỉ được phép thay đổi thành phần thứ 3 và thứ 4 mà không cần có PCI (và sau đó là các lớp phủ PCI tại công ty). Đối với tôi cảm giác như đây là một chút giả tạo, tôi không chắc họ có lý do trong cách họ quản lý số phiên bản, nhưng tôi không biết đủ về PCI và quy trình kiểm toán để nói khác.
Ok, điều này là tốt. Bạn có một hệ thống phù hợp với bạn và đáp ứng nhu cầu của bạn. Đó là điểm của phiên bản.
Nếu API của bạn là riêng tư (chỉ đối mặt với nội bộ) thì thực sự không có vấn đề gì với phiên bản của bạn miễn là nó có ý nghĩa với bạn và mọi người sử dụng nó. Trường hợp phiên bản ở định dạng chuẩn là vấn đề khi bạn có nhiều người tiêu dùng API khác cần biết "phiên bản này có nghĩa là gì?"
Có một hệ thống phiên bản tùy ý sẽ gây nhầm lẫn cho những người đã quen với các hệ thống khác, chẳng hạn như phiên bản ngữ nghĩa. Nhưng nếu không ai thực sự sử dụng hệ thống phiên bản của bạn ngoại trừ những người tạo ra nó - điều đó không thực sự quan trọng.