Chúng tôi hiện đang trong quá trình chuyển đổi từ svn sang git (sau một năm dành cho việc thuyết phục mọi người, yay!) Trong công ty của tôi.
Cho đến nay, đây là tất cả để tốt hơn nhưng có một điều nhỏ mà chúng tôi hiện đang có trong quy trình làm việc của mình là tôi cũng không thể tìm thấy một tương đương tốt.
Hiện tại, tất cả các nhà phát triển của chúng tôi làm việc trong tổng thể. Mỗi quý một lần, chúng tôi phân nhánh chủ thành chi nhánh Xx, sau này sẽ trở thành phiên bản mới nhất của chúng tôi. Điều này có nghĩa là repo svn của chúng tôi trông như thế này:
- Thân cây
- chi nhánh
- 3,8
- 4.1
- 4.2
- ...
Chúng tôi không thực sự sử dụng thẻ.
Thỉnh thoảng, có một sửa lỗi khẩn cấp được phát hiện.
Cách hiện tại để chúng tôi làm điều đó là:
- Sửa nó trong master
- SVN hợp nhất phạm vi cam kết liên quan trở lại vào các chi nhánh có liên quan (Có thể là phiên bản mới nhất của chúng tôi, có thể nhiều hơn nữa).
Chúng tôi làm trong ngành vũ trụ, vì vậy các chi nhánh của chúng tôi tồn tại lâu và quá trình nâng cấp khách hàng khá dài, đó là lý do tại sao chúng tôi đã làm việc như vậy cho đến nay.
Bây giờ, làm thế nào sẽ là một tương đương tốt trong git?
Cho đến nay, tôi đã cố gắng sửa lỗi trong một nhánh được sinh ra từ master, và sau đó hợp nhất nhánh này trở lại trong master và trong 4.3 (ví dụ). Điều quan trọng là, nhánh hotfix chứa lịch sử chính và tất cả các cam kết giữa chủ và 4.3 cũng được hợp nhất, điều mà chúng tôi không muốn.
Những điều tôi có thể nghĩ cho đến nay:
- Tôi đã xem xét phương pháp Git Workflow rất thành công và giải pháp của họ là sửa lỗi trong nhánh phát hành và hợp nhất lại thay vì cách khác. Điều này có thể hoạt động trong trường hợp của chúng tôi, nhưng sẽ khá cồng kềnh vì nó đòi hỏi chúng tôi phải biết chi nhánh lâu đời nhất mà chúng tôi muốn sửa lỗi trước khi thực sự sửa lỗi.
- Một giải pháp khác là sửa lỗi trong master, và sau đó cherry chọn các xác nhận (như chúng ta làm cho svn merge ngày hôm nay). Điều khó chịu ở đây là trong trường hợp này, chúng tôi mất lịch sử về những gì đã được hợp nhất trở lại ở đâu, vì những quả anh đào trông giống như những cam kết mới và chúng tôi mất mối quan hệ.
Vì vậy, cách "tốt" để làm điều đó là gì? Chúng ta có nên sửa chữa các cam kết trong lịch sử, hoặc chọn cherry và theo dõi thủ công những gì đã được hợp nhất, hoặc thậm chí một cái gì khác không?
Nếu có ít kinh nghiệm sản xuất với git, vì vậy tôi chắc chắn rằng tôi có thể đã bỏ lỡ điều gì đó.