hgbook

annotate ja/undo.tex @ 862:ad6d3f5245e7

Link back to the original English version of the book.
author gpiancastelli
date Fri Aug 28 12:21:45 2009 +0200 (2009-08-28)
parents
children
rev   line source
foozy@708 1 \chapter{Finding and fixing your mistakes}
foozy@708 2 \label{chap:undo}
foozy@708 3
foozy@708 4 $B?M$O4V0c$($k$b$N$G$9$,!"$=$N7k2L$r$h$j>e<j$K07$C$F$3$=!"(B
foozy@708 5 $BM%$l$?9=@.4IM}%7%9%F%`$H8@$($^$9!#(B
foozy@708 6 $B$3$N>O$G$O!"(B
foozy@708 7 $B%W%m%8%'%/%H$KG&$S9~$s$@LdBj$rH/8+$7$?:]$K!"(B
foozy@708 8 $B;H$($k<jK!$K$D$$$F@bL@$7$^$9!#(B
foozy@708 9 Mercurial $B$O!"(B
foozy@708 10 $BLdBj$N85$r3VN%$7E,@Z$K=hM}$9$k$?$a$NM%$l$?5!G=$r;}$C$F$$$^$9!#(B
foozy@708 11
foozy@708 12 \section{Erasing local history}
foozy@708 13
foozy@708 14 \subsection{The accidental commit}
foozy@708 15
foozy@708 16 $BI.<T$O!";~$H$7$F9M$($k$h$j$b@h$KF~NO$7$F$7$^$&!"(B
foozy@708 17 $B$H$$$&:,?<$$LdBj$rJz$($F$$$k$?$a!"(B
foozy@708 18 $BIT40A4$G$"$C$?$j!"(B
foozy@708 19 $BC1=c$K4V0c$C$?FbMF$N%A%'%s%8%;%C%H$r%3%_%C%H$7$F$7$^$&$3$H$,$"$j$^$9!#(B
foozy@708 20 $BI.<T$N>l9g!"(B
foozy@708 21 $BIT40A4$J%A%'%s%8%;%C%H$r%3%_%C%H$7$F$7$^$&$N$O!"(B
foozy@708 22 $B?7$7$$%=!<%9%U%!%$%k$r:n@.$7$?$N$K(B
foozy@708 23 \hgcmd{add} $B$N<B9T$rK:$l$F$$$k>l9g$,KX$I$G$9!#(B
foozy@708 24 ``$BC1=c$K4V0c$C$F$$$k(B''$B%A%'%s%8%;%C%H$r%3%_%C%H$7$F$7$^$&%1!<%9$K$O!"(B
foozy@708 25 $BFC$K6&DLE@$O$"$j$^$;$s$,!"(Bbut $BHs>o$KLBOG(B(no less annoying) XXXXX$B!#(B
foozy@708 26
foozy@708 27 \subsection{Rolling back a transaction}
foozy@708 28 \label{sec:undo:rollback}
foozy@708 29
foozy@708 30 Mercurial $B$,!"(B
foozy@708 31 $B%j%]%8%H%j$X$N8D!9$NJQ99$r(B\emph{$B%H%i%s%6%/%7%g%s(B}$B$H$7$F07$C$F$$$k$3$H$r(B
foozy@708 32 \ref{sec:concepts:txn} $B@a$G=R$Y$^$7$?!#(B
foozy@708 33 $B%A%'%s%8%;%C%H$r%3%_%C%H$7$?$j!"(B
foozy@708 34 $BB>$N%j%]%8%H%j$+$iJQ99$r(B pull $B$9$k:]$K!"(B
foozy@708 35 Mercurial $B$O>o$K=hM}$7$?$3$H$r5-O?$7$F$$$^$9!#(B
foozy@708 36 \hgcmd{rollback} $B%3%^%s%I$r;HMQ$9$k$3$H$G!"(B
foozy@708 37 $B$-$C$A$j0l2sJ,$N=hM}$r85$KLa$9!"(B
foozy@708 38 $BJL$J8@$$J}$r$9$k$J$i!"(B\emph{$B4,$-La$9(B}$B$3$H$,$G$-$^$9(B
foozy@708 39 $B!J$3$N%3%^%s%I$r;HMQ$9$k:]$N=EMW$JCm0U$,=R$Y$i$l$F$$$^$9$N$G!"(B
foozy@708 40 \ref{sec:undo:rollback-after-push} $B@a$r;2>H$7$F$/$@$5$$!K!#(B
foozy@708 41
foozy@708 42 $B?7$7$/%U%!%$%k$r:n@.$7$?$N$K!"(B
foozy@708 43 $B$=$N%U%!%$%k$KBP$7$F(B \hgcmd{add}
foozy@708 44 $B%3%^%s%I$r<B9T$9$k$N$rK:$l$F%3%_%C%H$7$F$7$^$&!"(B
foozy@708 45 $B$H$$$&I.<T$N$h$/$d$k4V0c$$$O!"0J2<$N$h$&$J$b$N$G$9!#(B
foozy@708 46
foozy@708 47 \interaction{rollback.commit}
foozy@708 48
foozy@708 49 $B%3%_%C%H8e$N(B \hgcmd{status} $B=PNO$r8+$l$P!"(B
foozy@708 50 $B$9$0$5$^4V0c$$$r3N>Z$G$-$^$9!#(B
foozy@708 51
foozy@708 52 \interaction{rollback.status}
foozy@708 53
foozy@708 54 $B@h$N%3%_%C%H$O!"(B
foozy@708 55 \filename{a} $B$NJQ99$OB*$($F$$$^$9$,!"(B
foozy@708 56 $B?75,$N%U%!%$%k(B \filename{b} $B$OGD0.$7$F$$$^$;$s!#(B
foozy@708 57 $BF1N=$H6&M-$7$F$$$k%j%]%8%H%j$K!"(B
foozy@708 58 $B$3$N%A%'%s%8%;%C%H$rH?1G$7$F$7$^$C$?$i!"(B
foozy@708 59 $BF1N=$,$3$N%A%'%s%8%;%C%H$r<h$j9~$s$@:]$K!"(B
foozy@708 60 \filename{a} $BCf$N2?$+$,!"(B
foozy@708 61 $BF1N=$N%j%]%8%H%j$K$OB8:_$7$J$$(B \filename{b} $B$r;2>H$7$F$7$^$$$^$9!#(B
foozy@708 62 $B$=$&$J$l$P!";d$OF1N=$NJ0$j$NBP>]$K$J$C$F$7$^$&$G$7$g$&!#(B
foozy@708 63
foozy@708 64 $B$7$+$7!"9,$$$J$3$H$K!"(B
foozy@708 65 $B%A%'%s%8%;%C%H$r6&M-%j%]%8%H%j$X$HH?1G$9$kA0$K!"(B
foozy@708 66 $B<+J,$N4V0c$$$r8+$D$1$F$$$^$9!#(B
foozy@708 67 \hgcmd{rollback} $B%3%^%s%I$r;H$&$3$H$G!"(B
foozy@708 68 Mercurial $B$O:G8e$N%A%'%s%8%;%C%H$r>C$7$F$/$l$^$9!#(B
foozy@708 69
foozy@708 70 \interaction{rollback.rollback}
foozy@708 71
foozy@708 72 $B%j%]%8%H%j$NMzNr>e!":GAa:GA0$N%A%'%s%8%;%C%H$OB8:_$7$^$;$s$N$G!"(B
foozy@708 73 $B:n6HNN0h%G%#%l%/%H%j$O!"(B
foozy@708 74 $B:F$S(B \filename{a} $B%U%!%$%k$,JQ99$5$l$F$$$k>uBV$@$H$_$J$5$l$^$9!#(B
foozy@708 75 $B%3%_%C%H8e$N%m!<%k%P%C%/$O!"(B
foozy@708 76 $B:n6HNN0h%G%#%l%/%H%j$r%3%_%C%HA0$N>uBV$=$N$^$^$KLa$7!"(B
foozy@708 77 $B%A%'%s%8%;%C%H$O40A4$K>C5n$5$l$^$9!#(B
foozy@708 78 $B$=$&$J$C$?$J$i!"(B
foozy@708 79 $B0BA4$K(B \filename{b} $B%U%!%$%k$r(B \hgcmd{add} $B$7!"(B
foozy@708 80 $B:FEY%3%_%C%H$9$k$3$H$,$G$-$^$9!#(B
foozy@708 81
foozy@708 82 \interaction{rollback.add}
foozy@708 83
foozy@708 84 \subsection{The erroneous pull}
foozy@708 85
foozy@708 86 $B#1$D$N(B $B%W%m%8%'%/%H$G!"(B
foozy@708 87 $BJL!9$K3+H/$N?J$s$G$$$k%V%i%s%A$r(B Mercurial $B$GJ]<i$9$k>l9g!"(B
foozy@708 88 $B$=$l$>$l0[$J$k%j%]%8%H%j$GJ]<i$9$k$3$H$,0lHLE*$J47=,$H$J$C$F$$$^$9!#(B
foozy@708 89 $B3+H/%A!<%`$O!"(B
foozy@708 90 $B%W%m%8%'%/%H$N(B ``0.9'' $B%j%j!<%9MQ$K6&M-%j%]%8%H%j$r;}$D0lJ}$G!"(B
foozy@708 91 $B0[$J$kJQ99MzNr$r;}$D(B ``1.0'' $B%j%j!<%9MQ$N%j%]%8%H%j$rJLES;}$D$+$b$7$l$^$;$s!#(B
foozy@708 92
foozy@708 93 $B$3$N>l9g!"(B
foozy@708 94 $B%m!<%+%k$J(B ``0.9'' $B%j%]%8%H%j$,$"$C$F!"(B
foozy@708 95 $B$=$3$K6vA3(B ``1.0'' $BMQ6&M-%j%]%8%H%j$N@.2L$r<h$j9~$s$@>l9g!"(B
foozy@708 96 $BLLE]$J;vBV$K$J$k$3$H$,A[A|$G$-$^$9!#(B
foozy@708 97 $B:G0-$N>l9g!"(B
foozy@708 98 $B==J,$JCm0U$rJ'$o$J$$$?$a$K!"(B
foozy@708 99 ``1.0'' $B$N%j%]%8%H%j$+$i<h$j9~$s$@JQ99$r(B
foozy@708 100 ``0.9'' $B$N6&MQ%j%]%8%H%j$X$HH?1G$7$F$7$^$C$?(B
foozy@708 101 $B%A!<%`A4BN$r:.Mp$5$;$F$7$^$&$G$7$g$&(B
foozy@708 102 $B!J$3$N62$m$7$$%1!<%9$K4X$7$F$O!"(B
foozy@708 103 $B8e$[$I2r7hJ}K!$r<($7$^$9$N$G8f0B?4$r!#!K!#(B
foozy@708 104 $B$7$+$7!"(B
foozy@708 105 Mercurial $B$O@.2L<h$j9~$_@h$N(B URL $B$rI=<($9$k$+!"(B
foozy@708 106 Mercurial
foozy@708 107 $B$,2x$7$2$JBgNL$NJQ99$r%j%]%8%H%j$K<h$j9~$s$@$3$H$,I=<($5$l$^$9$+$i!"(B
foozy@708 108 $B$9$0$K5$IU$/J}$,$"$jF@$^$9(B
foozy@708 109 \footnote{$BLuCm(B: ``display the URL it's pulling from''
foozy@708 110 $B$N4X78$,$h$/$o$+$i$J$$(B}$B!#(B
foozy@708 111
foozy@708 112 \hgcmd{rollback} $B%3%^%s%I$O!"(B
foozy@708 113 $B:#$^$5$K<h$j9~$s$@A4$F$N%A%'%s%8%;%C%H$r!"(B
foozy@708 114 $B$-$A$s$He:No$K$7$^$9!#(B
foozy@708 115 Mercurial $B$O!"0l2s$N(B \hgcmd{pull} $B5/F0$K$h$j<h$j9~$^$l$k%A%'%s%8%;%C%HA4BN$r!"(B
foozy@708 116 $BC10l$N%H%i%s%6%/%7%g%s$KJ,N`$9$k$N$G!"(B
foozy@708 117 $B0l2s$N(B \hgcmd{rollback} $B5/F0$G$3$N<:GT$r<h$j>C$9$3$H$,$G$-$^$9!#(B
foozy@708 118
foozy@708 119 \subsection{Rolling back is useless once you've pushed}
foozy@708 120 \label{sec:undo:rollback-after-push}
foozy@708 121
foozy@708 122 \hgcmd{rollback} $B$O!"(B
foozy@708 123 $B0lC6B>$N%j%]%8%H%j$KH?1G$7$?JQ99$G$b!"(B
foozy@708 124 $B!J<j85$N%j%]%8%H%j$K$*$$$F$O!KL5$+$C$?$3$H$K$G$-$^$9!#(B
foozy@708 125 $B<h$j>C$7$K$h$jJQ99$O40A4$K>C$5$l$^$9$,!"(B
foozy@708 126 $B$=$l$,$G$-$k$N$O!"(B
foozy@708 127 \hgcmd{rollback} $B$r<B;\$7$?%j%]%8%H%j$K$*$1$k<h$j>C$7(B\emph{$B$N$_(B}$B$G$9!#(B
foozy@708 128 $B<h$j>C$7$OMzNr$r:o=|$7$^$9$N$G!"(B
foozy@708 129 $BJQ99$N<h$j>C$7$r%j%]%8%H%j4V$GEAGE$9$k<jCJ$,L5$$$N$G$9!#(B
foozy@708 130
foozy@708 131 $BJQ99$rB>$N%j%]%8%H%j(B--$BE57?E*$JNc$G$O6&M-%j%]%8%H%j(B--$B$KH?1G$7$?>l9g!"(B
foozy@708 132 $BK\<AE*$K$O!"$=$NJQ99$O(B``$BLn@8$KF($2=P$7(B''$B$F$*$j!"(B
foozy@708 133 $B<h$j>C$7$H$OJL$JJ}K!$G4V0c$$$rKd$a9g$o$;$kI,MW$,$"$j$^$9!#(B
foozy@708 134 $BJQ99$rB>$N%j%]%8%H%j$KH?1G$7!"(B
foozy@708 135 $B!J<j85$N%j%]%8%H%j$G!K$=$NJQ99$r<h$j>C$7$?8e$G!"(B
foozy@708 136 $BJQ99$rH?1G$7$?%j%]%8%H%j$+$iJQ99$r<h$j9~$s$@;~$K$O!"(B
foozy@708 137 $B<h$j>C$7$?JQ99$,!J<j85$N%j%]%8%H%j$K!K:F$S8=$l$^$9!#(B
foozy@708 138
foozy@708 139 $B!J<h$j>C$7$?$$JQ99$,!"JQ99$rH?1G$7$?%j%]%8%H%j$K$*$1$k:G?7$N$b$N$G!"(B
foozy@708 140 \emph{$B3n$D(B}$B!"(B
foozy@708 141 $BC/$b$=$l$r$=$N%j%]%8%H%j$+$i<h$j9~$s$G$$$J$$$3$H$,3N<B$G$"$k>l9g!"(B
foozy@708 142 $B$=$NJQ99$r<h$j>C$9$3$H$b$G$-$^$9$,!"(B
foozy@708 143 $B<h$j>C$7$,5!G=$9$k$3$H$K$O0MB8$7$J$$$h$&$K$7$F$/$@$5$$!#(B
foozy@708 144 $BCY$+$lAa$+$lJQ99$OD>@\?($k$3$H$N$G$-$J$$(B
foozy@708 145 $B!J$"$k$$$OB8:_$rK:$l$F$$$?!K%j%]%8%H%j$X$HH?1G$5$l!"(B
foozy@708 146 $B2s$j$^$o$C$FLa$C$F$-$?;~$K3z$_IU$+$l$F$7$^$$$^$9!#(B
foozy@708 147 $B!K(B
foozy@708 148
foozy@708 149 \subsection{You can only roll back once}
foozy@708 150
foozy@708 151 Mercurial $B$O!"(B
foozy@708 152 $BEv3:%j%]%8%H%j$K$*$1$k:G$b:G?7$N%H%i%s%6%/%7%g%s$r!"(B
foozy@708 153 $B#1$D$@$1%H%i%s%6%/%7%g%s%m%0$K5-O?$7$^$9!#(B
foozy@708 154 $B$=$N$?$a!"<h$j>C$;$k%H%i%s%6%/%7%g%s$O#1$DJ,$@$1$G$9!#(B
foozy@708 155 $B%H%i%s%6%/%7%g%s$r#1$D<h$j>C$7$?8e$G!"(B
foozy@708 156 $B$=$NA0$N%H%i%s%6%/%7%g%s$b<h$j>C$;$k$3$H$r4|BT$7$F$b!"(B
foozy@708 157 $B4|BTDL$j$N7k2L$OF@$i$l$^$;$s!#(B
foozy@708 158
foozy@708 159 \interaction{rollback.twice}
foozy@708 160
foozy@708 161 $B$"$k%j%]%8%H%j$G%H%i%s%6%/%7%g%s$N<h$j>C$7$r9T$C$?>l9g!"(B
foozy@708 162 $BJL$JJQ99$r%3%_%C%H$9$k$J$j<h$j9~$`$J$j$7$J$$8B$j!"(B
foozy@708 163 $B$=$N%j%]%8%H%j$G<h$j>C$7$r9T$&$3$H$O$G$-$^$;$s!#(B
foozy@708 164
foozy@708 165 \section{Reverting the mistaken change}
foozy@708 166
foozy@708 167 $B%U%!%$%k$rJQ99$7$?8e$G!"(B
foozy@708 168 $B%U%!%$%k$NJQ99$,A4$/I,MW$J$$$3$H$K5$IU$$$?>l9g!"(B
foozy@708 169 $BJQ99$r%3%_%C%H$9$kA0$G$"$l$P!"(B
foozy@708 170 \hgcmd{revert} $B%3%^%s%I$,MxMQ$G$-$^$9!#(B
foozy@708 171 $B$3$N%3%^%s%I$O!"(B
foozy@708 172 $B:n6HNN0h%G%#%l%/%H%j$N?F%A%'%s%8%;%C%H$r;2>H$7!"(B
foozy@708 173 $B%U%!%$%k$NFbMF$r85$N>uBV$KLa$7$^$9!#(B
foozy@708 174 $B!J@bL@$9$k$HD9$/$J$j$^$9$,!"(B
foozy@708 175 $BDL>o$N>l9g!"$3$N%3%^%s%I$OJQ99$r<h$j>C$7$^$9!#!K(B
foozy@708 176
foozy@708 177 \hgcmd{revert} $B%3%^%s%I$N5!G=$r!"(B
foozy@708 178 $B$A$g$C$H$7$?%5%s%W%k$G@bL@$7$^$9!#(B
foozy@708 179 Mercurial $B$K$h$j4{$K9=@.4IM}$5$l$F$$$k%U%!%$%k$rJQ99$7$^$9!#(B
foozy@708 180
foozy@708 181 \interaction{daily.revert.modify}
foozy@708 182
foozy@708 183 $BJQ99$,I,MW$J$$>l9g!"(B
foozy@708 184 $BC1=c$K(B \hgcmd{revert} $B%3%^%s%I$r%U%!%$%k$KE,MQ$7$^$9!#(B
foozy@708 185
foozy@708 186 \interaction{daily.revert.unmodify}
foozy@708 187
foozy@708 188 \hgcmd{revert} $B%3%^%s%I$O!"(B
foozy@708 189 $B$"$kDxEY$N0BA4@-$r3NJ]$9$k$?$a$K!"(B
foozy@708 190 \filename{.orig} $B3HD%;RIU$-$N%U%!%$%k$K!"(B
foozy@708 191 $BJQ99$5$l$?%U%!%$%k$NFbMF$rJ]B8$7$^$9!#(B
foozy@708 192
foozy@708 193 \interaction{daily.revert.status}
foozy@708 194
foozy@708 195 \hgcmd{revert} $B%3%^%s%I$,07$&$3$H$N$G$-$k>u67$r0J2<$K$^$H$a$^$9!#(B
foozy@708 196 $B8D!9$N>u67$K4X$9$k>\:Y$O!"0J8e$N@a$G@bL@$7$^$9!#(B
foozy@708 197
foozy@708 198 \begin{itemize}
foozy@708 199 \item $B%U%!%$%k$,JQ99$5$l$F$$$?$J$i!"JQ99A0$N>uBV$KLa$7$^$9!#(B
foozy@708 200
foozy@708 201 \item $B%U%!%$%k$,(B \hgcmd{add} $B$5$l$F$$$?$J$i!"(B
foozy@708 202 $B%U%!%$%k$N(B``$BDI2C(B''$B$5$l$F$$$k>uBV$r<h$j>C$7$^$9$,!"(B
foozy@708 203 $B%U%!%$%k$=$N$b$N$K$O2?$bJQ99$r9T$$$^$;$s!#(B
foozy@708 204
foozy@708 205 \item Mercurial $B$X$N;X<(L5$/%U%!%$%k$r:o=|$7$F$$$?$J$i!"(B
foozy@708 206 $BJQ99A0(B\footnote{$BLuCm(B: ``$B:o=|A0(B''$B$G$O$J$$E@$KCm0U(B}$B$N>uBV$KLa$7$^$9!#(B
foozy@708 207
foozy@708 208 \item \hgcmd{remove} $B%3%^%s%I$G%U%!%$%k$r:o=|$7$F$$$?$J$i!"(B
foozy@708 209 $B%U%!%$%k$N(B``$B:o=|$5$l$?(B''$B>uBV$r<h$j>C$7!"(B
foozy@708 210 $BJQ99A0$N>uBV$KLa$7$^$9!#(B
foozy@708 211
foozy@708 212 \end{itemize}
foozy@708 213
foozy@708 214 \subsection{File management errors}
foozy@708 215 \label{sec:undo:mgmt}
foozy@708 216
foozy@708 217 \hgcmd{revert} $B$OJQ99$5$l$?%U%!%$%k0J30$KBP$7$F$bM-MQ$J%3%^%s%I$G$9!#(B
foozy@708 218 $B$3$N%3%^%s%I$O!"(B
foozy@708 219 Mercurial $B$NA4$F$N%U%!%$%k4IM}%3%^%s%I(B
foozy@708 220 ---\hgcmd{add} $B$d(B \hgcmd{remove} $B$J$I(B---
foozy@708 221 $B$N<B;\$rH?E>$5$;$^$9!#(B
foozy@708 222
foozy@708 223 $B%U%!%$%k$KBP$7$F(B \hgcmd{add} $B$r9T$C$?8e$G!"(B
foozy@708 224 $B$=$N%U%!%$%k$r(B Mercurial $B$G9=@.4IM}$9$kI,MW$,L5$$$3$H$K5$IU$$$?$J$i!"(B
foozy@708 225 \hgcmd{revert} $B$K$h$j%U%!%$%k$NDI2C$r<h$j>C$;$^$9!#(B
foozy@708 226 Mercurial $B$O%U%!%$%k<+BN$K$O2?$bJQ99$r9T$$$^$;$s$N$G0B?4$7$F$/$@$5$$!#(B
foozy@708 227 $B%U%!%$%kDI2C$N<h$j>C$7$O!"(B
foozy@708 228 $B%U%!%$%k$KBP$7$F(B``$B0u$r>C$9(B''$B$@$1$G$9!#(B
foozy@708 229
foozy@708 230 \interaction{daily.revert.add}
foozy@708 231
foozy@708 232 $BF1MM$K!"(B
foozy@708 233 $B%U%!%$%k$KBP$7$F(B \hgcmd{remove} $B$r9T$C$?8e$G$b!"(B
foozy@708 234 \hgcmd{revert} $B$r;H$&$3$H$G!"(B
foozy@708 235 $B:n6HNN0h%G%#%l%/%H%j$N?F%A%'%s%8%;%C%H$K$*$1$k>uBV$K!"(B
foozy@708 236 $B%U%!%$%k$NFbMF$rI|5l$9$k$3$H$,$G$-$^$9!#(B
foozy@708 237
foozy@708 238 \interaction{daily.revert.remove}
foozy@708 239
foozy@708 240 $B$3$l$O!"(BMercurial $B$rDL$5$:$K<jF0$G:o=|$7$?%U%!%$%k(B
foozy@708 241 $B!J(BMercurial $B$NMQ8l$G$O$3$N<o$N%U%!%$%k$,(B``$BJ6<:(B''(missing)
foozy@708 242 $B$H8F$P$l$k$3$H$r;W$$=P$7$F$/$@$5$$!K$G$"$C$F$b5!G=$7$^$9!#(B
foozy@708 243
foozy@708 244 \interaction{daily.revert.missing}
foozy@708 245
foozy@708 246 \hgcmd{copy} $B$5$l$?%U%!%$%k$K<h$j>C$7$r9T$C$?>l9g!"(B
foozy@708 247 $BJ#@=@h%U%!%$%k$O:n6HNN0h%G%#%l%/%H%j$K!"(B
foozy@708 248 $B9=@.4IM}$5$l$J$$>uBV$G$=$N$^$^;D$j$^$9!#(B
foozy@708 249 $BJ#@=A`:n$OJ#@=85%U%!%$%k$K$O2?$b:nMQ$7$J$$$N$G!"(B
foozy@708 250 $B<h$j>C$7$N:]$K(B Mercurial $B$OJ#@=85%U%!%$%k$KBP$7$FFC$K2?$b$7$^$;$s!#(B
foozy@708 251
foozy@708 252 \interaction{daily.revert.copy}
foozy@708 253
foozy@708 254 \subsubsection{A slightly special case: reverting a rename}
foozy@708 255
foozy@708 256
foozy@708 257 $B%U%!%$%k$KBP$7$F(B \hgcmd{rename} $B$r9T$C$?>l9g!"(B
foozy@708 258 $B3P$($F$$$FM_$7$$$3$H$,$"$j$^$9!#(B
foozy@708 259 \hgcmd{rename} $B<B9T$KBP$7$F(B \hgcmd{revert} $B$r9T$&:]$K$O!"(B
foozy@708 260 $B0J2<$K<($9$h$&$K!"(B
foozy@708 261 $BJQ998e$N%U%!%$%kL>$r;XDj$7$?$@$1$G$OIT==J,$G$9!#(B
foozy@708 262
foozy@708 263 \interaction{daily.revert.rename}
foozy@708 264
foozy@708 265 \hgcmd{status} $B%3%^%s%I$N=PNO$+$i$b$o$+$k$h$&$K!"(B
foozy@708 266 $BJQL>8e$N%U%!%$%k$O4{$KL$DI2C>uBV$HG'<1$5$l$F$$$^$9$,!"(B
foozy@708 267 $BJQL>(B\emph{$BA0(B}$B$N%U%!%$%k$OL$$@$K:o=|>uBV$HG'<1$5$l$F$$$^$9!*(B
foozy@708 268 $B$3$l$O!J>/$J$/$H$bCx<T$K$H$C$F$O!KD>46$KH?$7$^$9$,!"(B
foozy@708 269 $B07$$$O4JC1$G$9!#(B
foozy@708 270
foozy@708 271 \interaction{daily.revert.rename-orig}
foozy@708 272
foozy@708 273 \hgcmd{rename} $B$N<h$j>C$7$r9T$&$K$O!"(B
foozy@708 274 $BJQL>A08e$N%U%!%$%kL>$r(B\emph{$BN>J}(B}$B;XDj$9$k$3$H$rK:$l$J$$$G$/$@$5$$!#(B
foozy@708 275
foozy@708 276 $B!J$A$J$_$K!"(B
foozy@708 277 $B%U%!%$%k$NJQL>8e$K!"JQL>8e$N%U%!%$%k$rJQ99$7!"(B
foozy@708 278 $B$=$l$+$iJQL>A08e$N%U%!%$%kL>$NN>J}$r;XDj$7$F<h$j>C$7$r9T$C$?>l9g!"(B
foozy@708 279 Mercurial $B$OJQL>$N:]$K:o=|$5$l$?%U%!%$%k(B\footnote{$BLuCm(B: $BJQL>A0$N%U%!%$%k(B
foozy@708 280 }$B$r2?$bJQ99$5$l$F$$$J$$>uBV$KLa$7$^$9!#(B
foozy@708 281 $BJQL>8e$N%U%!%$%k$KBP$9$kJQ99$rJQL>A0%U%!%$%k$KH?1G$7$?$$>l9g$K$O!"(B
foozy@708 282 $BJQL>8e%U%!%$%k$+$iJQL>A0%U%!%$%k$X$N%3%T!<$rK:$l$J$$$G$/$@$5$$!#(B
foozy@708 283 $B!K(B
foozy@708 284
foozy@708 285 $BJQL>$N<h$j>C$7$K$*$1$k$3$l$i$NLq2p$JB&LL$O!"(B
foozy@708 286 $B$*$=$i$/(B Mercurial $B$N>.$5$J%P%0$KM3Mh$9$k$b$N$G$9!#(B
foozy@708 287
foozy@708 288 \section{Dealing with committed changes}
foozy@708 289
foozy@708 290 $B$"$kJQ99(B $a$ $B$r%3%_%C%H$7!"$=$N>e$GJL$NJQ99(B $b$ $B$r%3%_%C%H$7$?8e$G!"(B
foozy@708 291 $BJQ99(B $a$ $B$,4V0c$C$F$$$?$3$H$K5$IU$$$?$H$7$^$9!#(B
foozy@708 292 Mercurial $B$K$O!"(B
foozy@708 293 $B%A%'%s%8%;%C%H$=$N$b$N$r<+F0E*$K(B``$BL5$+$C$?$3$H$K$9$k(B''$B5!G=$d!"(B
foozy@708 294 $B%A%'%s%8%;%C%H$N0lIt$r<jF0$GL58z$K$9$k$?$a$N>pJs$rDs6!$9$k5!G=$,$"$j$^$9!#(B
foozy@708 295
foozy@708 296 $B$3$N@a$rFI$`A0$K!"3P$($F$*$$$FM_$7$$$3$H$,4v$D$+$"$j$^$9!#(B
foozy@708 297 \hgcmd{backout} $B%3%^%s%I$K$h$kJQ99$N<h$j>C$7$O!"(B
foozy@708 298 $BMzNr$r(B\emph{$BDI2C(B}$B$9$k$3$H$G9T$o$l$k$b$N$G$"$j!"(B
foozy@708 299 $BJQ99$=$N$b$N$r=$@5$7$?$j:o=|$7$?$j$9$k$b$N$G$O$"$j$^$;$s!#(B
foozy@708 300 $B$=$N$?$a!"%P%0$N=$@5$r$9$k$N$K$O8~$$$F$$$^$9$,!"(B
foozy@708 301 $BGK2uE*$J7k2L$rH<$&<h$j>C$7$H$$$C$?MQES$K$O8~$$$F$$$^$;$s!#(B
foozy@708 302 $B$=$N$h$&$J<h$j>C$7$K4X$7$F$O!"(B
foozy@708 303 ~\ref{sec:undo:aaaiiieee} $B@a$r;2>H$7$F$/$@$5$$!#(B
foozy@708 304
foozy@708 305 \subsection{Backing out a changeset}
foozy@708 306
foozy@708 307 \hgcmd{backout} $B%3%^%s%I$O!"(B
foozy@708 308 $B<+F02=$5$l$?7A<0$G%A%'%s%8%;%C%H$N8z2LA4BN$r(B``$B<h$j>C$7(B''$B$^$9!#(B
foozy@708 309 Mercurial $B$NMzNr$O2~JQ$G$-$J$$$N$G!"(B
foozy@708 310 $B$3$N%3%^%s%I$O<h$j>C$7$?$$%A%'%s%8%;%C%H$r<h$j=|$$$?$j$O(B\emph{$B$7$^$;$s(B}$B!#(B
foozy@708 311 $B$=$NBe$o$j$K$3$N%3%^%s%I$O!"(B
foozy@708 312 $B<h$j>C$7$?$$%A%'%s%8%;%C%H$K$h$k2~JQFbMF$r(B\emph{$BH?E>(B}$B$5$;$k!"(B
foozy@708 313 $B?7$?$J%A%'%s%8%;%C%H$r:n@.$7$^$9!#(B
foozy@708 314
foozy@708 315 \hgcmd{backout} $B%3%^%s%I$NA`:n$O>/!9J#;($G$9$N$G!"Nc$r;H$C$F@bL@$7$^$9!#(B
foozy@708 316 $B$^$:$OC1=c$J%A%'%s%8%;%C%H$r4v$D$+;}$D%j%]%8%H%j$r:n@.$7$^$9!#(B
foozy@708 317
foozy@708 318 \interaction{backout.init}
foozy@708 319
foozy@708 320 \hgcmd{backout} $B%3%^%s%I$O!"(B
foozy@708 321 ``bakc out''$BBP>]$H$9$kC10l$N%A%'%s%8%;%C%H<1JL;R$r0z?t$K<h$j$^$9!#(B
foozy@708 322 $BDL>o!"(B
foozy@708 323 \hgcmd{backout}
foozy@708 324 $B$O%3%_%C%H%a%C%;!<%8$r=q$/$?$a$K%F%-%9%H%(%G%#%?$r5/F0$7$^$9$N$G!"(B
foozy@708 325 $BJQ99$r(B back out $B$9$kM}M3$r5-O?$9$k$3$H$,$G$-$^$9!#(B
foozy@708 326 $B$3$NNc$G$O!"(B
foozy@708 327 \hgopt{backout}{-m} $B%*%W%7%g%s$rMQ$$$k$3$H$G!"(B
foozy@708 328 $B%3%^%s%I%i%$%s$+$i%3%_%C%H%a%C%;!<%8$rM?$($F$$$^$9!#(B
foozy@708 329
foozy@708 330 \subsection{Backing out the tip changeset}
foozy@708 331
foozy@708 332 $B0J2<$NNc$G$O!"(B
foozy@708 333 $B:G8e$K%3%_%C%H$7$?%A%'%s%8%;%C%H$r(B back out $B$7$^$9!#(B
foozy@708 334
foozy@708 335 \interaction{backout.simple}
foozy@708 336
foozy@708 337 \filename{myfile} $B$,4{$K#29TL\$r;}$?$J$$$3$H$,$*$o$+$j$G$7$g$&!#(B
foozy@708 338 \hgcmd{log} $B=PNO$r8+$l$P!"(B
foozy@708 339 \hgcmd{backout} $B%3%^%s%I$,2?$r9T$C$?$+$rM}2r$G$-$^$9!#(B
foozy@708 340
foozy@708 341 \interaction{backout.simple.log}
foozy@708 342
foozy@708 343 \hgcmd{backout} $B$,@8@.$7$??7$7$$%A%'%s%8%;%C%H$O!"(B
foozy@708 344 back out $B$7$?%A%'%s%8%;%C%H$N;R%A%'%s%8%;%C%H$H$J$kE@$KCm0U$7$F$/$@$5$$!#(B
foozy@708 345 $BJQ99MzNr$r?^<($7$?(B \ref{fig:undo:backout}~$B?^$r8+$l$P!"(B
foozy@708 346 $B$3$N$3$H$,$o$+$k$G$7$g$&!#(B
foozy@708 347 $B$4Mw$NDL$j!"MzNr$O8+;v$K0lD>@~$G$9!#(B
foozy@708 348
foozy@708 349 \begin{figure}[htb]
foozy@708 350 \centering
foozy@708 351 \grafix{undo-simple}
foozy@708 352 \label{fig:undo:backout}
foozy@708 353 \caption{Backing out a change using the \hgcmd{backout} command}
foozy@708 354 \end{figure}
foozy@708 355
foozy@708 356 \subsection{Backing out a non-tip change}
foozy@708 357
foozy@708 358 $B:G8e$K%3%_%C%H$7$?%A%'%s%8%;%C%H0J30$r(B back out $B$7$?$$>l9g!"(B
foozy@708 359 \hgcmd{backout} $B%3%^%s%I$K(B
foozy@708 360 \hgopt{backout}{--merge} $B%*%W%7%g%s$r;XDj$7$F$/$@$5$$!#(B
foozy@708 361
foozy@708 362 \interaction{backout.non-tip.clone}
foozy@708 363
foozy@708 364 $B$3$N%3%^%s%I<B9T$O!"(B
foozy@708 365 $BG$0U$N%A%'%s%8%;%C%H$r!"(B
foozy@708 366 $B4JC1$GAGAa$$(B``$B0l2s8B$j$N(B''$BA`:n$G(B back out $B$G$-$^$9!#(B
foozy@708 367
foozy@708 368 \interaction{backout.non-tip.backout}
foozy@708 369
foozy@708 370 back out $B40N;8e$N(B \filename{myfile} $B$NFbMF$K$O!"(B
foozy@708 371 $B#12sL\$H#32sL\$NJQ99$KAjEv$9$kFbMF$O8+$k$3$H$,$G$-$^$9$,!"(B
foozy@708 372 $B#22sL\$NJQ99$KAjEv$9$kFbMF$O8+$k$3$H$,$G$-$J$$$G$7$g$&!#(B
foozy@708 373
foozy@708 374 \interaction{backout.non-tip.cat}
foozy@708 375
foozy@708 376 $BMzNr$r?^<($7$?(B \ref{fig:undo:backout-non-tip}~$B?^$K8+$i$l$k$h$&$K!"(B
foozy@708 377 $B$3$N$h$&$J>u67$N>l9g!"(B
foozy@708 378 Mercurial $B$O<B:]$K$O(B\emph{$B#2$D(B}$B$N%A%'%s%8%;%C%H$r%3%_%C%H$7$^$9(B
foozy@708 379 $B!J(BMercurial $B$,<+F0E*$K%3%_%C%H$7$?$b(B\footnote{$BLuCm(B:
foozy@708 380 $B<B9TNc$G(B Mercurial $B$,=PNO$9$k%a%C%;!<%8$r8+$l$P$o$+$k$h$&$K!"(B
foozy@708 381 $B%^!<%8$5$l$?%A%'%s%8%;%C%H$N%3%_%C%H$OMxMQ<T@UG$$H$J$C$F$$$k$?$a!"(B
foozy@708 382 $B!V<+F0E*$K%3%_%C%H!W$7$?$b$N$G$O$J$/(B
foozy@708 383 $B!V<+F0E*$K@8@.$7$?$b$N!W$,@5$7$$I=8=$G$9!#(B}$B$N$O6k7A$G<($7$F$"$j$^$9!K!#(B
foozy@708 384 Mercurial $B$O(B back out $B=hM}$r;O$a$kA0$K!"(B
foozy@708 385 $B8=;~E@$G$N:n6HNN0h%G%#%l%/%H%j$K$*$1$k?F%A%'%s%8%;%C%H$r3P$($F$*$-$^$9!#(B
foozy@708 386 $B$=$N>e$GBP>]%A%'%s%8%;%C%H$r(B back out $B$7!"(B
foozy@708 387 $B%A%'%s%8%;%C%H$H$7$F%3%_%C%H$7$^$9!#(B
foozy@708 388 $B:G8e$K!"(B
foozy@708 389 $B:n6HNN0h%G%#%l%/%H%j$N?F%A%'%s%8%;%C%H$H%^!<%8$7$?7k2L$r%3%_%C%H$7$^$9(B
foozy@708 390 footnote{$BLuCm(B: $BA0=R$N$h$&$K!"<+F0E*$K$O%3%_%C%H$5$l$^$;$s(B}$B!#(B
foozy@708 391
foozy@708 392 \begin{figure}[htb]
foozy@708 393 \centering
foozy@708 394 \grafix{undo-non-tip}
foozy@708 395 \label{fig:undo:backout-non-tip}
foozy@708 396 \caption{Automated backout of a non-tip change using the \hgcmd{backout} command}
foozy@708 397 \end{figure}
foozy@708 398
foozy@708 399 $B7k2L$H$7$F!"(B
foozy@708 400 back out $B$7$?$$%A%'%s%8%;%C%H$K$h$kJQ99FbMF$r<h$j>C$9$?$a$N!"(B
foozy@708 401 $B4v$D$+$NM>J,$JMzNr$N$_$rH<$C$F!"(B
foozy@708 402 ``$B0JA0$N>uBV$X$NI|5l(B''$B$,9T$o$l$^$9!#(B
foozy@708 403
foozy@708 404 \subsubsection{Always use the \hgopt{backout}{--merge} option}
foozy@708 405
foozy@708 406 $B<B$N$H$3$m!"(B
foozy@708 407 back out $BBP>]$N%A%'%s%8%;%C%H$,(B tip $B$+H]$+$K4X$o$i$:!"(B
foozy@708 408 \hgopt{backout}{--merge} $B%*%W%7%g%s$O(B``$B@5$7$/5!G=(B''$B$7$^$9(B
foozy@708 409 $B!J(Bback out $BBP>]$,(B tip $B$N>l9g$O!"I,MW$,L5$$$N$G%^!<%8$7$h$&$H$O$7$^$;$s!K(B
foozy@708 410 $B$N$G!"(B
foozy@708 411 \hgcmd{backout} $B%3%^%s%I$r<B9T$9$k:]$K$O(B\emph{$B>o$K(B}
foozy@708 412 \hgopt{backout}{--merge} $B%*%W%7%g%s$r;XDj$9$k$Y$-$G$7$g$&!#(B
foozy@708 413
foozy@708 414 \subsection{Gaining more control of the backout process}
foozy@708 415
foozy@708 416 $B@h$N5-=R$G$O!"JQ99$N(B back out $B$N:]$N(B
foozy@708 417 \hgopt{backout}{--merge} $B%*%W%7%g%s$N>oMQ$r?d>)$7$^$7$?$,!"(B
foozy@708 418 $B$=$N0lJ}$G!"(B
foozy@708 419 back out $BBP>]$H$J$k%A%'%s%8%;%C%H$N%^!<%8J}K!$r!"(B
foozy@708 420 \hgcmd{backout} $B%3%^%s%I$NMxMQ<T$,7hDj$9$k$3$H$b$G$-$^$9!#(B
foozy@708 421 back out $B=hM}$r<jF0$G@)8f$9$kI,MW$OLGB?$K$"$j$^$;$s$,!"(B
foozy@708 422 $B<jF0@)8f$NJ}K!$rCN$k$3$H$O!"(B
foozy@708 423 \hgcmd{backout} $B$,<+F0E*$K9T$C$F$$$k$3$H$NFb>p$rM}2r$9$k>e$GM-MQ$G$9!#(B
foozy@708 424 $B<jF0@)8f$N@bL@$N$?$a$K!"(B
foozy@708 425 $B:G=i$K:n@.$7$?%j%]%8%H%j$rJ#@=$7$^$9$,!"(B
foozy@708 426 $B$3$3$G$O(B back out $B$O9T$$$^$;$s!#(B
foozy@708 427
foozy@708 428 \interaction{backout.manual.clone}
foozy@708 429
foozy@708 430 $B@h$NNc$HF1MM$K!"(B
foozy@708 431 $BBh#3$N%A%'%s%8%;%C%H$r%3%_%C%H$7!"(B
foozy@708 432 $B$=$N>e$G$=$N?F$r(B back out $B$7$?7k2L$r8+$F$_$^$7$g$&!#(B
foozy@708 433
foozy@708 434 \interaction{backout.manual.backout}
foozy@708 435
foozy@708 436 $B?7$?$J%A%'%s%8%;%C%H$bBh#3$N%A%'%s%8%;%C%HF1MM$K!"(B
foozy@708 437 back out $BBP>]$N%A%'%s%8%;%C%H$N;R$K$J$j$^$9$N$G!"(B
foozy@708 438 $B$=$l$^$G(B tip $B$@$C$?%A%'%s%8%;%C%H(B\footnote{$BLuCm(B: $BBh#3$N%A%'%s%8%;%C%H$N$3$H(B}
foozy@708 439 $B$N;R(B\emph{$B$G$O$J$/(B}$B!"?7$?$J%X%C%I$K$J$j$^$9!#(B
foozy@708 440 \hgcmd{backout} $B%3%^%s%I$O!"(B
foozy@708 441 $B$3$N$3$H$r9p$2$kHs>o$K$O$C$-$j$H$7$?%a%C%;!<%8$rI=<($7$F$$$^$9!#(B
foozy@708 442
foozy@708 443 \interaction{backout.manual.log}
foozy@708 444
foozy@708 445 $B$3$3$G$b!"(B
foozy@708 446 $BMzNr$r?^<($7$?(B\ref{fig:undo:backout-manual}~$B?^$r8+$k$3$H$G!"(B
foozy@708 447 $B$I$&$$$C$?>u67$K$"$k$N$+$,M}2r$70W$$$H;W$$$^$9!#(B
foozy@708 448 $B$3$N?^$+$i!"(B
foozy@708 449 \hgcmd{backout} $B%3%^%s%I$r(B tip $B0J30$N%A%'%s%8%;%C%H$KE,MQ$7$?:]$K!"(B
foozy@708 450 Mercurial $B$,?7$7$$%X%C%I$r%j%]%8%H%j$KDI2C$9$k(B
foozy@708 451 $B!J(BMercurial $B$K$h$jDI2C$5$l$?%A%'%s%8%;%C%H$O6k7A$GI=$7$F$$$^$9!K(B
foozy@708 452 $B$3$H$,$h$/$o$+$j$^$9!#(B
foozy@708 453
foozy@708 454 \begin{figure}[htb]
foozy@708 455 \centering
foozy@708 456 \grafix{undo-manual}
foozy@708 457 \label{fig:undo:backout-manual}
foozy@708 458 \caption{Backing out a change using the \hgcmd{backout} command}
foozy@708 459 \end{figure}
foozy@708 460
foozy@708 461 \hgcmd{backout} $B%3%^%s%I$N<B9T$,40N;$9$k$H!"(B
foozy@708 462 $B:n6HNN0h%G%#%l%/%H%j$N?F%A%'%s%8%;%C%H$,!"(B
foozy@708 463 $B?7$7$$(B ``backout'' $B%A%'%s%8%;%C%H$K$J$j$^$9!#(B
foozy@708 464
foozy@708 465 \interaction{backout.manual.parents}
foozy@708 466
foozy@708 467 $B$3$N;~E@$G!"#2$D$NFHN)$7$?JQ99$N$^$H$^$j(B
foozy@708 468 \footnote{$BLuCm(B: $B%^!<%8$,I,MW$J!VJ#?t%X%C%I>uBV!W$N$3$H$r;X$7$F$$$k$H;W$o$l$^$9(B}
foozy@708 469 $B$,B8:_$7$^$9!#(B
foozy@708 470
foozy@708 471 \interaction{backout.manual.heads}
foozy@708 472
foozy@708 473 $B$3$N;~E@$G!"(B\filename{myfile}
foozy@708 474 $B$O$I$N$h$&$JFbMF$G$"$k$3$H$,4|BT$5$l$k$+$r9M$($F$_$^$7$g$&!#(B
foozy@708 475 $BBh#1$NJQ99$O(B back out $B$7$F$$$^$;$s$+$i!"(B
foozy@708 476 $B$=$l$K4X$9$kFbMF$OB8:_$7$F$$$J$1$l$P$J$j$^$;$s!#(B
foozy@708 477 $BBh#2$NJQ99$O(B back out $B$7$^$7$?$N$G!"(B
foozy@708 478 $B$=$l$K4X$9$kFbMF$O>C<:$7$F$$$J$1$l$P$J$j$^$;$s!#(B
foozy@708 479 $BMzNr?^$GJL8D$N%X%C%I$H$7$F?^<($5$l$F$$$k$h$&$K!"(B
foozy@708 480 $BBh#3$NJQ99$K4X$9$kFbMF$,(B
foozy@708 481 \filename{myfile} $B$KB8:_$7$F$O(B\emph{$B$J$j$^$;$s(B}$B!#(B
foozy@708 482
foozy@708 483 \interaction{backout.manual.cat}
foozy@708 484
foozy@708 485 $BBh#3$NJQ99$NFbMF$r%U%!%$%k$K<h$j9~$`$K$O!"(B
foozy@708 486 $B#2$D$N%X%C%I$r$$$D$b$N$h$&$K%^!<%8$9$l$PNI$$$N$G$9!#(B
foozy@708 487
foozy@708 488 \interaction{backout.manual.merge}
foozy@708 489
foozy@708 490 $B%^!<%8$9$k$3$H$G!"(B
foozy@708 491 $B%j%]%8%H%jCf$NMzNr$O(B
foozy@708 492 \ref{fig:undo:backout-manual-merge}~$B?^$K<($9$h$&$K$J$j$^$9!#(B
foozy@708 493
foozy@708 494 \begin{figure}[htb]
foozy@708 495 \centering
foozy@708 496 \grafix{undo-manual-merge}
foozy@708 497 \caption{Manually merging a backout change}
foozy@708 498 \label{fig:undo:backout-manual-merge}
foozy@708 499 \end{figure}
foozy@708 500
foozy@708 501 \subsection{Why \hgcmd{backout} works as it does}
foozy@708 502
foozy@708 503 \hgcmd{backout} $B%3%^%s%I$N?6$kIq$$$r4JC1$K$^$H$a$k$H0J2<$N$h$&$K$J$j$^$9!#(B
foozy@708 504
foozy@708 505 \begin{enumerate}
foozy@708 506 \item $B:n6HNN0h%G%#%l%/%H%j$,(B``$B%/%j!<%s(B''$B$J>uBV!"(B
foozy@708 507 $BB($A(B \hgcmd{status} $B$N=PNO$,6u$G$"$k$3$H$r3NG'$7$^$9!#(B
foozy@708 508
foozy@708 509 \item $B$=$N;~E@$G$N:n6HNN0h%G%#%l%/%H%j$N?F%A%'%s%8%;%C%H$r3P$($F$*$-$^$9!#(B
foozy@708 510 $B0J2<!"$3$N%A%'%s%8%;%C%H$r(B \texttt{orig} $B$H8F>N$7$^$9!#(B
foozy@708 511
foozy@708 512 \item $B:n6HNN0h%G%#%l%/%H%j$r(B back out $BBP>]%A%'%s%8%;%C%H$KF14|$9$k$?$a$K!"(B
foozy@708 513 \hgcmd{update} $B$HF1Ey$N=hM}$r9T$$$^$9!#(B
foozy@708 514 $B0J2<!"$3$N%A%'%s%8%;%C%H$r(B \texttt{backout} $B$H8F>N$7$^$9!#(B
foozy@708 515
foozy@708 516 \item \texttt{backout} $B$N?F%A%'%s%8%;%C%H$rD4$Y$^$9!#(B
foozy@708 517 $B0J2<!"$3$N?F%A%'%s%8%;%C%H$r(B \texttt{parent} $B$H8F>N$7$^$9!#(B
foozy@708 518
foozy@708 519 \item \texttt{backout} $B%A%'%s%8%;%C%H$,1F6A$9$k8D!9$N%U%!%$%k$KBP$7$F!"(B
foozy@708 520 \hgcmdargs{revert}{-r parent} $BAjEv$N=hM}$r9T$$!"(B
foozy@708 521 \texttt{backout} $B%A%'%s%8%;%C%H$,%3%_%C%H$5$l$kA0$NFbMF$KI|85$7$^$9!#(B
foozy@708 522
foozy@708 523 \item $BI|857k2L$r?7$7$$%A%'%s%8%;%C%H$H$7$F%3%_%C%H$7$^$9!#(B
foozy@708 524 $B$3$N%A%'%s%8%;%C%H$N?F$O(B \texttt{backout} $B$G$9!#(B
foozy@708 525
foozy@708 526 \item $B%3%^%s%I%i%$%s$G(B \hgopt{backout}{--merge} $B$,;XDj$5$l$F$$$?>l9g!"(B
foozy@708 527 $B?7$7$$%A%'%s%8%;%C%H$H(B \texttt{orig} $B$r%^!<%8$7!"(B
foozy@708 528 $B$=$N7k2L$r%3%_%C%H$7$^$9!#(B
foozy@708 529
foozy@708 530 \end{enumerate}
foozy@708 531
foozy@708 532 $B:n6HNN0h%G%#%l%/%H%j$rO.7+$j2s$9$3$H$J$/(B
foozy@708 533 \hgcmd{backout} $B%3%^%s%IAjEv$N8z2L$rF@$k$b$&0l$D$NJ}K!$O!"(B
foozy@708 534 back out $B$5$l$k%A%'%s%8%;%C%H$KBP$7$F(B \hgcmd{export}
foozy@708 535 $B$9$k$3$H$GF@$?(B diff $B%U%!%$%k$r!"(B
foozy@708 536 $B:nMQ$rH?E>$5$;$k(B
foozy@708 537 \cmdopt{patch}{--reverse} $B%*%W%7%g%s$r;XDj$7$?(B
foozy@708 538 \command{patch} $B%3%^%s%I$KMQ$$$k$3$H$G$9!#(B
foozy@708 539 $B$3$NJ}K!$OHs>o$K4JC1$K46$8$k$G$7$g$&$,!"(B
foozy@708 540 $BA4$/>e<j$/5!G=$7$^$;$s!#(B
foozy@708 541
foozy@708 542 \hgcmd{backout} $B$,(B update$B!"(Bcommit$B!"(Bmerge $B$*$h$S:FEY$N(B commit $B$r9T$&$N$O!"(B
foozy@708 543 back out $BBP>]$N%A%'%s%8%;%C%H$H8=:_$N(B tip
foozy@708 544 $B$N(B\emph{$B4V(B}$B$NA4$F$N%A%'%s%8%;%C%H$r07$&:]$K!"(B
foozy@708 545 $BNI9%$J7k2L$rF@$k$?$a$N:GA1$N5!2q$r(B Mercurial $B$N%^!<%85!9=$KM?$($k$?$a$G$9!#(B
foozy@708 546
foozy@708 547 $BNc$($P!"(B
foozy@708 548 $B%W%m%8%'%/%H$NMzNr$+$i!"(B100 $B%j%S%8%g%sJ,A0$N%A%'%s%8%;%C%H$r(B
foozy@708 549 back out $B$7$h$&$H$7$?>l9g!"(B
foozy@708 550 \command{patch} $B$,%Q%C%A$NE,MQ2DH]$rH=Dj$9$k%3%s%F%-%9%H>pJs$r!"(B
foozy@708 551 back out $BBP>]$H$N4V$K$"$k%A%'%s%8%;%C%H$,(B``$BGK2u(B''$B$7$F$7$^$&$+$b$7$l$J$$(B
foozy@708 552 $B!J$3$N0UL#$,$o$+$i$J$$>l9g$O!"(B
foozy@708 553 \ref{sec:mq:patch}~$B@a$N(B \command{patch} $B$K4X$9$k@bL@$r;2>H$7$F$/$@$5$$!K(B
foozy@708 554 $B$N$G!"(B
foozy@708 555 \command{patch} $B%3%^%s%I$,H?E>(B diff $B$re:No$KE,MQ$G$-$k$3$H$O4|BT$G$-$^$;$s!#(B
foozy@708 556 Mercurial $B$N%^!<%85!9=$O!"(B
foozy@708 557 $B%U%!%$%k$d%G%#%l%/%H%j$NJQL>!"(B
foozy@708 558 $B%U%!%$%k8"8B$NJQ99$d!"(B
foozy@708 559 $B%P%$%J%j%U%!%$%k$NJQ99$H$$$C$?(B
foozy@708 560 \command{patch} $B%3%^%s%I$,07$&$3$H$N$G$-$J$$$b$N$b07$&$3$H$,$G$-$^$9!#(B
foozy@708 561
foozy@708 562 \section{Changes that should never have been}
foozy@708 563 \label{sec:undo:aaaiiieee}
foozy@708 564
foozy@708 565 $BJQ99FbMF$r<h$j>C$=$&$H$7$?>l9g$NKX$I$O!"(B
foozy@708 566 \hgcmd{backout} $B%3%^%s%I$NMxMQ$,BEEv$G$9!#(B
foozy@708 567 \hgcmd{backout} $B%3%^%s%I$O!"(B
foozy@708 568 $B85$N%A%'%s%8%;%C%H$N%3%_%C%H$H!"(B
foozy@708 569 $B8e$+$i$=$l$r<h$j>C$7$?:]$NN>J}$K4X$7$F!"(B
foozy@708 570 $B@53N$G1JB3E*$J5-O?$r;D$7$^$9!#(B
foozy@708 571
foozy@708 572 $B$7$+$7!"Hs>o$K5)$J>u67$G$9$,!"(B
foozy@708 573 $B%j%]%8%H%jCf$KB8:_$7$FM_$7$/$J$$JQ99$r%3%_%C%H$7$F$7$^$&$+$b$7$l$^$;$s!#(B
foozy@708 574 $BNc$($P!"(B
foozy@708 575 $B%=!<%9%U%!%$%k$HF1MM$K%*%V%8%'%/%H%U%!%$%k$r%3%_%C%H$7$F$7$^$&$h$&$J;vBV$O!"(B
foozy@708 576 $BLGB?$KL5$$$N$GDL>o$O!V4V0c$$!W$H$_$J$5$l$^$9!#(B
foozy@708 577 $B%*%V%8%'%/%H%U%!%$%k$K$OK\<AE*$J2ACM$O$"$j$^$;$s$7!"(B
foozy@708 578 $BHs>o$K(B\emph{$B%5%$%:$,Bg$-$$(B}$B$G$9$+$i!"(B
foozy@708 579 $B%j%]%8%H%5%$%:$dJ#@=!?JQ99<h$j9~$_$KMW$9$k;~4V$,A}2C$7$F$7$^$$$^$9!#(B
foozy@708 580
foozy@708 581 XXXXXXXXXX
foozy@708 582 Before I discuss the options that you have if you commit a ``brown
foozy@708 583 paper bag'' change (the kind that's so bad that you want to pull a
foozy@708 584 brown paper bag over your head), let me first discuss some approaches
foozy@708 585 that probably won't work.
foozy@708 586 XXXXXXXXXX
foozy@708 587
foozy@708 588 Mercurial $B$OMzNr$r!VC_@QE*$J$b$N!W(B---
foozy@708 589 $BA4$F$NJQ99$,@h9T$9$kJQ99$N>e$KE,MQ$5$l$k(B---$B$H$7$F07$$$^$9$N$G!"(B
foozy@708 590 $BGK2uE*$J1F6A$r;}$D%A%'%s%8%;%C%H$KBP$7$F$G$"$C$F$b!"(B
foozy@708 591 $B$=$l$rGK4~$9$k$3$H$ODL>o$O$G$-$^$;$s!#(B
foozy@708 592 \ref{sec:undo:rollback}~$B@a$G>\:Y$r=R$Y$^$9$,!"(B
foozy@708 593 $BNc30E*$K(B \hgcmd{rollback} $B%3%^%s%I$r0BA4$K;HMQ$G$-$k$N$O!"(B
foozy@708 594 $BJQ99$r%3%_%C%H$7$?D>8e$G!"(B
foozy@708 595 $BJL$J%j%]%8%H%j$X(B \hgcmd{push} $B$b(B \hgcmd{pull} $B$b$5$l$F$$$J$$>l9g$@$1$G$9!#(B
foozy@708 596
foozy@708 597 $BITE,@Z$J%A%'%s%8%;%C%H$rB>$N%j%]%8%H%j$X(B
foozy@708 598 \hgcmd{push} $B$7$F$7$^$C$?(B\emph{$B8e$G$b(B}$B!"(B
foozy@708 599 \hgcmd{rollback} $B%3%^%s%I$K$h$j!"(B
foozy@708 600 $B%m!<%+%k$J%j%]%8%H%j$G$=$N%A%'%s%8%;%C%H$rGK4~$9$k$3$H$O$G$-$^$9$,!"(B
foozy@708 601 $B$=$l$O$*$=$i$/K\Mh$d$j$?$+$C$?$3$H$G$OL5$$H&$G$9!#(B
foozy@708 602 $B1s3V%j%]%8%H%jCf$K$OITE,@Z$J%A%'%s%8%;%C%H$,B8:_$7B3$1$^$9$N$G!"(B
foozy@708 603 $B<!$KJQ99$N<h$j9~$_$r9T$C$?:]$K$O!"(B
foozy@708 604 $B$=$NJQ99$,:F$S%m!<%+%k%j%]%8%H%j$K8=$l$k$+$b$7$l$^$;$s!#(B
foozy@708 605
foozy@708 606 $B$3$N$h$&$J>u67$,H/@8$7$?>l9g!"(B
foozy@708 607 $B$I$N%j%]%8%H%j$,ITE,@Z$J%A%'%s%8%;%C%H$rJ];}$7$F$$$k$+$rGD0.$7$F$$$k$J$i!"(B
foozy@708 608 $B$=$l$i(B\emph{$BA4$F$N(B}$B%j%]%8%H%j$+$i$NITE,@Z$J%A%'%s%8%;%C%H$N=|5n$r!"(B
foozy@708 609 \emph{$B;n$_$k(B}$B$3$H$,2DG=$G$9!#(B
foozy@708 610 $BL^O@!"$3$l$O?=$7J,$NL5$$2rK!$G$O$"$j$^$;$s!#(B
foozy@708 611 $B$?$C$?0l$D$G$bKu>C$7B;$M$?%j%]%8%H%j$,$"$l$P!"(B
foozy@708 612 ``$BLn$KJ|$?$l$?(B''$B$^$^$N%A%'%s%8%;%C%H$O99$KEAGE$7$F$7$^$&$G$7$g$&!#(B
foozy@708 613
foozy@708 614 $B=|5n$7$?$$%A%'%s%8%;%C%H$N(B\emph{$B8e$K(B}$B!"(B
foozy@708 615 $B4v$D$+$N%A%'%s%8%;%C%H$r%3%_%C%H$7$F$7$^$C$?>l9g!"(B
foozy@708 616 $B<h$jF@$kA*Br;h$O99$K8B$i$l$F$7$^$$$^$9!#(B
foozy@708 617 Mercurial $B$O!"(B
foozy@708 618 $B%A%'%s%8%;%C%H$K<j$r$D$1$J$$$^$^$G!"(B
foozy@708 619 $BMzNr$K(B``$B7j$r3+$1$k(B''$B5!G=$ODs6!$7$F$$$^$;$s!#(B
foozy@708 620
foozy@708 621 XXX This needs filling out.
foozy@708 622 \texttt{examples} $B%G%#%l%/%H%jG[2<$N(B
foozy@708 623 \texttt{hg-replay} $B%9%/%j%W%H$O5!G=$7$^$9$,!"(B
foozy@708 624 $B%A%'%s%8%;%C%H$N%^!<%8$r9T$$$^$;$s!#(B
foozy@708 625 $B=EBg$J<jH4$-$G$9!#(B
foozy@708 626
foozy@708 627 \subsection{Protect yourself from ``escaped'' changes}
foozy@708 628
foozy@708 629 $B%m!<%+%k%j%]%8%H%j$K%3%_%C%H$7$?4v$D$+$N%A%'%s%8%;%C%H$,!"(B
foozy@708 630 \hgcmd{push} $B$J$$$7(B \hgcmd{pull}
foozy@708 631 $BEy$K$h$C$F$=$l$i$,B>$N%j%]%8%H%j$X$HH?1G$5$l$?$+$i$H$$$C$F!"(B
foozy@708 632 $B$=$N$3$H<+BN$OI,$:$7$bBg<:GT$H$$$&$o$1$G$O$"$j$^$;$s!#(B
foozy@708 633 $B$"$k<o$NIT@5$J%A%'%s%8%;%C%H$KBP$7$F!"(B
foozy@708 634 $B$"$i$+$8$a<+8JKI1R$9$k$3$H$b2DG=$G$9!#(B
foozy@708 635 $B3+H/%A!<%`$,JQ99$rCf1{$N%j%]%8%H%j$+$i(B \hgcmd{pull} $B$9$k$h$&$JBN@)$N>l9g!"(B
foozy@708 636 $B;v8NKI1R$OHs>o$K4JC1$G$9!#(B
foozy@708 637
foozy@708 638 $BCf1{$N%j%]%8%H%j$N4v$D$+$N%U%C%/$r!"(B
foozy@708 639 $BDI2C$5$l$k%A%'%s%8%;%C%H$N8!>Z$r9T$&$h$&$K@_Dj$9$k(B
foozy@708 640 $B!J(B\ref{chap:hook}~$B>O$r;2>H$7$F$/$@$5$$!K$3$H$G!"(B
foozy@708 641 $B$"$k<o$NIT@5$J%A%'%s%8%;%C%H$,!"(B
foozy@708 642 $BCf1{%j%]%8%H%j$KA4$/H?1G$5$l$J$$$h$&$K<+F02=$9$k$3$H$,$G$-$^$9!#(B
foozy@708 643 $B@_Dj$,E,@Z$G$"$l$PCf1{$N%j%]%8%H%j$KH?1G$G$-$J$/$J$k$?$a!"(B
foozy@708 644 $B$3$N$h$&$J%A%'%s%8%;%C%H$O<+A3$H(B``$B;`$K@d$((B''$B$^$9!#(B
foozy@708 645 $B$J$*NI$$$3$H$K!"$3$N<jK!$OL@<(E*$J2pF~$rI,MW$H$7$^$;$s!#(B
foozy@708 646
foozy@708 647 $BNc$($P!"Ev3:%A%'%s%8%;%C%H$,<B:]$K%3%s%Q%$%k2DG=$+$I$&$+$r8!>Z$9$k(B
foozy@708 648 incoming $B%U%C%/$O!"(B
foozy@708 649 $B$&$C$+$j(B``$B%S%k%I$G$-$J$/$7$F$7$^$&(B''$B$3$H$rKI;_$G$-$^$9!#(B
foozy@708 650
foozy@708 651 \section{Finding the source of a bug}
foozy@708 652 \label{sec:undo:bisect}
foozy@708 653
foozy@708 654 $B%P%0$r$b$?$i$7$?%A%'%s%8%;%C%H$r(B back out $B$G$-$k$N$OHs>o$K7k9=$J$N$G$9$,!"(B
foozy@708 655 $B$I$N%A%'%s%8%;%C%H$r(B back out $B$9$Y$-$+$rCN$C$F$$$kI,MW$,$"$j$^$9!#(B
foozy@708 656 Mercurial $B$K$O!"(B
foozy@708 657 $B%A%'%s%8%;%C%HFCDj$N<+F02=$HHs>o$K8zN(E*$J<B;\$rJd=u$9$k!"(B
foozy@708 658 \hgext{bisect} $B$H8F$P$l$k=EMW$J3HD%$,$"$j$^$9!#(B
foozy@708 659
foozy@708 660 $B%A%'%s%8%;%C%H$K$h$kJQ99$O?6$kIq$$$KJQ2=$r$b$?$i$9$N$G!"(B
foozy@708 661 $B$=$NJQ2=$r4JC1$J#2CM%F%9%H$K$h$j$=$l$rFCDj$9$k$3$H$,$G$-$k!"(B
foozy@708 662 $B$H$$$&$N$,(B \hgext{bisect} $B3HD%$N86M}$G$9!#(B
foozy@708 663 $B$I$N%3!<%IJR$,JQ2=$r$b$?$i$7$F$$$k$N$+$O$o$+$i$J$/$F$b!"(B
foozy@708 664 $B%P%0$NM-L5$r;n83$9$kJ}K!$O$o$+$k$G$7$g$&!#(B
foozy@708 665 \hgext{bisect} $B3HD%$O!"(B
foozy@708 666 $B%P%0$N860x$H$J$C$?%3!<%I$r$b$?$i$7$?%A%'%s%8%;%C%H$rC5$9$N$K!"(B
foozy@708 667 $B$"$J$?$N%F%9%H%W%m%0%i%`$rD>@\;HMQ$7$^$9!#(B
foozy@708 668
foozy@708 669 \hgext{bisect} $B3HD%$NE,MQJ}K!$rM}2r$7$d$9$$$h$&$K!"(B
foozy@708 670 $B4v$D$+$N%7%J%j%*$rNc<($7$^$9!#(B
foozy@708 671
foozy@708 672 \begin{itemize}
foozy@708 673 \item $B?t=54VA0$K$O8+$i$l$J$+$C$?%P%0$,!":G?7$NHG$GH/8+$5$l$^$7$?$,!"(B
foozy@708 674 $B2?;~$=$l$,:.F~$5$l$?$N$+$,$o$+$j$^$;$s!#(B
foozy@708 675 $B$3$N>l9g!"(Bbinary test $B$G%P%0$NM-L5$rD4$Y$k$3$H$,$G$-$^$9(B
foozy@708 676 \footnote{$BLuCm(B: $B!V%P%0$NM-L5!W$H$$$&#2CM$rH=Dj$9$k%F%9%H$rMQ$$$k$3$H$G!"(B
foozy@708 677 $B%P%0$N:.F~$7$?%A%'%s%8%;%C%H$rC5$7$^$9(B}$B!#(B
foozy@708 678
foozy@708 679 \item $BBg5^$.$G%P%0$r=$@5$7!"(B
foozy@708 680 $B3+H/%A!<%`$N%P%0%G!<%?%Y!<%9$N>uBV$r!V%/%m!<%:!W$K$G$-$k$h$&$K$J$j$^$7$?!#(B
foozy@708 681 $B!V%/%m!<%:!W>uBV$K$9$k:]$K!"(B
foozy@708 682 $B%P%0%G!<%?%Y!<%9$,%A%'%s%8%;%C%H(BID$B$r5a$a$F$-$^$7$?$,!"(B
foozy@708 683 $B$I$N%A%'%s%8%;%C%H$G%P%0$r=$@5$7$?$N$+3P$($F$$$^$;$s$G$7$?!#(B
foozy@708 684 $B$3$3$G:F$S(B binary test $B$G%P%0$NM-L5$rD4$Y$k$3$H$,$G$-$^$9!#(B
foozy@708 685
foozy@708 686 \item $B%=%U%H%&%'%"$,@5$7$/F0:n$7$F$$$^$9$,!"(B
foozy@708 687 $B0JA07WB,$7$?;~$h$j$b(B 15\% $BCY$/$J$C$F$^$7$?!#(B
foozy@708 688 $B$I$N%A%'%s%8%;%C%H$,@-G=Dc2<$NMW0x$H$J$C$F$$$k$N$+$rCN$j$?$$$G$9!#(B
foozy@708 689 $B$3$N>l9g!"(Bbinary test $B$O%=%U%H%&%'%"$N@-G=$r7WB,$7!"(B
foozy@708 690 ``$BAa$$(B''$B$N$+(B``$BCY$$(B''$B$N$+$rH=Dj$7$^$9!#(B
foozy@708 691
foozy@708 692 \item $B$3$3:G6a!"(B
foozy@708 693 $B=P2Y$7$?%W%m%8%'%/%H$N9=@.MWAG$N%5%$%:$,GzH/E*$KBg$-$/$J$C$F$$$F!"(B
foozy@708 694 $B%W%m%8%'%/%H$N%S%k%I<j=g$N2?$i$+$,JQ99$5$l$?$N$G$O$J$$$+$H?dB,$7$F$$$^$9(B
foozy@708 695 \footnote{$BLuCm(B: $B%S%k%I7k2L$N!V9=@.MWAG%5%$%:$NBg>.!W(B
foozy@708 696 $B$H$$$&#2CM$rH=Dj$9$k%F%9%H$rMQ$$$k$3$H$G!"(B
foozy@708 697 $BJQ99$,:.F~$5$l$?%A%'%s%8%;%C%H$rC5$7$^$9(B}$B!#(B
foozy@708 698
foozy@708 699 \end{itemize}
foozy@708 700
foozy@708 701 $B$3$l$i$NNc$+$i!"(B
foozy@708 702 \hgext{bisect} $B3HD%$,%P%0$N85$rC5$9$@$1$N$b$N$G$J$$$3$H$OL@$i$+$G$7$g$&!#(B
foozy@708 703 $B$=$NFC@-$K4X$9$k#2CM%F%9%H$r=q$1$k$J$i!"(B
foozy@708 704 $B%j%]%8%H%j$K$*$1$k(B
foozy@708 705 $B!J%=!<%9%D%j!<Cf$N%U%!%$%k$KBP$9$kC1=c$JJ8;zNs8!:w$G$OC5$7=P$;$J$$!K(B
foozy@708 706 $BG$0U$N(B``$BFC@-$N=P8=(B''$B$rC5$7=P$9$3$H$,$G$-$^$9!#(B
foozy@708 707
foozy@708 708 $BMxMQ<T$H(B Mercurial $B$N$=$l$>$l$,!"(B
foozy@708 709 $B8!:w=hM}$K$*$$$F$I$NItJ,$K@UG$$rIi$&$N$+$r$O$C$-$j$H$5$;$k$?$a$K!"(B
foozy@708 710 $B$3$3$G$b$&>/$7MQ8l$N@bL@$r$7$^$7$g$&!#(B
foozy@708 711 \emph{$B%F%9%H(B}(test)$B$H$O!"(B
foozy@708 712 \hgext{bisect} $B3HD%$,%A%'%s%8%;%C%H$rA*Br$9$k:]$K!"(B
foozy@708 713 \emph{$BMxMQ<T(B}$B$,<B9T$9$k$b$N$G$9!#(B
foozy@708 714 \emph{$BD4::(B}(probe)$B$H$O!"(B
foozy@708 715 $B$"$k%j%S%8%g%s$NNIH]$rH=Dj$9$k$?$a$K(B \hgext{bisect} $B$,<B9T$9$k$b$N$G$9!#(B
foozy@708 716 $B:G8e$K!"(B
foozy@708 717 ``bisect'' $B$H$$$&8@MU$r!"(B
foozy@708 718 ``\hgext{bisect} $B3HD%$rMQ$$$?8!:w(B''$B$NBeMQ$H$7$F!"(B
foozy@708 719 $BL>;l$*$h$SF0;l$H$7$F;HMQ$7$^$9!#(B
foozy@708 720
foozy@708 721 $B8!:w=hM}$r<+F02=$9$k4JC1$JJ}K!$N0l$D$,!"(B
foozy@708 722 $BA4$F$N%A%'%s%8%;%C%H$rD4::$9$k8/$jJ}$G$9!#(B
foozy@708 723 $B$7$+$7$J$,$i!"$3$N8/$jJ}$K$OKX$I%9%1!<%i%S%j%F%#$,$"$j$^$;$s!#(B
foozy@708 724 $B#1$D$N%A%'%s%8%;%C%H$N%F%9%H$K#1#0J,I,MW$G!"(B
foozy@708 725 $B%j%]%8%H%j$K#1K|$N%A%'%s%8%;%C%H$,$"$C$?$H$9$k$H!"(B
foozy@708 726 $BE0DlE*$KD4::$9$k8/$jJ}$G$O!"(B
foozy@708 727 $B%P%0$r$b$?$i$7$?%A%'%s%8%;%C%H$r8+$D$1$k$N$K!"(B
foozy@708 728 $BJ?6Q$G#3#5(B~\emph{$BF|(B}$BI,MW$G$9!#(B
foozy@708 729 $B8!:wBP>]$r:G?7$N#5#0#0%A%'%s%8%;%C%H$K8BDj$G$-$k$H$7$F$b!"(B
foozy@708 730 $B%P%0$r$b$?$i$7$?%A%'%s%8%;%C%H$r8+$D$1$k$N$K$O!"(B
foozy@708 731 $B$=$l$G$b$J$*#4#0;~4VI,MW$G$9!#(B
foozy@708 732
foozy@708 733 \emph{bisect} $B3HD%$O!"(B
foozy@708 734 $B3NG'$9$k%A%'%s%8%;%C%H?t$KBP$7$F(B\emph{$BBP?t(B}$B$N%*!<%@!<$G8!:w(B
foozy@708 735 $B!J$3$N<o$N8!:w$O(B``$BFsJ,C5:w(B''$B$H8F$P$l$^$9!K$G$-$k$h$&$K!"(B
foozy@708 736 $B%W%m%8%'%/%HMzNr$N(B``$B7A(B''$B$K4X$9$k>pJs$rMxMQ$7$^$9!#(B
foozy@708 737 $B$3$NJ}K!$K$h$j!"(B
foozy@708 738 $B2>$K%F%9%H$"$?$j$N=jMW;~4V$,#1#0J,3]$+$k$H$7$F$b!"(B
foozy@708 739 $B#1K|%A%'%s%8%;%C%H$KBP$9$k8!:w$O#2;~4V0JFb$G=*$o$j$^$9!#(B
foozy@708 740 $B8!:wBP>]$r:G?7$N#5#0#0%A%'%s%8%;%C%H$K8BDj$G$-$k$J$i$P!"(B
foozy@708 741 $B#1;~4V0JFb$K8!:w$G$-$k$G$7$g$&!#(B
foozy@708 742
foozy@708 743 \hgext{bisect} $B3HD%$O!"(B
foozy@708 744 Mercurial $B$G4IM}$5$l$F$$$k%W%m%8%'%/%H$NMzNr$N;}$D(B
foozy@708 745 ``$B;^J,$+$l(B''$B$NFC<A$r$o$+$C$F$$$^$9$N$G!"(B
foozy@708 746 $B%j%]%8%H%j$K$*$1$k;^J,$+$l!&%^!<%8!&J#?t%X%C%I$N07$$$bLdBj$"$j$^$;$s!#(B
foozy@708 747 $BC10l$ND4::$GMzNr$N;^J,$+$lA4BN$r4"$j<h$k(B\footnote{$BLuCm(B:
foozy@708 748 $B!V;^J,$+$l@hA4BN$r8!:wBP>]$+$i=|30$9$k!W$N0U(B}$B$3$H$,$G$-$k$?$a!"(B
foozy@708 749 \hgext{bisect} $B3HD%$O8zN(E*$K8!:w$9$k$3$H$,$G$-$k$N$G$9!#(B
foozy@708 750
foozy@708 751 \subsection{Using the \hgext{bisect} extension}
foozy@708 752
foozy@708 753 $B$3$3$G$O(B \hgext{bisect} $B3HD%$N<B9TNc$r<($7$^$9!#(B
foozy@708 754 Mercurial $B<+BN$N4JJX@-$r0];}$9$k$?$a$K!"(B
foozy@708 755 \hgext{bisect} $B$O3HD%5!G=$H$7$FDs6!$5$l$^$9!#(B
foozy@708 756 $B$=$N$?$a!"L@<(E*$KM-8z$K$7$J$1$l$P!"$=$N5!G=$ODs6!$5$l$^$;$s!#(B
foozy@708 757 \hgext{bisect} $B3HD%$rM-8z$K$9$k$K$O!"(B
foozy@708 758 $B!JB8:_$7$J$$>l9g$K$O!K(B \hgrc\ $B$K0J2<$N%;%/%7%g%s%X%C%@$rDI2C$7!'(B
foozy@708 759
foozy@708 760 \begin{codesample2}
foozy@708 761 [extensions]
foozy@708 762 \end{codesample2}
foozy@708 763
foozy@708 764 $BB3$$$F!"(B\hgext{bisect} $B3HD%$rM-8z2=$9$k$?$a$N9T$r$3$N%;%/%7%g%s$KDI2C$7$^$9(B
foozy@708 765 \footnote{1.0 $BHG0J9_$N(B Mercurial $B$G$O!"(B
foozy@708 766 \hgext{bisect} $B5!G=$O4pK\5!G=$K<h$j9~$^$l$F$$$^$9$N$G!"(B
foozy@708 767 $B!V3HD%5!G=$NM-8z2=!W$OITMW$G$9(B}$B!#(B
foozy@708 768
foozy@708 769 \begin{codesample2}
foozy@708 770 hbisect =
foozy@708 771 \end{codesample2}
foozy@708 772
foozy@708 773 \begin{note}
foozy@708 774 \hgext{bisect} $B3HD%$NL>A0$N@hF,$K(B``\texttt{h}''$B$,IU$/$N$O4V0c$C$F$$$^$;$s!#(B
foozy@708 775 $B$3$NJ8;z$,IU$/$N$O!"(BMercurial $B$,(B Python $B$G<BAu$5$l$F$$$F!"(B
foozy@708 776 Python $B$NI8=`%i%$%V%i%j$N(B \texttt{bisect} $B$r;HMQ$7$F$$$k$?$a$G$9!#(B
foozy@708 777 $B8m$C$F(B ``\texttt{hbisect}''$B$+$i(B``\texttt{h}''$B$r>JN,$7$?>l9g!"(B
foozy@708 778 \hgrc $B%U%!%$%k$N5-=R$N%9%Z%k$r=$@5$9$k$^$G$O!"(B
foozy@708 779 Mercurial $B$O(B Python $BI8=`$N(B \texttt{bisect} $B%Q%C%1!<%8$r8+$D$1=P$7!"(B
foozy@708 780 $B$=$l$r(B Mercurial $B3HD%$H$7$FMxMQ$7$h$&$H$7$F%/%i%C%7%e$7B3$1$k$3$H$G$7$g$&!#(B
foozy@708 781 \end{note}
foozy@708 782
foozy@708 783 \hgext{bisect} $B3HD%$r3VN%$7$FMxMQ$9$k$?$a$K!"(B
foozy@708 784 $B%j%]%8%H%j$r:n@.$7$^$7$g$&!#(B
foozy@708 785
foozy@708 786 \interaction{bisect.init}
foozy@708 787
foozy@708 788 $B%k!<%W$K$h$C$F4v$D$+$N:3:Y$JJQ99$r9T$$!"(B
foozy@708 789 $B$=$NCf$NFCDj$NJQ99$,(B``$B%P%0(B''$B$r;}$D$h$&$K$9$k!"(B
foozy@708 790 $B$H$$$&C1=c$JJ}K!$G!"(B
foozy@708 791 $B%P%0$r;}$C$?%W%m%8%'%/%H$N%7%_%e%l!<%7%g%s$r9T$$$^$9!#(B
foozy@708 792 $B$3$N%k!<%W$O(B 50 $B$N%A%'%s%8%;%C%H$r@8@.$7!"(B
foozy@708 793 $B$=$l$>$l$,#1$D$N%U%!%$%k$r%j%]%8%H%j$KDI2C$7$^$9!#(B
foozy@708 794 $B$3$3$G$O!"(B
foozy@708 795 $B%U%!%$%k$,(B``i have a gub''$B$H$$$&%F%-%9%H$r4^$s$G$$$k$3$H$r$b$C$F!"(B
foozy@708 796 ``$B%P%0(B''$B$H$_$J$7$^$9!#(B
foozy@708 797
foozy@708 798 \interaction{bisect.commits}
foozy@708 799
foozy@708 800 $B$=$l$G$O!"(B\hgext{bisect} $B3HD%$N;HMQJ}K!$rM}2r$7$^$7$g$&!#(B
foozy@708 801 \hgext{bisect} $B3HD%$K4X$7$F$b!"(B
foozy@708 802 $BDL>o$N(B Mercurial $B$NAH$_9~$_(B help $B5!G=$,;HMQ$G$-$^$9!#(B
foozy@708 803
foozy@708 804 \interaction{bisect.help}
foozy@708 805
foozy@708 806 \hgext{bisect} $B3HD%$OCJ3,$rF'$s$G5!G=$7$^$9!#(B
foozy@708 807 $B3FCJ3,$O0J2<$N$h$&$K?J$_$^$9!#(B
foozy@708 808
foozy@708 809 \begin{enumerate}
foozy@708 810 \item $B#2CM%F%9%H$r<B9T$7$^$9!#(B
foozy@708 811 \begin{itemize}
foozy@708 812 \item $B%F%9%H$,@.8y$7$?>l9g!"(B
foozy@708 813 \hgcmdargs{bisect}{good} $B%3%^%s%I$K$h$j(B
foozy@708 814 \hgext{bisect} $B3HD%$K$=$N$3$H$rEA$($^$9!#(B
foozy@708 815 \item $B%F%9%H$,<:GT$7$?>l9g!"(B
foozy@708 816 \hgcmdargs{bisect}{bad} $B%3%^%s%I$K$h$j(B
foozy@708 817 \hgext{bisect} $B3HD%$K$=$N$3$H$rEA$($^$9!#(B
foozy@708 818 \end{itemize}
foozy@708 819 \item \hgext{bisect} $B3HD%$OEA$($i$l$?>pJs$r85$K!"(B
foozy@708 820 $B<!$K%F%9%H$9$Y$-%A%'%s%8%;%C%H$r7hDj$7$^$9!#(B
foozy@708 821
foozy@708 822 \item \hgext{bisect} $B3HD%$O!"(B
foozy@708 823 $B:n6HNN0h%G%#%l%/%H%j$r$=$N%A%'%s%8%;%C%H$G99?7$7$^$9$N$G!"(B
foozy@708 824 $B0J>e$N<j=g$r7+$jJV$7$^$9!#(B
foozy@708 825
foozy@708 826 \end{enumerate}
foozy@708 827
foozy@708 828 $B#2CM%F%9%H$N7k2L$,(B``$B@.8y(B''$B$+$i(B``$B<:GT(B''$B$KJQ2=$7$?E@$r<($9!"(B
foozy@708 829 $B0l0U$J%A%'%s%8%;%C%H$r(B \hgext{bisect} $B3HD%$,FCDj$G$-$?;~E@$G!"(B
foozy@708 830 $B$3$N<j=g$O=*N;$7$^$9!#(B
foozy@708 831
foozy@708 832 $B8!:w$N3+;O$KEv$?$C$F$O!"(B
foozy@708 833 \hgcmdargs{bisect}{init} $B%3%^%s%I$N<B9T$,I,MW$G$9!#(B
foozy@708 834
foozy@708 835 \interaction{bisect.search.init}
foozy@708 836
foozy@708 837 $B:#2s$N<B9TNc$G;HMQ$9$k#2CM%F%9%H$O4JC1$J$b$N$G!"(B
foozy@708 838 $B%j%]%8%H%jCf$N2?$l$+$N%U%!%$%k$,(B
foozy@708 839 ``i have a gub'' $BJ8;zNs$r4^$s$G$$$k$+H]$+$rH=Dj$7$^$9!#(B
foozy@708 840 $B4^$s$G$$$k>l9g!"$=$N%A%'%s%8%;%C%H$O(B
foozy@708 841 ``$B%P%0$NMW0x$H$J$k(B''$B%A%'%s%8%;%C%H$G$9!#(B
foozy@708 842 $B47=,>e!"(B
foozy@708 843 $B8!:wBP>]$H$J$kFC@-$r;}$C$F$$$k%A%'%s%8%;%C%H$r(B ``bad''$B!"(B
foozy@708 844 $B;}$C$F$$$J$$%A%'%s%8%;%C%H$r(B ``good'' $B$H8F$S$^$9!#(B
foozy@708 845 $BB?$/$N>l9g!"(B
foozy@708 846 $B:n6HNN0h%G%#%l%/%H%j$,F14|$7$F$$$k%j%S%8%g%s!JDL>o$O(B tip$B!K(B
foozy@708 847 $B$O%P%0$r;}$D%A%'%s%8%;%C%H$K$h$jLdBj$rJz$($F$$$k$b$N$G$9$+$i!"(B
foozy@708 848 $B$3$l$r(B``bad''$B$H$_$J$7$^$9!#(B
foozy@708 849
foozy@708 850 \interaction{bisect.search.bad-init}
foozy@708 851
foozy@708 852 $B<!$N:n6H$O!"(B
foozy@708 853 $B%P%0$,(B\emph{$BL5$$(B}$B%A%'%s%8%;%C%H$r;XDj$9$k$3$H$G$9!#(B
foozy@708 854 \hgext{bisect} $B3HD%$O(B
foozy@708 855 $B:G=i$N(B ``good'' $B$H(B ``bad'' $B$N%A%'%s%8%;%C%H4V$N8!::>u67$r(B
foozy@708 856 ``$B3g8L(B''$B$G3g$C$FI=<($9$k$G$7$g$&!#(B
foozy@708 857 $B:#2s$N;vNc$G$O!"(B
foozy@708 858 $B%j%S%8%g%s(B 10 $B$K$O%P%0$,$"$j$^$;$s(B
foozy@708 859 $B!J:G=i$N(B ``good'' $B%A%'%s%8%;%C%H$NA*Br$K4X$7$F$O!"(B
foozy@708 860 $B8e$[$IJdB-$,$"$j$^$9!K!#(B
foozy@708 861
foozy@708 862 \interaction{bisect.search.good-init}
foozy@708 863
foozy@708 864 $B%3%^%s%I=PNO$K$O0J2<$N0UL#$,$"$j$^$9!#(B
foozy@708 865
foozy@708 866 \begin{itemize}
foozy@708 867 \item $B%P%0$r$b$?$i$7$?%A%'%s%8%;%C%H$NFCDj$^$G$K!"(B
foozy@708 868 $B$I$l$@$1$N%A%'%s%8%;%C%H$KBP$7$F9MN8$,I,MW$G$"$k$+!"(B
foozy@708 869 $B$^$?!"$I$l$@$1$N%F%9%H$rMW5a$9$k$+$rI=<($7$^$9!#(B
foozy@708 870
foozy@708 871 \item \hgext{bisect}
foozy@708 872 $B3HD%$O<!$K%F%9%H$9$Y$-%A%'%s%8%;%C%H$X$H:n6HNN0h%G%#%l%/%H%j$r99?7$7!"(B
foozy@708 873 $B$I$N%A%'%s%8%;%C%H$,%F%9%HBP>]$G$"$k$N$+$rI=<($7$^$9!#(B
foozy@708 874
foozy@708 875 \end{itemize}
foozy@708 876
foozy@708 877 $BAaB.:n6HNN0h%G%#%l%/%H%j$G%F%9%H$r$7$F$_$^$7$g$&!#(B
foozy@708 878 \command{grep} $B$r;HMQ$7$F!"(B
foozy@708 879 $B:n6HNN0h%G%#%l%/%H%j$N(B``bad''$B%U%!%$%k$NM-L5$rD4$Y!"(B
foozy@708 880 $B%U%!%$%k$,L5$1$l$P$=$N%j%S%8%g%s$O(B``good''$B$G$9!#(B
foozy@708 881
foozy@708 882 \interaction{bisect.search.step1}
foozy@708 883
foozy@708 884 $B$3$N%F%9%H$O40A4$K<+F02=$G$-$=$&$G$9$N$G!"(B
foozy@708 885 $B%7%'%k4X?t$K$7$F$7$^$$$^$7$g$&!#(B
foozy@708 886
foozy@708 887 \interaction{bisect.search.mytest}
foozy@708 888
foozy@708 889 $B$3$l$G!"(B
foozy@708 890 $B%F%9%H<j=gA4BN$rC10l$N(B
foozy@708 891 \texttt{mytest} $B%3%^%s%I$G<B9T$G$-$^$9!#(B
foozy@708 892
foozy@708 893 \interaction{bisect.search.step2}
foozy@708 894
foozy@708 895 $B%F%9%H<j=g$,5-O?$5$l$?%3%^%s%I$r$"$H?t2s5/F0$9$k$3$H$G!"(B
foozy@708 896 $BEv=i$NL\E*$,C#@.$5$l$^$9!#(B
foozy@708 897
foozy@708 898 \interaction{bisect.search.rest}
foozy@708 899
foozy@708 900 40 $BDx$N%A%'%s%8%;%C%HA4BN$N8!:w$K$b4X$o$i$:!"(B
foozy@708 901 \hgext{bisect}
foozy@708 902 $B3HD%$O$o$:$+#52s$N%F%9%H$G(B``$B%P%0(B''$B$r$b$?$i$7$?%A%'%s%8%;%C%H$rFCDj$G$-$^$7$?!#(B
foozy@708 903 $BD4::BP>]%A%'%s%8%;%C%H?t$KBP$7$F!"(B
foozy@708 904 \hgext{bisect} $B3HD%$OBP?t$N%*!<%@!<$G%F%9%HBP>]$rA*Dj$9$k$N$G!"(B
foozy@708 905 $B%A%'%s%8%;%C%H$rDI2C$7$?$@$1%F%9%H2s?t$,A}2C$9$k(B
foozy@708 906 ``$BNO?T$/(B''$B$N<jK!$h$j$bM-Mx$G$9!#(B
foozy@708 907
foozy@708 908 \subsection{Cleaning up after your search}
foozy@708 909
foozy@708 910 $B%j%]%8%H%j$K$*$1$k(B \hgext{bisect} $B3HD%$N;HMQ$,=*$o$C$?$J$i!"(B
foozy@708 911 $B8!:w$K;HMQ$7$F$$$?>pJs$r(B
foozy@708 912 \hgcmdargs{bisect}{reset} $B%3%^%s%I$K$h$jGK4~$9$k$3$H$,$G$-$^$9!#(B
foozy@708 913 \hgext{bisect} $B3HD%$O$=$l$[$IB?$/$NNN0h$r>CHq$9$k$o$1$G$O$"$j$^$;$s$N$G!"(B
foozy@708 914 $B$3$N:n6H$rK:$l$F$bLdBj$K$O$J$j$^$;$s!#(B
foozy@708 915 $B$7$+$7!"(B\hgcmdargs{bisect}{reset} $B$r<B9T$9$k$^$G$O!"(B
foozy@708 916 \hgext{bisect} $B$O$=$N%j%]%8%H%j$GJL$N8!:w$r3+;O$5$;$F$/$l$^$;$s!#(B
foozy@708 917
foozy@708 918 \interaction{bisect.search.reset}
foozy@708 919
foozy@708 920 \section{Tips for finding bugs effectively}
foozy@708 921
foozy@708 922 \subsection{Give consistent input}
foozy@708 923
foozy@708 924 \hgext{bisect} $B3HD%$K$O!"(B
foozy@708 925 $B<B;\$7$?A4$F$N%F%9%H$N7k2L$,@5$7$/;XDj$5$l$J$1$l$P$J$j$^$;$s!#(B
foozy@708 926 $BK\Ev$O%F%9%H$,@.8y$7$F$$$?$K$b4X$o$i$:!"(B
foozy@708 927 $B%F%9%H$N<:GT$r(B \hgext{bisect} $B3HD%$KEA$($?>l9g!"(B
foozy@708 928 $BL7=b$7$?7k2L$r=P$9(B\emph{$B$+$b(B}$B$7$l$^$;$s!#(B
foozy@708 929 $B%F%9%H7k2L$KBP$7$FL7=b$,8!CN$5$l$?>l9g!"(B
foozy@708 930 \hgext{bisect} $B$O!"(B
foozy@708 931 $BFCDj$N%A%'%s%8%;%C%H$,(B``good''$B$G$b(B``bad''$B$G$b$"$k!"(B
foozy@708 932 $B$H8@$C$F$-$^$9!#(B
foozy@708 933 $B$7$+$7!"$3$N8!CN$O40`z$K9T$o$l$k$o$1$G$O$J$$$N$G!"(B
foozy@708 934 $B4V0c$C$?%A%'%s%8%;%C%H$r%P%0$NMW0x$H$7$FJs9p$9$k$G$7$g$&!#(B
foozy@708 935
foozy@708 936 \subsection{Automate as much as possible}
foozy@708 937
foozy@708 938 $BI.<T$,(B \hgext{bisect} $B3HD%$r;H$$;O$a$?:"$O!"(B
foozy@708 939 $B8!:w$N$?$a$N%F%9%H$r%3%^%s%I%i%$%s$G<jF0$G<B9T$7$F$$$^$7$?$,!"(B
foozy@708 940 $B>/$J$/$H$b;d$K$O!"$3$N<jK!$OFk@w$_$^$;$s!#(B
foozy@708 941 $B2?EY$+(B \hgext{bisect} $B$r;HMQ$7$?8e$G!"(B
foozy@708 942 $B:G=*E*$K@5$7$$7k2L$rF@$kA0$K!"(B
foozy@708 943 $B$$$D$b<j0c$$$N$?$a$K2?EY$b8!:w$r$d$jD>$7$F$$$k$3$H$K5$IU$-$^$7$?!#(B
foozy@708 944
foozy@708 945 \hgext{bisect} $B3HD%$r<jF0$G6nF0$7$F$$$?:]$K$O!"(B
foozy@708 946 $B>.$5$J%j%]%8%H%j$K$*$1$kC1=c$J8!:w$G$"$C$F$bLdBj$,H/@8$7$F$$$^$7$?!#(B
foozy@708 947 $B%F%9%H$NFbMF$,J#;($G$"$C$?$j!"(B
foozy@708 948 \hgext{bisect} $B$,MW5a$9$k%F%9%H<B9T2s?t$,A}$($l$P!"(B
foozy@708 949 $B$=$l$@$1%F%9%H<B9T$K$*$1$kA`:n%_%9$N2DG=@-$O9b$^$j$^$9!#(B
foozy@708 950 $B%F%9%H$r<+F02=$9$k$h$&$K$J$C$F0JMh!"(B
foozy@708 951 $BHs>o$KNI9%$J7k2L$rF@$i$l$F$$$^$9!#(B
foozy@708 952
foozy@708 953 $B%F%9%H<+F02=$N$?$a$N80$O#2$D$"$j$^$9!#(B
foozy@708 954
foozy@708 955 \begin{itemize}
foozy@708 956 \item $B>o$KF1$8!V>I>u!W$r%F%9%H$9$k$3$H$H!"(B
foozy@708 957 \item $B>o$K0l4S$7$?F~NO$r(B \hgcmd{bisect} $B%3%^%s%I$KM?$($k$3$H(B
foozy@708 958 \end{itemize}
foozy@708 959
foozy@708 960 $BA0=R$N<B9TNc$G$O!"(B
foozy@708 961 \command{grep} $B%3%^%s%I$K$h$j!V>I>u!W$rD4$Y$F$$$F!"(B
foozy@708 962 \texttt{if} $B%9%F!<%H%a%s%H$,!V8!::!W$N7k2L$r<u$1$F(B
foozy@708 963 \hgcmd{bisect} $B%3%^%s%I$KF1$8F~NO$rM?$($k$3$H$rJ]>Z$7$F$$$^$7$?!#(B
foozy@708 964 \texttt{mytest} $B4X?t$,!"(B
foozy@708 965 $B$3$l$i$r:F8=$7$d$9$$7A<0$KE}9g$7$?$3$H$G!"(B
foozy@708 966 $BA4$F$N%F%9%H$,6Q0l$G@09g@-$N<h$l$?$b$N$K$J$C$F$$$^$9!#(B
foozy@708 967
foozy@708 968 \subsection{Check your results}
foozy@708 969
foozy@708 970 \hgext{bisect} $B$K$h$k8!:w$N=PNO7k2L$OM?$($?>pJsDxEY$K$7$+@5$7$/$J$$$N$G!"(B
foozy@708 971 \hgext{bisect} $B$K$h$j(B ``good'' $B$HJs9p$5$l$?%A%'%s%8%;%C%H$r!"(B
foozy@708 972 $B@dBPE*$K@5$7$$$b$N$H$_$J$5$J$$$G$/$@$5$$!#(B
foozy@708 973 $BJs9pFbMF$r%/%m%9%A%'%C%/$9$k4JC1$JJ}K!$O!"(B
foozy@708 974 $B0J2<$N$h$&$J%A%'%s%8%;%C%H$N$=$l$>$l$KBP$7$F!"(B
foozy@708 975 $B<jF0$G<+?H$N%F%9%H$r<B9T$7$F$_$k$3$H$G$9!#(B
foozy@708 976
foozy@708 977 \begin{itemize}
foozy@708 978 \item $B:G=i$N(B ``bad'' $B%j%S%8%g%s$G$"$k$HJs9p$5$l$?$b$N(B
foozy@708 979 $B!J0J2<!"!V>c32%A%'%s%8%;%C%H!W$H8F>N!K!#(B
foozy@708 980 $B$"$J$?$N%F%9%H$O$3$l$K4X$7$F(B ``bad'' $B$HJs9p$7$J$1$l$P$J$j$^$;$s!#(B
foozy@708 981
foozy@708 982 \item $B>e5-%A%'%s%8%;%C%H$N?F%A%'%s%8%;%C%H(B
foozy@708 983 $B!J%^!<%8$5$l$?>l9g$ON>J}$N?F!K!#(B
foozy@708 984 $B$"$J$?$N%F%9%H$O$3$l!J$3$l$i!K$K4X$7$F(B ``good'' $B$HJs9p$7$J$1$l$P$J$j$^$;$s!#(B
foozy@708 985
foozy@708 986 \item $B>c32%A%'%s%8%;%C%H$N;R%A%'%s%8%;%C%H!#(B
foozy@708 987 $B$"$J$?$N%F%9%H$O$3$l$K4X$7$F(B ``bad'' $B$HJs9p$7$J$1$l$P$J$j$^$;$s!#(B
foozy@708 988
foozy@708 989 \end{itemize}
foozy@708 990
foozy@708 991 \subsection{Beware interference between bugs}
foozy@708 992
foozy@708 993 $B$"$k%P%0$rC5$9:]$K!"(B
foozy@708 994 $BB>$N%P%0$NB8:_$K$h$j:.Mp$5$;$i$l$k2DG=@-$b$"$j$^$9!#(B
foozy@708 995 $BNc$($P!"(B
foozy@708 996 $B%j%S%8%g%s(B 100 $B$G%=%U%H%&%'%"$,%/%i%C%7%e$7!"(B
foozy@708 997 $B%j%S%8%g%s(B 50 $B$G$O@5$7$/F0:n$7$F$$$?$H$7$^$9!#(B
foozy@708 998 $B$"$J$?$NCN$i$J$$4V$K!"(B
foozy@708 999 $B%=%U%H%&%'%"$r%/%i%C%7%e$5$;$kJL$N%P%0$r!"(B
foozy@708 1000 $BB>$N?M$,%j%S%8%g%s(B 60 $B$GF~$l$F$7$^$$!"(B
foozy@708 1001 $B$=$l$r%j%S%8%g%s(B 80 $B$G=$@5$7$?>l9g!"(B
foozy@708 1002 $B$J$s$i$+$NJ}K!$G8!:w7k2L$r:.Mp$5$;$k$+$b$7$l$^$;$s!#(B
foozy@708 1003
foozy@708 1004 $BB>$N%P%0$NB8:_$K$h$C$F!"(B
foozy@708 1005 $BC5$7$F$$$k%P%0$,40A4$K(B``$BJ$$$1#$5$l$k(B''$B$+$b$7$l$:!"(B
foozy@708 1006 $BC5$7$F$$$k%P%0$,$=$NB8:_$r<($95!2q$rF@$kA0$KB>$N%P%0$,H/@8$7$F$$$k!"(B
foozy@708 1007 $B$H8@$($^$9!#(B
foozy@708 1008 $BB>$N%P%0$r2sHr$7$?%F%9%H$,(B
foozy@708 1009 $B!JNc$($P!"$=$N%P%0$,%W%m%8%'%/%H$N%S%k%I$rAK32$9$k$J$I$NM}M3$G!K(B
foozy@708 1010 $B$G$-$J$$$?$a$K!"(B
foozy@708 1011 $BFCDj$N%A%'%s%8%;%C%H$K$*$1$k8!:wBP>]$N%P%0$NM-L5$rL@8@$G$-$J$$>l9g!"(B
foozy@708 1012 \hgext{bisect} $B3HD%$N=u$1$rD>@\<u$1$k$3$H$O$G$-$^$;$s!#(B
foozy@708 1013 $B$=$NBX$o$j!"(B
foozy@708 1014 $BB>$N%P%0$,B8:_$9$k%A%'%s%8%;%C%H$r<jF0$G<h$j=|$/$3$H$G!"(B
foozy@708 1015 ``$B<~JU(B''$B$G$NJL$J8!:w$r9T$$$^$7$g$&!#(B
foozy@708 1016
foozy@708 1017 $B%P%0$NB8:_$K4X$9$k%F%9%H$,==J,L@3N$G$J$$>l9g$K$O!"(B
foozy@708 1018 $BJL$JLdBj$,H/@8$7F@$^$9!#(B
foozy@708 1019 ``$B%W%m%0%i%`$N%/%i%C%7%e(B''$B$G%P%0$NM-L5$r3NG'$7$F$$$k>l9g!"(B
foozy@708 1020 $B%=%U%H%&%'%"$r%/%i%C%7%e$5$;$kA4A34X78$J$$%P%0$K$h$j!"(B
foozy@708 1021 $B8!:wBP>]$G$"$k%P%0$,J$$$1#$5$l$F$7$^$$!"(B
foozy@708 1022 $BN>J}$H$bF1$8$b$N$H$_$J$5$l$k$?$a$K!"(B
foozy@708 1023 \hgext{bisect} $B$,OG$o$5$l$F$7$^$$$^$9!#(B
foozy@708 1024
foozy@708 1025 \subsection{Bracket your search lazily}
foozy@708 1026
foozy@708 1027 $B8!:w$K$*$1$k=*C<$N0u$H$J$k(B
foozy@708 1028 ``good'' $B$*$h$S(B ``bad'' $B$J%A%'%s%8%;%C%H$N:G=i$NA*Br$O!"(B
foozy@708 1029 $BDL>o$O4JC1$J$3$H$G$9$,!"(B
foozy@708 1030 $B$=$&$G$"$C$F$bB?>/$O5DO@$NM>CO$,$"$j$^$9!#(B
foozy@708 1031 \hgext{bisect} $B$NN)>l$+$i8+$?>l9g!"(B
foozy@708 1032 ``$B:G?7(B''$B$N%A%'%s%8%;%C%H$ODLNc$G$O(B``bad''$B$G!"(B
foozy@708 1033 $B:G8E$N%A%'%s%8%;%C%H$O(B``good''$B$G$9!#(B
foozy@708 1034
foozy@708 1035 \hgext{bisect} $B$N;HMQ$KEv$?$C$F(B
foozy@708 1036 ``good''$B$K$U$5$o$7$$%A%'%s%8%;%C%H$,$I$l$+$r;W$$=P$9$N$,Fq$7$$>l9g$K$O!"(B
foozy@708 1037 $B$G$?$i$a$K%F%9%H$9$k$N$b0-$/$O$J$$$G$7$g$&!#(B
foozy@708 1038 $B$I$&$"$C$F$b%P%0$NC{8u$,8+=P$;$J$$(B
foozy@708 1039 $B!JNc$($P!"%P%0$NH/@8$K4XO"$9$k5!G=$,$^$@Ds6!$5$l$F$$$J$$!K$b$N$d!"(B
foozy@708 1040 $BB>$NLdBj$,!JA0=R$7$?$h$&$K!K%P%0$rJ$$$1#$7$F$7$^$&$h$&$J$b$N$r!"(B
foozy@708 1041 $B%F%9%H8uJd$N%A%'%s%8%;%C%H$+$i=|30$9$k$N$rK:$l$J$$$h$&$K$7$^$7$g$&!#(B
foozy@708 1042
foozy@708 1043 $B?t@i$N%A%'%s%8%;%C%H!"(B
foozy@708 1044 $B$J$$$7?t%v7n$NMzNr$N(B``$B=i4|(B''$B$N$b$N$,:G=*7k2L$@$C$?$H$7$F$b!"(B
foozy@708 1045 $BBP?t%*!<%@!<$N?6$kIq$$$N$*1"$G!"(B
foozy@708 1046 \hgext{bisect} $B$,<B;\$7$J$1$l$P$J$i$J$$Am2s?t$,?t2sA}$($k$@$1$G$9!#(B
foozy@708 1047
foozy@708 1048 %%% Local Variables:
foozy@708 1049 %%% mode: latex
foozy@708 1050 %%% TeX-master: "00book"
foozy@708 1051 %%% End: