Vấn đề
Tôi đang tham gia một dự án phần mềm có khoảng 10 nhà phát triển, chúng tôi chia sẻ mã nguồn thông qua Mercurial. Chúng tôi có một chi nhánh phát triển và sản xuất mỗi phát hành. Lặp đi lặp lại trong suốt quá trình của dự án, chúng tôi đã có mã nguồn từ một nhánh, tức là v1 vào các nhánh vá và bảo trì để phát hành phần mềm trước đó, v2.
Điều này dẫn đến việc mất thời gian sao lưu cam kết sai hoặc mã sai (có thể không phải là QAd) tiếp cận và được triển khai ở nhánh sai nếu chúng tôi không nhận thấy rằng mã đã đi sai nhánh.
Chi nhánh của chúng tôi và hợp nhất thiết kế / phương pháp
v1-test v1-patch1 v1-patch2
^---------^-----------^ v1-prod
/ / \ \
-----------------------/ \ \ v1-dev
\ \ \
--------------------------\ v2-dev
\ \ \
^-------^------------- v2-prod
v2-test v2-patch1
Do đó, chúng tôi sẽ làm việc trên một nhánh phát triển phát hành, cho đến khi nó được coi là sẵn sàng , phân nhánh nó cho một nhánh thử nghiệm / UAT / Sản xuất, trong đó tất cả các bản phát hành và bảo trì được thực hiện. Thẻ được sử dụng để xây dựng các bản phát hành của chi nhánh này. Trong khi v1 đang được thử nghiệm, một nhánh sẽ được tạo cho v2 và các nhà phát triển sẽ bắt đầu làm việc trên các tính năng mới.
Điều có xu hướng xảy ra là một nhà phát triển cam kết làm việc do nhánh v2-dev thành v1-dev hoặc v1-prod, hoặc tệ hơn, họ hợp nhất v2-dev thành v1-prod (hoặc các lỗi tương tự như vậy).
Chúng tôi nói với hầu hết các nhà phát triển không truy cập vào các nhánh -prod , tuy nhiên mã vẫn lẻn vào. Một nhóm các nhà phát triển cao cấp hơn 'chăm sóc' nhánh -prod.
Cần lưu ý rằng trong khi v2 mới bắt đầu phát triển, vẫn có thể có một số bản vá khá lớn đi vào v1 để khắc phục sự cố. Tức là v1 có thể không chỉ nhận được các bản vá nhỏ lẻ.
Những gì chúng tôi đã cố gắng cho đến nay
- Có một chi nhánh riêng, với người gác cổng. Chi nhánh -prod sẽ đưa ra cảnh báo thông qua tên của nó và hầu hết các nhà phát triển không cần phải ở trong chi nhánh đó. Điều này đã không thực sự làm giảm vấn đề.
- Nâng cao nhận thức về vấn đề này trong số các nhà phát triển, để cố gắng và làm cho họ cảnh giác hơn. Một lần nữa điều này đã không được rất thành công.
Những lý do có thể tôi thấy đối với các nhà phát triển cam kết sai chi nhánh
- Thiết kế chi nhánh quá phức tạp
- Có sự phát triển tích cực trong nhiều ngành song song. (Dự án thể hiện các triệu chứng của việc sử dụng mô hình tuyết lở .)
- Các nhà phát triển không hiểu rõ về DVCS
Những câu hỏi tôi đã đọc có liên quan
Tôi đã đọc câu hỏi này về việc không cam kết sai chi nhánh và tôi cảm thấy rằng các câu trả lời liên quan đến tín hiệu thị giác có thể hữu ích. Tuy nhiên tôi không hoàn toàn tin rằng các vấn đề chúng ta gặp phải không phải là triệu chứng của một vấn đề cơ bản hơn.
Với các manh mối trực quan, chúng ta có thể kết hợp chúng vào dòng lệnh một cách dễ dàng, tuy nhiên khoảng một nửa đội sử dụng nhật thực mà tôi không chắc chắn cách kết hợp các tín hiệu thị giác.
Câu hỏi
Những phương pháp nào, dưới dạng phần mềm, quản lý dự án hoặc quản trị mà chúng ta có thể sử dụng để giảm (dừng lý tưởng) cam kết với chi nhánh sai chiếm thời gian của chúng tôi hoặc làm bẩn mã triển khai của chúng tôi?
Nhận xét cụ thể về lý do tôi tin rằng có thể đóng góp như đã nêu ở trên sẽ được đánh giá cao, nhưng điều này không nên giới hạn câu trả lời của bạn.