Problema

Ogni tanto e "in situazioni di emergenza", mi capita di dover preparare una singola DLL, per la fixare in un produzione un bug. Dato che il nostro gruppo di sviluppo utilizza SVN come repository del codice, con un unico trunk sul quale vengono fatte le build, etichettate con specifica commit da un sistama di build automatico, procedo nel seguente modo:

  • Dalla versione del sw rilasciata in produzione ottengo la revision della build (rev)
  • Effetto una checkout to revision alla rev così determinata
  • Isolo la o le revision che includono la fix: [revfix1], [revfix2] ... dove revfixX>rev
  • Effettuo o una svnupdate sui singoli file oggetto della build o un merge delle revision [revfix1], [revfix2] ...

Ho pensato di dedicare qualche minuto e scrivere un batch (svnfix.bat) che faccia questa operazione in automatico che di seguito riporto:

SET PT=%1
SET REV=%2
SHIFT
SHIFT
svn update %PT% -r %REV%
:start_merge
IF "%1"=="" (GOTO :end_merge)
CD %PT%
svn merge -c %1 %PT%
SHIFT
GOTO :start_merge
:end_merge

L'utilizzo è il seguente: svnfix path_working_copy rev [revfix1] [revfix2] ... ricordatevi di fare una revert dei file mergiati dopo aver buildato ...

PS: So che esistono i workflow che prevedono la creazione di apposite branch per il deploy dalle quale poi sarebbe possibile fare il fix, ma attualmente per varie ragioni questa modalità non è implementata dal nostro gruppo di lavoro.