Un team ha fatto simultaneamente diversi refactoring (per aumentare la genericità del sistema) allo stesso progetto con alcune sovrapposizioni (sì, sfortunatamente, più come "big bang"). Il codice si estende a rappresentazione, applicazione, livelli di dominio e ha una copertura di codice piuttosto elevata. Ci sono N rami in attesa di essere uniti nel master. Alcuni refactoring erano più in rappresentazione, ma la maggior parte di essi era nel dominio, con alcune sovrapposizioni (ok, ci sono modifiche alle entità centrali e più usate del modello: due entità unite, una suddivisa in due più una completamente nuova aggiunta).
Quale potrebbe essere un buon ordine per unire i rami? La squadra dovrebbe partire da livelli inferiori o viceversa? O forse i rami con meno "impronta" dovrebbero essere uniti per primi?
La sensazione istintiva è di unire prima i rami a più basso livello e poi salire. Quali altre cose ci sono da considerare per portare il lavoro ridondante al minimo?
Se è importante, la maggior parte delle diramazioni di feature derivano dal master quasi contemporaneamente e sono facilmente integrabili con il master.
Sorprendentemente, non ho trovato teorie o buone riflessioni sull'argomento. Ho cercato di porre la domanda in un modo più generico nella speranza che la risposta contenga anche un'euristica più generica e un elenco di considerazioni pertinenti, quindi sarà più utile della situazione specifica.
Di fatto, la granularità dei commit differisce tra gli sviluppatori. A volte, il commit viene eseguito per codice non elaborato per consentire ad altri di dare un'occhiata più da vicino.