hgbook

view ja/mq-collab.tex @ 984:cc81b4175833

some spelling mistakes corrected in fr/appA-svn.xml
author Frédéric Bouquet <youshe.jaalon@gmail.com>
date Wed Sep 09 15:12:25 2009 +0200 (2009-09-09)
parents
children
line source
1 \chapter{Advanced uses of Mercurial Queues}
2 \label{chap:mq-collab}
4 Mercurial Queues $B$NMQK!$r??$C@5D>$KOCBj$K$9$k$N$O4JC1$G$9$,!"(B
5 $B>/!9M^@)$r8z$+$;$F!"9~$_F~$C$?3+H/4D6-$G$N:n6H$KLrN)$D$h$&$J!"(B
6 $B$"$^$jMxMQ$5$l$J$$5!G=$r4v$D$+@bL@$7$h$&$H;W$$$^$9!#(B
8 $B$3$N>O$G$O!"(B
9 Linux $B%+!<%M%k8~$1$N(B Infiniband $B%G%P%$%9%I%i%$%P3+H/$K$*$$$F!"(B
10 $B4IM}$KMQ$$$F$$$?5;K!$r;HMQNc$H$7$F<h$j>e$2$^$9!#(B
11 $B$3$N%G%P%$%9%I%i%$%P$O(B
12 $B!J0lHL$N%G%P%$%9%I%i%$%PDxEY$K$O!KBg$-$/!"(B
13 35 $B$N%=!<%9%U%!%$%k$K$^$?$,$C$?(B 25,000 $B9T$+$i$J$C$F$*$j!"(B
14 $B>/?t$N3+H/%A!<%`$K$h$jJ]<i$5$l$F$$$^$9!#(B
16 $B$3$N>O$G07$C$F$$$kBP>]$O(B Linux $B$KFC2=$7$?$b$N$G$9$,!"(B
17 $B<+?H$,=jM-$7$F$$$J$$%3!<%I$r85$KB?$/$N3+H/$r9T$&I,MW$,$"$k6ILL$G!"(B
18 $BF1MM$NJ}?K$,E,MQ$G$-$k$G$7$g$&!#(B
20 \section{The problem of many targets}
22 Linux $B%+!<%M%k$OIQHK$KJQ99$5$l!"(B
23 $BFbItE*$K$O7h$7$F0BDj$7$F$$$^$;$s!#(B
24 $B3+H/<T$O%j%j!<%9$N4V$KEY!9;W$$@Z$C$?JQ99$r9T$$$^$9!#(B
25 $B$3$N$?$a!"(B
26 Linux $B%+!<%M%k$NFCDj$N%j%j!<%9HG$G5!G=$9$k%I%i%$%P!<$NHG$O!"(B
27 $B35$7$FB>$NHG$K$*$$$F$O(B\emph{$B%3%s%Q%$%k(B}$B$9$iDL$i$J$$>l9g$,$"$j$^$9!#(B
29 $B%I%i%$%P$NJ]<i$r9T$&$?$a$K$O!"(B
30 $B$$$/$D$+$N8DJL$N(B Linux $B$NHG$r0U<1$9$kI,MW$,$"$j$^$9!#(B
32 \begin{itemize}
33 \item $BBh0l$K$O!"%a%$%s$N(B Linux $B%+!<%M%k3+H/%D%j!<$G$9!#(B
34 $B$3$N>l9g$N%3!<%I$NJ]<i$O!"%+!<%M%k%3%_%e%K%F%#$NB>$N3+H/<T$H6&M-$5$l!"(B
35 $BH`$i$,%+!<%M%k$N%5%V%7%9%F%`$KBP$7$F9T$&$N$HF1DxEY$K!"(B
36 ``$B3+H/$7$J$,$i$N(B''$BJQ99$,9T$o$l$^$9!#(B
38 \item $B3+H/$7$F$$$k%I%i%$%P$rMxMQ$9$k$3$H$,$G$-$J$$8E$$(B
39 Linux $B%G%#%9%H%j%S%e!<%7%g%s$r;HMQ$7$F$$$k8\5R$NMWK>$K1~$($k$?$a$K!"(B
40 $B8E$$(B Linux $B%+!<%M%k$NHG$KBP$9$k4v$D$+$N(B``$B%P%C%/%]!<%H(B''$B$NJ]<i$bI,MW$G$9!#(B
41 $B!J%3!<%I$N(B\emph{$B%P%C%/%]!<%H(B}$B$K$O!"(B
42 $B$=$N%3!<%I$N3+H/BP>]$H$J$kHG$h$j$b8E$$HG$N4D6-$G2TF0$5$;$k$?$a$N!"(B
43 $B%3!<%I$N2~JQ$,I,MW$G$9!K(B
45 \item $B:G8e$K$J$j$^$9$,!"8\5R$NMxMQ$7$F$$$k%+!<%M%k$d%G%#%9%H%j%S%e!<%7%g%s$N!"(B
46 $BA4BN$KBP$9$k99?7$r6/$$$k$3$H$J$/?75,5!G=$rDs6!$9$k$?$a$K!"(B
47 $B%=%U%H%&%'%"$N%j%j!<%9%9%1%8%e!<%k$O!"(B
48 Linux $B%G%#%9%H%j%S%e!<%7%g%s$d%+!<%M%k3+H/<T$,MxMQ$7$F$$$k%+!<%M%k$H!"(B
49 $BI,$:$7$bB-JB$_$rB7$($k$o$1$G$O$"$j$^$;$s!#(B
51 \end{itemize}
53 \subsection{Tempting approaches that don't work well}
55 $BJ#?t$N0[$J$k4D6-$rBP>]$H$7$J$1$l$P$J$i$J$$0lO"$N%=%U%H%&%'%"$NJ]<i$K$O!"(B
56 $B#2$D$N(B``$BI8=`E*$J(B''$BJ}K!$,$"$j$^$9!#(B
58 $B#1$DL\$NJ}K!$O!"(B
59 $B$=$l$>$l$,C10l$N4D6-$rBP>]$H$9$kJ#?t$N%V%i%s%A$r4IM}$9$kJ}K!$G$9!#(B
60 $B$3$NJ}K!$NLdBjE@$O!"(B
61 $B%j%]%8%H%j4V$G$NJQ99$N1}Mh(B\footnote{$BLuCm(B: $B$$$o$f$k!V%^!<%8!W$N$3$H(B}$B$K$*$$$F!"(B
62 $BE4$N5,N'$G$b$C$FK>$`I,MW$,M-$k$3$H$G$9!#(B
63 $B?7$7$$5!G=$d%P%0$N=$@5$O(B``$B???7$7$$(B''$B%j%]%8%H%j$G;O$a$J$1$l$P$J$i$:!"(B
64 $B$=$N8e$GA4$F$N%P%C%/%]!<%HMQ%j%]%8%H%j$K?;F)$5$;$^$9!#(B
65 $B%P%C%/%]!<%H$G$NJQ99$O!"$=$NEAGE$,99$K%V%i%s%A8BDj$5$l$^$9!#(B
66 $B=jB030$N%V%i%s%A$KE,MQ$5$l$k$h$&$J%P%C%/%]!<%H8~$1$NJQ99$O!"(B
67 $B$*$=$i$/%I%i%$%P$N%3%s%Q%$%k$rK8$2$k$G$7$g$&!#(B
69 $B#2$DL\$NJ}K!$O!"(B
70 $B8D!9$N%3!<%IJR$NM-8z!?L58z$r!"(B
71 $B0U?^$9$kBP>]$K0MB8$7$F@Z$jBX$($k$?$a$N>r7oJ8$GKd$a$i$l$?!"(B
72 $BC10l$N%=!<%9%D%j!<$rJ]<i$9$kJ}K!$G$9!#(B
73 $B$3$l$i$N(B``ifdef''$B5-=R$O!"(B
74 Linux $B%+!<%M%k%D%j!<$G$O5v$5$l$F$$$J$$$N$G!"(B
75 $B$3$l$i$r<h$j=|$$$Fe:No$J%D%j!<$r@8@.$9$k$?$a$N!"(B
76 $B<jF0$J$$$7<+F0$N<j=g$,I,MW$G$9!#(B
77 $B$3$NN.57$GJ]<i$5$l$k%3!<%I%Y!<%9$OAa!9$K!"(B
78 $BM}2r$bJ]<i$b:$Fq$J>r7oJ,4t$N!VAM$NAc!W$H$J$k$G$7$g$&!#(B
80 $B$3$l$i$N$$$:$l$N<jK!$b!"(B
81 $B@5Ev$J%=!<%9%D%j!<$N%3%T!<$r(B``$B=jM-(B''$B$7$F$$$J$$>u67$K$OE,9g$7$^$;$s!#(B
82 $BI8=`%+!<%M%k$H6&$KG[I[$5$l$k(B Linux $B%I%i%$%P$N>l9g!"(B
83 Linus $B;a$N%=!<%9%D%j!<$O!"(B
84 $B@$3&Cf$,@5E}$H$_$J$9%3!<%I$N%3%T!<$+$i9=@.$5$l$^$9!#(B
85 $B>eN.%j%]%8%H%j$K$*$1$k(B``$B;d$N(B''$B%I%i%$%P$O!"(B
86 Linus $B;a$N%=!<%9%D%j!<>e$K2~JQFbMF$,H?1G$5$l$k$^$G$K$O!"(B
87 $BCN$i$J$$$&$A$K8+CN$i$L?M!9$K$h$C$F0[$J$kHG$K2~JQ$5$l$F$$$k$+$b$7$l$^$;$s!#(B
89 $B$3$l$i$N<jK!$O!"(B
90 $B>eN.%j%]%8%H%j$X$N%Q%C%A$NBN:[$r@0$($k$N$rFq$7$/$7$F$7$^$&!"(B
91 $B$H$$$&7gE@$b;}$C$F$$$^$9!#(B
93 Mercurial Queues $B$O!"(B
94 $B$3$l$^$G=R$Y$F$-$?>u67$G$N3+H/$r4IM}$9$k$?$a$N!"(B
95 $BNI$$8uJd$H8@$($^$9!#(B
96 $B$^$5$K$3$N$h$&$J>u67$K$*$$$F!"(B
97 MQ $B$O:n6H$r2wE,$K$9$k99$K4v$D$+$NIU2CE*5!G=$r;}$C$F$$$^$9!#(B
99 \section{$B%,!<%I$K$h$k>r7oIU$-%Q%C%AE,MQ(B}
101 $B$*$=$i$/!"(B
102 $BB?$/$NBP>]4D6-$KBP$9$k7rA4@-$rJ]<i$9$kJ}K!$O!"(B
103 $B=jDj$N>u67$4$H$KE,MQ$5$l$kFCDj$N%Q%C%A$rA*Br$G$-$k$3$H!"(B
104 $B$H8@$($k$G$7$g$&!#(B
105 MQ $B$O!"(B
106 $B>e5-$N5!G=$r;}$D(B``$B%,!<%I(B''$B!J(Bquilt $B$N(B \texttt{guards} $B%3%^%s%I$KM3Mh$7$^$9!K(B
107 $B$H8F$P$l$k5!G=$rDs6!$7$^$9!#(B
108 $B$^$:$O$8$a$K!"(B
109 $B<B83$N$?$a$N4JAG$J%j%]%8%H%j$r:n@.$7$^$7$g$&!#(B
111 \interaction{mq.guards.init}
113 $B$3$N<j=g$K$h$j!"(B
114 $B0[$J$k%U%!%$%k$rA`:n$9$k$N$G8_$$$K$O0MB8@-$NL5$$#2$D$N%Q%C%A$r;}$D!"(B
115 $B>.$5$J%j%]%8%H%j$,F@$i$l$^$9!#(B
117 $B>r7oIU$-E,MQ$N9M$(J}$O!"(B
118 $BG$0U$NC1=c$JJ8;zNs$+$i$J$k(B\emph{$B%,!<%I(B}$B$5$l$?(B``$B;%(B''
119 (tag)$B$r%Q%C%A$KIUM?$7$F$*$-!"(B
120 $B%Q%C%AE,MQ$N:]$K!";HMQ$9$Y$-FCDj$N%,!<%I$r(B MQ $B$KBP$7$F65$($k!"(B
121 $B$H$$$&$b$N$G$9!#(B
122 $B$"$i$+$8$aA*Br$7$F$*$$$?%,!<%I$K1~$8$F!"(B
123 MQ $B$O%,!<%I$5$l$?%Q%C%A$rE,MQ$9$k$+8+Aw$k$+$r7hDj$7$^$9!#(B
125 $B8D!9$N%Q%C%A$OG$0U$N?t$N%,!<%I$r;}$D$3$H$,$G$-!"(B
126 $B$=$l$>$l$N%,!<%I$O(B\emph{$B%]%8%F%#%V(B}
127 $B!J(B``$B%,!<%IA*Br;~$K%Q%C%A$rE,MQ$9$k>l9g(B''$B!K$+(B\emph{$B%M%,%F%#%V(B}
128 $B!J(B``$B%,!<%IA*Br;~$K%Q%C%AE,MQ$r8+Aw$k(B''$B!K$N$I$A$i$+$G$9!#(B
129 $B%,!<%I$r;}$?$J$$%Q%C%A$O>o$KE,MQ$5$l$^$9!#(B
131 \section{$B%Q%C%A$N%,!<%I$r@)8f$9$k(B}
133 \hgxcmd{mq}{qguard} $B%3%^%s%I$O!"(B
134 $B$I$N%,!<%I$r%Q%C%A$KE,MQ$9$k$+$r7hDj$9$k$+!"(B
135 $B$5$b$J$/$P8=;~E@$GM-8z$J%,!<%I$rI=<($7$^$9!#(B
136 $B0z?t$,L5$$>l9g!"8=:_$N:G>e0L%Q%C%A$N%,!<%I$rI=<($7$^$9!#(B
138 \interaction{mq.guards.qguard}
140 $B%Q%C%A$K%]%8%F%#%V$J%,!<%I$r@_Dj$9$k$K$O!"(B
141 $B%,!<%IL>$N@\F,<-$H$7$F(B ``\texttt{+}'' $B$rIUM?$7$^$9!#(B
143 \interaction{mq.guards.qguard.pos}
145 $B%Q%C%A$K%M%,%F%#%V$J%,!<%I$r@_Dj$9$k$K$O!"(B
146 $B%,!<%IL>$N@\F,<-$H$7$F(B ``\texttt{-}'' $B$rIUM?$7$^$9!#(B
148 \interaction{mq.guards.qguard.neg}
150 \begin{note}
151 \hgxcmd{mq}{qguard} $B%3%^%s%I$O!"%Q%C%A$K%,!<%I$r@_Dj$7$^$9$,!"(B
152 $B%Q%C%A$N%,!<%I@_Dj$r(B\emph{$BJQ99(B}$B$7$?$j$O$7$^$;$s!#(B
153 $B$D$^$j!"(B
154 $B%Q%C%A$K(B \hgcmdargs{qguard}{+a +b} $B$rE,MQ$7$?8e$K!"(B
155 $BF1$8%Q%C%A$K(B \hgcmdargs{qguard}{+c} $B$rE,MQ$7$?>l9g!"(B
156 $B$3$N%Q%C%A$K@_Dj$5$l$F$$$k%,!<%I$O(B \texttt{+c} \emph{$B$@$1(B}$B$H$J$j$^$9!#(B
157 \end{note}
159 Mercurial $B$O!"(B
160 $B2r<a!&<jF0JT=8$,6&$KMF0W$J7A<0$G!"(B
161 $B%,!<%I>pJs$r(B \sfilename{series} $B$K3JG<$7$^$9(B
162 $B!J8@$$49$($k$J$i!"(B
163 \hgxcmd{mq}{qguard} $B%3%^%s%I$rMxMQ$9$kI,MW$OL5$/!"(B
164 \sfilename{series} $B%U%!%$%k$rD>@\JT=8$7$F$b9=$$$^$;$s!K!#(B
166 \interaction{mq.guards.series}
168 \section{$B;HMQ$9$k%,!<%I$NA*Br(B}
170 \hgxcmd{mq}{qselect} $B%3%^%s%I$O!"M-8z$K$9$k%,!<%I$r7hDj$7$^$9!#(B
171 $B%,!<%I$,7hDj$9$k$3$H$G!"(B
172 $B<!$K(B \hgxcmd{mq}{qpush} $B$r<B9T$7$?:]$K(B MQ $B$,E,MQ$9$k%Q%C%A$,7hDj$5$l$^$9!#(B
173 $B$3$N%3%^%s%I$O$=$l0J30$NF/$-$r$7$^$;$s!#(B
174 $BFC$K!"4{$KE,MQ:Q$_$N%Q%C%A$KBP$7$F$O!"0l@Z2?$b9T$$$^$;$s!#(B
176 $B0z?t$,;XDj$5$l$J$$>l9g!"(B
177 \hgxcmd{mq}{qselect} $B%3%^%s%I$O!"(B
178 $B8=;~E@$GM-8z$K$J$C$F$$$k%,!<%I$r#19T$K#1$D$E$DI=<($7$^$9!#(B
179 $B8D!9$N0z?t$O!"E,MQ$5$l$k%,!<%I$NL>A0$H$_$J$5$l$^$9!#(B
181 \interaction{mq.guards.qselect.foo}
183 $B8=:_A*Br$5$l$F$$$k%,!<%I$N0lMw$,(B
184 \sfilename{guards} $B%U%!%$%k$K3JG<$5$l$F$$$^$9$N$G!"(B
185 $B6=L#$,$"$l$P8+$F$_$k$N$bNI$$$G$7$g$&!#(B
187 \interaction{mq.guards.qselect.cat}
189 \hgxcmd{mq}{qpush} $B$r<B9T$9$k$3$H$G!"(B
190 $B%,!<%IA*Br$N8z2L$r8+$k$3$H$,$G$-$^$9!#(B
192 \interaction{mq.guards.qselect.qpush}
195 ``\texttt{+}'' $B$J$$$7(B ``\texttt{-}''
196 $B$G;O$^$kL>A0$O%,!<%IL>$K$O$G$-$^$;$s!#(B
197 $B6uGrJ8;z$r4^$`$b$N$b%,!<%IL>$K$O$J$l$^$;$s$,!"(B
198 $B$=$l$$$,$$$NBgDq$NJ8;z$O;HMQ2DG=$G$9!#(B
199 $BIT@5$J%,!<%IL>$N;HMQ$O!"(BMQ $B$K$h$j7Y9p$5$l$^$9!#(B
201 \interaction{mq.guards.qselect.error}
203 $B%,!<%IA*Br$NJQ99$O!"E,MQ$5$l$k%Q%C%A$r@Z$jBX$($^$9!#(B
205 \interaction{mq.guards.qselect.quux}
207 $B%M%,%F%#%V$J%,!<%I$,%]%8%F%#%V$J%,!<%I$KM%@h$9$k$3$H$r!"(B
208 $B0J2<$NNc$G8+$k$3$H$,$G$-$^$9!#(B
210 \interaction{mq.guards.qselect.foobar}
212 \section{MQ $B$N%Q%C%AE,MQ%k!<%k(B}
214 $B%Q%C%AE,MQ$NM-L5$rH=Dj$9$k:]$K!"(BMQ $B$O0J2<$N%k!<%k$r;HMQ$7$^$9!#(B
216 \begin{itemize}
217 \item $B%,!<%IL5$7%Q%C%A$O>o$KE,MQ$5$l$^$9!#(B
219 \item $B8=:_A*Br$5$l$F$$$k%,!<%I$K%^%C%A$9$k%M%,%F%#%V%,!<%I$,$"$k>l9g!"(B
220 $B%Q%C%A$OE,MQ$5$l$^$;$s!#(B
222 \item $B8=:_A*Br$5$l$F$$$k%,!<%I$K%^%C%A$9$k%]%8%F%#%V%,!<%I$,$"$k>l9g!"(B
223 $B%Q%C%A$OE,MQ$5$l$^$9!#(B
225 \item $B8=:_A*Br$5$l$F$$$k%,!<%I$K%^%C%A$9$k%,!<%I$,2?$bL5$$>l9g!"(B
226 $B%Q%C%A$OE,MQ$5$l$^$;$s!#(B
228 \end{itemize}
230 \section{Trimming the work environment}
232 $B@h$K=R$Y$?(B
233 Linux $B%+!<%M%k8~$1$N(B Infiniband
234 $B%G%P%$%9%I%i%$%P3+H/$G$N%Q%C%AE,MQ$G$O!"(B
235 Linux $B%+!<%M%k$NDL>o$N%=!<%9%D%j!<$O;HMQ$7$^$;$s!#(B
236 $B$=$NBe$o$j!"(B
237 Infiniband $B%G%P%$%9%I%i%$%P3+H/$K4XO"$9$k%=!<%9!?(B
238 $B%X%C%@$N$_$r4^$`%j%]%8%H%j$r:n@.$7!"(B
239 $B$=$3$KBP$7$F%Q%C%A$rE,MQ$9$k$h$&$K$7$^$9!#(B
240 $B$3$N%j%]%8%H%j$N%5%$%:$O%+!<%M%k%j%]%8%H%j$N(B 1\% $B$K<}$^$k$?$a!"(B
241 $B:n6H$r9T$&$N$b4JC1$G$9!#(B
243 $B=L>.HG$N%j%]%8%H%j$r:n@.$7$?$J$i$P!"(B
244 $B%Q%C%A$N(B``$BE,MQBP>](B''$B$H$J$k%P!<%8%g%s$rA*Br$7$^$9(B\footnote{$BLuCm(B:
245 $B$3$3$G8@$&!V(Bchoose$B!W!JA*Br!K$O!"(B
246 \hgcmd{update} $B<B9T$r;X$9$N$G$O$J$$$+!)(B
247 $B$=$&$G$"$l$P!"<!J8$,!V$3$l$O!A%9%J%C%W%7%g%C%H$@!W$H$$$&$N$bM}2r$G$-$k!#(B}$B!#(B
248 XXXXXXXXXXXX
249 This is a snapshot of the Linux kernel tree as of a revision
250 of my choosing.
251 XXXXXXXXXXXX
252 $BE,MQBP>]$rA*Br$9$k:]$KI.<T$O!"(B
253 $BEv3:%j%S%8%g%s$N%+!<%M%k%j%]%8%H%j$K$*$1$k%A%'%s%8%;%C%H(BID$B$r!"(B
254 $B%3%_%C%H%a%C%;!<%8(B\footnote{$BLuCm(B: $B%Q%C%A$N!)(B XXXXXX}$BCf$K5-O?$7$F$*$-$^$9!#(B
255 $B%+!<%M%k%D%j!<Cf$N3+H/$K4XO"$9$kIt0L$K4X$7$F!"(B
256 $B%9%J%C%W%7%g%C%H$K$h$C$F(B``$B>u67(B''$B$HFbMF$,FCDj$G$-$k$?$a!"(B
257 $B=L>.HG%j%]%8%H%j$HDL>oHG$N%+!<%M%k%D%j!<$N$$$:$l$KBP$7$F$b!"(B
258 $B%Q%C%A$NE,MQ$,2DG=$K$J$j$^$9!#(BXXXXXX
259 Since the snapshot
260 preserves the ``shape'' and content of the relevant parts of the
261 kernel tree, I can apply my patches on top of either my tiny
262 repository or a normal kernel tree.
264 $BDL>o$O!"(B
265 $B%Q%C%A$NE,MQBP>]$H$J$k%=!<%9%D%j!<$N%Y!<%9$K$O!"(B
266 $B>eN.%j%]%8%H%j$ND>6a$N%9%J%C%W%7%g%C%H$r;HMQ$9$Y$-$G$9!#(B
267 $B$=$&$9$k$3$H$G!"(B
268 $B:n@.$7$?%Q%C%A$r>eN.%j%]%8%H%j$NC4Ev<T$XAwIU$9$k:]$K!"(B
269 $BKX$I!J$"$k$$$OA4$/!K2~JQ$NI,MW$,L5$/$J$k$G$7$g$&!#(B
271 \section{Dividing up the \sfilename{series} file}
273 $BI.<T$O!"(B\sfilename{series} $B$KNs5s$5$l$k%Q%C%A$r!"(B
274 $B4v$D$+$NO@M}E*$J$^$H$^$j$KJ,N`$7$F$$$^$9!#(B
275 $B$=$l$>$l$N%Q%C%AJ,N`$O!"(B
276 $B$=$N8e$KNs5s$5$l$k%Q%C%A$N0U?^$r5-=R$7$?%3%a%s%H%V%m%C%/$G3+;O$5$l$^$9!#(B
278 $BI.<T$N07$C$F$$$k%Q%C%AJ,N`$O!"0J2<$N$h$&$JJB$S$K$J$C$F$$$^$9!#(B
279 $BJ,N`$N=g=x$O=EMW$J$N$G!"J,N`$r>R2p$7$?8e$G@bL@$7$^$9!#(B
281 \begin{itemize}
282 \item ``$B<uM}:Q$_(B(accepted)''$BJ,N`(B:
283 $B3+H/%A!<%`$,(B Infiniband $B%5%V%7%9%F%`$NJ]<iC4Ev$KAwIU$7$F!"(B
284 $B4{$K<uM}$O$5$l$F$$$k$b$N$N!"(B
285 $B=L>.HG%j%]%8%H%j$,85$K$7$F$$$k%9%J%C%W%7%g%C%H$K$O!"(B
286 $B$^$@H?1G$5$l$F$$$J$$%Q%C%A$NJ,N`$G$9!#(B
287 $B$3$l$i$O!"(B
288 $B>eN.%j%]%8%H%j$NJ]<iC4Ev$N%j%]%8%H%j$HF1$8>uBV$rF@$k$?$a$K!"(B
289 $B%=!<%9%D%j!<$rJQ49$9$k(B``$BFI$_=P$78BDj(B''$B%Q%C%A$G$9!#(B
291 \item ``$B:F:n6H(B(rework)''$BJ,N`(B:
292 $B>eN.%j%]%8%H%j$NJ]<iC4Ev$KAwIU$7$?$b$N$N!"(B
293 $B<uM}$KEv$?$C$FJQ99$rMW5a$5$l$?%Q%C%A$NJ,N`!#(B
295 \item ``$BJ]N1(B(pending)''$BJ,N`(B:
296 $B>eN.%j%]%8%H%j$NJ]<iC4Ev$KAwIU$3$=$7$F$$$J$$$b$N$N!"(B
297 $B4{$K:n6H$r=*$($?%Q%C%A$NJ,N`!#(B
298 $B$7$P$i$/$N4V$O(B``$BFI$_=P$78BDj(B''$B$H$7$F07$o$l$^$9!#(B
299 $B>eN.%j%]%8%H%j$NJ]<iC4Ev$K$h$j<uM}$5$l$l$P!"(B
300 $B$3$N%Q%C%A$r(B``$B<uM}:Q$_(B''$BJ,N`$NKvHx$X$H0\F0$7$^$9!#(B
301 $B<uM}$KEv$?$C$FJQ99$,MW5a$5$l$?>l9g!"(B
302 ``$B:F:n6H(B''$BJ,N`$N@hF,$X$H0\F0$7$^$9!#(B
304 \item ``$B:n6HCf(B(in progress)''$BJ,N`(B:
305 $BL\2<$N$H$3$m3hH/$K:n6H$,9T$o$l$F$$$k%Q%C%A$NJ,N`!#(B
306 $B$3$NJ,N`$N%Q%C%A$O!"30It$K8x3+$9$Y$-$G$O$"$j$^$;$s!#(B
308 \item ``$B%P%C%/%]!<%H(B(backport)''$BJ,N`(B:
309 $B8E$$HG$N%+!<%M%k$N%=!<%9%D%j!<$KE,9g$5$;$k$?$a$N%Q%C%A$NJ,N`!#(B
311 \item ``$BFbItMQ(B(do not ship)''$BJ,N`(B:
312 $B2?$i$+$NM}M3$K$h$j!">eN.%j%]%8%H%j$NJ]<iC4Ev$X$OAwIU$5$l$J$$%Q%C%A$NJ,N`!#(B
313 $B$3$N$h$&$J%Q%C%A$NNc$H$7$F$O!"(B
314 $B%I%i%$%P<1JLMQ$NKd$a9~$_J8;zNs$NJQ99$r9T$&$3$H$G!"(B
315 $B%=!<%9%D%j!<$N$b$N$H$O0[$J$k%I%i%$%P<BAu$NHG(B
316 \footnote{$BLuCm(B: $B3+H/Cf$N%I%i%$%P$N$3$H!)(B}$B$H!"(B
317 $B%G%#%9%H%j%S%e!<%7%g%s%Y%s%@$K$h$C$FG[I[$5$l$k%I%i%$%P<BAu$NHG$N4V$G!"(B
318 $BF0:n3NG'Ey$K$*$1$k6hJL$rMF0W$K$9$k%Q%C%A$,$"$j$^$9!#(B
320 \end{itemize}
322 $B$G$O$3$3$G!"%Q%C%AJ,N`Hx$r$3$N=gHV$K$9$kM}M3$KLa$j$^$7$g$&!#(B
323 $B%3%s%F%-%9%H$NJQ99$,H/@8$9$k$3$H$G!"(B
324 $B%9%?%C%/>eJ}$N%Q%C%A$X$N:F:n6H(B
325 \footnote{$BLuCm(B: \hgxcmd{mq}{qrefresh} $B$N<B9T$K$h$k%Q%C%A$N=$@5$N$3$H(B}
326 $B$,I,MW$K$J$k$3$H$,L5$$$h$&$K!"(B
327 $B%9%?%C%/Cf$GDl$K$"$k%Q%C%A$[$I0BDj$7$F$$$FM_$7$$$b$N$G$9!#(B
328 $BJQ99$5$l$K$/$$%Q%C%A72$r(B
329 \sfilename{series} $B%U%!%$%k$NKAF,$KCV$/$3$H$G!"(B
330 $B$3$NL\E*$rC#@.$9$k$3$H$,$G$-$^$9!#(B
332 $BB>$N%Q%C%A$NE,MQ$r6KNO>eN.%j%]%8%H%j$N>uBV$K6a$$%=!<%9%D%j!<$X9T$&$?$a$K!"(B
333 $B%=!<%9%D%j!<$NJQ49$KI,MW$H;W$o$l$k%Q%C%A$b=EMW$G$9!#(B
334 $B<uM}:Q$_$N%Q%C%A$b;C$/$N4VJ];}$7$F$$$k$N$O$=$N$?$a$G$9!#(B
336 ``$B%P%C%/%]!<%H(B''$B$*$h$S(B``$BFbItMQ(B''$B%Q%C%A$O!"(B
337 \sfilename{series} $BKvHx6aJU$rE>!9$H$7$^$9!#(B
338 $B%P%C%/%]!<%H%Q%C%A$OB>$NA4$F$N%Q%C%AE,MQ$N>e$GE,MQ$5$l$J$1$l$P$J$j$^$;$s$7!"(B
339 $B$=$N>e!"(B
340 ``$BFbItMQ(B''$B%Q%C%A$OITET9g$,L5$$$h$&$KFbIt$KN1$^$jB3$1$kI,MW$,$"$j$^$9!#(B
342 \section{Maintaining the patch series}
344 $BI.<T$N:n6H$N:]$K$O!"(B
345 $B%Q%C%AE,MQ$r@)8f$9$k$?$a$KJ#?t$N%,!<%I$r;HMQ$7$F$$$^$9!#(B
347 \begin{itemize}
348 \item ``$B<uM}:Q$_(B''$B%Q%C%A$K$O!"(B\texttt{accepted} $B%,!<%I$,IUM?$5$l$^$9!#(B
349 $B$3$N%,!<%I$OKX$I$N>l9g$KM-8z$H$5$l$^$9!#(B
350 $B4{$K%Q%C%A$,E,MQ$5$l$F$$$k%=!<%9%D%j!<$K%Q%C%A$rE,MQ$9$k:]$K$O!"(B
351 $B%Q%C%A$rE,MQ$5$;$J$$$h$&$K$9$k$3$H$,(B
352 \footnote{$BLuCm(B: \texttt{accepted} $B%,!<%IIU$-%Q%C%A$rL58z$K$9$k$3$H$G(B}
353 $B$G$-$k$N$G!"(B
354 $B8eB3$N%Q%C%A72$Oe:No$KE,MQ$5$l$^$9!#(B
356 \item $B:n6H$O(B``$B40N;(B''$B$7$F$$$k$b$N$N!"(B
357 $B>eN.%j%]%8%H%j$NJ]<iC4Ev$KAwIU$5$l$F$$$J$$%Q%C%A(B
358 \footnote{$BLuCm(B: $B@h$NJ,N`$G8@$&$H$3$m$N(B``$BJ]N1(B(pending)''}$B$K$O!"(B
359 $B2?$b%,!<%I$,IUM?$5$l$^$;$s!#(B
360 $B>eN.%j%]%8%H%j$N%3%T!<$KBP$7$F%Q%C%A%9%?%C%/$rE,MQ$9$k>l9g!"(B
361 $BFC$K2?$b%,!<%I$r;XDj$7$J$/$F$b!"(B
362 $BE,EY$K0BA4$J%=!<%9%D%j!<$rF@$k$3$H$,$G$-$^$9!#(B
364 \item $B>eN.%j%]%8%H%j$NJ]<iC4Ev$X$N!J:F!KAwIU$KEv$?$C$F!"(B
365 $B:F:n6H$,I,MW$J%Q%C%A$K$O(B \texttt{rework} $B%,!<%I$,IUM?$5$l$^$9!#(B
367 \item $BL\2<3+H/:n6HCf$K$"$k%Q%C%A(B
368 \footnote{$BLuCm(B: $B@h$NJ,N`$G8@$&$H$3$m$N(B``$B:n6HCf(B(in progress)''}$B$K$O!"(B
369 \texttt{devel} $B%,!<%I$,IUM?$5$l$^$9!#(B
371 \item $B%P%C%/%]!<%H%Q%C%A$K$O!"(B
372 $BE,MQBP>]%+!<%M%k$N%P!<%8%g%s$r;XDj$9$kJ#?t$N%,!<%I$,IUM?$5$l$^$9!#(B
373 $BNc$($P!"(B~2.6.9 $BHG$X$N%P%C%/%]!<%H$r9T$&%Q%C%A$K$O!"(B
374 \texttt{2.6.9} $B%,!<%I$,IUM?$5$l$^$9!#(B
376 \end{itemize}
378 $B$3$l$i$N%,!<%IJ,N`$K$h$j!"(B
379 $B:G=*E*$K$I$N$h$&$J%=!<%9%D%j!<$,F@$i$l$k$+$r7hDj$9$k:]$K!"(B
380 $B>/$J$+$i$L=@Fp@-$rF@$k$3$H$,$G$-$^$9!#(B
381 $BB?$/$N>l9g!"(B
382 $BE,@Z$J%,!<%I$NA*Br$O9=C[<j=g$NCf$G<+F02=$5$l$F$$$^$9$,!"(B
383 $BFCJL$J>u678~$1$K%,!<%I$ND4@0$r<jF0$G9T$&$3$H$b2DG=$G$9!#(B
385 \subsection{The art of writing backport patches}
387 MQ $B$r;HMQ$9$k$3$H$G!"(B
388 $B%P%C%/%]!<%H%Q%C%A$N:n@.$OC1=c$J:n6H$H$J$j$^$9!#(B
389 $B5lHG$N%+!<%M%kG[2<$K$*$$$F$b%I%i%$%P$,@5>o$K2TF0$9$k$h$&$K!"(B
390 $B5lHG$N%+!<%M%k$K$*$$$FDs6!$5$l$F$$$J$$5!G=$r;HMQ$9$k%3!<%I$NJQ99$,!"(B
391 $B%P%C%/%]!<%H%Q%C%A$N$9$Y$-$3$H$NA4$F$G$9!#(B
393 $BNI$$%P%C%/%]!<%H%Q%C%A$r=q$/:]$N%4!<%k$O!"(B
394 $BBP>]$H$9$k5lHG%+!<%M%k8~$1$K=q$$$?$+$N$h$&$K!"(B
395 $B$"$J$?$N%3!<%I$rJQ99$9$k$h$&$J%Q%C%A$K$9$k$3$H$G$9!#(B
396 $B%Q%C%A$,$G$7$c$P$i$J$$Dx!"M}2r$HJ]<i$,MF0W$K$J$j$^$9!#(B
397 $B%3!<%ICf$NBgNL$N(B \texttt{\#ifdef}$B!J>r7o$K1~$8$FE,MQ$5$l$k%3!<%IJR!K(B
398 $B$K$h$k(B``$BAM$NAc(B''$B2=$rHr$1$k$?$a$K%P%C%/%]!<%H%Q%C%A72$r=q$/$N$G$"$l$P!"(B
399 $B%P!<%8%g%s0MB8$J(B \texttt{\#ifdef} $B$r%Q%C%A$K;}$A9~$`$Y$-$G$O$"$j$^$;$s!#(B
400 $B%P!<%8%g%s0MB8$J(B \texttt{\#ifdef} $B$r;HMQ$9$kBX$o$j$K!"(B
401 $B8D!9$N%Q%C%A$O%P!<%8%g%s$K0MB8$7$J$$JQ99$r9T$&$h$&$K$7$F!"(B
402 $B%Q%C%A$NE,MQ$r%,!<%I$K$h$C$F@)8f$9$Y$-$G$9!#(B
404 ``$BDL>o(B''$B$N%Q%C%A$H!"(B
405 $B$=$NE,MQ7k2L$r99$KJQ99$9$k%P%C%/%]!<%H%Q%C%A$H$r!"(B
406 $BJL8D$N%0%k!<%W$KJ,N%$9$k$N$K$O#2$D$NM}M3$,$"$j$^$9!#(B
407 $BBh#1$NM}M3$O!"(B
408 $B$3$l$i$N%Q%C%A$,:.$6$j9g$C$?>l9g$K!"(B
409 $B>eN.%j%]%8%H%j$NJ]<iC4Ev$X$N%Q%C%AAwIU$N<+F02=$N:]$K!"(B
410 \hgext{patchbomb} $B3HD%$N$h$&$J%D!<%k$r;H$&$3$H$,Fq$7$/$J$k$?$a$G$9!#(B
411 $BBh#2$NM}M3$O!"(B
412 $B8eB3$NDL>o%Q%C%A$NE,MQ%3%s%F%-%9%H(B
413 \footnote{$BLuCm(B: \command{patch} $B%U%!%$%k$K$*$1$k!V%3%s%F%-%9%H!W(B}
414 $B$r%P%C%/%]!<%H%Q%C%A$,:.Mp$5$;$F$7$^$$!"(B
415 $BDL>o%Q%C%A$NE,MQA0$KE,MQ$5$l$?%P%C%/%]!<%H%Q%C%A(B\emph{$BH4$-(B}$B$G$O!"(B
416 $BDL>o%Q%C%A$re:No$KE,MQ$9$k$3$H$,$G$-$J$/$J$C$F$7$^$&$?$a$G$9!#(B
418 \section{Useful tips for developing with MQ}
420 \subsection{Organising patches in directories}
422 MQ $B$rMxMQ$7$?<B:_$9$k%W%m%8%'%/%H$G:n6H$r$7$F$$$k$N$G$"$l$P!"(B
423 $BB?$/$N%Q%C%A$rC_@Q$9$k$3$H$bFq$7$$$3$H$G$O$"$j$^$;$s!#(B
424 $BNc$($P!"I.<T$O(B 250 $B$rD6$($k%Q%C%A$rJz$($?%Q%C%A%j%]%8%H%j$r;}$C$F$$$^$9!#(B
426 $B%Q%C%A$r8DJL$NO@M}E*$J$^$H$^$j$KJ,N`$G$-$k$N$G$"$l$P!"(B
427 MQ $B$O%Q%C%AL>$K%Q%96h@Z$j$,4^$^$l$F$$$F$bLdBj$J$$$N$G!"(B
428 $B$=$l$>$l$N%Q%C%A$r0[$J$k%G%#%l%/%H%j$K3JG<$9$k$3$H$b$G$-$^$9(B
429 \footnote{$BLuCm(B: MQ $B$O%Q%C%AFbMF$NJ]B8@h$H$7$F!"(B
430 $B%Q%C%AL>$HF1L>$N%U%!%$%k$r:n@.$9$k$?$a!"(B
431 $B%Q%C%AL>$K%Q%96h@Z$j$,4^$^$l$k>l9g!"(B
432 MQ $B$O<+F0E*$K%5%V%G%#%l%/%H%j$r:n@.$7$^$9(B}$B!#(B
434 \subsection{Viewing the history of a patch}
435 \label{mq-collab:tips:interdiff}
437 $BD94|4V$K$o$?$C$F%Q%C%A$N3+H/$r9T$&>l9g!"(B
438 \ref{sec:mq:repo} $B@a$G=R$Y$?$h$&$K!"(B
439 $B%Q%C%A$r%j%]%8%H%j$G4IM}$9$k$N$,NI$$$G$7$g$&!#(B
440 $B$=$N>l9g$OAa!9$K!"(B
441 $B%Q%C%A$NJQ99MzNr$N;2>H$K(B
442 \hgcmd{diff} $B$,;H$($J$$$3$H$K5$IU$/$3$H$G$7$g$&!#(B
443 $B$3$l$O<B:]$N%3!<%I$NFs<!GI@8J*(B($B:9J,$N:9J,(B)$B$r8+$F$$$k$3$H0J30$K$b!"(B
444 $B%?%$%`%9%?%s%W$d%Q%C%A99?7;~$N%G%#%l%/%H%jL>Ey$r2~JQ$9$k$3$H$G(B
445 MQ $B$,;(2;$r2C$($F$7$^$C$F$$$k$3$H$K860x$,$"$j$^$9!#(B
447 Mercurial $B$KF1:-$5$l$F$$$k(B \hgext{extdiff} $B3HD%$r;H$&$3$H$G!"(B
448 $B#2$D$NHG$N%Q%C%A:9J,$r4vJ,FI$_$d$9$$$b$N$K$9$k$3$H$,$G$-$^$9!#(B
449 $B$3$N3HD%$r;H$&$?$a$K$O!"(B
450 $B%5!<%I%Q!<%F%#!<%Q%C%1!<%8$G$"$k(B
451 \package{patchutils}~\cite{web:patchutils} $B$,I,MW$G$9!#(B
452 $B$3$N%Q%C%1!<%8$,Ds6!$9$k(B \command{interdiff} $B$H$$$&%3%^%s%I$O!"(B
453 $B:9J,4V$N:9J,$r#1$D$N:9J,$H$7$FI=<($7$^$9!#(B
454 $BF1$8:9J,$N#2$D$NHG(B
455 \footnote{$BLuCm(B: $B!VF1$8%Q%C%A$N0[$J$kHG!W$N0U$+!)(B}
456 $B$KBP$7$F$3$N%3%^%s%I$rE,MQ$9$k$H!"(B
457 $B:G=i$NHG$+$i<!$NHG$X$HJQ99$9$k$?$a$N:9J,$r@8@.$7$^$9!#(B
459 $B$$$D$b$N$h$&$K!"(B
460 \hgrc $B%U%!%$%k$N(B \rcsection{extensions}
461 $B%;%/%7%g%s$K9T$rDI2C$9$k$3$H$G!"(B
462 \hgext{extdiff} $B3HD%$rM-8z2=$9$k$3$H$,$G$-$^$9!#(B
464 \begin{codesample2}
465 [extensions]
466 extdiff =
467 \end{codesample2}
469 \command{interdiff} $B%3%^%s%I$O#2$D$N%U%!%$%kL>$N;XDj$,I,MW$G$9$,!"(B
470 \hgext{extdiff} $B3HD%$O!"(B
471 $B$=$l$>$lG$0U$N?t$N%U%!%$%k$rG[2<$K;}$D!"(B
472 $B#2$D$N%G%#%l%/%H%j$KBP$7$FF0:n$9$k%W%m%0%i%`$N;XDj$,I,MW$G$9!#(B
473 $B$=$N$?$a!"(B
474 $B$3$l$i#2$D$N%G%#%l%/%H%jG[2<$N8D!9$N%U%!%$%kBP$KBP$7$F(B
475 \command{interdiff} $B$r<B9T$9$k>.$5$J%W%m%0%i%`$,I,MW$G$9!#(B
476 $BK\=q$N%=!<%9%3!<%I%j%]%8%H%j$K$*$1$k(B
477 \dirname{examples} $B%G%#%l%/%H%jG[2<$K!"(B
478 \sfilename{hg-interdiff} $B$H$7$F3JG<$5$l$F$$$^$9!#(B
480 \excode{hg-interdiff}
482 \sfilename{hg-interdiff} $B$,%7%'%k$N%3%^%s%I8!:w%Q%9>e$KM-$k>l9g!"(B
483 MQ $B$N%Q%C%A%G%#%l%/%H%j$+$i0J2<$N$h$&$K$7$F5/F0$9$k$3$H$,$G$-$^$9!#(B
485 \begin{codesample2}
486 hg extdiff -p hg-interdiff -r A:B my-change.patch
487 \end{codesample2}
489 $B$*$=$i$/$3$ND9$?$i$7$$%3%^%s%I$r2?EY$b;H$&$3$H$K$J$k$G$7$g$&$+$i!"(B
490 $B:FEY(B \hgrc $B$rJT=8$7$F!"(B
491 \hgext{hgext} $B$r(B Mercurial $B$NIaDL$N%3%^%s%IJB$K;H$($k$h$&$K$7$^$7$g$&!#(B
493 \begin{codesample2}
494 [extdiff]
495 cmd.interdiff = hg-interdiff
496 \end{codesample2}
498 $B$3$N5-=R$K$h$j(B \texttt{interdiff} $B$,(B
499 \hgext{hgext} $B$+$iMxMQ$G$-$k$h$&$K$J$j$^$9$N$G!"(B
500 $B@h$N(B \hgxcmd{extdiff}{extdiff} $B5/F0$bC;$/$J$C$F4vJ,;H$$$d$9$/$J$k$G$7$g$&!#(B
502 \begin{codesample2}
503 hg interdiff -r A:B my-change.patch
504 \end{codesample2}
506 \begin{note}
507 \command{interdiff} $B%3%^%s%I$O!"(B
508 $B>l9g$@$1@5$7$/5!G=$7$^$9!#(B
509 The \command{interdiff} command works well only if the underlying
510 files against which versions of a patch are generated remain the
511 same.
512 $B%Q%C%A$N@8@.!&%U%!%$%k$NJQ99$*$h$S%Q%C%A$N99?7$r9T$C$?>l9g!"(B
513 \command{interdiff} $B$OM-MQ$J=PNO$r@8@.$7$J$$$3$H$,$"$j$^$9!#(B
514 \end{note}
516 \hgext{extdiff} $B3HD%$O!"(B
517 MQ $B%Q%C%A$NI=<(5!G=$N8~>e$KN1$^$i$J$$M-MQ$J$b$N$G$9!#(B
518 \hgext{extdiff} $B3HD%$K4X$9$k>\:Y$O!"(B
519 \ref{sec:hgext:extdiff} $B@a$r;2>H$7$F$/$@$5$$!#(B
521 %%% Local Variables:
522 %%% mode: latex
523 %%% TeX-master: "00book"
524 %%% End: