hgbook

view ja/undo.tex @ 853:eed01b9ad3e6

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