Nella mia azienda, tutto il nostro sviluppo (correzioni di bug e nuove funzionalità) viene eseguito su filiali separate. Quando è completo, lo inviamo al QA che lo controlla su quel ramo e quando ci danno il via libera, lo uniamo al nostro ramo principale. Questo potrebbe richiedere tra un giorno e un anno.
Se proviamo a spremere qualsiasi refactoring su un ramo, non sappiamo per quanto tempo sarà "out", quindi può causare molti conflitti quando viene unito nuovamente.
Ad esempio, supponiamo di voler rinominare una funzione perché la funzione su cui sto lavorando sfrutta pesantemente questa funzione e ho scoperto che il suo nome non si adatta perfettamente al suo scopo (di nuovo, questo è solo un esempio). Quindi vado in giro e trovo ogni utilizzo di questa funzione, e rinominale tutti con il suo nuovo nome, e tutto funziona perfettamente, quindi lo invio al QA.
Nel frattempo, sta accadendo un nuovo sviluppo, e la mia funzione rinominata non esiste su nessuno dei rami che vengono biforcati fuori dalla main. Quando il mio problema viene riunito, si interromperanno tutti.
C'è un modo per affrontare questo?
Non è che la direzione approverà mai un problema di refactoring, quindi deve essere spremuto con altri lavori. Non può essere sviluppato direttamente su main perché tutte le modifiche devono passare attraverso il QA e nessuno vuole essere il jerk che ha rotto main in modo da poter fare un po 'di refactoring non essenziale.