Mercurial > hgbook
view ja/mq-ref.tex @ 800:1a30d2627512
Propagate 2ff0a43f1152
Update ch03
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Thu, 18 Jun 2009 20:04:44 +0900 |
parents | 73aa295a40da |
children | 8a3041e6f3cb |
line wrap: on
line source
%\chapter{Mercurial Queues reference} \chapter{Mercurial Queues $B%j%U%!%l%s%9(B} \label{chap:mqref} %\section{MQ command reference} \section{MQ $B%3%^%s%I%j%U%!%l%s%9(B} \label{sec:mqref:cmdref} %For an overview of the commands provided by MQ, use the command %\hgcmdargs{help}{mq}. MQ$B$K$h$C$FDs6!$5$l$k%3%^%s%I$N35MW$K$D$$$F$O(B\hgcmdargs{help}{mq}$B$rMxMQ$5(B $B$l$?$$!%(B %\subsection{\hgxcmd{mq}{qapplied}---print applied patches} \subsection{\hgxcmd{mq}{qapplied}---$BE,MQ$5$l$?%Q%C%A$NI=<((B} %The \hgxcmd{mq}{qapplied} command prints the current stack of applied %patches. Patches are printed in oldest-to-newest order, so the last %patch in the list is the ``top'' patch. \hgxcmd{mq}{qapplied}$B%3%^%s%I$O!$E,MQ$5$l$?%Q%C%A$N8=:_$N%9%?%C%/$rI=<((B $B$9$k!%%Q%C%A$O8E$$$b$N$+$i?7$7$$$b$N$N=g$KI=<($5$l$k!%$=$N$?$a!$%j%9%H$N(B $B:G8e$N%Q%C%A$O(B``top''$B%Q%C%A$H$J$k!%(B %\subsection{\hgxcmd{mq}{qcommit}---commit changes in the queue %repository} \subsection{\hgxcmd{mq}{qcommit}---$B%-%e!<$NCf$NJQ99$r%3%_%C%H$9$k(B} %The \hgxcmd{mq}{qcommit} command commits any outstanding changes in the %\sdirname{.hg/patches} repository. This command only works if the %\sdirname{.hg/patches} directory is a repository, i.e.~you created the %directory using \hgcmdargs{qinit}{\hgxopt{mq}{qinit}{-c}} or ran %\hgcmd{init} in the directory after running \hgxcmd{mq}{qinit}. \hgxcmd{mq}{qcommit}$B%3%^%s%I$O!$(B\sdirname{.hg/patches}$B%G%#%l%/%H%j$K$"$k(B $BFM=P$7$?JQ99$r%3%_%C%H$9$k!%$3$N%3%^%s%I$O(B\sdirname{.hg/patches}$B%G%#%l%/(B $B%H%j$,%j%]%8%H%j$N>l9g$K$N$_F0:n$9$k!%Nc$($P(B \hgcmdargs{qinit}{\hgxopt{mq}{qinit}{-c}}$B%3%^%s%I$K$h$C$F%G%#%l%/%H%j$r:n$C(B $B$?$j!$(B\hgxcmd{mq}{qinit}$B%3%^%s%I$N8e$K(B\hgcmd{init}$B$r<B9T$7$?>l9g$,AjEv$9(B $B$k!%(B %This command is shorthand for \hgcmdargs{commit}{--cwd .hg/patches}. $B$3$N%3%^%s%I$O(B\hgcmdargs{commit}{--cwd .hg/patches}$B$NC;=L7A$G$"$k!%(B %\subsection{\hgxcmd{mq}{qdelete}---delete a patch from the % \sfilename{series} file} \subsection{\hgxcmd{mq}{qdelete}---\sfilename{series}$B%U%!%$%k$+$i%Q%C%A(B $B$r>C5n$9$k(B} %The \hgxcmd{mq}{qdelete} command removes the entry for a patch from the %\sfilename{series} file in the \sdirname{.hg/patches} directory. It %does not pop the patch if the patch is already applied. By default, %it does not delete the patch file; use the \hgxopt{mq}{qdel}{-f} option to %do that. \hgxcmd{mq}{qdelete}$B%3%^%s%I$O(B\sdirname{.hg/patches}$B%G%#%l%/%H%j$N(B \sfilename{series}$B%U%!%$%k$+$i%Q%C%A$r>C5n$9$k!%%Q%C%A$,4{$KE,MQ$5$l$F$$(B $B$k>l9g$O%Q%C%A$r%]%C%W$7$J$$!%%G%U%)%k%H$G$O%Q%C%A%U%!%$%k$r>C5n$7$J$$$?(B $B$a!$$=$NMQES$G$O(B\hgxopt{mq}{qdel}{-f}$B%*%W%7%g%s$r;H$&!%(B %Options: $B%*%W%7%g%s(B: \begin{itemize} %\item[\hgxopt{mq}{qdel}{-f}] Delete the patch file. \item[\hgxopt{mq}{qdel}{-f}] $B%Q%C%A$r>C5n$9$k!%(B \end{itemize} %\subsection{\hgxcmd{mq}{qdiff}---print a diff of the topmost applied %patch} \subsection{\hgxcmd{mq}{qdiff}---$B:G>e0L$NE,MQ$5$l$?%Q%C%A$N(Bdiff$B$r=PNO$9(B $B$k(B} %The \hgxcmd{mq}{qdiff} command prints a diff of the topmost applied patch. %It is equivalent to \hgcmdargs{diff}{-r-2:-1}. \hgxcmd{mq}{qdiff}$B%3%^%s%I$O:G>e0L$NE,MQ$5$l$?%Q%C%A$N(Bdiff$B$r=PNO$9$k!%$3(B $B$l$O(B\hgcmdargs{diff}{-r-2:-1}$B$HEy2A$G$"$k!%(B %\subsection{\hgxcmd{mq}{qfold}---merge (``fold'') several patches into %one} \subsection{\hgxcmd{mq}{qfold}---$B$$$/$D$+$N%Q%C%A$r0l$D$K%^!<%8(B($B$^$?$O(B``fold'')$B$9$k(B} %The \hgxcmd{mq}{qfold} command merges multiple patches into the topmost %applied patch, so that the topmost applied patch makes the union of %all of the changes in the patches in question. \hgxcmd{mq}{qfold}$B%3%^%s%I$OJ#?t$N%Q%C%A$rE,MQ$5$l$?:F>e0L$N%Q%C%A$K%^!<(B $B%8$9$k!%:F>e0L$N%Q%C%A$O4X?4$N$"$k%Q%C%AA4$F$NJQ99$N=89g$K$J$k!%(B %The patches to fold must not be applied; \hgxcmd{mq}{qfold} will exit with %an error if any is. The order in which patches are folded is %significant; \hgcmdargs{qfold}{a b} means ``apply the current topmost %patch, followed by \texttt{a}, followed by \texttt{b}''. fold$B$9$k%Q%C%A$OE,MQ$5$l$F$$$F$O$J$i$J$$!%(B\hgxcmd{mq}{qfold}$B$O!$$I$l$+$,(B $BE,MQ$5$l$F$$$k>l9g$O%(%i!<$rJV$7$F=*N;$9$k!%(Bfold$B$5$l$k%Q%C%A$N=g=x$O=EMW(B $B$G!$(B\hgcmdargs{qfold}{a b}$B$O!$(B``\texttt{a}, \texttt{b}$B$,B3$$$F$$$k8=:_$N(B $B:F>e0L$N%Q%C%A$rE,MQ$9$k(B''$B$H$$$&0UL#$K$J$k!%(B %The comments from the folded patches are appended to the comments of %the destination patch, with each block of comments separated by three %asterisk (``\texttt{*}'') characters. Use the \hgxopt{mq}{qfold}{-e} %option to edit the commit message for the combined patch/changeset %after the folding has completed. $B%U%)!<%k%I$5$l$?%Q%C%A$N%3%a%s%H$O!$L\E*$N%Q%C%A$N%3%a%s%H$KDI2C$5$l$k!%(B $B3F!9$N%3%a%s%H%V%m%C%/$O(B3$B$D$N%"%9%?%j%9%/$K$h$C$FJ,N%$5$l$F$$$k!%(B \hgxopt{mq}{qfold}{-e}$B%*%W%7%g%s$K$h$C$F!$%U%)!<%k%I$,40N;$7$?8e$K7k9g$7(B $B$?%Q%C%A!?%A%'%s%8%;%C%H$N%3%_%C%H%a%C%;!<%8$rJT=8$9$k$3$H$,$G$-$k!%(B %Options: $B%*%W%7%g%s(B: \begin{itemize} %\item[\hgxopt{mq}{qfold}{-e}] Edit the commit message and patch description % for the newly folded patch. \item[\hgxopt{mq}{qfold}{-e}] $B?7$?$K%U%)!<%k%I$5$l$k%Q%C%A$N%3%_%C%H%a%C(B $B%;!<%8$H%Q%C%A$N@bL@$rJT=8$9$k!%(B %\item[\hgxopt{mq}{qfold}{-l}] Use the contents of the given file as the new % commit message and patch description for the folded patch. \item[\hgxopt{mq}{qfold}{-l}] $B%U%)!<%k%I$5$l$?%Q%C%A$N?7$7$$%3%_%C%H%a%C(B $B%;!<%85Z$S%Q%C%A$N@bL@$H$7$F!$M?$($i$l$?%U%!(B $B%$%k$r;HMQ$9$k!%(B %\item[\hgxopt{mq}{qfold}{-m}] Use the given text as the new commit message % and patch description for the folded patch. \item[\hgxopt{mq}{qfold}{-m}] $B%U%)!<%k%I$5$l$?%Q%C%A$N?7$7$$%3%_%C%H%a%C(B $B%;!<%85Z$S%Q%C%A$N@bL@$H$7$F!$M?$($i$l$?%F(B $B%-%9%H$rMQ$$$k!%(B \end{itemize} %\subsection{\hgxcmd{mq}{qheader}---display the header/description of a patch} \subsection{\hgxcmd{mq}{qheader}---$B%Q%C%A$N%X%C%@!?@bL@$rI=<((B} %The \hgxcmd{mq}{qheader} command prints the header, or description, of a %patch. By default, it prints the header of the topmost applied patch. %Given an argument, it prints the header of the named patch. \hgxcmd{mq}{qheader}$B%3%^%s%I$O%Q%C%A$N%X%C%@$^$?$O@bL@$rI=<($9$k!%%G%U%)(B $B%k%H$G$O:F>e0L$KE,MQ$5$l$?%Q%C%A$N%X%C%@$rI=<($9$k!%0z?t$,EO$5$l$k$H!$;X(B $BDj$5$l$?%Q%C%A$N%X%C%@$rI=<($9$k(B %\subsection{\hgxcmd{mq}{qimport}---import a third-party patch into the %queue} \subsection{\hgxcmd{mq}{qimport}---$B%5!<%I%Q!<%F%#$N%Q%C%A$r%-%e!<$X%$%s(B $B%]!<%H$9$k(B} %The \hgxcmd{mq}{qimport} command adds an entry for an external patch to the %\sfilename{series} file, and copies the patch into the %\sdirname{.hg/patches} directory. It adds the entry immediately after %the topmost applied patch, but does not push the patch. \hgxcmd{mq}{qimport}$B%3%^%s%I$O!$(B\sfilename{series}$B%U%!%$%k$K30It$N%Q%C%A(B $B$N$?$a$N%(%s%H%j$rDI2C$7!$%Q%C%A$r(B\sdirname{.hg/patches}$B%G%#%l%/%H%j$K%3(B $B%T!<$9$k!%DI2C$O:F>e0L$NE,MQ:Q$_%Q%C%A$ND>8e$K9T$o$l!$%Q%C%A$N%W%C%7%e$O(B $B9T$o$J$$!%(B %If the \sdirname{.hg/patches} directory is a repository, %\hgxcmd{mq}{qimport} automatically does an \hgcmd{add} of the imported %patch. \sdirname{.hg/patches}$B%G%#%l%/%H%j$,%j%]%8%H%j$N>l(B $B9g!$(B\hgxcmd{mq}{qimport}$B$O<+F0E*$K%$%s%]!<%H$5$l$?%Q%C%A$KBP$7$F(B \hgcmd{add}$B$r9T$&!%(B %\subsection{\hgxcmd{mq}{qinit}---prepare a repository to work with MQ} \subsection{\hgxcmd{mq}{qinit}---MQ$B$G;HMQ$9$k%j%]%8%H%j$rMQ0U$9$k(B} %The \hgxcmd{mq}{qinit} command prepares a repository to work with MQ. It %creates a directory called \sdirname{.hg/patches}. \hgxcmd{mq}{qinit}$B%3%^%s%I$O(BMQ$B$G;HMQ$9$k%j%]%8%H%j$rMQ0U$9(B $B$k!%(B\sdirname{.hg/patches}$B$H$$$&%G%#%l%/%H%j$,:n$i$l$k!%(B %Options: $B%*%W%7%g%s(B: \begin{itemize} %\item[\hgxopt{mq}{qinit}{-c}] Create \sdirname{.hg/patches} as a repository % in its own right. Also creates a \sfilename{.hgignore} file that % will ignore the \sfilename{status} file. \item[\hgxopt{mq}{qinit}{-c}] \sdirname{.hg/patches}$B$r%j%]%8%H%j$H$7$F!$(B $B%3%^%s%I<B9T;~$N8"8B$G:n@.$9$k!%F1;~$K(B \sfilename{status}$B%U%!%$%k$rL5;k$9$k$?$a$K(B \sfilename{.hgignore}$B%U%!%$%k$r:n@.$9$k!%(B \end{itemize} %When the \sdirname{.hg/patches} directory is a repository, the %\hgxcmd{mq}{qimport} and \hgxcmd{mq}{qnew} commands automatically \hgcmd{add} %new patches. \sdirname{.hg/patches}$B%G%#%l%/%H%j$,%j%]%8%H%j$N>l(B $B9g!$(B\hgxcmd{mq}{qimport}$B%3%^%s%I$H(B\hgxcmd{mq}{qnew}$B%3%^%s%I$O?7$7$$%Q%C(B $B%A$r<+F0E*$K(B\hgcmd{add}$B$9$k!%(B %\subsection{\hgxcmd{mq}{qnew}---create a new patch} \subsection{\hgxcmd{mq}{qnew}---$B?7$7$$%Q%C%A$r:n@.$9$k(B} %The \hgxcmd{mq}{qnew} command creates a new patch. It takes one mandatory %argument, the name to use for the patch file. The newly created patch %is created empty by default. It is added to the \sfilename{series} %file after the current topmost applied patch, and is immediately %pushed on top of that patch. \hgxcmd{mq}{qnew}$B%3%^%s%I$O?7$7$$%Q%C%A$r:n@.$9$k!%$3$N%3%^%s%I$OI,?\$N0z(B $B?t$H$7$F%Q%C%A%U%!%$%k$H$7$F;HMQ$9$kL>A0$r<h$k!%?75,$K:n@.$5$l$?%Q%C%A(B $B$O!$%G%U%)%k%H$G$O6u$G$"$j!$(B\sfilename{series}$B%U%!%$%k$K!$8=:_$N:F>e0L$N(B $BE,MQ$5$l$?%Q%C%A$ND>8e$KDI2C$5$l!$D>$A$K$=$N%Q%C%A$N>e$K%W%C%7%e$5$l$k!%(B %If \hgxcmd{mq}{qnew} finds modified files in the working directory, it will %refuse to create a new patch unless the \hgxopt{mq}{qnew}{-f} option is %used (see below). This behaviour allows you to \hgxcmd{mq}{qrefresh} your %topmost applied patch before you apply a new patch on top of it. \hgxcmd{mq}{qnew}$B$O!$%o!<%-%s%0%G%#%l%/%H%j$+$iJQ99$5$l$?%U%!%$%k$r8+$D$1(B $B$k$H!$(B\hgxopt{mq}{qnew}{-f}$B%*%W%7%g%s!J2<5-$r;2>H!K$,;H$o$l$J$$8B$j?7$7$$(B $B%Q%C%A$N:n@.$r5qH]$9$k!%$3$N5sF0$N$?$a!$:F>e0L$NE,MQ$5$l$?%Q%C%A$N>e$K?7(B $B$?$J%Q%C%A$rE,MQ$9$kA0$K!$(B\hgxcmd{mq}{qrefresh}$B$9$k$3$H$,$G$-$k!%(B %Options: $B%*%W%7%g%s(B: \begin{itemize} %\item[\hgxopt{mq}{qnew}{-f}] Create a new patch if the contents of the % working directory are modified. Any outstanding modifications are % added to the newly created patch, so after this command completes, % the working directory will no longer be modified. \item[\hgxopt{mq}{qnew}{-f}] $B%+%l%s%H%G%#%l%/%H%j$NFbMF$,99?7$5$l$F$$$k(B $B>l9g!$?7$7$$%Q%C%A$r:n@.$9$k!%8IN)$7$?JQ2&(B $B$O?75,$K:n@.$7$?%Q%C%A$KDI2C$5$l!$$3$N%3%^(B $B%s%I$,=*N;$9$k$H%o!<%-%s%0%G%#%l%/%H%j$OJQ(B $B99$J$7$N>uBV$K$J$k!%(B %\item[\hgxopt{mq}{qnew}{-m}] Use the given text as the commit message. % This text will be stored at the beginning of the patch file, before % the patch data. \item[\hgxopt{mq}{qnew}{-m}] $BM?$($i$l$?%F%-%9%H$r%3%_%C%H%a%C%;!<%8$H$7(B $B$FMQ$$$k!%$3$N%F%-%9%H$O%Q%C%A%U%!%$%k$N@h(B $BF,$G%G!<%?$NA0$K5-O?$5$l$k!%(B \end{itemize} %\subsection{\hgxcmd{mq}{qnext}---print the name of the next patch} \subsection{\hgxcmd{mq}{qnext}---$B<!$N%Q%C%A$NL>A0$rI=<($9$k(B} %The \hgxcmd{mq}{qnext} command prints the name of the next patch in %the \sfilename{series} file after the topmost applied patch. This %patch will become the topmost applied patch if you run \hgxcmd{mq}{qpush}. \hgxcmd{mq}{qnext}$B%3%^%s%I$O(B\sfilename{series}$B%U%!%$%k$N<!$N%Q%C%A$NL>A0(B $B$rI=<($9$k!%$3$N%Q%C%A$O!$(B\hgxcmd{mq}{qpush}$B$r<B9T$9$k$H:G>e0L$NE,MQ:Q$_(B $B%Q%C%A$H$J$k(B %\subsection{\hgxcmd{mq}{qpop}---pop patches off the stack} \subsection{\hgxcmd{mq}{qpop}---$B%9%?%C%/$+$i%Q%C%A$r%]%C%W$9$k(B} %The \hgxcmd{mq}{qpop} command removes applied patches from the top of the %stack of applied patches. By default, it removes only one patch. \hgxcmd{mq}{qpop}$B%3%^%s%I$OE,MQ$5$l$?%Q%C%A$N%9%?%C%/$N%H%C%W$+$i%Q%C%A(B $B$r=|5n$9$k!%%G%U%)%k%H$G$O%Q%C%A$r(B1$B$D=|5n$9$k!%(B %This command removes the changesets that represent the popped patches %from the repository, and updates the working directory to undo the %effects of the patches. $B$3$N%3%^%s%I$O%j%]%8%H%j$+$i%]%C%W$5$l$?%Q%C%A$rI=$9%A%'%s%8%;%C%H$r=|5n(B $B$7!$%o!<%-%s%0%G%#%l%/%H%j$r%Q%C%A$N8z2L$r=|5n$9$k$h$&$K99?7$9$k!%(B %This command takes an optional argument, which it uses as the name or %index of the patch to pop to. If given a name, it will pop patches %until the named patch is the topmost applied patch. If given a %number, \hgxcmd{mq}{qpop} treats the number as an index into the entries in %the series file, counting from zero (empty lines and lines containing %only comments do not count).It pops patches until the patch %identified by the given index is the topmost applied patch. $B$3$N%3%^%s%I$O%]%C%W$9$k%Q%C%A$NL>A0$d%$%s%G%C%/%9$H$7$F;H$&$?$a$K!$%*%W(B $B%7%g%s$N0z?t$r<h$k!%$3$N%3%^%s%I$O!$L>A0$,M?$($i$l$k$HL>A0$NIU$1$i$l$?%Q%C(B $B%A$,:G>e0L$NE,MQ:Q$_%Q%C%A$H$J$k$^$G%Q%C%A$r%]%C%W$9$k!%HV9f$,M?$($i$l$?(B $B>l9g!$(B\hgxcmd{mq}{qpop}$B$OHV9f$r0lO"$N%U%!%$%k$NCf$N%(%s%H%j$X$N%<%m$+$i?t(B $B$(;O$a$k!J6u9T$H%3%a%s%H9T$O?t$($J$$!K%$%s%G%C%/%9$H$7$F<h$j07$&!%$3$N%3(B $B%^%s%I$OM?$($?%$%s%G%C%/%9$N%Q%C%A$,:G>e0L$NE,MQ:Q$_%Q%C%A$H$J$k$^$G%Q%C(B $B%A$r%]%C%W$7B3$1$k!%(B %The \hgxcmd{mq}{qpop} command does not read or write patches or the %\sfilename{series} file. It is thus safe to \hgxcmd{mq}{qpop} a patch %that you have removed from the \sfilename{series} file, or a patch that %you have renamed or deleted entirely. In the latter two cases, use the %name of the patch as it was when you applied it. \hgxcmd{mq}{qpop}$B%3%^%s%I$O%Q%C%A$d(B\sfilename{$B%7%j!<%:(B}$B%U%!%$%k$rFI$_=q$-(B $B$7$J$$!%$=$N$?$a$9$G$K(B\sfilename{series}$B%U%!%$%k$+$i:o=|$7$?%Q%C%A$d!$40(B $BA4$K>C5n$7$?%Q%C%A$r(B\hgxcmd{mq}{qpop}$B$7$F$b0BA4$G$"$k!%(B $B8e$+$i=R$Y$?(B2$B$D$N%1!<%9$G$O!$%Q%C%A$rE,MQ$7$?;~$NL>A0;HMQ$9$k!%(B %By default, the \hgxcmd{mq}{qpop} command will not pop any patches if the %working directory has been modified. You can override this behaviour %using the \hgxopt{mq}{qpop}{-f} option, which reverts all modifications in %the working directory. $B%G%U%)%k%H$G$O(B\hgxcmd{mq}{qpop}$B%3%^%s%I$O!$%o!<%-%s%0%G%#%l%/%H%j$,JQ99(B $B$5$l$F$$$k>l9g$O$$$+$J$k%Q%C%A$b%]%C%W$7$J$$!%$3$N5sF0$O(B \hgxopt{mq}{qpop}{-f}$B%*%W%7%g%s$K$h$C$F%*!<%P%i%$%I2DG=$G!$$3$l$K$h$j!$(B $B%o!<%-%s%0%G%#%l%/%H%j$N$9$Y$F$NJQ99$,<h$j>C$5$l$k!%(B %Options: $B%*%W%7%g%s(B: \begin{itemize} %\item[\hgxopt{mq}{qpop}{-a}] Pop all applied patches. This returns the % repository to its state before you applied any patches. \item[\hgxopt{mq}{qpop}{-a}] $BE,MQ$5$l$?$9$Y$F$N%Q%C%A$r%]%C%W$9$k!%$3$N(B $B%3%^%s%I$O%Q%C%A$rE,MQ$9$kA0$N>uBV$X%j%]%8(B $B%H%j$rLa$9!%(B %\item[\hgxopt{mq}{qpop}{-f}] Forcibly revert any modifications to the % working directory when popping. \item[\hgxopt{mq}{qpop}{-f}] $B%]%C%W;~$K%o!<%-%s%0%G%#%l%/%H%j$X$N$"$i$f$k(B $B99?7$r6/@)E*$KLa$9!%(B %\item[\hgxopt{mq}{qpop}{-n}] Pop a patch from the named queue. \item[\hgxopt{mq}{qpop}{-n}] $BL>A0IU$1$5$l$?%-%e!<$+$i%Q%C%A$r(B1$B$D%]%C%W$9(B $B$k!%(B \end{itemize} %The \hgxcmd{mq}{qpop} command removes one line from the end of the %\sfilename{status} file for each patch that it pops. \hgxcmd{mq}{qpop}$B%3%^%s%I$O(B\sfilename{status}$B%U%!%$%k$NKvHx$+$i!$%]%C%W(B $B$5$l$?%Q%C%A$KBP1~$9$k9T$r(B1$B9T<h$j=|$/!%(B %\subsection{\hgxcmd{mq}{qprev}---print the name of the previous patch} \subsection{\hgxcmd{mq}{qprev}---$B0JA0$N%Q%C%A$NL>A0$rI=<($9$k(B} %The \hgxcmd{mq}{qprev} command prints the name of the patch in the %\sfilename{series} file that comes before the topmost applied patch. %This will become the topmost applied patch if you run \hgxcmd{mq}{qpop}. \hgxcmd{mq}{qprev}$B%3%^%s%I$O!$(B\sfilename{series}$B%U%!%$%kFb$K$"$k!$:G>e0L(B $B$NE,MQ:Q$_%Q%C%A$NA0%Q%C%A$NL>A0$rI=<($9$k!%$3$N%Q%C%A$O(B \hgxcmd{mq}{qpop}$B$r<B9T$9$k$H!$:G>e0L$N%Q%C%A$H$J$k!%(B %\subsection{\hgxcmd{mq}{qpush}---push patches onto the stack} \subsection{\hgxcmd{mq}{qpush}---$B%Q%C%A$r%9%?%C%/$K%W%C%7%e$9$k(B} \label{sec:mqref:cmd:qpush} %The \hgxcmd{mq}{qpush} command adds patches onto the applied stack. By %default, it adds only one patch. \hgxcmd{mq}{qpush}$B%3%^%s%I$O%Q%C%A$rE,MQ:Q$_%9%?%C%/$N>e$KDI2C$9$k!%%G%U%)(B $B%k%H$G$O!$$3$N%3%^%s%I$O%Q%C%A$r0l$D$@$1DI2C$9$k!%(B %This command creates a new changeset to represent each applied patch, %and updates the working directory to apply the effects of the patches. $B$3$N%3%^%s%I$OE,MQ$5$l$?%Q%C%A$R$H$D$R$H$D$K$D$$$F?7$?$J%A%'%s%8%;%C%H$r(B $B:n@.$7!$%o!<%-%s%0%G%#%l%/%H%j$K%Q%C%A$N1F6A$rE,MQ$9$k$h$&JQ99$r2C$($k!%(B %The default data used when creating a changeset are as follows: $B%A%'%s%8%;%C%H$r:n@.$9$k;~$KMQ$$$i$l$k%G%U%)%k%H%G!<%?$O<!$NDL$j$G$"$k(B: \begin{itemize} %\item The commit date and time zone are the current date and time % zone. Because these data are used to compute the identity of a % changeset, this means that if you \hgxcmd{mq}{qpop} a patch and % \hgxcmd{mq}{qpush} it again, the changeset that you push will have a % different identity than the changeset you popped. \item $B%3%_%C%H$NF|;~$H%?%$%`%>!<%s$K$O!$8=:_$NF|;~$H%?%$%`%>!<%s$,MQ$$$i(B $B$l$k!%$3$l$i$N%G!<%?$O%A%'%s%8%;%C%H$N%"%$%G%s%F%#%F%#$r7W;;$9$k$N(B $B$KMQ$$$i$l$k$?$a!$%Q%C%A$r(B\hgxcmd{mq}{qpop}$B$7$?8e!$:F$S(B \hgxcmd{mq}{qpush}$B$9$k$H!$(Bpush$B$K$h$k%A%'%s%8%;%C%H$O(Bpop$B$7$?;~$H0[(B $B$J$k%"%$%G%s%F%#%F%#$r;}$D!%(B %\item The author is the same as the default used by the \hgcmd{commit} % command. \item $B%*!<%5!<$O(B\hgcmd{commit}$B%3%^%s%IMQ$$$i$l$k%G%U%)%k%HCM$,MQ$$$i$l(B $B$k!%(B %\item The commit message is any text from the patch file that comes % before the first diff header. If there is no such text, a default % commit message is used that identifies the name of the patch. \item $B%3%_%C%H%a%C%;!<%8$O!$%Q%C%A%U%!%$%k$N:G=i$N(Bdiff$B%X%C%@$NA0$N$"$i$f(B $B$k%F%-%9%H$G$"$k!%$=$N$h$&$J%F%-%9%H$,B8:_$7$J$$>l9g!$%Q%C%A$NL>A0(B $B$r<1JL$9$k$N$K%G%U%)%k%H$N%3%_%C%H%a%C%;!<%8$,;H$o$l$k!%(B \end{itemize} %If a patch contains a Mercurial patch header (XXX add link), the %information in the patch header overrides these defaults. $B%Q%C%A$,(BMercurial$B$N%Q%C%A%X%C%@(B(XXX add link)$B$r4^$`>l9g!$%Q%C%A%X%C%@$N(B $B>pJs$,$3$l$i$N%G%U%)%k%HCM$r%*!<%P%i%$%I$9$k!%(B %Options: $B%*%W%7%g%s(B: \begin{itemize} %\item[\hgxopt{mq}{qpush}{-a}] Push all unapplied patches from the % \sfilename{series} file until there are none left to push. \item[\hgxopt{mq}{qpush}{-a}] \sfilename{series}$B%U%!%$%k$N$9$Y$F$NL$E,MQ(B $B%Q%C%A$r$9$Y$F%W%C%7%e$9$k(B %\item[\hgxopt{mq}{qpush}{-l}] Add the name of the patch to the end % of the commit message. \item[\hgxopt{mq}{qpush}{-l}] $B%Q%C%A$NL>A0$r%3%_%C%H%a%C%;!<%8$N:G8e$KDI(B $B2C$9$k!%(B %\item[\hgxopt{mq}{qpush}{-m}] If a patch fails to apply cleanly, use the % entry for the patch in another saved queue to compute the parameters % for a three-way merge, and perform a three-way merge using the % normal Mercurial merge machinery. Use the resolution of the merge % as the new patch content. \item[\hgxopt{mq}{qpush}{-m}] $B@5>o$K%Q%C%A$,E,MQ$G$-$J$+$C$?>l9g!$(B $B%Q%C%A(B $B$r(B3$B%&%'%$%^!<%8$9$k$?$a$N%Q%i%a!<%?$r!$(B $B%-%e!<$K%;!<%V$5$l$?B>$N%(%s%H%j!<(B $B$+$i7W;;$7!$DL>o$N(BMercurial$B$N%^!<%85!9=$r(B $BMQ$$$F(B3$B%&%'%$%^!<%8$r9T$&!%(B %\item[\hgxopt{mq}{qpush}{-n}] Use the named queue if merging while pushing. \item[\hgxopt{mq}{qpush}{-n}] $B%W%C%7%eCf$N%^!<%8$KL>A0$D$-%-%e!<$rMQ$$$k!%(B \end{itemize} %The \hgxcmd{mq}{qpush} command reads, but does not modify, the %\sfilename{series} file. It appends one line to the \hgcmd{status} %file for each patch that it pushes. \hgxcmd{mq}{qpush}$B%3%^%s%I$O(B\sfilename{series}$B%U%!%$%k$rFI$`$,JQ99$O9T$o(B $B$J$$!%$3$N%3%^%s%I$O%W%C%7%e$9$k3F!9$N%Q%C%A$rI=$99T$r(B\hgcmd{status}$B%U%!(B $B%$%k$KDI2C$9$k!%(B %\subsection{\hgxcmd{mq}{qrefresh}---update the topmost applied patch} \subsection{\hgxcmd{mq}{qrefresh}---$B:F>e0L$NE,MQ:Q$_%Q%C%A$r99?7$9$k(B} %The \hgxcmd{mq}{qrefresh} command updates the topmost applied patch. It %modifies the patch, removes the old changeset that represented the %patch, and creates a new changeset to represent the modified patch. \hgxcmd{mq}{qrefresh}$B%3%^%s%I$O:G>e0L$NE,MQ:Q$_%Q%C%A$r99?7$9$k!%$3$N%3%^(B $B%s%I$O%Q%C%A$rJQ99$7!$%Q%C%A$rI=$98E$$%A%'%s%8%;%C%H$r=|5n$7!$JQ99$5$l$?(B $B%Q%C%A$rI=$9?7$?$J%A%'%s%8%;%C%H$r@8@.$9$k!%(B %The \hgxcmd{mq}{qrefresh} command looks for the following %modifications: \hgxcmd{mq}{qrefresh}$B%3%^%s%I$O!$0J2<$N$h$&$JJQ99$rC5$9!%(B \begin{itemize} %\item Changes to the commit message, i.e.~the text before the first % diff header in the patch file, are reflected in the new changeset % that represents the patch. \item $B%3%_%C%H%a%C%;!<%8$X$NJQ99!%Nc$($P(B~$B%Q%C%A%U%!%$%k$NCf$N:G=i$N(Bdiff$B%X%C(B $B%@$NA0$N%F%-%9%H$O!$%Q%C%A$rI=$9?7$7$$%A%'%s%8%;%C%H$KH?1G$5$l$k!%(B %\item Modifications to tracked files in the working directory are % added to the patch. \item $B%o!<%-%s%0%G%#%l%/%H%j$NCf$N4IM}$5$l$F$$$k%U%!%$%k$X$NJQ99$O%Q%C%A(B $B$XDI2C$5$l$k!%(B %\item Changes to the files tracked using \hgcmd{add}, \hgcmd{copy}, % \hgcmd{remove}, or \hgcmd{rename}. Added files and copy and rename % destinations are added to the patch, while removed files and rename % sources are removed. \item $B%3%^%s%I(B\hgcmd{add}, \hgcmd{copy}, \hgcmd{remove}, \hgcmd{rename}$B$G(B $B4IM}$5$l$F$$$k%U%!%$%k$X$NJQ99!%DI2C$5$l$?%U%!%$%k!$%3%T!<!&%j%M!<(B $B%`@h$NL>A0$O%Q%C%A$KDI2C$5$l!$:o=|$5$l$?%U%!%$%k$H%j%M!<%`85$NL>A0(B $B$O%Q%C%A$+$i:o=|$5$l$k!%(B \end{itemize} %Even if \hgxcmd{mq}{qrefresh} detects no changes, it still recreates the %changeset that represents the patch. This causes the identity of the %changeset to differ from the previous changeset that identified the %patch. \hgxcmd{mq}{qrefresh}$B$O!$JQ99$r8!CN$7$J$+$C$?$H$7$F$b!$%Q%C%A$rI=$9?7$?$J(B $B%A%'%s%8%;%C%H$r:F@8@.$9$k!%$3$l$K$h$j!$%A%'%s%8%;%C%H$N%"%$%G%s%F%#%F%#(B $B$O!$%Q%C%A$rI=$7$F$$$?0JA0$N%A%'%s%8%;%C%H$N$b$N$H$OJL$N$b$N$K$J$k!%(B %Options: $B%*%W%7%g%s!'(B \begin{itemize} %\item[\hgxopt{mq}{qrefresh}{-e}] Modify the commit and patch description, % using the preferred text editor. \item[\hgxopt{mq}{qrefresh}{-e}] $B%3%_%C%H$H%Q%C%A$N@bL@$r9%$_$N%(%G%#%?(B $B$GJQ99$9$k!%(B %\item[\hgxopt{mq}{qrefresh}{-m}] Modify the commit message and patch % description, using the given text. \item[\hgxopt{mq}{qrefresh}{-m}] $B%3%_%C%H%a%C%;!<%8$H%Q%C%A$N@bL@$r!$M?(B $B$($i$l$?%F%-%9%H$G9T$&!%(B %\item[\hgxopt{mq}{qrefresh}{-l}] Modify the commit message and patch % description, using text from the given file. \item[\hgxopt{mq}{qrefresh}{-l}] $B%3%_%C%H%a%C%;!<%8$H%Q%C%A$N@bL@$rM?$((B $B$i$l$?%U%!%$%k$K$h$C$F9T$&!%(B \end{itemize} %\subsection{\hgxcmd{mq}{qrename}---rename a patch} \subsection{\hgxcmd{mq}{qrename}---$B%Q%C%A$N%j%M!<%`(B} %The \hgxcmd{mq}{qrename} command renames a patch, and changes the entry for %the patch in the \sfilename{series} file. \hgxcmd{mq}{qrename}$B%3%^%s%I$O%Q%C%A$r%j%M!<%`$7!$(B\sfilename{series}$B%U%!(B $B%$%kCf$N$3$N%Q%C%A$N%(%s%H%j$rJQ99$9$k!%(B %With a single argument, \hgxcmd{mq}{qrename} renames the topmost applied %patch. With two arguments, it renames its first argument to its %second. $B0z?t(B1$B$D$rM?$($?>l9g!$(B\hgxcmd{mq}{qrename}$B$O:G>e0L$NE,MQ:Q$_%Q%C%A$r%j%M!<(B $B%`$9$k!%0z?t(B2$B$D$N>l9g!$(B1$BHVL\$N0z?t$N%Q%C%A$r(B2$BHVL\$N0z?t$NL>A0$K%j%M!<%`(B $B$9$k!%(B %\subsection{\hgxcmd{mq}{qrestore}---restore saved queue state} \subsection{\hgxcmd{mq}{qrestore}---$B%;!<%V$5$l$?%-%e!<>uBV$KI|85$9$k(B} %XXX No idea what this does. XXX $B$3$N%3%^%s%I$,2?$r$9$k$+ITL@(B %\subsection{\hgxcmd{mq}{qsave}---save current queue state} \subsection{\hgxcmd{mq}{qsave}---$B8=:_$N%-%e!<>uBV$r%;!<%V$9$k(B} %XXX Likewise. XXX $BF1>e(B %\subsection{\hgxcmd{mq}{qseries}---print the entire patch series} \subsection{\hgxcmd{mq}{qseries}---$B%Q%C%A7ONs$rA4$FI=<((B} %The \hgxcmd{mq}{qseries} command prints the entire patch series from the %\sfilename{series} file. It prints only patch names, not empty lines %or comments. It prints in order from first to be applied to last. \hgxcmd{mq}{qseries}$B%3%^%s%I$O!$(B\sfilename{series}$B%U%!%$%k$K4^$^$l$k%Q%C(B $B%A7ONsA4$F$rI=<($9$k!%$3$N%3%^%s%I$O%Q%C%AL>$@$1$rI=<($7!$6u9T$d%3%a%s%H(B $B$OI=<($7$J$$!%:G=i$KE,MQ$5$l$?%Q%C%A$+$i:G8e$KE,MQ$5$l$?%Q%C%A$N=g$KI=<((B $B$9$k!%(B %\subsection{\hgxcmd{mq}{qtop}---print the name of the current patch} \subsection{\hgxcmd{mq}{qtop}---$B8=:_$N%Q%C%A$NL>A0$rI=<((B} %The \hgxcmd{mq}{qtop} prints the name of the topmost currently applied %patch. \hgxcmd{mq}{qtop}$B%3%^%s%I$O8=:_$N:G>e0L$NE,MQ:Q$_%Q%C%A$NL>A0$rI=<($9$k!%(B %\subsection{\hgxcmd{mq}{qunapplied}---print patches not yet applied} \subsection{\hgxcmd{mq}{qunapplied}---$BL$E,MQ$N%Q%C%A$rI=<((B} %The \hgxcmd{mq}{qunapplied} command prints the names of patches from the %\sfilename{series} file that are not yet applied. It prints them in %order from the next patch that will be pushed to the last. \hgxcmd{mq}{qunapplied}$B%3%^%s%I$O(B\sfilename{series}$B%U%!%$%k$K4^$^$l$k$9$Y(B $B$F$NL$E,MQ$N%Q%C%A$NL>A0$rI=<($9$k!%$3$N%3%^%s%I$O<!$KKvHx$K%W%C%7%e$5$l(B $B$k%Q%C%A$+$i=g$KI=<($9$k!%(B %\subsection{\hgcmd{strip}---remove a revision and descendants} \subsection{\hgcmd{strip}---$B%j%S%8%g%s$H$=$N;RB9$r:o=|(B} %The \hgcmd{strip} command removes a revision, and all of its %descendants, from the repository. It undoes the effects of the %removed revisions from the repository, and updates the working %directory to the first parent of the removed revision. \hgcmd{strip}$B%3%^%s%I$O%j%]%8%H%j$+$i(B1$B$D$N%j%S%8%g%s$H$=$N;RB9$r:o=|$9$k!%(B $B$3$N%3%^%s%I$O:o=|$5$l$?%j%S%8%g%s$N1F6A$r%j%]%8%H%j$+$i<h$j=|$-!$%o!<%-(B $B%s%0%G%#%l%/%H%j$r:o=|$5$l$?%j%S%8%g%s$N?F$N>uBV$K99?7$9$k!%(B %The \hgcmd{strip} command saves a backup of the removed changesets in %a bundle, so that they can be reapplied if removed in error. \hgcmd{strip}$B%3%^%s%I$O!$:o=|$5$l$?%A%'%s%8%;%C%H$N%P%C%/%"%C%W0l<0$rJ](B $BB8$9$k$N$G!$8m$C$F:o=|$7$?>l9g$J$I$K$O:FE,MQ$9$k$3$H$,$G$-$k!%(B %Options: $B%*%W%7%g%s!'(B \begin{itemize} %\item[\hgopt{strip}{-b}] Save unrelated changesets that are intermixed % with the stripped changesets in the backup bundle. \item[\hgopt{strip}{-b}] $B=|5n$7$?%A%'%s%8%;%C%H$H:.8r$7$?L54X78$N%A%'%s%8(B $B%;%C%H$r%P%C%/%"%C%W%P%s%I%k$KJ]B8$9$k(B %\item[\hgopt{strip}{-f}] If a branch has multiple heads, remove all % heads. XXX This should be renamed, and use \texttt{-f} to strip revs % when there are pending changes. \item[\hgopt{strip}{-f}] $B%V%i%s%A$,J#?t$N%X%C%I$r;}$C$F$$$k>l9g!$$9$Y$F$N(B $B%X%C%I$r>C5n$9$k!%(BXXX $B$3$N%*%W%7%g%s$O%j%M!<%`$5(B $B$l$k$Y$-$G!$(B\texttt{-f}$B$O%Z%s%G%#%s%0>uBV$NJQ99(B $B$,$"$k>l9g$K%j%S%8%g%s$r=|5n$9$k$N$KMQ$$$i$l$k$Y(B $B$-$G$"$k!%(B %\item[\hgopt{strip}{-n}] Do not save a backup bundle. \item[\hgopt{strip}{-n}] $B%P%C%/%"%C%W%P%s%I%k$rJ]B8$7$J$$!%(B \end{itemize} %\section{MQ file reference} \section{MQ $B%U%!%$%k%j%U%!%l%s%9(B} %\subsection{The \sfilename{series} file} \subsection{\sfilename{series}$B%U%!%$%k(B} %The \sfilename{series} file contains a list of the names of all %patches that MQ can apply. It is represented as a list of names, with %one name saved per line. Leading and trailing white space in each %line are ignored. \sfilename{series}$B%U%!%$%k$O(BMQ$B$,E,MQ$G$-$k$9$Y$F$N%Q%C%A$NL>A0$rJ];}$7$F(B $B$$$k!%$3$l$OL>A0$N%j%9%H$H$7$FI=8=$5$l$F$*$j!$(B1$B9T$K(B1$B$D$:$D%Q%C%AL>$r4^(B $B$`!%A08e$N6uGr$OL5;k$5$l$k!%(B %Lines may contain comments. A comment begins with the ``\texttt{\#}'' %character, and extends to the end of the line. Empty lines, and lines %that contain only comments, are ignored. $B9T$K$O%3%a%s%H$r4^$a$F$bNI$$!%%3%a%s%H$O(B``\texttt{\#}''$BJ8;z$G;O$^$j!$9T(B $BKv$^$GB3$/!%6u9T$H%3%a%s%H$N$_$N9T$OL5;k$5$l$k!%(B %You will often need to edit the \sfilename{series} file by hand, hence %the support for comments and empty lines noted above. For example, %you can comment out a patch temporarily, and \hgxcmd{mq}{qpush} will skip %over that patch when applying patches. You can also change the order %in which patches are applied by reordering their entries in the %\sfilename{series} file. $B%3%a%s%H$H6u9T$N$?$a$K(B\sfilename{series}$B$r<j$GJT=8$9$kI,MW$,@8$8$k$3$H$,(B $B$"$k!%Nc$($P!$$"$k%Q%C%A$r0l;~E*$K%3%a%s%H%"%&%H$7$F!$(B\hgxcmd{mq}{qpush} $B$,%Q%C%AE,MQ;~$K$=$N%Q%C%A$r%9%-%C%W$9$k$h$&$K$9$k$J$I$,9M$($i$l$k!%$^(B $B$?!$%Q%C%A$NE,MQ$5$l$k=gHV$r(B\sfilename{series}$B$rJT=8$9$k$3$H$K$h$C$FJQ99(B $B$9$k$3$H$b$G$-$k!%(B %Placing the \sfilename{series} file under revision control is also %supported; it is a good idea to place all of the patches that it %refers to under revision control, as well. If you create a patch %directory using the \hgxopt{mq}{qinit}{-c} option to \hgxcmd{mq}{qinit}, this %will be done for you automatically. \sfilename{series}$B%U%!%$%k$r%j%S%8%g%s%3%s%H%m!<%k$N2<$KCV$/$3$H$b%5%]!<(B $B%H$5$l$F$$$k!%$3$N%U%!%$%k$,;2>H$9$k$9$Y$F$N%Q%C%A$r%j%S%8%g%s%3%s%H%m!<(B $B%k2<$K$*$/$3$H$ONI$$9M$($G$"$k!%(B\hgxcmd{mq}{qinit}$B%3%^%s%I$K(B \hgxopt{mq}{qinit}{-c}$B%*%W%7%g%s$rEO$7$F;H$$!$D>@\%Q%C%A$r@8@.$7$?>l9g(B $B$O!$<+F0E*$K$3$N$h$&$J>uBV$K$J$k!%(B %\subsection{The \sfilename{status} file} \subsection{\sfilename{status}$B%U%!%$%k(B} %The \sfilename{status} file contains the names and changeset hashes of %all patches that MQ currently has applied. Unlike the %\sfilename{series} file, this file is not intended for editing. You %should not place this file under revision control, or modify it in any %way. It is used by MQ strictly for internal book-keeping. \sfilename{status}$B%U%!%$%k$O(BMQ$B$,8=:_E,MQ$7$F$$$k$9$Y$F$N%Q%C%A$NL>A0$H%A%'(B $B%s%8%;%C%H%O%C%7%e$r;}$D!%(B\sfilename{series}$B%U%!%$%k$H0c$C$F!$$3$N%U%!%$(B $B%k$OJT=8$5$l$k$3$H$r0U?^$7$F$$$J$$!%$3$N%U%!%$%k$O%j%S%8%g%s4IM}$7$?$j!$(B $BJT=8$7$?$j$9$Y$-$G$O$J$$!%$3$l$O(BMQ$B$K$h$C$FFbIt$N4IM}$KMQ$$$i$l$k$Y$-$b$N(B $B$G$"$k!%(B %%% Local Variables: %%% mode: yatex %%% TeX-master: "00book" %%% End: