Di perusahaan saya, semua pengembangan kami (perbaikan bug dan fitur baru) dilakukan pada cabang terpisah. Ketika sudah selesai, kami mengirimkannya ke QA yang mengujinya di cabang itu, dan ketika mereka memberi kami lampu hijau, kami menggabungkannya ke cabang utama kami. Ini bisa memakan waktu antara hari dan tahun.
Jika kami mencoba memeras setiap refactoring ke dalam cabang, kami tidak tahu berapa lama akan "keluar", sehingga dapat menyebabkan banyak konflik saat digabungkan kembali.
Sebagai contoh, katakanlah saya ingin mengganti nama suatu fungsi karena fitur yang saya kerjakan sangat memanfaatkan fungsi ini, dan saya menemukan bahwa namanya tidak sesuai dengan tujuannya (sekali lagi, ini hanyalah sebuah contoh). Jadi saya berkeliling dan menemukan setiap penggunaan fungsi ini, dan mengubah nama mereka semua menjadi nama baru, dan semuanya berfungsi dengan baik, jadi saya mengirimkannya ke QA.
Sementara itu, pengembangan baru sedang terjadi, dan fungsi berganti nama saya tidak ada pada salah satu cabang yang sedang bercabang main. Ketika masalah saya digabungkan kembali, mereka semua akan rusak.
Apakah ada cara untuk mengatasi ini?
Ini tidak seperti manajemen akan pernah menyetujui masalah hanya refactor sehingga harus diperas dengan pekerjaan lain. Itu tidak dapat dikembangkan langsung pada main karena semua perubahan harus melalui QA dan tidak ada yang ingin menjadi brengsek yang memecahkan main sehingga ia bisa melakukan sedikit refactoring yang tidak penting.