hgbook

annotate ja/tour-merge.tex @ 868:f817270b9234

Update home page.
author Bryan O'Sullivan <bos@serpentine.com>
date Thu Sep 10 14:45:51 2009 -0700 (2009-09-10)
parents
children
rev   line source
foozy@708 1 \chapter{A tour of Mercurial: merging work}
foozy@708 2 \label{chap:tour-merge}
foozy@708 3
foozy@708 4 $BA0>O$K$*$$$F$O!"(B
foozy@708 5 $B%j%]%8%H%j$NJ#@=!"(B
foozy@708 6 $B%j%]%8%H%j$G$N%A%'%s%8%;%C%H$N@8@.!"(B
foozy@708 7 $B$J$i$S$K(B \hgcmd{push} $B$*$h$S(B \hgcmd{pull}
foozy@708 8 $B$K$h$k%j%]%8%H%j4V$G$N%A%'%s%8%;%C%H$N<x<u$r8+$F$-$^$7$?!#(B
foozy@708 9 $B<!$NCJ3,$H$7$F!"JL!9$N%j%]%8%H%j$K$*$1$kJQ99$N(B\emph{$B%^!<%8(B}
foozy@708 10 $B!J(Bmerge$B!K$K$D$$$F8+$F$_$^$7$g$&!#(B
foozy@708 11
foozy@708 12 \section{Merging streams of work}
foozy@708 13
foozy@708 14 $BJ,;69=@.4IM}%D!<%k$K$*$$$F!"%^!<%8$O:n6H$N4pK\$G$9!#(B
foozy@708 15
foozy@708 16 \begin{itemize}
foozy@708 17 \item Alice $B$H(B Bob $B$,!"(B
foozy@708 18 $B6&F1:n6H$7$F$$$k%W%m%8%'%/%H$N%j%]%8%H%j$+$iJ#@=$7$?!"(B
foozy@708 19 $B8D?ME*$J%j%]%8%H%j$r;}$C$F$$$k$b$N$H$7$^$9!#(B
foozy@708 20 Alice $B$O<+J,$N%j%]%8%H%j$K$*$$$F%P%0$r=$@5$7$^$7$?!#(B
foozy@708 21 Bob $B$O<+J,$N%j%]%8%H%j$K$*$$$F5!G=$rDI2C$7$^$7$?!#(B
foozy@708 22 $BFs?M$O!"(B
foozy@708 23 $B%P%0%U%#%C%/%9$H?75!G=$NN>J}$r4^$`%j%]%8%H%j$r6&M-$7$?$$$H;W$&$G$7$g$&!#(B
foozy@708 24
foozy@708 25 \item $BI.<T$O!"(B
foozy@708 26 $B8DJL$N%j%]%8%H%j$K$h$C$F!"(B
foozy@708 27 $B$*8_$$$,0BA4$K3VN%$5$l$?J#?t$N0[$J$k:n6H$r!"(B
foozy@708 28 $BF10l%W%m%8%'%/%H$K$*$$$FF1;~$K<B;\$9$k$3$H$,IQHK$K$"$j$^$9!#(B
foozy@708 29 $B$3$N7A<0$G$N:n6H$G$O!"(B
foozy@708 30 $B$"$k%j%]%8%H%j$K$*$1$k@.2L$r!"(B
foozy@708 31 $BB>$N%j%]%8%H%j$KBP$7$FIQHK$K%^!<%8$9$kI,MW$,$"$j$^$9!#(B
foozy@708 32
foozy@708 33 \end{itemize}
foozy@708 34
foozy@708 35 $B%^!<%8$OI,MW$K1~$8$F<B;\$9$k$"$j$U$l$?:n6H$G$9$N$G!"(B
foozy@708 36 Mercurial $B$G$O4JC1$K9T$($k$h$&$K$J$C$F$$$^$9!#(B
foozy@708 37 $B$=$l$G$O!"%^!<%8<j=g$r8+$F9T$-$^$7$g$&!#(B
foozy@708 38 $B$b$&0lEY%j%]%8%H%j$NJ#@=$r9T$$!J$b$&2?EY$bJ#@=$7$^$7$?$h$M!)!K!"(B
foozy@708 39 $B$=$N%j%]%8%H%j$K$*$$$FJQ99$r9T$$$^$9!#(B
foozy@708 40
foozy@708 41 \interaction{tour.merge.clone}
foozy@708 42
foozy@708 43 $B$3$N;~E@$G!"(B
foozy@708 44 $BFbMF$N0[$J$k#2$D$N(B \filename{hello.c} $B$N%3%T!<$,B8:_$9$k$O$:$G$9!#(B
foozy@708 45 $B#2$D$N%j%]%8%H%j$NMzNr$O!"(B
foozy@708 46 $B?^(B~\ref{fig:tour-merge:sep-repos} $B$K<($9$h$&$K!"(B
foozy@708 47 $B;^J,$+$l$7$F$$$^$9!#(B
foozy@708 48
foozy@708 49 \interaction{tour.merge.cat}
foozy@708 50
foozy@708 51 \begin{figure}[ht]
foozy@708 52 \centering
foozy@708 53 \grafix{tour-merge-sep-repos}
foozy@708 54 \caption{Divergent recent histories of the \dirname{my-hello} and
foozy@708 55 \dirname{my-new-hello} repositories}
foozy@708 56 \label{fig:tour-merge:sep-repos}
foozy@708 57 \end{figure}
foozy@708 58
foozy@708 59 \hgcmd{pull} $B$r9T$C$F$b!"(B
foozy@708 60 $B:n6HNN0h%G%#%l%/%H%j$K$O1F6A$r5Z$\$5$J$$$3$H$O4{$K@bL@$7$?$H$*$j$G$9$N$G!"(B
foozy@708 61 \dirname{my-hello} $B$+$i(B \hgcmd{pull} $B$7$F$_$^$7$g$&!#(B
foozy@708 62
foozy@708 63 \interaction{tour.merge.pull}
foozy@708 64
foozy@708 65 $B:n6HNN0h%G%#%l%/%H%j$K$O1F6A$r5Z$\$7$F$$$^$;$s$,!"(B
foozy@708 66 \hgcmd{pull} $B%3%^%s%I$O(B ``heads'' $B$K$D$$$F2?$+7Y9p$7$F$$$^$9!#(B
foozy@708 67
foozy@708 68 \subsection{Head changesets}
foozy@708 69
foozy@708 70 ``head'' $B$H$O!"(B
foozy@708 71 $B%j%]%8%H%jCf$K$*$$$F!"(B
foozy@708 72 $B;RB9!J$J$$$7;R6!!K$H$J$k%A%'%s%8%;%C%H$,B8:_$7$J$$%A%'%s%8%;%C%H$N$3$H$G$9!#(B
foozy@708 73 $B%j%]%8%H%j$K$*$1$k:G$b:G?7$N%j%S%8%g%s$O!"(B
foozy@708 74 $B0l@Z$N;R%A%'%s%8%;%C%H$r;}$A$^$;$s$+$i!"(B
foozy@708 75 $B=>$C$F(B tip $B%j%S%8%g%s$O(B head $B$H$J$j$^$9$,!"(B
foozy@708 76 $B#1$D$N%j%]%8%H%j$K$OJ#?t$N(B head $B$,B8:_$7$($^$9!#(B
foozy@708 77
foozy@708 78 \begin{figure}[ht]
foozy@708 79 \centering
foozy@708 80 \grafix{tour-merge-pull}
foozy@708 81 \caption{Repository contents after pulling from \dirname{my-hello} into
foozy@708 82 \dirname{my-new-hello}}
foozy@708 83 \label{fig:tour-merge:pull}
foozy@708 84 \end{figure}
foozy@708 85
foozy@708 86 \dirname{my-hello} $B$+$i(B \dirname{my-new-hello} $B$X$N(B
foozy@708 87 \hgcmd{pull} $B$K$h$k1F6A$r!"(B
foozy@708 88 $B?^(B~\ref{fig:tour-merge:pull} $B$G8+$k$3$H$,$G$-$^$9!#(B
foozy@708 89 $B4{$K(B \dirname{my-new-hello} $B$KB8:_$7$F$$$?MzNr$K$O<j$,IU$1$i$l$F$$$^$;$s$,!"(B
foozy@708 90 $B?7$7$$%j%S%8%g%s$,DI2C$5$l$F$$$^$9!#(B
foozy@708 91 $B?^(B~\ref{fig:tour-merge:pull} $B$+$i$O!"(B
foozy@708 92 $B?7$7$$%j%]%8%H%j!J(B\dirname{my-new-hello}$B!K$K$*$$$F!"(B
foozy@708 93 \emph{$B%A%'%s%8%;%C%H<1JL;R(B}$B$OF1$8$^$^$G$b!"(B
foozy@708 94 \emph{$B%j%S%8%g%sHV9f(B}$B$,0[$J$kMM$,FI$_<h$l$^$9(B
foozy@708 95 $B!J$=$7$F!"?^$i$:$b!"%A%'%s%8%;%C%H$K$D$$$FOC$r$9$k:]$K!"(B
foozy@708 96 $B%j%S%8%g%sHV9f$r;HMQ$9$k$N$,NI$/$J$$!"$H$$$&9%Nc$K$J$C$F$$$^$9!K!#(B
foozy@708 97 \hgcmd{heads} $B%3%^%s%I$K$h$j!"(B
foozy@708 98 $B%j%]%8%H%j$N(B head $B$r8+$k$3$H$,$G$-$^$9!#(B
foozy@708 99
foozy@708 100 \interaction{tour.merge.heads}
foozy@708 101
foozy@708 102 \subsection{Performing the merge}
foozy@708 103
foozy@708 104 $B:n6HNN0h%G%#%l%/%H%j$r!"(B
foozy@708 105 $B!J(B\dirname{my-hello} $B$+$i<h$j9~$s$@!K?7$?$J(B tip $B%j%S%8%g%s$K99?7$9$k$?$a$K!"(B
foozy@708 106 $B$$$D$b$N$h$&$K(B \hgcmd{update} $B%3%^%s%I$r<B9T$9$k$H!"(B
foozy@708 107 $B$I$&$J$k$G$7$g$&!)(B
foozy@708 108
foozy@708 109 \interaction{tour.merge.update}
foozy@708 110
foozy@708 111 Mercurial $B$+$i!"(B
foozy@708 112 \hgcmd{update} $B%3%^%s%I$G$O%^!<%8$,9T$o$l$J$$;]$,DLC#$5$l$^$9!#(B
foozy@708 113 $B%^!<%8$N<B;\$,I,MW$H;W$o$l$k>l9g!"(B
foozy@708 114 $B6/@)E*$J<B9T$r$7$J$$8B$j$O(B
foozy@708 115 \hgcmd{update} $B%3%^%s%I$K$h$k:n6HNN0h%G%#%l%/%H%j$N99?7$O9T$o$l$^$;$s!#(B
foozy@708 116 \hgcmd{update} $B%3%^%s%I$NBe$o$j$K!"(B
foozy@708 117 \hgcmd{merge} $B%3%^%s%I$rMQ$$$F#2$D$N(B head $B$r%^!<%8$7$^$9!#(B
foozy@708 118
foozy@708 119 \interaction{tour.merge.merge}
foozy@708 120
foozy@708 121 \begin{figure}[ht]
foozy@708 122 \centering
foozy@708 123 \grafix{tour-merge-merge}
foozy@708 124 \caption{Working directory and repository during merge, and
foozy@708 125 following commit}
foozy@708 126 \label{fig:tour-merge:merge}
foozy@708 127 \end{figure}
foozy@708 128
foozy@708 129 \hgcmd{merge} $B%3%^%s%I$K$h$C$F!"(B
foozy@708 130 \hgcmd{parents} $B%3%^%s%I$N=PNO!"(B
foozy@708 131 $B$*$h$S(B \filename{hello.c} $B$NFbMF$NJQ99$H$$$&7A$G!"(B
foozy@708 132 \emph{$BN>J}(B}$B$N(B head $B$NJQ99FbMF$,:n6HNN0h%G%#%l%/%H%j$KH?1G$5$l$^$9!#(B
foozy@708 133
foozy@708 134 \interaction{tour.merge.parents}
foozy@708 135
foozy@708 136 \subsection{Committing the results of the merge}
foozy@708 137
foozy@708 138 $B7k2L$r(B \hgcmd{commit} $B$9$k$^$G$O!"(B
foozy@708 139 \hgcmd{parents} $B$O%^!<%8$N:]$K$O>o$K#2$D$N?F!J%A%'%s%8%;%C%H!K$rI=<($7$^$9!#(B
foozy@708 140
foozy@708 141 \interaction{tour.merge.commit}
foozy@708 142
foozy@708 143 $B$3$l$G!"?7$7$$(B tip $B%j%S%8%g%s$,:n@.$5$l$^$7$?!#(B
foozy@708 144 $B@h=R$7$?#2$D$N(B head $B$N(B\emph{$BN>J}(B}$B$r?F$K;}$DE@$KCm0U$7$F$/$@$5$$!#(B
foozy@708 145 $B$3$l$i$O!"@h$K(B \hgcmd{parents} $B$GI=<($7$?%j%S%8%g%s$H0lCW$7$^$9!#(B
foozy@708 146
foozy@708 147 \interaction{tour.merge.tip}
foozy@708 148
foozy@708 149 $B:n6HNN0h%G%#%l%/%H%j$,%^!<%8$N:]$K$I$N$h$&$K$J$C$F$$$k$N$+!"(B
foozy@708 150 $B$=$7$F%3%_%C%H$K$h$C$F$I$N$h$&$K%j%]%8%H%j$K:nMQ$9$k$N$+$r!"(B
foozy@708 151 $B?^(B~\ref{fig:tour-merge:merge} $B$+$iFI$_<h$k$3$H$,$G$-$^$9!#(B
foozy@708 152 $B%^!<%8$N:]$K:n6HNN0h%G%#%l%/%H%j$N?F$G$"$C$?#2$D$N%A%'%s%8%;%C%H$O!"(B
foozy@708 153 $B%3%_%C%H$N:]$K$O?7$?$J%A%'%s%8%;%C%H$K$H$C$F$N?F%A%'%s%8%;%C%H$H$J$j$^$9!#(B
foozy@708 154
foozy@708 155 \section{Merging conflicting changes}
foozy@708 156
foozy@708 157 $BKX$I$N%^!<%8:n6H$O4JC1$K:Q$_$^$9$,!"(B
foozy@708 158 $B;~$K$O%^!<%8BP>]$N%A%'%s%8%;%C%HF1;N$,!"(B
foozy@708 159 $BF1$8%U%!%$%k$NF1$8It0L$rJQ99$7$F$$$k>l9g$,$"$j$^$9!#(B
foozy@708 160 $BN><T$NJQ99FbMF$,F10l$GL5$1$l$P!"(B
foozy@708 161 $B%^!<%8$O(B\emph{$B>WFM(B}$B!J(Bconflict$B!K$r@8$8$k$?$a!"(B
foozy@708 162 $BN><T$N0[$J$kJQ99FbMF$rN>N)$5$;$F(B
foozy@708 163 $B2?$i$+$N0l4S@-$N<h$l$?>uBV$K$9$k$?$a$N7hCG$,I,MW$G$9!#(B
foozy@708 164
foozy@708 165 \begin{figure}[ht]
foozy@708 166 \centering
foozy@708 167 \grafix{tour-merge-conflict}
foozy@708 168 \caption{Conflicting changes to a document}
foozy@708 169 \label{fig:tour-merge:conflict}
foozy@708 170 \end{figure}
foozy@708 171
foozy@708 172 $BJ8=q$KBP$9$k#2$D$NJQ99$N>WFM$NNc$r!"(B
foozy@708 173 $B?^(B~\ref{fig:tour-merge:conflict} $B$,?^<($7$F$$$^$9!#(B
foozy@708 174 $BN><T$O%U%!%$%k$NF1$8HG$r85$K$7$F$$$^$9$,!"(B
foozy@708 175 $B0lJ}$,JQ99$r9T$&K5$i!"(B
foozy@708 176 $BB>J}$,F1$8CJMn$KBP$7$F0[$J$kJQ99$r$7$F$7$^$$$^$9!#(B
foozy@708 177 $BJQ99$N>WFM$r2r>C$9$k:n6H$H$O!"(B
foozy@708 178 $B$=$N%U%!%$%k$,$I$N$h$&$K$J$C$F$$$k$Y$-$+$r7hDj$9$k$3$H$KB>$J$j$^$;$s!#(B
foozy@708 179
foozy@708 180 Mercurial $B$K$O>WFM$r07$&5!G=$,AH$_9~$^$l$F$$$^$;$s!#(B
foozy@708 181 $B$=$NBe$o$j$K!"(B
foozy@708 182 \command{hgmerge} $B$H8F$P$l$k30It%W%m%0%i%`$r<B9T$7$^$9!#(B
foozy@708 183 $B$3$N%W%m%0%i%`$O!"(B
foozy@708 184 Mercurial $B$KE:IU$5$l$k%7%'%k%9%/%j%W%H(B\footnote{$BLuCm(B:
foozy@708 185 \command{/bin/sh} $B8~$1$@$+$i!"$H$$$&$3$H$J$N$G$7$g$&$,!"(B
foozy@708 186 Windows $B$N%P%$%J%jHG$K$OE:IU$5$l$F$$$^$;$s!#(B}$B$G$9$,!"(B
foozy@708 187 $BJL$J%W%m%0%i%`$r5/F0$5$;$k$3$H$b$G$-$^$9!#(B
foozy@708 188 \command{hgmerge} $B$N4pDlF0:n$G$O!"(B
foozy@708 189 $B4v$D$+$NCxL>$J%^!<%8%D!<%k$N$&$A!"(B
foozy@708 190 $B2TF/4D6-$K$*$$$F%$%s%9%H!<%k$5$l$F$$$k$H;W$o$l$k$b$N$rC5$7$^$9!#(B
foozy@708 191 $B$^$:;O$a$K!"(B
foozy@708 192 $BHsBPOCE*%^!<%8%D!<%k(B\footnote{$BLuCm(B:
foozy@708 193 \command{diff3} $B$d(B \command{merge} $B$J$I(B}$B$r<B9T$7$F$_$^$9$,!"(B
foozy@708 194 $B!J?M<j$K$h$C$F2r7h$9$kI,MW@-$,$"$k$?$a$K!K$=$l$,<:GT$7$?>l9g$d!"(B
foozy@708 195 $B$=$b$=$b$=$l$i$N%D!<%k$,Ds6!$5$l$F$$$J$$>l9g!"(B
foozy@708 196 $BB>$N%0%i%U%#%+%k$J%^!<%8%D!<%k$N5/F0$r;n$_$^$9(B
foozy@708 197 \footnote{$BLuCm(B: $BNc$($P!"(B
foozy@708 198 \command{diff3} $B$K$h$k%^!<%8$r9T$$!"(B
foozy@708 199 $B>WFM$,8!=P$5$l$?>l9g$O$=$N%U%!%$%k$4$H$K!"(B
foozy@708 200 \envar{EDITOR} $B4D6-JQ?t$GDj5A$5$l$k%(%G%#%?!J$J$$$7(B \command{vi}$B!K(B
foozy@708 201 $B$r5/F0$7$F!"(B
foozy@708 202 $B$=$l$>$l$N%A%'%s%8%;%C%H$KM3Mh$9$kJQ99$N4V$G$ND4Dd$rMW5a$7$F$-$^$9!#(B
foozy@708 203 }$B!#(B
foozy@708 204
foozy@708 205 \envar{HGMERGE}
foozy@708 206 $B4D6-JQ?t$K5/F0BP>]%W%m%0%i%`$J$$$7%9%/%j%W%HL>$r@_Dj$9$k$3$H$G!"(B
foozy@708 207 Mercurial $B$K(B \command{hgmerge} $B0J30$r5/F0$5$;$k;v$b$G$-$^$9(B
foozy@708 208
foozy@708 209 \subsection{Using a graphical merge tool}
foozy@708 210
foozy@708 211 $BCx<T$N$*A&$a$N%0%i%U%#%+%k$J%^!<%8%D!<%k$O(B \command{kdiff3} $B$J$N$G!"(B
foozy@708 212 $B%0%i%U%#%+%k$J%U%!%$%k%^!<%8%D!<%k$K5a$a$i$l$k5!G=$K$D$$$F!"(B
foozy@708 213 $B$3$l$rBj:`$K@bL@$7$h$&$H;W$$$^$9!#(B
foozy@708 214 $B:n6HCf$N2hLL%$%a!<%8$,?^(B~\ref{fig:tour-merge:kdiff3}$B$K$"$j$^$9!#(B
foozy@708 215 $BCeL\$7$F$$$k#1$D$N%U%!%$%k$KBP$7$F!"(B
foozy@708 216 $B#3$D$N0[$J$k%j%S%8%g%s$,B8:_$9$k$3$H$+$i!"(B
foozy@708 217 $B%^!<%8J}K!$O(B\emph{$B#3J}8~%^!<%8(B}$B!J(Bthree-way merge$B!K$H8F$P$l$F$$$^$9!#(B
foozy@708 218 $B$=$l$f$(!"%^!<%8%D!<%k$O%&%#%s%I%&>eIt$r#3$D$N6h2h$KJ,3d$7$F$$$^$9!#(B
foozy@708 219
foozy@708 220 \begin{itemize}
foozy@708 221 \item $B:8C<$KI=<($5$l$F$$$k$N$O!"(B
foozy@708 222 $B%U%!%$%k$N(B\emph{$B85(B}$B!J(Bbase$B!K$NHG!"(B
foozy@708 223 $B$D$^$j%^!<%8BP>]$H$7$F$$$k#2$D$NHG$K$H$C$F!"(B
foozy@708 224 $B:G$b?7$7$$J,4t85$H$J$C$F$$$kHG$G$9!#(B
foozy@708 225
foozy@708 226 \item $BCf1{$KI=<($5$l$F$$$k$N$O!"(B
foozy@708 227 $B%^!<%8(B``$B@h(B''$B$NHG(B\footnote{$BLuCm(B: $B86J8$G$O!V(B``our'' version$B!W(B}$B$G$9$N$G!"(B
foozy@708 228 $B:n6HNN0h%G%#%l%/%H%j$K$*$1$kJQ99FbMF$,I=<($5$l$^$9!#(B
foozy@708 229
foozy@708 230 \item $B1&C<$KI=<($5$l$F$$$k$N$O!"(B
foozy@708 231 $B%^!<%8(B``$B85(B''\footnote{$BLuCm(B: $B86J8$G$O!V(B``their'' version$B!W(B}$B$G$9$N$G!"(B
foozy@708 232 $B%^!<%8$7$h$&$H$7$F$$$k%A%'%s%8%;%C%H$KM3Mh$9$kFbMF$,I=<($5$l$^$9!#(B
foozy@708 233
foozy@708 234 \end{itemize}
foozy@708 235
foozy@708 236 $B$3$l$i$N6h2h$N2<J}$KI=<($5$l$F$$$k$N$O!"(B
foozy@708 237 $B8=;~E@$G$N%^!<%8(B\emph{$B7k2L(B}$B$G$9!#(B
foozy@708 238 $B%^!<%8$K$*$1$k:n6H$H$O!"(B
foozy@708 239 $B2hLL>e$K@V;z$GI=<($5$l$?(B\footnote{$BLuCm(B:
foozy@708 240 \command{diff3} $B$,9TC10L$G$N>WFMI=<($G$"$k$N$KHf$Y$F!"(B
foozy@708 241 GUI $B$G$"$kMxE@$,@8$-$F$$$^$9!#(B}$B!"(B
foozy@708 242 $B?5=E$J%U%!%$%k$N%^!<%8$,I,MW$H$5$l$kL$2r7h$N>WFM$r!"(B
foozy@708 243 $BBEEv$JFbMF$GCV$-49$($k$3$H$G$9!#(B
foozy@708 244
foozy@708 245 $B$3$l$i#4$D$N6h2h$O(B\emph{$B8_$$$K8GDj(B}$B$5$l$F$$$k$N$G!"(B
foozy@708 246 $B$$$:$l$+$N6h2h$r%9%/%m!<%k$5$;$?>l9g$K$O!"(B
foozy@708 247 $BB>$N6h2h$bAj1~$N>l=j$rI=<($9$k$h$&$K99?7$5$l$^$9!#(B
foozy@708 248
foozy@708 249 \begin{figure}[ht]
foozy@708 250 \centering
foozy@708 251 \grafixL{kdiff3}
foozy@708 252 \label{fig:tour-merge:kdiff3}
foozy@708 253 \caption{Using \command{kdiff3} to merge versions of a file}
foozy@708 254 \end{figure}
foozy@708 255
foozy@708 256 $B%U%!%$%kCf$N8D!9$N>WFM2U=j$K$*$$$F!"(B
foozy@708 257 $B>WFM$r2r>C$9$k$?$a$K!"(B
foozy@708 258 $B85HG!?%^!<%8@hHG!?%^!<%885HG$N%F%-%9%H$r(B
foozy@708 259 $B!J$=$l$i$NAH$_9g$o$;$b4^$a$F!KG$0U$KA*Br$9$k$3$H$,$G$-$^$9!#(B
foozy@708 260 $B$^$?!"99$J$kJQ99$r9T$&$?$a$K!"(B
foozy@708 261 $B%^!<%87k2L$rD>@\<j$GF~NO$9$k$3$H$b$G$-$^$9!#(B
foozy@708 262
foozy@708 263 $B$3$3$G>R2p$7@Z$l$J$$$[$I(B\emph{$BB?$/$N(B}$B%U%!%$%k%^!<%8%D!<%k$,B8:_$7$^$9!#(B
foozy@708 264 $B$3$l$i$O$=$l$>$l!"2TF02DG=%W%i%C%H%[!<%`$d!"(B
foozy@708 265 $BFCD'E*$JF@<jITF@<j$J$I$NE@$G0[$J$j$^$9!#(B
foozy@708 266 $BKX$I$N%D!<%k$O%F%-%9%H%U%!%$%k$N%^!<%8$KFC2=$7$F$$$^$9$,!"(B
foozy@708 267 $BCf$K$OFCDj$N%U%!%$%k%U%)!<%^%C%H!J0lHL$K$O(B XML$B!K(B
foozy@708 268 $B$KFC2=$7$?$b$N$b$"$j$^$9!#(B
foozy@708 269
foozy@708 270 \subsection{A worked example}
foozy@708 271
foozy@708 272 $BK\@a$G$NNc$G$O!"(B
foozy@708 273 $BA0=R$N?^(B~\ref{fig:tour-merge:conflict}
foozy@708 274 $B$K$*$1$k%U%!%$%k99?7$NMzNr$r:F8=$7$^$9!#(B
foozy@708 275 $B85$H$J$kHG$N%U%!%$%k$r3JG<$7$?%j%]%8%H%j$r:n@.$9$k$3$H$+$i;O$a$^$7$g$&(B
foozy@708 276 \footnote{$BLuCm(B: $B<B9TNc$G$O!"(B
foozy@708 277 $B?75,$N%j%]%8%H%j$G$"$k(B \dirname{scam} $B$N(B \hgcmd{init} $B$,H4$1$F$$$^$9!#(B}$B!#(B
foozy@708 278
foozy@708 279 \interaction{tour-merge-conflict.wife}
foozy@708 280
foozy@708 281 $B<!$K!"%j%]%8%H%j$rJ#@=$7!"%U%!%$%k$rJQ99$7$^$9!#(B
foozy@708 282
foozy@708 283 \interaction{tour-merge-conflict.cousin}
foozy@708 284
foozy@708 285 $B$b$&0l$D%j%]%8%H%j$rJ#@=$7!"(B
foozy@708 286 $BB>$NMxMQ<T$K$h$k%U%!%$%k$X$NJQ99$rLO5<E*$K:F8=$7$^$9(B
foozy@708 287 $B!J$3$NLO5<E*$J<B9T$O!"(B
foozy@708 288 $B%?%9%/$4$H$K3VN%$7$?%j%]%8%H%j$N4V$G$N%^!<%8$I$3$m$+!"(B
foozy@708 289 $B$=$l$i$N%^!<%8$N:]$N>WFM$r2r>C$9$k$3$H$G$9$i!"(B
foozy@708 290 $B7h$7$FDA$7$$$3$H$G$O$J$$!"(B
foozy@708 291 $B$H$$$&$3$H$r0E<($7$F$$$^$9!K!#(B
foozy@708 292
foozy@708 293 \interaction{tour-merge-conflict.son}
foozy@708 294
foozy@708 295 $BF10l%U%!%$%k$K#2$D$N0[$J$kHG$,$G$-$?$N$G!"(B
foozy@708 296 $B%^!<%8<B;\$N4D6-$,@0$$$^$7$?!#(B
foozy@708 297
foozy@708 298 \interaction{tour-merge-conflict.pull}
foozy@708 299
foozy@708 300 $B%^!<%8$K$*$1$kBPOCE*$J=hM}$NItJ,$,!"(B
foozy@708 301 $BK\=q$K$*$1$k<B9TNc$N<+F0<B9T5!9=(B~ref{sec:automated-example-running
foozy@708 302 }$B$rB;$M$k$?$a!"(B
foozy@708 303 $B$3$NNc$G$O(B Mercurial $B$N(B \command{hgmerge} $B$r;HMQ$7$^$;$s!#(B
foozy@708 304 $B$=$NBe$o$j$K!"(B
foozy@708 305 \envar{HGMERGE} $B$r@_Dj$9$k$3$H$G!"(B
foozy@708 306 Mercurial $B$KHsBPOCE*$J(B \command{merge} $B%3%^%s%I$r<B9T$5$;$^$9!#(B
foozy@708 307 $B$3$N%3%^%s%I$OB?$/$N(B Unix $BE*$J%7%9%F%`$KF1:-$5$l$F$$$^$9!#(B
foozy@708 308 $B0J2<$NNc$r<B:]$K;n$9:]$K$O!"(B
foozy@708 309 \envar{HGMERGE} $B$r$o$6$o$6@_Dj$9$kI,MW$O$"$j$^$;$s!#(B
foozy@708 310
foozy@708 311 \interaction{tour-merge-conflict.merge}
foozy@708 312
foozy@708 313 \command{merge} $B%3%^%s%I$O>WFM$r2r>C$;$:$K!"(B
foozy@708 314 $B$I$N9T$K$*$1$kJQ99$,>WFM$7$F$$$F!"(B
foozy@708 315 $B$=$NJQ99$,$I$N%A%'%s%8%;%C%H$KM3Mh$9$k$N$+$r<($9(B\emph{$B%^!<%8%^!<%/(B}$B$r!"(B
foozy@708 316 $B>WFM$,8!=P$5$l$?%U%!%$%k$K=q$-9~$_$^$9!#(B
foozy@708 317
foozy@708 318 Mercurial $B$O!"(B
foozy@708 319 \command{merge} $B$N=*N;%3!<%I$,%^!<%8=hM}(B\footnote{$BLuCm(B:
foozy@708 320 $B$h$j@53N$K$O!V%^!<%8$K$*$1$k>WFM$N2r>C!W(B}$B<:GT$r<($9>l9g!"(B
foozy@708 321 $B%^!<%8=hM}$r:F<B9T$9$k<j=g$rI=<($7$^$9!#(B
foozy@708 322 $B$3$3$GDs<($5$l$k<j=g$O!"(B
foozy@708 323 $B%^!<%8:n6H$NESCf$G:.Mp$7$F$7$^$C$?$j!"(B
foozy@708 324 $B4V0c$C$F$7$^$C$?$3$H$K5$IU$$$F!"(B
foozy@708 325 $B%0%i%U%#%+%k$J%^!<%8%D!<%k$rCfES=*N;$5$;$?>l9g$J$I$KLrN)$A$^$9!#(B
foozy@708 326
foozy@708 327 $B<+F0$J$$$7<jF0$N%^!<%8$,<:GT$7$?>l9g$G$"$C$F$b!"(B
foozy@708 328 $B4XO"$NM-$k%U%!%$%k$rD>@\(B``$B=$@5(B''$B$7$?>e$G!"(B
foozy@708 329 $B%^!<%87k2L$r%3%_%C%H$9$k$3$H$b2DG=$G$9!#(B
foozy@708 330
foozy@708 331 \interaction{tour-merge-conflict.commit}
foozy@708 332
foozy@708 333 \section{Simplifying the pull-merge-commit sequence}
foozy@708 334 \label{sec:tour-merge:fetch}
foozy@708 335
foozy@708 336 $B$3$3$^$G$K=R$Y$F$-$?JQ99%^!<%8$N<j=g$OC1=c$J$b$N$G$9$,!"(B
foozy@708 337 $B#3$D$N%3%^%s%I$r=g$K<B9T$9$kI,MW$,$"$j$^$9!#(B
foozy@708 338
foozy@708 339 \begin{codesample2}
foozy@708 340 hg pull
foozy@708 341 hg merge
foozy@708 342 hg commit -m 'Merged remote changes'
foozy@708 343 \end{codesample2}
foozy@708 344
foozy@708 345 $B:G8e$N%3%_%C%H$N:]$K$O!"(B
foozy@708 346 $BDL>o$OLLGr$/$bL5$$(B``$B7h$^$j$-$C$?(B''$BFbMF$K$J$i$6$k$rF@$^$;$s$,!"(B
foozy@708 347 $B%3%_%C%H%a%C%;!<%8$rF~NO$9$kI,MW$,$"$j$^$9!#(B
foozy@708 348
foozy@708 349 $B2DG=$G$"$l$P!"I,MW$H$5$l$k<j=g$rDc8:$5$;$?$$$b$N$G$9!#(B
foozy@708 350 $B<B:]$K(B Mercurial $B$O!"$3$l$r2DG=$H$9$k(B \hgext{fetch}
foozy@708 351 $B$H8F$P$l$k%$%/%9%F%s%7%g%s$,F1:-$5$l$F$$$^$9!#(B
foozy@708 352
foozy@708 353 Mercurial $B$O!"(B
foozy@708 354 $B<h$j07$$$NMxJX@->e$+$iCf3K5!G=$r>.$5$/4J7i$KJ]$D0lJ}$G!"(B
foozy@708 355 $B5!G=DI2C$r2DG=$K$9$k$?$a$N=@Fp$J3HD%!J%$%/%9%F%s%7%g%s!K5!9=$rDs6!$7$F$$$^$9!#(B
foozy@708 356 $B%3%^%s%I%i%$%s$+$iMxMQ$G$-$k(B
foozy@708 357 Mercurial $B%3%^%s%I$rDI2C$9$k%$%/%9%F%s%7%g%s$b$"$l$P!"(B
foozy@708 358 $BNc$($P%5!<%P5!G=$r3HD%$9$k$h$&$J!"(B
foozy@708 359 ``$BIqBfN"(B''$B$G5!G=$9$k%$%/%9%F%s%7%g%s$b$"$j$^$9!#(B
foozy@708 360
foozy@708 361 \hgext{fetch} $B%$%/%9%F%s%7%g%s$O!"(B
foozy@708 362 $BM=A[$7$?$3$H$H$O;W$$$^$9$,!"(B
foozy@708 363 \hgcmd{fetch} $B$H8F$P$l$k?7$7$$%3%^%s%I$rDI2C$7$^$9!#(B
foozy@708 364 \hgcmd{fetch} $B%3%^%s%I$O!"(B
foozy@708 365 \hgcmd{pull}$B!?(B\hgcmd{update}$B!?(B\hgcmd{merge}$B!?(B\hgcmd{commit}
foozy@708 366 $B$NAH$_9g$o$;$N$h$&$K?6Iq$$$^$9!#(B
foozy@708 367 $B$^$:$OB>$N%j%]%8%H%j$+$i:n6HCf$N%j%]%8%H%j$XJQ99$r<h$j9~$_$^$9!#(B
foozy@708 368 $B<h$j9~$s$@%A%'%s%8%;%C%H$K$h$k?7$?$J(B head $B$NDI2C$,8!CN(B\footnote{$BLuCm(B:
foozy@708 369 $BB>$N%j%]%8%H%j$+$i$N<h$j9~$_$K$h$j!"(B
foozy@708 370 $B#3$D0J>e$N(B head $B$,%j%]%8%H%j$KB8:_$9$k$h$&$K$J$C$?>l9g$O!"(B
foozy@708 371 $B%^!<%8BP>]$NFCDj$,$G$-$J$$$?$a!"(B
foozy@708 372 $B<h$j9~$_$N$_$G=hM}$rCfCG$7$^$9!#(B}$B$5$l$?>l9g!"(B
foozy@708 373 $B%^!<%8$r3+;O$7!"(B
foozy@708 374 $B<+F0E*$K@8@.$5$l$?%3%_%C%H%a%C%;!<%8$r;H$C$F%3%_%C%H$r9T$$$^$9!#(B
foozy@708 375 $B?7$?$J(B head $B$NDI2C$,L5$+$C$?>l9g!"(B
foozy@708 376 \hgcmd{fetch} $B%3%^%s%I$O:n6HNN0h%G%#%l%/%H%j$r(B
foozy@708 377 tip $B%j%S%8%g%s$G99?7$7$^$9!#(B
foozy@708 378
foozy@708 379 \hgext{fetch} $B%$%/%9%F%s%7%g%s$O4JC1$KM-8z2=$G$-$^$9!#(B
foozy@708 380 \sfilename{.hgrc} $B%U%!%$%k$rJT=8$7!"(B
foozy@708 381 \rcsection{extensions} $B%;%/%7%g%s(B
foozy@708 382 $B!JL5$$>l9g$O:n@.$7$F$/$@$5$$!K$K0\F0$7!"(B
foozy@708 383 ``\Verb+fetch +'' $B$G;O$^$k9T$rDI2C$7$^$9!#(B
foozy@708 384
foozy@708 385 \begin{codesample2}
foozy@708 386 [extensions]
foozy@708 387 fetch =
foozy@708 388 \end{codesample2}
foozy@708 389
foozy@708 390 $B!JDL>o$O!"(B
foozy@708 391 ``\texttt{=}'' $B$N1&JU$K%$%/%9%F%s%7%g%s$N0LCV$r;XDj$7$^$9$,!"(B
foozy@708 392 \hgext{fetch} $B%$%/%9%F%s%7%g%s$OI8=`$NG[I[J*$KF1:-$5$l$F$$$k$N$G!"(B
foozy@708 393 Mercurial $B$O(B \hgext{fetch} $B$rC5$7=P$9$3$H$,$G$-$^$9!K(B
foozy@708 394
foozy@708 395 %%% Local Variables:
foozy@708 396 %%% mode: latex
foozy@708 397 %%% TeX-master: "00book"
foozy@708 398 %%% End: