Các chi nhánh nên hoạt động tốt, dựa trên kinh nghiệm của tôi về việc sử dụng chúng trong các đánh giá trước khi cam kết tại công việc trước đó.
Lưu ý trước đó, chúng tôi chỉ sử dụng các đánh giá trước khi cam kết cho các bản vá quan trọng cho mã ứng viên phát hành sản xuất, do đó không có nhiều chi nhánh (các thay đổi thường lệ được chuyển qua các đánh giá sau cam kết).
Vì dường như bạn sẽ sử dụng các đánh giá trước khi cam kết cho tất cả các thay đổi, bạn có thể cần phải quản lý số lượng lớn các chi nhánh. Nếu bạn mong đợi nhà phát triển thực hiện trung bình một thay đổi "có thể xem lại" mỗi tuần, thì cuối cùng bạn sẽ có khoảng 50 chi nhánh cho mỗi nhà phát triển trong nhóm. Nếu bạn đang sử dụng các khối công việc nhỏ hơn - như những người mất 1, 2, 3 ... ngày - nhân 50 với 2, 3, 5 ... tương ứng.
Dưới đây là một vài cân nhắc khác cần tính đến nếu bạn muốn nó cách tốt nhất .
1. xử lý các trường hợp khi trì hoãn xem lại mã khối cần thiết cho các thành viên khác trong nhóm
Thiết lập, giám sát và giải quyết các xung đột liên quan đến thời hạn xem xét mã. Theo hồi ức của tôi về các đánh giá trước khi cam kết với các thay đổi thường lệ tôi đã xử lý trong một trong các dự án trước đây, thời hạn hợp lý là khoảng 3 ngày và thời gian để bắt đầu lo lắng là khi việc đánh giá không hoàn thành hơn 1 ngày sau khi gửi.
Để so sánh, tại các đánh giá sau cam kết, các yêu cầu này thoải mái hơn nhiều (tôi đang sử dụng thời hạn 2 tuần và bắt đầu lo lắng sau 1 tuần) - nhưng vì bạn nhắm mục tiêu đánh giá trước khi cam kết, điều này có thể không thú vị.
2. hợp nhất xung đột khi gửi mã được xem xét
Phải làm gì nếu cam kết cho mã được đánh giá bị chặn bởi những thay đổi xung đột được cam kết bởi người khác trong khi mã đang chờ xem xét?
Một vài lựa chọn để xem xét là
- quay trở lại để bắt đầu và yêu cầu các nhà phát triển triển khai lại và xem xét lại sự thay đổi
Đối với trường hợp đó, bạn có thể cần phải giải quyết một tác động tiêu cực đến tinh thần của đội mà điều này có thể (sẽ!).
- chuyển trách nhiệm hợp nhất cho thành viên khác trong nhóm ("hợp nhất chủ")
Trong trường hợp đó, bạn cũng sẽ cần phải quyết định liệu hợp nhất có nên thông qua đánh giá trước khi cam kết hay không - và nếu có, thì phải làm gì trong trường hợp nếu hợp nhất lần lượt gặp một cuộc xung đột khác.
- bỏ qua các thay đổi được thực hiện đối với mã được xem xét ở giai đoạn hợp nhất
Trong trường hợp đó, bạn có thể cần phải giải quyết tác động tiêu cực đến tinh thần nhóm liên quan đến thực tế là mã đã cam kết khác với mã đã được xem xét.
- phát minh ra một cách để tránh xung đột
Cách tiếp cận đơn giản là chỉ cho phép một nhà phát triển sửa đổi tập tin cụ thể - mặc dù điều này sẽ không bảo vệ bạn khỏi loại thay đổi không sửa đổi trực tiếp tệp, nhưng tác động đến chúng thông qua thay đổi API nội bộ . Bạn cũng có thể phát hiện ra rằng loại "khóa bi quan" này làm cho các thay đổi trên toàn hệ thống và tái cấu trúc sâu khá rắc rối.
Để so sánh, sẽ không có vấn đề nào như vậy trong các đánh giá sau cam kết (vì các thỏa thuận này với mã đã được hợp nhất theo định nghĩa) - nhưng vì bạn nhắm mục tiêu đánh giá trước khi cam kết, nên điều này có thể không thú vị.
3. tải nhà phát triển đang chờ xem xét
Thiết lập một chính sách rõ ràng cho dù nhà phát triển đã gửi đánh giá nên chuyển sang nhiệm vụ mới hoặc làm một việc khác (ví dụ như theo đuổi người đánh giá).
Để so sánh, đánh giá sau cam kết hầu như không cần chính sách rõ ràng (vì việc tiếp tục thực hiện nhiệm vụ tiếp theo sau khi bạn cam kết mã và tính đến thời hạn xem xét là một hoặc hai tuần) - nhưng vì bạn nhắm mục tiêu đánh giá trước khi cam kết, nên điều này có thể không thú vị.