
foozy@708: \chapter{Adding functionality with extensions}
foozy@708: \label{chap:hgext}
foozy@708: 
foozy@708: Mercurial $B$O5!G=@-$N8+CO$+$i8+$?>l9g$K$O?=$7J,L5$$0lJ}$G!"(B
foozy@708: $BJQ$j<o$N5!G=72$O8N0U$K=|30$5$l$F$$$^$9!#(B
foozy@708: $B4J7i$5$rJ]$D8/$jJ}$O!"(B
foozy@708: $BJ]<iC4Ev$HMxMQ<T$NN>J}$KBP$7$F%=%U%H%&%'%"$N07$$$d$9$5$r0];}$7$^$9!#(B
foozy@708: 
foozy@708: $B$7$+$7(B Mercurial $B$O!"(B
foozy@708: $BMxMQ<T$r<];RDj5,$J%3%^%s%I72$NB~Cf$KMxMQ<T$rJD$89~$a$k$h$&$J$3$H$O$7$^$;$s!#(B
foozy@708: \emph{$B%$%/%9%F%s%7%g%s(B}
foozy@708: $B!J$3$N<o$N$b$N$O(B\emph{$B%W%i%0%$%s(B}$B$H8F$P$l$k$3$H$b$"$j$^$9!K(B
foozy@708: $B$H$7$F5!G=$rDI2C$9$k$3$H$,$G$-$k$N$G$9!#(B
foozy@708: $B4v$D$+$N%$%/%9%F%s%7%g%s$K$D$$$F$O!"(B
foozy@708: $B4{$KA0$N>O$GOCBj$K$7$F$$$^$9!#(B
foozy@708: 
foozy@708: \begin{itemize}
foozy@708: \item \ref{sec:tour-merge:fetch}~$B@a$G$O(B
foozy@708:   \hgext{fetch} $B%$%/%9%F%s%7%g%s$r<h$j>e$2$F$$$^$9!#(B
foozy@708:   $B$3$N%$%/%9%F%s%7%g%s$O!"?7$?$JJQ99$N<hF@$H<j85$NJQ99$X$N%^!<%8$r!"(B
foozy@708:   $BC10l$N%3%^%s%I(B \hgxcmd{fetch}{fetch} $B$G<B;\$7$^$9!#(B
foozy@708: 
foozy@708: \item \hgext{bisect} $B$O!"(B
foozy@708:   $B%P%0$N860x$H$J$kJQ99$r8zN(E*$K8!:w$9$k%$%/%9%F%s%7%g%s$G!"(B
foozy@708:   \ref{sec:undo:bisect}~$B@a$G<h$j>e$2$^$7$?!#(B
foozy@708: 
foozy@708: \item \ref{chap:hook}~$B>O$G$O!"(B
foozy@708:   $B%U%C%/$K4XO"$7$?M-MQ$J5!G=$r;}$D%$%/%9%F%s%7%g%s$r<h$j>e$2$^$7$?!#(B
foozy@708:   \hgext{acl} $B$O%"%/%;%9%3%s%H%m!<%k%j%9%H$N5!G=$r!"(B
foozy@708:   \hgext{bugzilla} $B$O(B Bugzilla $B%P%0DI@W%7%9%F%`$H$NE}9g$r!"(B
foozy@708:   \hgext{notify} $B$OJQ99DI2C;~$K$*$1$kEE;R%a!<%kDLCN$N5!G=$r!"(B
foozy@708:   Mercurial $B$KDI2C$7$^$9!#(B
foozy@708: 
foozy@708: \item Mercurial Queues $B%Q%C%A4IM}%$%/%9%F%s%7%g%s$O!"(B
foozy@708:   $B#2$D$N>O$H#1$D$N(B appendix $B$r4]!9Hq$d$9$KCM$9$k2ACM$r;}$C$F$$$^$9!#(B
foozy@708:   \ref{chap:mq}~$B>O$O4pK\$r!"(B
foozy@708:   \ref{chap:mq-collab}~$B>O$O$h$j?J$s$@OCBj$r!"(B
foozy@708:   $B$=$7$F(B appendix~\ref{chap:mqref} $B$O3F%3%^%s%I$N>\:Y$r<h$j>e$2$F$$$^$9!#(B
foozy@708: 
foozy@708: \end{itemize}
foozy@708: 
foozy@708: $BK\>O$G$O!"(B
foozy@708: $B>e5-0J30$N(B Mercurial $B$GMxMQ2DG=$J4v$D$+$N%$%/%9%F%s%7%g%s$K$D$$$F<h$j>e$2!"(B
foozy@708: $B$=$N>e$G!"(B
foozy@708: $B<+J,$G%$%/%9%F%s%7%g%s$r<BAu$9$k:]$KI,MW$H;W$o$l$k;EAH$_$K$D$$$F!"(B
foozy@708: $B4JC1$K?($l$h$&$H;W$$$^$9!#(B
foozy@708: 
foozy@708: \begin{itemize}
foozy@708: \item \ref{sec:hgext:inotify}~$B@a$G$O!"(B
foozy@708:   \hgext{inotify} 
foozy@708:   $B%$%/%9%F%s%7%g%s$K$h$k(B\emph{$B@dBg$J(B}$B@-G=2~A1$N2DG=@-$K$D$$$F<h$j>e$2$^$9!#(B
foozy@708: 
foozy@708: \end{itemize}
foozy@708: 
foozy@708: \section{Improve performance with the \hgext{inotify} extension}
foozy@708: \label{sec:hgext:inotify}
foozy@708: 
foozy@708: $B0lHLE*$J(B Mercurial $B$NA`:n$,(B 100 $BG\B.$/$J$k$3$H$K6=L#$,$"$k$N$G$7$?$i!"(B
foozy@708: $B$<$R$3$N@a$rFI$s$G$/$@$5$$!#(B
foozy@708: 
foozy@708: Mercurial $B$ODL>o$N4D6-$G$"$C$F$b9b$$@-G=$G$rH/4x$7$^$9!#(B
foozy@708: XXXX $BH]Dj$N@\B3$NH&(B XXXX
foozy@708: $BNc$($P(B \hgcmd{status} $B%3%^%s%I$N<B9T$N:]$K$O!"(B
foozy@708: $B%U%!%$%k$N>uBV$rI=<($9$k$?$a$K!"(B
foozy@708: $B%j%]%8%H%jG[2<$NKX$IA4$F$N%G%#%l%/%H%j$H%U%!%$%k$KBP$9$kAv::$,I,MW$G$9!#(B
foozy@708: $BB>$NB?$/$N(B Mercurial $B%3%^%s%I$b!"(B
foozy@708: $BIqBfN"$G$OF1MM$N:n6H$rI,MW$H$7$F$$$^$9!#(B
foozy@708: $BNc$($P(B \hgcmd{diff} $B%3%^%s%I$O!"(B
foozy@708: $B>uBVHf3S5!9=(B\footnote{$BLuCm(B: \ref{sec:concepts:dirstate}~$B@a;2>H(B
foozy@708: }$B$rMQ$$$k$3$H$G!"(B
foozy@708: $BL@$i$+$KJQ99$5$l$F$$$J$$%U%!%$%k$KBP$7$F!"(B
foozy@708: $B<B9T%3%9%H$N9b$$Hf3S=hM}$,<B;\$5$l$k$3$H$r2sHr$7$F$$$^$9!#(B
foozy@708: 
foozy@708: $B%U%!%$%k>uBV$N<hF@$O@-G=3NJ]>e=EMW$J$3$H$J$N$G!"(B
foozy@708: Mercurial $B$N3+H/<TC#$O!"(B
foozy@708: $B%.%j%.%j$N$H$3$m$^$G$3$NItJ,$N<BAu$r:GE,2=$7$F$-$^$7$?!#(B
foozy@708: $B$7$+$7(B \hgcmd{status} $B<B9T$N:]$K$O!"(B
foozy@708: $BA02s$N3NG'0J9_$NJQ99$NM-L5$rCN$k$?$a$K!"(B
foozy@708: $B%3%9%H$N9b$$%7%9%F%`%3!<%k$r!"(B
foozy@708: Mercurial $B$N4IM}2<$K$"$k%U%!%$%kKh$K:GDc#12sH/9T$9$kI,MW$,$"$k!"(B
foozy@708: $B$H$$$&;v<B$O2sHr$7$h$&$,$"$j$^$;$s!#(B
foozy@708: $B0lDj0J>e$NBg$-$5$N%j%]%8%H%j$G$O!"(B
foozy@708: $B$3$N=hM}$K$OD9$$;~4V$,$+$+$j$^$9!#(B
foozy@708: 
foozy@708: $B1F6A$NBg$-$5$r?tCM2=$9$Y$/!"(B
foozy@708: 150,000 $B$N%U%!%$%k$r4IM}$9$k%j%]%8%H%j$G<B83$r9T$C$?7k2L!"(B
foozy@708: $B$$$:$l$N%U%!%$%k$bJQ99(B\emph{$B$5$l$F$$$J$$(B}$B>l9g$G$"$C$F$b!"(B
foozy@708: \hgcmd{status} $B$N<B9T$K$O#1#0IC$rMW$7$^$9!#(B
foozy@708: 
foozy@708: $BB?$/$N6aBeE*(B OS $B$O!"%U%!%$%k99?7$NDLCN5!9=$rHw$($F$$$^$9!#(B
foozy@708: $BE,@Z$J%5!<%S%9$K%W%m%0%i%`$rEPO?$7$F$*$/$3$H$G!"(B
foozy@708: $BBP>]$H$J$k%U%!%$%k$K4X$9$k@8@.!&JQ99!&:o=|$H$$$C$?%$%Y%s%H$,H/@8$9$kETEY!"(B
foozy@708: OS $B$,DLCN$r$7$F$/$l$^$9!#(B
foozy@708: Linux $B4D6-$G$O!"(B
foozy@708: \texttt{inotify} 
foozy@708: $B$H8F$P$l$k%+!<%M%k%3%s%]%M%s%H$,DLCN5!9=$rDs6!$7$^$9!#(B
foozy@708: 
foozy@708: Mercurial $B$N(B \hgext{inotify} $B%$%/%9%F%s%7%g%s$O!"(B
foozy@708: $B%+!<%M%k$N(B \texttt{inotify} $B$HO"7H$9$k$3$H$G!"(B
foozy@708: \hgcmd{status} $B%3%^%s%I$r:GE,2=$7$^$9!#(B
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$O#2$D$NMWAG$+$i9=@.$5$l$F$$$^$9!#(B
foozy@708: $B%G!<%b%sItJ,$,%P%C%/%0%i%&%s%I$G2TF0$9$k$3$H$G!"(B
foozy@708: \texttt{inotify} $B%+!<%M%k%3%s%]%M%s%H$+$iDLCN$r<u$1<h$j$^$9!#(B
foozy@708: $B%G!<%b%sItJ,$O!"(B
foozy@708: $BDL>o$N(B Mercurial $B%3%^%s%I$+$i$N@\B3MW5a$b<u$1IU$1$^$9!#(B
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$O!"(B
foozy@708: $B%U%!%$%k%7%9%F%`$NAv::$NBeBX$H$7$F%G!<%b%s$rI,MW$H$9$k$?$a!"(B
foozy@708: Mercurial $B$N5sF0$=$N$b$N$r2~JQ$7$^$9!#(B
foozy@708: $B%G!<%b%s$O%j%]%8%H%j>uBV$K4X$9$k40A4$J>pJs$rJ];}$7$F$$$k$N$G!"(B
foozy@708: $B%j%]%8%H%jG[2<$N%G%#%l%/%H%j$d%U%!%$%k$rAv::$9$k$3$HL5$7$K!"(B
foozy@708: $BB(:B$K1~Ez$rJV$9$3$H$,$G$-$^$9!#(B
foozy@708: 
foozy@708: $B@h$K=R$Y$?$H$*$j!"(B
foozy@708: $BDL>o$N(B Mercurial $B$G$O!"(B
foozy@708: 150,000 $B$N%U%!%$%k$r4IM}$9$k%j%]%8%H%j$G$N(B 
foozy@708: \hgcmd{status} $B<B9T$K#1#0IC$rMW$7$^$7$?!#(B
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$rM-8z$K$9$k$3$H$G!"(B
foozy@708: $B<B9T$KMW$9$k;~4V$O(B\emph{1000$BG\(B}$BAa$$(B0.1~$BIC$^$GDc8:$G$-$^$7$?!#(B
foozy@708: 
foozy@708: $BOC$r@h$K?J$a$kA0$K!"(B
foozy@708: $B0J2<$NE@$KCm0U$7$F$/$@$5$$!#(B
foozy@708: 
foozy@708: \begin{itemize}
foozy@708: \item \hgext{inotify} $B$O(B Linux $B4D6-8GM-$N%$%/%9%F%s%7%g%s$G$9!#(B
foozy@708:   Linux $B$N(B \texttt{inotify} $B%5%V%7%9%F%`$HD>@\O"7H$9$k$?$a!"(B
foozy@708:   $BB>$N(B OS $B4D6-2<$G$O5!G=$7$^$;$s!#(B
foozy@708: 
foozy@708: \item 2005 $BG/=i=\0J8e$K%j%j!<%9$5$l$?(B 
foozy@708:   Linux $B%G%#%9%H%j%S%e!<%7%g%s$G$NMxMQ$r$*A&$a$7$^$9!#(B
foozy@708:   $B$=$l0JA0$N%G%#%9%H%j%S%e!<%7%g%s$O!"(B
foozy@708:   \texttt{inotify} $B$,AH$_9~$^$l$F$$$J$$$+!"(B
foozy@708:   $BI,MW$J(B API $B$r(B \texttt{glibc} $B$,Ds6!$7$F$$$J$$$b$N$H;W$o$l$^$9(B\footnote{
foozy@708:   $BLuCm(B: man $B%Z!<%8$K$h$l$P!"(B
foozy@708:   \texttt{inotify} $B$NMxMQ$KEv$?$C$F$O!"(B
foozy@708:   2.6.13 $BHG0J8e$N%+!<%M%k$H(B 2.4 $BHG0J8e$N(B \texttt{glibc} $B$,I,MW$@$=$&$G$9!#(B
foozy@708:   }$B!#(B
foozy@708: 
foozy@708: \item $BA4$F$N%U%!%$%k%7%9%F%`$,(B
foozy@708:   \hgext{inotify} $B%$%/%9%F%s%7%g%s$NMxMQ$KE,$7$F$$$k$H$O8B$j$^$;$s!#(B
foozy@708:   $BE57?E*$JNc$H$7$F$O!"(B
foozy@708:   $BF10l$N%M%C%H%o!<%/%U%!%$%k%7%9%F%`$r!"(B
foozy@708:   Mercurial $B$r2TF0$5$;$kJ#?t$N%7%9%F%`$G%^%&%s%H$7$F$$$k$h$&$J>l9g$G$9!#(B
foozy@708:   $B%+!<%M%k$N(B \texttt{inotify} $B%5%V%7%9%F%`$O!"(B
foozy@708:   $B%j%b!<%H%[%9%H$G$NJQ99$rCN$k=Q$r;}$A$^$;$s!#(B
foozy@708:   $BKX$I$N%m!<%+%k%U%!%$%k%7%9%F%`!JNc$($P(B ext3$B!"(BXFS $B$d(B ReiserFS$B!K$O!"(B
foozy@708:   $B>e<j$/5!G=$9$kH&$G$9!#(B
foozy@708: 
foozy@708: \end{itemize}
foozy@708: 
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$O!"(B
foozy@708: 2007 $BG/(B 5 $B7n$N;~E@$G$O(B Mercurial $B$KF1:-$5$l$F$$$^$;$s(B\footnote{$BLuCm(B:
foozy@708: 2007 $BG/(B 10 $B7n$N(B 0.9.5 $BHGCJ3,$G$bF1:-$5$l$F$$$^$;$s(B}$B$N$G!"(B
foozy@708: $BB>$N%$%/%9%F%s%7%g%s$HHf3S$7$FB?>/$N=`Hw:n6H$,I,MW$G$9$,!"(B
foozy@708: $B@-G=8~>e$K$O$=$l$@$1$N2ACM$,$"$j$^$9!#(B
foozy@708: 
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$OL\2<!"(B
foozy@708: Mercurial $B%=!<%9%3!<%I$X$N%Q%C%A$H!"(B
foozy@708: \texttt{inotify} $B%5%V%7%9%F%`O"7H$N(B 
foozy@708: Python $B%P%$%s%G%#%s%0%i%$%V%i%j$N#2$D$NMWAG$+$i9=@.$5$l$F$$$^$9!#(B
foozy@708: 
foozy@708: \begin{note}
foozy@708:   \texttt{inotify} $B$N(B 
foozy@708:   Python $B%P%$%s%G%#%s%0%i%$%V%i%j$K$O(B\emph{$B#2<oN`(B}$B$"$j$^$9!#(B
foozy@708:   $B#1$D$O(B \texttt{pyinotify} $B$H8F$P$l$k$b$N$G!"(B
foozy@708:   $B4v$D$+$N(B Linux $B%G%#%9%H%j%S%e!<%7%g%s$K$O(B
foozy@708:   \texttt{python-inotify} $B$H$$$&L>A0$GF1:-$5$l$F$$$^$9!#(B
foozy@708:   $B<BMQ$K6!$9$k$K$OHs>o$K%P%0$,B?$/8zN($b0-$$$N$G!"(B
foozy@708:   $B$3$N%i%$%V%i%j$O;H$&$Y$-$G$O(B\emph{$B$"$j$^$;$s(B}$B!#(B
foozy@708: \end{note}
foozy@708: 
foozy@708: $B;v$r?J$a$k$KEv$?$C$F$O!"(B
foozy@708: $B4{$K5!G=$7$F$$$k%$%s%9%H!<%k:Q$_(B
foozy@708: Mercurial $B$rJ#@=$9$k$N$,NI$$$G$7$g$&!#(B
foozy@708: To get going, it's best to already have a functioning copy of
foozy@708: Mercurial installed. XXXXXX
foozy@708: 
foozy@708: \begin{note}
foozy@708:   $B0J2<$N<j=g$rF'$`>l9g!"(B
foozy@708:   $B:G$b:G?7$N(B``$B:G@hC<$J(B''Mercurial $B<BAu$G!"(B
foozy@708:   $B4{$K%$%s%9%H!<%k:Q$_$N(B Mercurial $B$r(B\emph{$BCV$-49$($k(B}$B$3$H$K$J$j$^$9!#(B
foozy@708:   $B$3$l$O7Y9p$G$9!#(B
foozy@708: \end{note}
foozy@708: 
foozy@708: \begin{enumerate}
foozy@708: \item \texttt{inotify} $B$N(B Python $B%P%$%s%G%#%s%0$N%j%]%8%H%j$rJ#@=$7$^$9!#(B
foozy@708:   $B%S%k%I$*$h$S%$%s%9%H!<%k$r9T$C$F$/$@$5$$!#(B
foozy@708: 
foozy@708:   \begin{codesample4}
foozy@708:     hg clone http://hg.kublai.com/python/inotify
foozy@708:     cd inotify
foozy@708:     python setup.py build --force
foozy@708:     sudo python setup.py install --skip-build
foozy@708:   \end{codesample4}
foozy@708: 
foozy@708: \item Mercurial $B$N(B \dirname{crew} $B%j%]%8%H%j$rJ#@=$7$^$9!#(B
foozy@708:   Mercurial Queues $B$K$h$j(B
foozy@708:   \dirname{crew} $B%j%]%8%H%j$N%m!<%+%k%3%T!<(B\footnote{$BLuCm!'(B
foozy@708:   $B$3$3$G$O(B \dirname{crew} $B$+$i99$K(B \dirname{inotify} $B$rJ#@=$7$F$$$^$9$,!"(B
foozy@708:   \hgext{inotify} $B%$%/%9%F%s%7%g%sMxMQ$N$?$a$@$1$K%S%k%I$9$k>l9g!"(B
foozy@708:   $BD>@\(B \dirname{crew} $B$G:n6H$7$F$bLdBjL5$$H&$G$9!#(B
foozy@708:   }$B$K%Q%C%A$rEv$F$k0Y$K!"(B
foozy@708:   \hgext{inotify} $B%Q%C%A$N%j%]%8%H%j$bJ#@=$7$F$/$@$5$$!#(B
foozy@708: 
foozy@708:   \begin{codesample4}
foozy@708:     hg clone http://hg.intevation.org/mercurial/crew
foozy@708:     hg clone crew inotify
foozy@708:     hg clone http://hg.kublai.com/mercurial/patches/inotify inotify/.hg/patches
foozy@708:   \end{codesample4}
foozy@708: 
foozy@708: \item Mercurial Queues $B%$%/%9%F%s%7%g%s!J(B\hgext{mq}$B!K(B
foozy@708:   $B$,MxMQ2DG=$G$"$k$3$H$r3NG'$7$F$/$@$5$$!#(B
foozy@708:   MQ $B$rMxMQ$7$?$3$H$,L5$$>l9g!"(B
foozy@708:   $B$^$:$O(B \ref{sec:mq:start}~$B@a$rFI$s$G$/$@$5$$!#(B
foozy@708: 
foozy@708: \item \dirname{inotify} $B!J%m!<%+%k!K%j%]%8%H%j$K0\F0$7$F!"(B
foozy@708:   \hgxcmd{mq}{qpush} $B%3%^%s%I$N(B \hgxopt{mq}{qpush}{-a} $B%*%W%7%g%s$r;HMQ$7$F!"(B
foozy@708:   $BA4$F$N(B \hgext{inotify} $B%Q%C%A$rE,MQ$7$F$/$@$5$$!#(B
foozy@708: 
foozy@708:   \begin{codesample4}
foozy@708:     cd inotify
foozy@708:     hg qpush -a
foozy@708:   \end{codesample4}
foozy@708: 
foozy@708:   \hgxcmd{mq}{qpush} $B$,%(%i!<%a%C%;!<%8$rI=<($7$?>l9g$O!"(B
foozy@708:   $B:n6H$r7QB3$;$:$K3+H/%3%_%e%K%F%#$K=u$1$r5a$a$F$/$@$5$$!#(B
foozy@708: 
foozy@708: \item $B%Q%C%AE,MQHG$N(B Mercurial $B$r%S%k%I$*$h$S%$%s%9%H!<%k$7$^$9!#(B
foozy@708: 
foozy@708:   \begin{codesample4}
foozy@708:     python setup.py build --force
foozy@708:     sudo python setup.py install --skip-build
foozy@708:   \end{codesample4}
foozy@708: 
foozy@708: \end{enumerate}
foozy@708: 
foozy@708: $BE,@Z$K%Q%C%A$,E,MQ$5$l$?HG$N(B Mercurial $B$,0lC6$G$-$F$7$^$($P!"(B
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$rM-8z$K$9$k$?$a$KI,MW$J$3$H$O!"(B
foozy@708: \hgrc $B%U%!%$%k$K0J2<$N5-=R$rDI2C$9$k$3$H$@$1$G$9!#(B
foozy@708: 
foozy@708: \begin{codesample2}
foozy@708:   [extensions]
foozy@708:   inotify =
foozy@708: \end{codesample2}
foozy@708: 
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$,M-8z2=$5$l$k$H!"(B
foozy@708: $B%j%]%8%H%j$N>uBV$rI,MW$H$9$k%3%^%s%I$N=i2s5/F0$N;~E@$G!"(B
foozy@708: Mercurial $B$O<+F0E*3n$DF)2aE*$K>uBV4IM}MQ%G!<%b%s$r5/F0$7$^$9!#(B
foozy@708: $B>uBV4IM}%G!<%b%s$O!"%j%]%8%H%j$4$H$K5/F0$5$l$^$9!#(B
foozy@708: 
foozy@708: $B>uBV4IM}%G!<%b%s$O$R$=$d$+$K5/F0$5$l!"%P%C%/%0%i%&%s%I$G<B9T$7B3$1$^$9!#(B
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$rM-8z$K$7$?J#?t$N%j%]%8%H%j$G!"(B
foozy@708: $B4v$D$+$N%3%^%s%I$r<B9T$7$?8e$K!"(B
foozy@708: $B<B9TCf$N%W%m%;%90lMw$r8+$l$P!"(B
foozy@708: $B%+!<%M%k$+$i$NDLCN$H(B
foozy@708: Mercurial $B$+$i$NLd$$9g$o$;$NN>J}$rBT$C$F$$$kJ#?t$N(B 
foozy@708: \texttt{hg} $B%W%m%;%9$r8+$k$3$H$,$G$-$kH&$G$9!#(B
foozy@708: 
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$rM-8z$K$7$?:]$G$b!"(B
foozy@708: $B%j%]%8%H%j$K$*$1$k(B Mercurial $B%3%^%s%I$N=i2s5/F0$O!"(B
foozy@708: $BDL>o$N(B Mercurial $B%3%^%s%I<B9T$HF1DxEY$N@-G=$G<B9T$5$l$^$9!#(B
foozy@708: $B$3$l$O>uBV4IM}%G!<%b%s$K$h$kDL>o$N>uBVAv::$,I,MW$J$?$a$G!"(B
foozy@708: $B8e$K%+!<%M%k$+$i$N99?7DLCN$r<u$1<h$k:]$N4pDl>uBV$H$J$j$^$9!#(B
foozy@708: $B$7$+$7!"$3$l0J9_$N>uBV3NG'$NI,MW$J(B\emph{$BA4$F$N(B}$B%3%^%s%I<B9T$O!"(B
foozy@708: $B$I$s$J$K>.$5$J%5%$%:$N%j%]%8%H%j$G$"$C$F$b!"(B
foozy@708: $BL\$K8+$($FB.$/$J$C$F$$$kH&$G$9!#(B
foozy@708: $B%j%]%8%H%j$,Bg$-$1$l$PBg$-$$$[$I!"(B
foozy@708: $BL\$K8+$($F@-G=$,Bg$-$/2~A1$5$l$k$3$H$G$7$g$&!#(B
foozy@708: \hgext{inotify} $B%G!<%b%s$O!"(B
foozy@708: $B$I$s$J%5%$%:$N%j%]%8%H%j$G$"$C$F$b!"(B
foozy@708: $B>uBV<hF@A`:n$rKX$I=V;~$K=*N;$5$;$k$3$H$,$G$-$^$9!#(B
foozy@708: 
foozy@708: \hgxcmd{inotify}{inserve} $B%3%^%s%I$K$h$j!"(B
foozy@708: $B>uBV4IM}%G!<%b%s$r<jF0$G5/F0$9$k$3$H$b$G$-$^$9!#(B
foozy@708: $B<jF0$G$N5/F0$K$h$j!"(B
foozy@708: $B%G!<%b%s$N<B9T$K4X$7$F4vJ,L@NF$J@)8f$r<j$K$9$k$3$H$,$G$-$^$9!#(B
foozy@708: $B$3$N%3%^%s%I$N5/F0$O!"(B
foozy@708: $BEvA3(B \hgext{inotify} 
foozy@708: $B%$%/%9%F%s%7%g%s$,M-8z$K$J$C$F$$$k>l9g$K8B$j;HMQ2DG=$G$9!#(B
foozy@708: 
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$r;HMQ$7$F$$$k:]$K$O!"(B
foozy@708: $B>uBV4XO"%3%^%s%I$N<B9TA4HL$,$=$l0JA0$HHf3S$7$FB.$/$J$C$F$$$kE@$r=|$1$P!"(B
foozy@708: Mercurial $B$N5sF0$O(B\emph{$BA4$/JQ$o$i$J$$(B}$BH&$G$9!#(B
foozy@708: 
foozy@708: $B$H$j$o$1!"%3%^%s%I$N=PNO$O0[$J$i$:!"F1$87k2L$rJV$9H&$G$9!#(B
foozy@708: \hgext{inotify} $B%$%/%9%F%s%7%g%s$NM-L5$G0[$J$k7k2L$,JQ$($k>l9g!"(B
foozy@708: $B>c32$H$7$FJs9p$r$7$F$/$@$5$$!#(B
foozy@708: 
foozy@708: \section{Flexible diff support with the \hgext{extdiff} extension}
foozy@708: \label{sec:hgext:extdiff}
foozy@708: 
foozy@708: Mercurial $B$NAH$_9~$_(B \hgcmd{diff} $B%3%^%s%I$O!"(B
foozy@708: unified $B:9J,$r$=$N$^$^=PNO$7$^$9!#(B
foozy@708: 
foozy@708: \interaction{extdiff.diff}
foozy@708: 
foozy@708: $BJQ99FbMF$NI=<($K30It%D!<%k$r;H$$$?$$>l9g$O!"(B
foozy@708: \hgext{extdiff} $B%$%/%9%F%s%7%g%s$,NI$$$G$7$g$&!#(B
foozy@708: \hgext{extdiff} $B%$%/%9%F%s%7%g%s$K$h$j!"(B
foozy@708: $BJQ99FbMFI=<($KNc$($P%0%i%U%#%+%k$J30It:9J,%D!<%k$,MxMQ$G$-$k$h$&$K$J$j$^$9!#(B
foozy@708: 
foozy@708: \hgext{extdiff} $B%$%/%9%F%s%7%g%s$O(B
foozy@708: Mercurial $B$KF1:-$5$l$F$$$k$N$G4JC1$KMxMQ$G$-$^$9!#(B
foozy@708: \hgrc $B%U%!%$%k$N(B
foozy@708: \rcsection{extensions} $B%;%/%7%g%s$K!"(B
foozy@708: $B%$%/%9%F%s%7%g%s$rM-8z$K$9$k5-=R$r#19TDI2C$9$k$@$1$GNI$$$N$G$9!#(B
foozy@708: 
foozy@708: \begin{codesample2}
foozy@708:   [extensions]
foozy@708:   extdiff =
foozy@708: \end{codesample2}
foozy@708: 
foozy@708: $B$3$N@_Dj$K$h$j!"(B
foozy@708: \hgxcmd{extdiff}{extdiff} $B%3%^%s%I$,MxMQ2DG=$K$J$j$^$9$,!"(B
foozy@708: $B4pDl>uBV$G$O$3$N%3%^%s%I$O!"(B
foozy@708: $BAH$_9~$_$N(B \hgcmd{diff} $B%3%^%s%I$HF1$87A<0$N(B unified $B:9J,$r!"(B
foozy@708: $B%7%9%F%`$N(B \command{diff} $B%3%^%s%I$K$h$j@8@.$7$^$9!#(B
foozy@708: 
foozy@708: \interaction{extdiff.extdiff}
foozy@708: 
foozy@708: $BAH$_9~$_$N(B \hgcmd{diff} $B%3%^%s%I$N7k2L=PNO$H87L)$K$O0lCW$7$^$;$s(B\footnote{
foozy@708: $BLuCm(B: $B$I$NItJ,$r;X$7$F!V0lCW$7$J$$!W$H8@$C$F$$$k$N$+!)(B}$B$,!"(B
foozy@708: $BF1$8%*%W%7%g%s$r;XDj$7$F$b%7%9%F%`(B\footnote{$BLuCm(B:
foozy@708: $B$3$3$G8@$&!V(Bsystem$B!W$H$O!)(B XXXXX}$B$4$H$K(B
foozy@708: $B!J%7%9%F%`$N!K(B\command{diff} $B%3%^%s%I$N=PNO$,0[$J$k$+$i$G$9!#(B
foozy@708: 
foozy@708: $B>e5-$N=PNO7k2L$K(B ``\texttt{making snapshot}''
foozy@708: $B9T$,4^$^$l$F$$$k$3$H$+$i$b;!$9$k$3$H$,$G$-$^$9$,!"(B
foozy@708: \hgxcmd{extdiff}{extdiff} 
foozy@708: $B%3%^%s%I$O%=!<%9%D%j!<$K4X$9$k%9%J%C%W%7%g%C%H$r#2$D:n@.$7$^$9!#(B
foozy@708: $B#1$DL\$N%9%J%C%W%7%g%C%H$O%=!<%9$N%j%S%8%g%s$N$b$N$G!"(B
foozy@708: $B#2$DL\$O:n6HNN0h%G%#%l%/%H%j$K$*$1$kBP>]%j%S%8%g%s$N$b$N$G$9(B\footnote{$BLuCm(B:
foozy@708: $B:n6HNN0h%G%#%l%/%H%j$N!V?F%j%S%8%g%s!W$H!V8=9T>uBV!W(B}$B!#(B
foozy@708: \hgxcmd{extdiff}{extdiff} 
foozy@708: $B%3%^%s%I$O$3$l$i$N%9%J%C%W%7%g%C%H$r0l;~%G%#%l%/%H%j$K:n@.$7!"(B
foozy@708: $B$3$l$i$N%G%#%l%/%H%jL>$r0z?t$K$7$F30It$N:9J,I=<(%D!<%k$r5/F0$7!"(B
foozy@708: $B$=$N8e0l;~%G%#%l%/%H%j$r:o=|$7$^$9!#(B
foozy@708: $B<B9T8zN(>e!"(B
foozy@708: $B#2$D$N%j%S%8%g%s$N4V$G:9J,$N$"$k%G%#%l%/%H%j!&(B
foozy@708: $B%U%!%$%k$N%9%J%C%W%7%g%C%H$@$1$,:n@.$5$l$^$9!#(B
foozy@708: 
foozy@708: $B%9%J%C%W%7%g%C%H%G%#%l%/%H%j$NL>A0$O!"(B
foozy@708: $B85$H$J$k%j%]%8%H%j$N%Y!<%9L>$HF1$8L>A0$r;}$A$^$9!#(B
foozy@708: \dirname{/quux/bar/foo} $B$H$$$&%j%]%8%H%j$N>l9g!"(B
foozy@708: $B8D!9$N%9%J%C%W%7%g%C%H$N%G%#%l%/%H%j!J%Y!<%9!KL>$O(B \dirname{foo} $B$H$J$j$^$9!#(B
foozy@708: $BBP1~$9$k%A%'%s%8%;%C%H(BID$B$,$"$k>l9g!"(B
foozy@708: $B%9%J%C%W%7%g%C%H$N%G%#%l%/%H%jL>$K$O%A%'%s%8%;%C%H(BID$B$,IUM?$5$l$^$9!#(B
foozy@708: \texttt{a631aca1083f} $BHG$KBP$9$k%9%J%C%W%7%g%C%H$N%G%#%l%/%H%jL>$O(B
foozy@708: \dirname{foo.a631aca1083f} $B$H$J$j$^$9!#(B
foozy@708: $B:n6HNN0h%G%#%l%/%H%j$N8=9T>uBV$KBP$9$k%9%J%C%W%7%g%C%H$O!"(B
foozy@708: $B%A%'%s%8%;%C%H(BID$B$,IUM?$5$l$^$;$s$N$G!"(B
foozy@708: $B$3$NNc$G$OC1$K(B \dirname{foo} $B$H$$$&L>A0$K$J$j$^$9!#(B
foozy@708: $B<B:]$N5sF0$r8+$k$?$a$K!"(B
foozy@708: $B:FEYA0=P$N(B \hgxcmd{extdiff}{extdiff} $B$N<B9TNc$r8+$F$_$^$7$g$&!#(B
foozy@708: $B:9J,=PNO$N%X%C%@It$K!"(B
foozy@708: $B%9%J%C%W%7%g%C%H%G%#%l%/%H%j$NL>A0$,Kd$a9~$^$l$F$$$k$N$K5$IU$/$3$H$G$7$g$&!#(B
foozy@708: 
foozy@708: \hgxcmd{extdiff}{extdiff} $B%3%^%s%I$K$O!"(B
foozy@708: $B#2$D$N=EMW$J%*%W%7%g%s$,$"$j$^$9!#(B
foozy@708: \hgxopt{extdiff}{extdiff}{-p} $B%*%W%7%g%s$O!"(B
foozy@708: $B%7%9%F%`$N(B \command{diff} 
foozy@708: $B%3%^%s%I$NBeBX$H$7$F;HMQ$5$l$k:9J,I=<(%W%m%0%i%`$r;XDj$7$^$9!#(B
foozy@708: \hgxopt{extdiff}{extdiff}{-o} $B%*%W%7%g%s$O!"(B
foozy@708: \hgxcmd{extdiff}{extdiff} 
foozy@708: $B$,30It$N:9J,I=<(%W%m%0%i%`5/F0;~$K;XDj$9$k%*%W%7%g%s(B
foozy@708: $B!J%G%U%)%k%H$G$O(B ``\texttt{-Npru}'' $B$,;XDj$5$l!"(B
foozy@708: \command{diff} $B$r;HMQ$9$k>l9g$K$N$_0UL#$r;}$A$^$9!K(B
foozy@708: $B$r;XDj$7$^$9!#(B
foozy@708: $B$=$l0J30$NE@$G$O!"(B
foozy@708: \hgxcmd{extdiff}{extdiff} $B%3%^%s%I$O(B
foozy@708: $BAH$_9~$_$N(B \hgcmd{diff} $B%3%^%s%I$HF1MM$K?6Iq$$$^$9$N$G!"(B
foozy@708: $B%*%W%7%g%sL>$d%*%W%7%g%s;XDj$NJ8K!!"(B
foozy@708: $BHf3SBP>]%j%S%8%g%s$r;XDj$9$k0z?t!"(B
foozy@708: $BHf3S$7$?$$%U%!%$%kL>$N;XDj$J$I$O!"(B
foozy@708: $BAH$_9~$_$N(B \hgcmd{diff} $B$HF1$8$h$&$K;XDj$G$-$^$9!#(B
foozy@708: 
foozy@708: $B<B9TNc$H$7$F!"(B
foozy@708: $B!JDL>o$N(B \hgcmd{diff} $B$K$h$k!K(Bunified $B:9J,$NBe$o$j$K!"(B
foozy@708: $B%7%9%F%`I8=`$N(B \command{diff} $B%3%^%s%I$K$h$k(B context $B:9J,(B
foozy@708: $B!J(B\cmdopt{diff}{-c} $B%*%W%7%g%s;HMQ!K$r!"(B
foozy@708: $B%G%U%)%k%H$N#39T$G$O$J$/#59T$N(B context $B9T(B
foozy@708: $B!J(B\cmdopt{diff}{-C} $B%*%W%7%g%s$G$N(B \texttt{5} $B;XDj!K(B
foozy@708: $B$GI=<($9$kJ}K!$r<($7$^$9!#(B
foozy@708: 
foozy@708: \interaction{extdiff.extdiff-ctx}
foozy@708: 
foozy@708: $B%0%i%U%#%+%k$J:9J,%D!<%k$N5/F0$OHs>o$K4JC1$G$9!#(B
foozy@708: \command{kdiff3} $B5/F0$NNc$r<($7$^$9!#(B
foozy@708: 
foozy@708: \begin{codesample2}
foozy@708:   hg extdiff -p kdiff3 -o ''
foozy@708: \end{codesample2}
foozy@708: 
foozy@708: $BMxMQ$9$k:9J,I=<(%3%^%s%I$,%G%#%l%/%H%j;XDj$r07$($J$$>l9g$G$b!"(B
foozy@708: $B4JC1$J%9%/%j%W%H$r;H$&$3$H$G$=$NLdBj$r2r7h$G$-$^$9!#(B
foozy@708: $B$=$N$h$&$J%9%/%j%W%H$K$h$k(B
foozy@708: \hgext{mq} $B%$%/%9%F%s%7%g%s$H(B
foozy@708: \command{interdiff} $B%3%^%s%I$NO"7HNc$O!"(B
foozy@708: \ref{mq-collab:tips:interdiff}~$B@a$r;2>H$7$F$/$@$5$$!#(B
foozy@708: 
foozy@708: \subsection{Defining command aliases}
foozy@708: 
foozy@708: \hgxcmd{extdiff}{extdiff} $B%3%^%s%I$dMxMQ$9$k:9J,I=<(%3%^%s%I$N!"(B
foozy@708: $BN>J}$N%*%W%7%g%s$r3P$($F$*$/$N$OLLE]$G$9$N$G!"(B
foozy@708: \hgext{extdiff} $B%$%/%9%F%s%7%g%s$O!"(B
foozy@708: $B;HMQ$9$k:9J,I=<(%3%^%s%I$r@5$7$$%*%W%7%g%s$G5/F0$9$k(B
foozy@708: \emph{$B?7$7$$(B}$B%3%^%s%I$rDj5A$G$-$k$h$&$K$J$C$F$$$^$9!#(B
foozy@708: 
foozy@708: $B?7$7$$%3%^%s%IDj5A$N$?$a$KI,MW$J$N$O!"(B
foozy@708: \hgrc $B%U%!%$%k$rJT=8$7!"(B
foozy@708: \rcsection{extdiff} $B$H$$$&L>A0$N%;%/%7%g%s$rDI2C$9$k$@$1$G$9!#(B
foozy@708: $B$3$N%;%/%7%g%s$G$O!"(B
foozy@708: $BJ#?t$N%3%^%s%I$rDj5A$9$k$3$H$,$G$-$^$9!#(B
foozy@708: $B0J2<$K(B \texttt{kdiff3} $B%3%^%s%I$rDI2C$9$kNc$r<($7$^$9!#(B
foozy@708: $B0lC6Dj5A$7$F$7$^$($P!"(B
foozy@708: ``\texttt{hg kdiff3}''$B$HF~NO$9$k$@$1$G(B
foozy@708: \hgext{extdiff} $B%$%/%9%F%s%7%g%s$,(B
foozy@708: \command{kdiff3} $B$r5/F0$7$^$9!#(B
foozy@708: 
foozy@708: \begin{codesample2}
foozy@708:   [extdiff]
foozy@708:   cmd.kdiff3 =
foozy@708: \end{codesample2}
foozy@708: 
foozy@708: $BDj5A$N1&JU$r>e5-Nc$N$h$&$K6u$K$7$?>l9g!"(B
foozy@708: \hgext{extdiff} $B%$%/%9%F%s%7%g%s$O!"(B
foozy@708: $BDj5A$7$?%3%^%s%I$NL>A0$r<B9T$9$Y$-30It%W%m%0%i%`$NL>A0$H8+$J$7$^$9!#(B
foozy@708: $B$7$+$7!"$3$l$i$NL>A0$,0lCW$7$F$$$kI,MW$O$"$j$^$;$s!#(B
foozy@708: $B0J2<$NNc$G$O!"(B
foozy@708: \command{kdiff3} $B$r<B9T$9$k%3%^%s%I$r(B
foozy@708: ``\texttt{hg wibble}'' $B$H$$$&L>A0$GDj5A$7$F$$$^$9!#(B
foozy@708: 
foozy@708: \begin{codesample2}
foozy@708:   [extdiff]
foozy@708:   cmd.wibble = kdiff3
foozy@708: \end{codesample2}
foozy@708: 
foozy@708: $B:9J,I=<(%W%m%0%i%`5/F0$N:]$N%G%U%)%k%H%*%W%7%g%s$b;XDj$9$k$3$H$,$G$-$^$9!#(B
foozy@708: ``\texttt{opts.}'' $B@\F,<-$KB3$$$F!"(B
foozy@708: $B%*%W%7%g%s$rE,MQ$7$?$$%3%^%s%IL>$r5-=R$7$F$/$@$5$$!#(B
foozy@708: $B0J2<$NNc$G$O!"(B
foozy@708: \command{vim} $B%(%G%#%?$N(B \texttt{DirDiff} $B3HD%$r<B9T$9$k(B
foozy@708: ``\texttt{hg vimdiff}'' $B%3%^%s%I$rDj5A$7$F$$$^$9!#(B
foozy@708: 
foozy@708: \begin{codesample2}
foozy@708:   [extdiff]  
foozy@708:   cmd.vimdiff = vim
foozy@708:   opts.vimdiff = -f '+next' '+execute "DirDiff" argv(0) argv(1)'
foozy@708: \end{codesample2}
foozy@708: 
foozy@708: \section{Cherrypicking changes with the \hgext{transplant} extension}
foozy@708: \label{sec:hgext:transplant}
foozy@708: 
foozy@708: $B"((B Brendan $B$H%A%c%C%H$G$NOC$79g$$$,I,MW(B
foozy@708: 
foozy@708: \section{Send changes via email with the \hgext{patchbomb} extension}
foozy@708: \label{sec:hgext:patchbomb}
foozy@708: 
foozy@708: $BB?$/$N%W%m%8%'%/%H$G$O!"(B
foozy@708: $B6&M-%j%]%8%H%j$K:G=*@.2L$r%3%_%C%H$9$kA0$K!"(B
foozy@708: $BJQ99FbMF$r%a!<%j%s%0%j%9%H$KEj9F$7$F::FI$dO@I>$r9T$&(B
foozy@708: ``$BJQ99%l%S%e!<(B''$B$NJ82=$r;}$C$F$$$^$9!#(B
foozy@708: $B%j%]%8%H%j$X$N%"%/%;%98"$r;}$?$J$$?M!9$+$i$NJQ990MMj$rE,MQ$9$k!"(B
foozy@708: $BLgHV$NLr3d$r2L$?$9?M!9$,$$$k%W%m%8%'%/%H$b$"$j$^$9!#(B
foozy@708: 
foozy@708: Mercurial $B$N(B \hgext{patchbomb} $B%$%/%9%F%s%7%g%s$rMxMQ$9$k$3$H$G!"(B
foozy@708: $B%l%S%e!<$dDs0F$N$?$a$NEE;R%a!<%k$K$h$kJQ99Aw?.$,MF0W$K$J$j$^$9!#(B
foozy@708: $B$3$N%$%/%9%F%s%7%g%s$NL>A0$O!"(B
foozy@708: $BJQ99$,%Q%C%A7A<0$G@07A$5$l!"(B
foozy@708: $B#1%A%'%s%8%;%C%HKh$K#1$D$NEE;R%a!<%k$GAw?.$5$l$k$3$H$KM3Mh$7$F$$$^$9!#(B
foozy@708: $BEE;R%a!<%k$K$h$k0lO"$NJQ99$NAw?.$,!"(B
foozy@708: $B<u?.<T$N%a!<%k%\%C%/%9$K$H$C$F(B``$BGz7b(B''$B!J(Bbombing$B!K(B
foozy@708: $B$N$h$&$G$"$k$3$H$+$i!"(B``patchbomb''$B$H8F$P$l$F$$$^$9!#(B
foozy@708: 
foozy@708: \hgext{patchbomb} $B%$%/%9%F%s%7%g%s$N4pK\E*$J@_Dj5-=R$O!"(B
foozy@708: $B$$$D$b$N$h$&$K(B \hgrc $B$X$N#19T$+#29TDxEY$N5-=R$@$1$G$9!#(B
foozy@708: 
foozy@708: \begin{codesample2}
foozy@708:   [extensions]
foozy@708:   patchbomb =
foozy@708: \end{codesample2}
foozy@708: 
foozy@708: $B0lC6%$%/%9%F%s%7%g%s$rM-8z$K$7$?$J$i$P!"(B
foozy@708: \hgxcmd{patchbomb}{email} $B$H$$$&?7$?$J%3%^%s%I$,MxMQ2DG=$K$J$j$^$9!#(B
foozy@708: 
foozy@708: \hgxcmd{patchbomb}{email} $B%3%^%s%I$N0BA43n$D:GA1$N<B9T<j=g$O!"(B
foozy@708: \emph{$BI,$:(B} \hgxopt{patchbomb}{email}{-n} 
foozy@708: $B%*%W%7%g%s$rIU$1$F0lC6<B9T$7$F$_$k$3$H$G$9!#(B
foozy@708: \hgxopt{patchbomb}{email}{-n} $B%*%W%7%g%sIU$-$N<B9T$O!"(B
foozy@708: $B<B:]$NEE;R%a!<%kAw?.$O9T$o$:$K!"(B
foozy@708: $BAw?.(B\emph{$B$5$l$k$G$"$m$&(B}$BFbMF$rI=<($7$^$9!#(B
foozy@708: $BJQ99FbMF$K$6$C$HL\$rDL$7$F!"(B
foozy@708: $BAw?.FbMF$,E,@Z$G$"$k$3$H$r3NG'$7$?$J$i$P!"(B
foozy@708: \hgxopt{patchbomb}{email}{-n} 
foozy@708: $B%*%W%7%g%sH4$-$G:FEY(B
foozy@708: \hgxcmd{patchbomb}{email} $B%3%^%s%I$r<B9T$7$F$/$@$5$$!#(B
foozy@708: 
foozy@708: \hgxcmd{patchbomb}{email} $B%3%^%s%I$O!"(B
foozy@708: $BB>$N(B Mercurial $B%3%^%s%I$HF1MM$N%j%S%8%g%s;XDj$,2DG=$G$9!#(B
foozy@708: $BNc$($P0J2<$N<B9TNc$G$O!"(B
foozy@708: $B%j%S%8%g%s(B 7 $B$+$i(B \texttt{tip} $B$^$G$NA4$F$N%j%S%8%g%s(B
foozy@708: $B!J%j%S%8%g%s(B 7 $B$*$h$S(B \texttt{tip} $B$b4^$_$^$9!K$,Aw?.$5$l$^$9!#(B
foozy@708: 
foozy@708: \begin{codesample2}
foozy@708:   hg email -n 7:tip
foozy@708: \end{codesample2}
foozy@708: 
foozy@708: $BHf3SBP>]$N(B\emph{$B%j%]%8%H%j(B}$B$r;XDj$9$k$3$H$b$G$-$^$9!#(B
foozy@708: $B%j%S%8%g%s;XDjL5$7$G%j%]%8%H%j$r;XDj$7$?>l9g!"(B
foozy@708: \hgxcmd{patchbomb}{email} $B%3%^%s%I$O!"(B
foozy@708: $B1s3V%j%]%8%H%j$KB8:_$7$J$$%m!<%+%k%j%]%8%H%j$NA4$F$N%j%S%8%g%s$rAw?.$7$^$9!#(B
foozy@708: $B%j%S%8%g%s$J$$$7!J(B\hgxopt{patchbomb}{email}{-b} $B%*%W%7%g%s$K$h$k!K(B
foozy@708: $B%V%i%s%AL>$rDI2C;XDj$9$k$3$H$G!"(B
foozy@708: $BAw?.$5$l$k%j%S%8%g%s$r@)8B$9$k$3$H$,$G$-$^$9!#(B
foozy@708: 
foozy@708: $BAw?.@h%"%I%l%9$r;XDj$7$J$$(B
foozy@708: \hgxcmd{patchbomb}{email} $B<B9T$O40`z$K0BA4$G!"(B
foozy@708: $B$=$N>l9g$K$O(B \hgxcmd{patchbomb}{email} $B$OBPOCE*$KF~NO$r5a$a$F$-$^$9(B
foozy@708: $B!J(BLinux $B$d(B Unix $B%i%$%/$J%7%9%F%`$rMxMQ$7$F$$$k>l9g!"(B
foozy@708: $B$3$l$i$N%X%C%@CMF~NO$N:]$K$O!"(B
foozy@708: \texttt{readline} $BMM<0$NJT=85!G=$,MxMQ2DG=$G$9!K!#(B
foozy@708: 
foozy@708: $BC10l$N%j%S%8%g%s$@$1$rAw?.$9$k>l9g!"(B
foozy@708: \hgxcmd{patchbomb}{email} $B%3%^%s%I$N4pDlF0:n$G$O!"(B
foozy@708: $B%3%_%C%H%a%C%;!<%8$N:G=i$N#19T$rAw?.$9$kEE;R%a!<%k$N%5%V%8%'%/%H$KMxMQ$7$^$9!#(B
foozy@708: 
foozy@708: $BJ#?t$N%j%S%8%g%s$rAw?.$9$k>l9g!"(B
foozy@708: \hgxcmd{patchbomb}{email} $B%3%^%s%I$O%A%'%s%8%;%C%HKh$KEE;R%a!<%k$rAw?.$7$^$9!#(B
foozy@708: $B$3$N>l9g!"(B
foozy@708: $BAw?.$7$h$&$H$9$k0lO"$NJQ99$NL\E*$r5-=R$7$?A0CV$-$NEE;R%a!<%k$r!"(B
foozy@708: $B0lO"$N%a!<%kAw?.$N@h?($l$H$7$FAw?.$7$^$9!#(B
foozy@708: 
foozy@708: \subsection{Changing the behaviour of patchbombs}
foozy@708: 
foozy@708: $BEE;R%a!<%k$K$h$kJQ99FbMFAw?.$N7A<0$,!"(B
foozy@708: $BA4$F$N%W%m%8%'%/%H$G87L)$KF1$8$o$1$G$OL5$$$3$H$+$i!"(B
foozy@708: \hgext{patchbomb} $B%$%/%9%F%s%7%g%s$O!"(B
foozy@708: $B%3%^%s%I9T$G$N%*%W%7%g%s;XDj$K$h$k4v$D$+$NE,9g=hM}$r<B;\$7$^$9!#(B
foozy@708: 
foozy@708: \begin{itemize}
foozy@708: \item $B%3%^%s%I9T$G$N(B \hgxopt{patchbomb}{email}{-s} $B%*%W%7%g%s$K$h$j!"(B
foozy@708:   $BA0CV$-%a%C%;!<%8$N%5%V%8%'%/%H$r;XDj$G$-$^$9!#(B
foozy@708:   $B$3$N%*%W%7%g%s$K$O!"(B
foozy@708:   $B%5%V%8%'%/%H$H$7$F;HMQ$9$k%F%-%9%H$r;XDj$7$^$9!#(B
foozy@708: 
foozy@708: \item \hgxopt{patchbomb}{email}{-f} $B%*%W%7%g%s$K$h$j!"(B
foozy@708:   $BEE;R%a!<%k$NAw?.85%"%I%l%9$rJQ99$G$-$^$9!#(B
foozy@708:   $B$3$N%*%W%7%g%s$K$O!"(B
foozy@708:   $BAw?.85%"%I%l%9$H$7$F;HMQ$9$kEE;R%a!<%k%"%I%l%9$r;XDj$7$^$9!#(B
foozy@708: 
foozy@708: \item $B4pDlF0:n$G$O!"EE;R%a!<%k$4$H$K(B unified $B:9J,!J(B
foozy@708:   $B7A<0$N>\:Y$K4X$7$F$O(B \ref{sec:mq:patch}~$B@a$r;2>H$7$F$/$@$5$$!K(B
foozy@708:   $B$rAw?.$7$^$9!#(B
foozy@708:   \hgxopt{patchbomb}{email}{-b} $B%*%W%7%g%s$r;XDj$9$k$3$H$G!"(B
foozy@708:   $B%P%$%J%j%P%s%I%k7A<0$G$NAw?.$rA*Br$G$-$^$9!#(B
foozy@708: 
foozy@708: \item unified $B:9J,$NDL>o$N=PNO(B\footnote{$BLuCm(B:
foozy@708:   $B!V(BMercurial $B$K$*$1$kDL>o$N=PNO!W$N0UL#!)(B
foozy@708:   $B$=$l$H$b!V(Bpatchbomb $B$K$*$1$kDL>o$N=PNO!W$N0UL#!)(B
foozy@708:   }$B$O%a%?%G!<%?%X%C%@$+$i;O$^$j$^$9!#(B
foozy@708:   \hgxopt{patchbomb}{email}{--plain} $B%*%W%7%g%s$r;XDj$9$k$3$H$G!"(B
foozy@708:   $B$3$l$i$r>JN,$7$?4JAG$J7A<0$N:9J,$rAw?.$9$k$3$H$,$G$-$^$9!#(B
foozy@708: 
foozy@708: \item $B:9J,ItJ,$ODL>o!"(B
foozy@708:   $B%Q%C%A$N@bL@ItJ,$HF1$8(B MIME $B%Q!<%H$K(B``$BJB$Y$F(B''$BAw?.$5$l$^$9!#(B
foozy@708:   $B%a!<%k$N:G=i$N(B MIME $B%Q!<%H$+$i$7$+0zMQ$G$-$J$$%a!<%k%D!<%k$b$"$k$?$a!"(B
foozy@708:   $B:G$bB?$/$NFI$_<j$K$H$C$F!"(B
foozy@708:   $B0lHVMF0W$K:9J,$r0zMQ$7$FJV?.$G$-$k$N$,$3$N7A<0$G$9!#(B
foozy@708:   $B@bL@ItJ,$H:9J,ItJ,$rJL!9$N(B MIME $B%Q!<%H$H$7$FAw?.$7$?$$>l9g$O!"(B
foozy@708:   \hgxopt{patchbomb}{email}{-a} $B%*%W%7%g%s$r;XDj$7$F$/$@$5$$!#(B
foozy@708: 
foozy@708: \item \hgxopt{patchbomb}{email}{-m} $B%*%W%7%g%s$r;XDj$9$k$3$H$G!"(B
foozy@708:   $BEE;R%a!<%k$G$NAw?.$NBX$o$j$K!"(B
foozy@708:   \texttt{mbox} $B7A<0$N%a!<%k%U%)%k%@$X$N=q$-9~$_$r9T$&$3$H$,$G$-$^$9!#(B
foozy@708:   $B$3$N%*%W%7%g%s$K$O!"=q$-9~$_@h%U%!%$%kL>$r;XDj$7$^$9!#(B
foozy@708: 
foozy@708: \item $B3F%Q%C%A$*$h$SA0CV$-%a%C%;!<%8$KBP$7$F!"(B
foozy@708:   \command{diffstat} $B7A<0$NMWLs$rIUM?$7$?$$>l9g$O!"(B
foozy@708:   \hgxopt{patchbomb}{email}{-d} $B%*%W%7%g%s$r;XDj$7$F$/$@$5$$!#(B
foozy@708:   \command{diffstat} $B%3%^%s%I$O!"(B
foozy@708:   $B%Q%C%AE,MQ@h%U%!%$%kL>$H!"(B
foozy@708:   $B1F6A$r<u$1$k9T?t!"(B
foozy@708:   $B$*$h$S3F%U%!%$%kKh$NJQ99NL$rI=$9%R%9%H%0%i%`$r0lMwI=<($7$^$9!#(B
foozy@708:   $B%a!<%k$NFI$_<j$O!"(B
foozy@708:   $B$3$N>pJs$+$i%Q%C%A$NJ#;(EY$K4X$9$k<AE*$J0lMw@-$rF@$k$3$H$,$G$-$^$9!#(B
foozy@708: 
foozy@708: \end{itemize}
foozy@708: 
foozy@708: %%% Local Variables: 
foozy@708: %%% mode: latex
foozy@708: %%% TeX-master: "00book"
foozy@708: %%% End: 




