A.3. Come fare delle prove retroattive usando Subversion

Un problema che può capitare delle volte è 'prima funzionava, ora non funziona più...'. C'è una procedura passo passo per cercare di scoprire dove il problema si sia presentato. Non è destinata agli utenti casuali.

Per prima cosa, dovresti scaricare l'alberatura dei sorgenti di MPlayer da Subversion. Le istruzioni si possono trovare nella sezione su Subversion nella pagina dei download.

Troverai ora un immagine dell'archivio Subversion dentro alla directory mplayer/, dal lato client. Ora aggiorna questa immagine alla data che desideri:

cd mplayer/
svn update -r {"2004-08-23"}

Il formato della data è YYYY-MM-DD HH:MM:SS. Usando questo formato di data ti garantisce di essere in grado di estrarre le path in base alla data in cui sono state applicate, come nell'archivio MPlayer-cvslog.

Ora procedi come per un normale aggiornamento:

./configure
make

Per chi sta leggendo e non è un programmatore, il modo più veloce di trovare il punto dove si è presentato il problema è effettuare una ricerca binaria — che significa cercare la data della 'rottura' dividendo ripetutamente a metà l'intervallo di ricerca. Per esempio, se il problema si è presentato nel 2003, inizia da metà anno, poi chiediti "C'è già il problema qui?". Se sì, retrocedi fino al primo di aprile; se no, vai al primo di ottobre, e così via.

Se hai tanto spazio libero sul disco rigido (una compilazione completa occupa attualmente 100 MB, e circa 300-350 MB se si abilitano i simboli di debug), copiati la versione funzionante più vecchia prima di aggiornarla; questo ti farà risparmiare tempo se devi retrocedere. (Solitamente bisogna eseguire 'make distclean' prima di ricompilare una versione precedente, perciò se non ne hai una salvata, dovrai ricompilare tutto quanto quando ritorni alla verisone attuale.)

Dopo aver trovato il giorno in cui è nato l'errore, continua a cercare usando l'archivio mplayer-cvslog (ordinato per data) e un più preciso aggiornamento su svn con ora, minuto e secondo:

svn update -r {"2004-08-23 15:17:25"}

Questo ti permetterà di trovare facilmente la patch esatta che lo ha generato.

Se trovi la patch che è stata la causa del problema, hai quasi vinto; fai un rapporto su MPlayer Bugzilla o iscriviti a MPlayer-users e postalo là. C'è anche la possibilità che l'autore intervenga consigliando una correzione. Puoi anche controllare attentamente la patch fino a quando la costringi a rivelarti dove stia il bug :-).