Tại công ty của tôi, tất cả sự phát triển của chúng tôi (sửa lỗi và các tính năng mới) được thực hiện trên các chi nhánh riêng biệt. Khi nó hoàn thành, chúng tôi gửi nó cho QA, người kiểm tra nó trên nhánh đó và khi chúng bật đèn xanh, chúng tôi hợp nhất nó vào nhánh chính của chúng tôi. Điều này có thể mất bất cứ nơi nào giữa một ngày và một năm.
Nếu chúng ta cố gắng siết chặt bất kỳ cấu trúc lại nào trên một nhánh, chúng ta sẽ không biết nó sẽ "ra ngoài" trong bao lâu, vì vậy nó có thể gây ra nhiều xung đột khi nó được hợp nhất trở lại.
Ví dụ: giả sử tôi muốn đổi tên một hàm vì tính năng tôi đang sử dụng đang sử dụng rất nhiều chức năng này và tôi thấy rằng tên của nó không thực sự phù hợp với mục đích của nó (một lần nữa, đây chỉ là một ví dụ). Vì vậy, tôi đi khắp nơi và tìm mọi cách sử dụng chức năng này, và đổi tên tất cả chúng thành tên mới của nó, và mọi thứ hoạt động hoàn hảo, vì vậy tôi gửi nó cho QA.
Trong khi đó, sự phát triển mới đang diễn ra và chức năng được đổi tên của tôi không tồn tại trên bất kỳ nhánh nào đang bị rẽ nhánh chính. Khi vấn đề của tôi được hợp nhất trở lại, tất cả sẽ tan vỡ.
Có cách nào để đối phó với điều này?
Nó không giống như quản lý sẽ phê duyệt một vấn đề chỉ tái cấu trúc để nó phải được xử lý với các công việc khác. Nó không thể được phát triển trực tiếp trên main vì tất cả các thay đổi đều phải trải qua QA và không ai muốn trở thành kẻ phá vỡ chính để anh ta có thể thực hiện một chút tái cấu trúc không cần thiết.