Mentre lavoravo con un progetto a cui ero assegnato, ho notato un piccolo problema con la nostra strategia SVN. Qualche mese fa, qualcuno ha creato un nuovo ramo di funzionalità dal nostro baule. In questo ramo ha implementato una seconda implementazione di una funzionalità già implementata (ma in un modo più efficiente). Ha cambiato in realtà solo una lezione.
Dopo questa azione alcuni dei metodi delle classi sono comuni per entrambi i posti - trunk e feature branch - ma alcuni metodi sono specifici per ogni implementazione. È stato deciso di supportare entrambe le versioni, quindi a volte creiamo una distribuzione dal ramo, a volte dal trunk (alcune ipotesi di business).
Ora ho qualche problema con l'unione - normalmente voglio unire solo queste parti di codice che sono comuni per trunk e branch. Rende ogni unione più complicata perché ogni volta che ho dei conflitti da risolvere (e ne ho molti di loro) devo prestare particolare attenzione a quale azione devo intraprendere per ogni linea in conflitto.
La mia domanda è: ho ragione nel sostenere che la decisione di creare una "nuova versione" che dovrebbe essere supportata come feature branch fosse una cattiva idea? Quali sono le migliori pratiche in questo caso?