Spesso capita che le circostanze richiedano di effettuare modifiche direttamente dal cliente, quindi per limiti di tempo si modifica una store "al volo"; al rilascio seguente, rimane il problema di "mergiare" queste modifiche con quelle fatte in sviluppo. Sicuramente farlo per un paio di oggetti db non costa molto, ma comunque queste micro-attività diventano tutte perdite di tempo che sommatesi fanno diventare un'operazione di rilascio interminabile (anche più di 3 giornate).
Qua mi sa che entra in gioco anche un fattore diciamo "politico".

Preso per buono che il più delle volte la modifica al volo è una personalizzazione per il cliente X piuttosto che un baco, si rischia di finire nella situazione in cui:
- il cliente X ha la versione 1.1.2;
- il cliente Y ha la versione 1.1.2 con la stored s1 modificata;
- il cliente Z ha la versione 1.1.2 con la stored s2 modificata (ma la s1 no);
poi passa del tempo, le versioni cambiano e si arriva alla 1.2.0: il cliente Y, non aggiornato da tempo, chiama dicendo che ha trovato un baco.
Ma Y che versione ha?

io penso che la versione "1.1.2 con la stored s1 modificata" non sia una versione, ma un ibrido (aggiungo anche ingestibile). Soprattutto nel caso specifico in cui Y si trova molto "arretrato" in fatto di aggiornamenti (chi si ricorda cosa abbiamo fatto a Y? chi è andato ad installare? non lo so, non mi ricordo... e via dicendo).
Volendo posso aggiungere che mi è anche capitato di perdere alcune modifiche per strada (vuoi per negligenza, vuoi per fretta....) causando una vera e propria giungla in cui tante volte si rischia di non capire più niente.
E quindi per poter rispondere correttamente (e in modo chiaro e completo) alla domanda:
"Ma il cliente Y che versione ha?

"
in azienda abbiamo adottato la seguente soluzione "politica": i bachi (si dovrebbe dire i POCHI bachi

) si risolvono anche presso il cliente ma all'istante se ne dà comunicazione in sede, perchè si provveda a rilasciare al più presto una versione corretta. Le personalizzazioni si inseriranno invece in una versione "futura" (gestita dalla sede, dunque una "Versione" vera e propria).
So che questa cosa potrebbe creare dissenso, malumori, e via dicendo, ma ritengo che il versioning sia fondamentale, non tanto dal punto di vista della programmazione, quanto da quello della gestione.
Sinceramente non mi sono mai posto il problema di ricercare un software che mi sistemi i problemi in questione (se ce ne fosse uno che però li risolve completamente ben venga): penso sia più un problema organizzativo e di gestione del progetto.
Non so se mi sbaglio, poi ripeto: io vivo in una "piccola" dimensione di una decina di clienti, se qualcuno di loro trova un baco ci telefona, noi glielo sistemiamo, creiamo una nuova versione e gliela inviamo via mail oppure aggiorniamo direttamente attraverso un collegamento remoto. Se richiede una personalizzazione se ne studia la fattibilità. Ad ogni modo (tranne casi eccezionali) la versione "esce" dalla sede, ed è una versione generale, non una versione per il cliente X.
dZ
ps. spero di non essere andato fuori tema, nel caso scusatemi!