# HG changeset patch # User Giulio@puck # Date 1247958897 -7200 # Node ID fb05936ccde9260d1dc3794839fa1e3772e10f1a # Parent e553aac061f1d4aa06b2546d48f5d991eb72d988 Minor modifications to Ch.9. diff -r e553aac061f1 -r fb05936ccde9 it/ch09-undo.xml --- a/it/ch09-undo.xml Sat Jul 18 23:31:29 2009 +0200 +++ b/it/ch09-undo.xml Sun Jul 19 01:14:57 2009 +0200 @@ -44,7 +44,7 @@ In questa situazione, potete immaginare che pasticcio accadrebbe se aveste un repository 0.9 locale e vi propagaste accidentalmente i cambiamenti dal repository 1.0 condiviso. Nel caso peggiore, potreste non fare abbastanza attenzione e trasmettere quei cambiamenti nell'albero 0.9 condiviso, confondendo tutti gli altri sviluppatori (ma non preoccupatevi, ritorneremo a questo orribile scenario più avanti). Tuttavia, è più probabile che notiate immediatamente l'errore, perché Mercurial vi mostrerà l'URL da cui sta estraendo i cambiamenti, o perché vedrete Mercurial propagare un numero sospettosamente alto di cambiamenti nel repository. - Il comando hg rollback lavorerà scrupolosamente per cancellare tutti i changeset che avete appena estratto. Mercurial raggruppa tutti i cambiamenti provenienti da una invocazione di hg pull in una singola transazione, quindi un'unica invocazione di hg rollback è tutto quello che vi serve per annullare questo errore. + Il comando hg rollback cancellerà scrupolosamente tutti i changeset che avete appena estratto. Mercurial raggruppa tutti i cambiamenti provenienti da una invocazione di hg pull in una singola transazione, quindi un'unica invocazione di hg rollback è tutto quello che vi serve per annullare questo errore. @@ -71,7 +71,7 @@ Rimediare alle modifiche sbagliate - Se fate un cambiamento a un file e decidete che in realtà non volevate affatto modificare il file, e non avete ancora inserito i vostri cambiamenti nel repository, il comando che vi serve è hg revert. Guarda al changeset che è il genitore della directory di lavoro e ripristina il contenuto di quel file allo stato in cui era in quel changeset. (Questo è un modo verboso di dire che, nel caso normale, annulla le vostre modifiche.) + Se fate un cambiamento a un file e decidete che in realtà non volevate affatto modificare il file, e non avete ancora inserito i vostri cambiamenti nel repository, il comando che vi serve è hg revert. Guarda al changeset che è il genitore della directory di lavoro e ripristina il contenuto di quel file allo stato in cui era in quel changeset. (Questo è un modo prolisso di dire che, nel caso normale, annulla le vostre modifiche.) Vediamo come funziona il comando hg revert attraverso ancora un altro piccolo esempio. Cominceremo modificando un file che Mercurial ha già registrato. @@ -549,7 +549,7 @@ È possibile che questo altro bug mascheri completamente il vostro, cioè che sia comparso prima che il vostro bug abbia avuto la possibilità di manifestarsi. Se non potete evitare quell'altro bug (per esempio, impedisce al vostro progetto di venire assemblato) e quindi non potete dire se il vostro bug è presente in un particolare changeset, il comando hg bisect non è in grado di aiutarvi direttamente. Invece, invocando hg bisect --skip potete contrassegnare un changeset come non collaudato. - Potrebbe esserci un problema differente se il vostro test per la presenza di un bug non è abbastanza specifico. Se controllate che il mio programma ~crashes~, allora sia il vostro ~crashing~ bug che un ~crashing~ bug non correlato che lo maschera sembreranno la stessa cosa e fuorvieranno hg bisect. + Potrebbe esserci un problema differente se il vostro test per la presenza di un bug non è abbastanza specifico. Se controllate che il mio programma ~crashes~, allora sia il vostro ~crashing~ bug che il ~crashing~ bug scorrelato che lo maschera sembreranno la stessa cosa e fuorvieranno hg bisect. Un'altra situazione utile in cui sfruttare hg bisect --skip è quella in cui non potete collaudare una revisione perché il vostro progetto era guasto e quindi in uno stato non collaudabile in quella revisione, magari perché qualcuno aveva introdotto un cambiamento che impediva al progetto di venire assemblato.