Toàn bộ sự nhầm lẫn bắt nguồn từ các ngữ nghĩa khác nhau mà MS sử dụng cho "Số lượng xây dựng" và đặc biệt là "Sửa đổi". Các thuật ngữ chỉ có nghĩa là những điều khác nhau.
Hầu hết mọi người (bao gồm cả tôi) sử dụng sơ đồ đánh số phiên bản ngữ nghĩa trong đó bạn chỉ cần có số BUILD cao hơn bất cứ khi nào bạn phải tạo một bản dựng mới vì bất kỳ lý do gì. Đối với chúng tôi, một hotfix được coi là một thay đổi mã khác và phần BUILD sẽ tự động tăng lên sau mỗi lần chạy CI. Các mô-đun có cùng MAJ.MIN.REV được coi là có thể hoán đổi cho nhau và BUILD cho bạn biết cái nào là gần đây nhất.
Tuy nhiên, REVISION tăng cho thấy một nhánh phát hành vĩnh viễn mới, đó là lý do tại sao chúng tôi đặt nó trước BUILD. Nhược điểm của phương pháp đó là chúng ta có thể nhận được chuỗi các sự kiện sau:
- cam kết số 4711: Alice thêm tính năng A
- CI sản xuất bản dựng 1.2.3.100
- cam kết số 4712: Bob sửa đổi tính năng B
- cam kết số 4713: Alice đã sửa tính năng A ("hotfix")
- CI sản xuất bản dựng 1.2.3.101
Như bạn có thể thấy, hotfix không phải là thay đổi duy nhất có trong bản dựng tiếp theo, cũng là sửa đổi của Bob trở thành một phần của bản dựng đó. Nếu bạn muốn ổn định chi nhánh hiện tại, bạn có thể gặp rắc rối vì bạn không bao giờ có thể chắc chắn liệu Bob có thêm một loạt lỗi hay không.
MS sử dụng cả hai thuật ngữ khác nhau. Số BUILD không được tự động tăng lên, thay vào đó, nó có thể được coi là một loại nhánh phát hành, để đóng băng mã được sử dụng cho một phiên bản mã cụ thể. REVISION chỉ ra các thay đổi "nóng" bổ sung được áp dụng cho chi nhánh BUILD đó. Trình tự do đó sẽ như sau:
- cam kết số 4711: Alice thêm tính năng A vào thân cây / chủ
- Carl tạo chi nhánh xây dựng
1.2.100
- CI sản xuất bản dựng 1.2.100.0
- cam kết số 4712: Bob sửa đổi tính năng B trong thân cây / chủ
- cam kết số 4713: Alice cố định tính năng A trong
1.2.100
chi nhánh
- CI sản xuất bản dựng 1.2.100.1
Thuật ngữ REVISION có thể đề cập đến
- một sản phẩm sửa đổi (đó là cách hầu hết mọi người sử dụng nó)
- bản sửa đổi của bản dựng hàng ngày cụ thể (đó là những gì MS làm)
Sự khác biệt chính giữa hai quy trình là, bạn có muốn áp dụng hotfix cho các bản dựng CI hay không và do đó, tại thời điểm nào trong quy trình, chi nhánh được thực hiện. Khía cạnh này trở nên quan trọng khi bạn muốn có thể chọn một bản dựng cụ thể bất cứ lúc nào sau khi tất cả các thử nghiệm thành công và quảng bá chính xác phiên bản đó lên bản phát hành chính thức tiếp theo của sản phẩm.
Trong trường hợp của chúng tôi, công cụ CI tạo thẻ kho lưu trữ, vì vậy chúng tôi luôn có sẵn thông tin cần thiết để sử dụng khi cần. Với SVN, nó trở nên đơn giản hơn, bởi vì các thẻ và các nhánh được triển khai chính xác theo cùng một cách - một thẻ không có gì khác hơn một nhánh nằm bên dưới /tags
.
Xem thêm
Từ phần FAQ tại chiến lược phân nhánh TFS :
Tôi nên sửa vé P1 (hotfix) ở chi nhánh nào?
P1 nên được cố định trong nhánh gần nhất với cơ sở mã đang chạy trong Sản xuất. Trong trường hợp này, nên sửa lỗi P1 trong nhánh Prod. Bằng cách áp dụng sửa lỗi trong bất kỳ chi nhánh nào khác và đưa ra các thay đổi cho sản xuất, bạn có nguy cơ phát hành mã bán thành phẩm hoặc chưa được kiểm tra từ các lần lặp tiếp theo.
Bây giờ bạn có thể tranh luận nếu an toàn khi làm việc trực tiếp với chi nhánh Prod, hãy nghĩ lại, một chiếc P1 đòi hỏi sự chú ý ngay lập tức không phải là vấn đề cơ bản trong hệ thống. Trong trường hợp đó là một vấn đề cơ bản, nó cần được thêm vào hồ sơ tồn đọng của Sản phẩm vì nó có thể yêu cầu phân tích và thảo luận thêm với khách hàng.
Một cách đọc tốt khác là hướng dẫn phân nhánh TFS