Chúng tôi đang áp dụng chính sách phân nhánh mới để làm việc với Agile và cho phép chúng tôi phát hành trên tính năng theo cơ sở tính năng, theo đó chúng tôi có chi nhánh master
và chi nhánh QA
làm ngành vĩnh viễn. Các bản dựng ban đêm sẽ dựa trên QA
và các bản phát hành sẽ có từ master
. Các nhà phát triển sẽ tạo ra một chi nhánh tính năng cho mỗi câu chuyện. Tất cả các chi nhánh tính năng sẽ được phân nhánh theo số master
và sau đó hợp nhất thành QA
để thử nghiệm, sau đó hợp nhất chi nhánh tính năng vào master
để phát hành tiếp theo. Điều này là tốt, cho đến khi các tình huống sau:Chiến lược hợp nhất Git cho quy trình phân nhánh Agile
- Developer A ("Rod") đã tạo ra
feature/RodsFeature
, thực hiện một số công việc và sáp nhập vàoQA
(nhưng chưamaster
) - Nhà phát triển B ("Jane") đã tạo
feature/JanesFeature
, thực hiện một số công việc và bây giờ đang cố gắng nhập vàoQA
- Merge xung đột đang xảy ra cho Jane, gây ra bởi những thay đổi giới thiệu với
QA
bởi merge củafeature/RodsFeature
Nếu Jane bỏ qua QA và hợp nhất feature/JanesFeature
vào master
, sẽ không có xung đột nào như feature/RodsFeature
chưa có trong số master
. Tuy nhiên, Jane phải hợp nhất thành QA
vì lý do hiển nhiên. Để giải quyết xung đột, cô có thể kéo và tích hợp các thay đổi của Rod vào nhánh tính năng của mình, giải quyết xung đột và sau đó tiến hành hợp nhất - với kết quả không mong muốn khi cô hợp nhất chi nhánh của mình thành master
. vẫn đang chờ kiểm tra QA.
Vì vậy, giải pháp thay thế sẽ là giải quyết xung đột trực tiếp trên chi nhánh QA
, để nguyên chi nhánh của Jane còn nguyên vẹn để sau này hợp nhất thành master
. Tuy nhiên, điều này phá vỡ các chính sách xem xét mã, vì việc hợp nhất phải được chấp thuận bởi một người ngang hàng - bằng cách thực hiện điều này, cô đã hợp nhất thành QA
cục bộ và được đẩy tới điều khiển từ xa mà không cần bất kỳ yêu cầu kéo hoặc đánh giá ngang hàng nào.
Điều gì sẽ được coi là 'thực hành tốt nhất' trong tình huống này?
Chúng tôi đã có một vấn đề với tính năng 1 và tính năng 2 được sáp nhập vào chi nhánh QA nhưng tính năng 1 bị từ chối và tính năng 2 được dự kiến phát hành ngay lập tức. Sự cố này đã được khắc phục bằng cách thay đổi quy trình làm việc để không hợp nhất các tính năng vào QA/phát triển chi nhánh trước khi chúng được chấp nhận! – Warpzit