annotate ja/daily.tex @ 835:8a3041e6f3cb

reflect comments by Hiroshi Someya.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sat, 11 Jul 2009 19:25:35 +0900
parents de4142983445
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
1 %\chapter{Mercurial in daily use}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
2 \chapter{Mercurial$B$G$NF|>o:n6H(B}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
3 \label{chap:daily}
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
4
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
5 %\section{Telling Mercurial which files to track}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
6 \section{$BDI@W$9$Y$-%U%!%$%k$N(BMercurial$B$X$NEPO?(B}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
7
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
8 %Mercurial does not work with files in your repository unless you tell
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
9 %it to manage them. The \hgcmd{status} command will tell you which
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
10 %files Mercurial doesn't know about; it uses a ``\texttt{?}'' to
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
11 %display such files.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
12
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
13 Mercurial$B$O!$%f!<%6$K$h$k%U%!%$%k4IM}$N;X<($,$J$$8B$j!$%j%]%8%H%jFb$N%U%!(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
14 $B%$%k$G$"$C$F$b4IM}$r9T$o$J$$!%(BMercurial$B$,4IM}$7$J$$%U%!%$%k$O(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
15 \hgcmd{status}$B%3%^%s%I$r<B9T$9$k$H(B``\texttt{?}''$B$HI=<($5$l$k!%(B
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
16
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
17 %To tell Mercurial to track a file, use the \hgcmd{add} command. Once
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
18 %you have added a file, the entry in the output of \hgcmd{status} for
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
19 %that file changes from ``\texttt{?}'' to ``\texttt{A}''.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
20 %\interaction{daily.files.add}
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
21
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
22 Mercurial$B$K%U%!%$%k$NDI@W$r$5$;$k$K$O!$(B\hgcmd{add}$B%3%^%s%I$rMQ$$$k!%0lEY(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
23 $B%U%!%$%k$rDI2C$9$k$H!$(B\hgcmd{status}$B%3%^%s%I$N=PNO$O(B``\texttt{?}''$B$+$i(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
24 ``\texttt{A}''$B$KJQ$o$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
25 \interaction{daily.files.add}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
26
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
27 %After you run a \hgcmd{commit}, the files that you added before the
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
28 %commit will no longer be listed in the output of \hgcmd{status}. The
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
29 %reason for this is that by default, \hgcmd{status} only tells you about
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
30 %``interesting'' files---those that you have (for example) modified,
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
31 %removed, or renamed. If you have a repository that contains thousands of
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
32 %files, you will rarely want to know about files that Mercurial is
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
33 %tracking, but that have not changed. (You can still get this
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
34 %information; we'll return to this later.)
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
35
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
36 \hgcmd{commit}$B%3%^%s%I$r<B9T$9$k$H!$(Bcommit$B$NA0$KDI2C$7$?%U%!%$%k$O(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
37 \hgcmd{status}$B$N=PNO$K8=$l$J$/$J$k!%$3$l$O!$(B\hgcmd{status}$B$,%G%U%)%k%H$G(B
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
38 $B$O!$JQ99!$:o=|!$%j%M!<%`$J$I$r9T$C$?(B``$BCmL\$9$Y$-(B''$B%U%!%$%k$N$_$rI=<($9$k(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
39 $B$?$a$G$"$k!%?t@i$N%U%!%$%k$+$i$J$k%j%]%8%H%j$N>l9g!$(BMercurial$B$,DI@W$7$F$$(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
40 $B$k$b$N$N!$JQ99$N2C$($i$l$F$$$J$$%U%!%$%k$K$D$$$F2?$+$rCN$j$?$$$H$$$&$3$H(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
41 $B$O5)$G$"$k!%!J$b$A$m$sCN$j$?$$>l9g$O>pJs$rF@$k$3$H$b$G$-$k!%$3$l$K$D$$$F(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
42 $B$O8e=R$9$k!%!K(B
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
43
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
44 %Once you add a file, Mercurial doesn't do anything with it
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
45 %immediately. Instead, it will take a snapshot of the file's state the
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
46 %next time you perform a commit. It will then continue to track the
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
47 %changes you make to the file every time you commit, until you remove
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
48 %the file.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
49
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
50 $BDI2C$7$?%U%!%$%k$KBP$7$F(BMercurial$B$,D>$A$K9T$&$3$H$O2?$b$J$$$,!$$=$NBe$o$j(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
51 $B$K<!2s$N%3%_%C%H;~$K%U%!%$%k>uBV$N%9%J%C%W%7%g%C%H$r<h$k!%$=$7$F%U%!%$%k(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
52 $B$r:o=|$9$k$^$G%3%_%C%HKh$K%U%!%$%k$NJQ2=$rDI@W$9$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
53
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
54 %\subsection{Explicit versus implicit file naming}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
55 \subsection{$BL@<(E*$J%U%!%$%kL?L>BP0EL[$N%U%!%$%kL?L>(B}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
56
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
57 %A useful behaviour that Mercurial has is that if you pass the name of
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
58 %a directory to a command, every Mercurial command will treat this as
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
59 %``I want to operate on every file in this directory and its
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
60 %subdirectories''.
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
61 %\interaction{daily.files.add-dir}
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
62 %Notice in this example that Mercurial printed the names of the files
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
63 %it added, whereas it didn't do so when we added the file named
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
64 %\filename{myfile.txt} in the earlier example.
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
65
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
66 Mercurial$B$NA4$F$N%3%^%s%I$O!$0z?t$H$7$F%G%#%l%/%H%jL>$rEO$9$H!$%G%#%l%/%H(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
67 $B%j$NFb$NA4$F$N%U%!%$%k$H%5%V%G%#%l%/%H%j$KBP$9$kA`:n$G$"$k$H2r<a$9$k$?$a(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
68 $BJXMx$G$"$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
69 \interaction{daily.files.add-dir}
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
70 $B$3$NNc$G$O(BMercurial$B$ODI2C$7$?%U%!%$%kL>$rI=<($7$F$$$k$,!$A0$NNc$G(B
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
71 \filename{myfile.txt}$B$H$$$&L>A0$N%U%!%$%k$rDI2C$7$?:]$K$OI=<($7$F$$$J$+$C(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
72 $B$?E@$KCm0U$5$l$?$$!%(B
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
73
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
74 %What's going on is that in the former case, we explicitly named the file
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
75 %to add on the command line. The assumption that Mercurial makes in such
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
76 %cases is that we know what we are doing, and it doesn't print any
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
77 %output.
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
78
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
79 $BA0$NNc$G$O!$%3%^%s%I%i%$%s$GDI2C$9$k%U%!%$%k$rL@<(E*$K;XDj$7$?$?(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
80 $B$a!$(BMercurial$B$O%f!<%6$,2?$r$7$h$&$H$7$F$$$k$N$+J,$+$C$F$$$k$H?dDj$7!$2?$b(B
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
81 $BI=<($7$J$+$C$?!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
82
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
83 %However, when we \emph{imply} the names of files by giving the name of
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
84 %a directory, Mercurial takes the extra step of printing the name of
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
85 %each file that it does something with. This makes it more clear what
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
86 %is happening, and reduces the likelihood of a silent and nasty
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
87 %surprise. This behaviour is common to most Mercurial commands.
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
88
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
89 $B$7$+$7%G%#%l%/%H%jL>$rM?$($k$3$H$G%U%!%$%kL>$r0EL[E*$KM?$($?>l9g!"(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
90 Mercurial$B$O4XO"$9$k%U%!%$%k$NL>A0$r(B1$B$D$:$DI=<($9$kDI2C$N%9%F%C%W$rF'$`!%(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
91 $B$3$l$K$h$C$F2?$,5/$3$C$F$$$k$N$+M}2r$7$d$9$/$9$k$H6&$K!$D@L[N"$KLq2p$JLd(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
92 $BBj$,5/$3$k2DG=@-$r8:$i$7$F$$$k!%$3$N5sF0$O(BMercurial$B$NBgH>$N%3%^%s%I$K6&(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
93 $BDL$7$F$$$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
94
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
95 %\subsection{Aside: Mercurial tracks files, not directories}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
96 \subsection{$B$3$\$lOC(B: Mercurial$B$O%G%#%l%/%H%j$G$O$J$/%U%!%$%k$rDI@W$9$k(B}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
97
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
98 %Mercurial does not track directory information. Instead, it tracks
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
99 %the path to a file. Before creating a file, it first creates any
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
100 %missing directory components of the path. After it deletes a file, it
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
101 %then deletes any empty directories that were in the deleted file's
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
102 %path. This sounds like a trivial distinction, but it has one minor
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
103 %practical consequence: it is not possible to represent a completely
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
104 %empty directory in Mercurial.
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
105
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
106 Mercurial$B$O%G%#%l%/%H%j>pJs$rDI@W$7$J$$!%$=$NBe$o$j!$%U%!%$%k$X$N%Q%9$rDI(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
107 $B@W$7$F$$$k!%%U%!%$%k$r:n@.$9$k:]$K$O!$$^$:%Q%9$N%G%#%l%/%H%jItJ,$rJd40$9(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
108 $B$k!%%U%!%$%k$r>C5n$7$?8e$O!$%U%!%$%k$N4^$^$l$F$$$?6u$N%G%#%l%/%H%j$rA4$F(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
109 $B>C5n$9$k!%$3$l$OEvA3$N5sF0$N$h$&$K8+$($k$,!$<B:]>e$O>.$5$JLdBj$r0z$-5/$3(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
110 $B$9!%$9$J$o$A!$(BMercurial$B$O40A4$K6u$N%G%#%l%/%H%j$rI=8=$9$k$3$H$,$G$-$J$$$N(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
111 $B$G$"$k!%(B
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
112
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
113 %Empty directories are rarely useful, and there are unintrusive
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
114 %workarounds that you can use to achieve an appropriate effect. The
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
115 %developers of Mercurial thus felt that the complexity that would be
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
116 %required to manage empty directories was not worth the limited benefit
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
117 %this feature would bring.
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
118
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
119 $B6u$N%G%#%l%/%H%j$,M-MQ$G$"$k$3$H$OLGB?$K$J$$$,!$E,Ev$J%o!<%/%"%i%&%s%I$H(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
120 $B$7$F!$%j%]%8%H%j$NF0$-$rK8$2$J$$J}K!$,B8:_$9$k!%(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
121 Mercurial$B$N3+H/<T$?$A$O!$6u$N%G%#%l%/%H%j$rI=8=$9$k$?$a$K2C$o$kJ#;($5$O!$$=(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
122 $B$N5!G=$K8+9g$o$J$$$H9M$($?!%(B
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
123
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
124 %If you need an empty directory in your repository, there are a few
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
125 %ways to achieve this. One is to create a directory, then \hgcmd{add} a
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
126 %``hidden'' file to that directory. On Unix-like systems, any file
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
127 %name that begins with a period (``\texttt{.}'') is treated as hidden
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
128 %by most commands and GUI tools. This approach is illustrated in
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
129 %figure~\ref{ex:daily:hidden}.
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
130
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
131 $B%j%]%8%H%j$K6u$N%G%#%l%/%H%j$,I,MW$J>l9g!$$3$l$r<B8=$9$kJ}K!$,$$$/$D$+$"(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
132 $B$k!%(B1$B$DL\$O!$$^$:%G%#%l%/%H%j$r:n@.$7!$1#$7%U%!%$%k$r$3$N%G%#%l%/%H%jFb$K(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
133 \hgcmd{add}$B$9$k!%(BUnix$B7O%7%9%F%`$G$O!$%T%j%*%I(B(``\texttt{.}'')$B$G;O$^$k%U%!(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
134 $B%$%k$OBgH>$N%3%^%s%I$H(BGUI$B%D!<%k$G1#$7%U%!%$%k$H$7$F<h$j07$o$l$k!%(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
135 $B>\:Y$K$D$$$F$O?^(B~\ref{ex:daily:hidden}$B$r;2>H$5$l$?$$!%(B
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
136
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
137 \begin{figure}[ht]
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
138 \interaction{daily.files.hidden}
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
139 % \caption{Simulating an empty directory using a hidden file}
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
140 \caption{$B1#$7%U%!%$%k$r;H$C$F6u$N%G%#%l%/%H%j$r%7%_%e%l!<%H$9$k(B}
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
141 \label{ex:daily:hidden}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
142 \end{figure}
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
143
379
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
144 %Another way to tackle a need for an empty directory is to simply
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
145 %create one in your automated build scripts before they will need it.
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
146
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
147 $B6u$N%G%#%l%/%H%j$r07$&JL$NJ}K!$K$O!$<+F0%S%k%I%9%/%j%W%H$NCf$G!$I,MW$K$J$k(B
beab196f78da - more hook.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 376
diff changeset
148 $BA0$K:n@.$9$k$3$H$,$"$k!%(B
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
149
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
150 %\section{How to stop tracking a file}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
151 \section{$B%U%!%$%kDI@W$NDd;_(B}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
152
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
153 %Once you decide that a file no longer belongs in your repository, use
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
154 %the \hgcmd{remove} command. This deletes the file, and tells Mercurial
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
155 %to stop tracking it. A removed file is represented in the output of
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
156 %\hgcmd{status} with a ``\texttt{R}''.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
157 %\interaction{daily.files.remove}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
158
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
159 $B%U%!%$%k$,%j%]%8%H%j$KI,MW$J$/$J$C$?;~$O(B\hgcmd{remove}$B%3%^%s%I$r<B9T$9(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
160 $B$k!%$3$N%3%^%s%I$O%U%!%$%k$r:o=|$7$?>e$G(BMercurial$B$K%U%!%$%kDI@W$NDd;_$r;X(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
161 $B<($9$k!%:o=|$5$l$?%U%!%$%k$O(B\hgcmd{status}$B%3%^%s%I$N=PNO$G(B``\texttt{R}''
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
162 $B$HI=<($5$l$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
163 \interaction{daily.files.remove}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
164
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
165 %After you \hgcmd{remove} a file, Mercurial will no longer track
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
166 %changes to that file, even if you recreate a file with the same name
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
167 %in your working directory. If you do recreate a file with the same
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
168 %name and want Mercurial to track the new file, simply \hgcmd{add} it.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
169 %Mercurial will know that the newly added file is not related to the
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
170 %old file of the same name.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
171
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
172 $B0lEY%U%!%$%k$r(B\hgcmd{remove}$B$7$?8e$G$O!$(BMercurial$B$O%o!<%-%s%0%G%#%l%/%H%j(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
173 $BFb$K$?$H$(F1$8L>A0$G%U%!%$%k$,:F@8@.$5$l$F$b%U%!%$%k$X$NJQ99$rDI@W$7$J$$!%(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
174 $B%U%!%$%k$r:F@8@.$7!$(BMercurial$B$KDI@W$5$;$?$$$N$G$"$l$P!$(B\hgcmd{add}$B$r9T$&!%(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
175 Mercurial$B$O!$?75,$KDI2C$5$l$?%U%!%$%k$rF1L>$N8E$$%U%!%$%k$H4X78$J$/07$&!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
176
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
177 %\subsection{Removing a file does not affect its history}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
178 \subsection{$B%U%!%$%k:o=|$OMzNr$K1F6A$rM?$($J$$(B}
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
179
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
180 %It is important to understand that removing a file has only two
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
181 %effects.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
182 $B%U%!%$%k$N:o=|$,%j%]%8%H%j$KM?$($k1F6A$O(B2$B$D$N$_$G$"$k!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
183 \begin{itemize}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
184 %\item It removes the current version of the file from the working
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
185 % directory.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
186 \item $B%o!<%-%s%0%G%#%l%/%H%j$+$i869F$N%P!<%8%g%s$N%U%!%$%k$r>C5n$9$k!%(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
187 %\item It stops Mercurial from tracking changes to the file, from the
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
188 % time of the next commit.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
189 \item $B:o=|$9$k%U%!%$%k$X$NJQ99$r<!2s$N%3%_%C%H$+$i(BMercurial$B$,DI@W$7$J$$(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
190 $B$h$&$K$9$k!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
191 \end{itemize}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
192 %Removing a file \emph{does not} in any way alter the \emph{history} of
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
193 %the file.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
194 $B%U%!%$%k$r$I$N$h$&$K:o=|$7$F$b%U%!%$%k$N(B\emph{$BMzNr(B}$B$OJQ99(B\emph{$B$5$l$J$$(B}$B!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
195
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
196 %If you update the working directory to a changeset that was committed
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
197 %when it was still tracking a file that you later removed, the file will
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
198 %reappear in the working directory, with the contents it had when you
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
199 %committed that changeset. If you then update the working directory to a
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
200 %later changeset, in which the file had been removed, Mercurial will once
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
201 %again remove the file from the working directory.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
202
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
203 $B%o!<%-%s%0%G%#%l%/%H%j$r!$>C5n$7$?%U%!%$%k$,4IM}$5$l$F$$$?:"$K%3%_%C%H$5(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
204 $B$l$?%A%'%s%8%;%C%H$K99?7$9$k$H!$%U%!%$%k$O$=$N%A%'%s%8%;%C%H$N%3%_%C%H;~(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
205 $B$NFbMF$G%o!<%-%s%0%G%#%l%/%H%j$K:F$S8=$l$k!%$=$3$G%o!<%-%s%0%G%#%l%/%H%j(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
206 $B$r%U%!%$%k$N>C5n$5$l$?8e$N%A%'%s%8%;%C%H$K99?7$9$k$H!$(BMercurial$B$O:F$S%U%!(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
207 $B%$%k$r%o!<%-%s%0%G%#%l%/%H%j$+$i>C5n$9$k!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
208
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
209 %\subsection{Missing files}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
210 \subsection{$B7gMn$7$?%U%!%$%k(B}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
211
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
212 %Mercurial considers a file that you have deleted, but not used
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
213 %\hgcmd{remove} to delete, to be \emph{missing}. A missing file is
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
214 %represented with ``\texttt{!}'' in the output of \hgcmd{status}.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
215 %Mercurial commands will not generally do anything with missing files.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
216 %\interaction{daily.files.missing}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
217
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
218 Mercurial$B$O!$(B\hgcmd{remove}$B$r;H$o$:$K>C5n$5$l$?%U%!%$%k$r(B\emph{$B7gMn(B}$B$7$?(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
219 $B%U%!%$%k$H$7$F07$&!%7gMn%U%!%$%k$O(B\hgcmd{status}$B%3%^%s%I$N=PNO$G(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
220 ``\texttt{!}''$B$HI=<($5$l$k!%(BMercurial$B$N%3%^%s%I$O!$DL>o!$7gMn$7$?%U%!%$(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
221 $B%k$K$O2?$b9T$o$J$$!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
222 \interaction{daily.files.missing}
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
223
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
224 %If your repository contains a file that \hgcmd{status} reports as
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
225 %missing, and you want the file to stay gone, you can run
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
226 %\hgcmdargs{remove}{\hgopt{remove}{--after}} at any time later on, to
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
227 %tell Mercurial that you really did mean to remove the file.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
228 %\interaction{daily.files.remove-after}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
229
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
230 $B%j%]%8%H%jFb$G(B\hgcmd{status}$B%3%^%s%I$,7gMn$H%j%]!<%H$9$k%U%!%$%k$,$"$k>l(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
231 $B9g!$(B\hgcmdargs{remove}{\hgopt{remove}{--after}}$B$r<B9T$7$F!$(BMercurial$B$K7g(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
232 $BMn%U%!%$%k$,>C5n$5$l$?$b$N$G$"$k$3$H$r;X<($9$k$3$H$,$G$-$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
233 \interaction{daily.files.remove-after}
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
234
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
235 %On the other hand, if you deleted the missing file by accident, use
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
236 %\hgcmdargs{revert}{\emph{filename}} to recover the file. It will
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
237 %reappear, in unmodified form.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
238 %\interaction{daily.files.recover-missing}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
239
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
240 $B0lJ}$G!$8m$C$F%U%!%$%k$r>C5n$7$?>l9g!$(B\hgcmdargs{revert}{\emph{filename}}$B$r(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
241 $B<B9T$9$k$3$H$G%U%!%$%k$r=$I|$9$k$3$H$,$G$-$k!%%U%!%$%k$O2?$bJQ99$5$l$J$$>uBV(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
242 $B$G=$I|$5$l$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
243 \interaction{daily.files.recover-missing}
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
244
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
245 %\subsection{Aside: why tell Mercurial explicitly to remove a file?}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
246 \subsection{$B$3$\$lOC(B: $B$J$<(BMercurial$B$X%U%!%$%k$N:o=|$rL@<(E*$K;X<($7$J$1(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
247 $B$l$P$J$i$J$$$+(B}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
248
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
249 %You might wonder why Mercurial requires you to explicitly tell it that
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
250 %you are deleting a file. Early during the development of Mercurial,
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
251 %it let you delete a file however you pleased; Mercurial would notice
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
252 %the absence of the file automatically when you next ran a
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
253 %\hgcmd{commit}, and stop tracking the file. In practice, this made it
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
254 %too easy to accidentally remove a file without noticing.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
255
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
256 $B$J$<(BMercurial$B$K%U%!%$%k$N:o=|$rL@<(E*$K;X<($7$J$1$l$P$J$i$J$$$N$@$m$&$+!)(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
257 Mercurial$B$N3+H/$N=i4|$K$O!$%U%!%$%k$,$J$$$3$H$r8!CN$9$k$H!$<!$K(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
258 \hgcmd{commit}$B$,<B9T$5$l$k;~$K<+F0E*$K%U%!%$%k$NDI@W$r$d$a$F$$$?!%<B:]$K(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
259 $B;H$C$F$_$k$H$3$NF0:n$G$O%U%!%$%k$rCN$i$:$N$&$A$K<:$&$3$H$,IQH/$7$?$N$G$"(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
260 $B$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
261
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
262 %\subsection{Useful shorthand---adding and removing files in one step}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
263 \subsection{$BLr$KN)$D4JN,K!(B---$B%U%!%$%k$NDI2C$H:o=|$r(B1$B%9%F%C%W$G9T$&(B}
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
264
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
265 %Mercurial offers a combination command, \hgcmd{addremove}, that adds
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
266 %untracked files and marks missing files as removed.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
267 %\interaction{daily.files.addremove}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
268 %The \hgcmd{commit} command also provides a \hgopt{commit}{-A} option
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
269 %that performs this same add-and-remove, immediately followed by a
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
270 %commit.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
271 %\interaction{daily.files.commit-addremove}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
272
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
273 Mercurial$B$O(B\hgcmd{addremove}$B$H$$$&AH$_9g$o$;%3%^%s%I$r;}$C$F$$$k!%$3$N%3(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
274 $B%^%s%I$ODI@W$5$l$F$$$J$$%U%!%$%k72$rDI2C$7!$7gMn$7$F$$$k%U%!%$%k$r>C5n$5(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
275 $B$l$?$H%^!<%/$9$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
276 \interaction{daily.files.addremove}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
277 \hgcmd{commit}$B%3%^%s%I$K$O(B\hgopt{commit}{-A}$B%*%W%7%g%s$,$"$j!$F1$8DI2C$H(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
278 $B:o=|$NA`:n$r%3%_%C%HD>8e$K9T$&!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
279 \interaction{daily.files.commit-addremove}
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
280
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
281 %\section{Copying files}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
282 \section{$B%U%!%$%k$N%3%T!<(B}
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
283
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
284 %Mercurial provides a \hgcmd{copy} command that lets you make a new
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
285 %copy of a file. When you copy a file using this command, Mercurial
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
286 %makes a record of the fact that the new file is a copy of the original
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
287 %file. It treats these copied files specially when you merge your work
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
288 %with someone else's.
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
289
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
290 Mercurial$B$K$O!$%U%!%$%k$N?7$7$$%3%T!<$r:n$k(B\hgcmd{copy}$B%3%^%s%I$,$"$k!%(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
291 $B$3$N%3%^%s%I$r;H$C$F%U%!%$%k$r%3%T!<$9$k$H!$(BMercurial$B$O?7$7$$%U%!%$%k$,(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
292 $B%*%j%8%J%k$NJ#@=$G$"$k$3$H$r5-O?$9$k!%J#@=$5$l$?%U%!%$%k$O!$JL$N?M$K$h$k(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
293 $BJQ99$r%^!<%8$9$k;~$KFCJL$J<h$j07$$$,$J$5$l$k!%(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
294
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
295 %\subsection{The results of copying during a merge}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
296 \subsection{$B%^!<%8Cf$N%3%T!<$N7k2L(B}
121
9094c9fda8ec Start chapter on error recovery.
Bryan O'Sullivan <bos@serpentine.com>
parents: 118
diff changeset
297
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
298 %What happens during a merge is that changes ``follow'' a copy. To
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
299 %best illustrate what this means, let's create an example. We'll start
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
300 %with the usual tiny repository that contains a single file.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
301 %\interaction{daily.copy.init}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
302 %We need to do some work in parallel, so that we'll have something to
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
303 %merge. So let's clone our repository.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
304 %\interaction{daily.copy.clone}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
305 %Back in our initial repository, let's use the \hgcmd{copy} command to
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
306 %make a copy of the first file we created.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
307 %\interaction{daily.copy.copy}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
308
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
309 $B%^!<%8Cf$K$O!$%3%T!<$K(B``$B=>$&(B''$B$3$H$,5/$-$k!%$3$l$N0UL#$9$k$H$3$m$r<($9$?(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
310 $B$a$K!$Nc$r5s$2$k$3$H$K$9$k!%$$$D$b$N$h$&$K!$%U%!%$%k(B1$B$D$@$1$r4^$`>.$5$J%j(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
311 $B%]%8%H%j$r:n@.$9$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
312 \interaction{daily.copy.init}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
313 $B%^!<%8$9$Y$-FbMF$r:n$k$?$a$KJB9T$7$F$$$/$D$+$N:n6H$r9T$&I,MW$,$"$k$N$G!$(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
314 $B%j%]%8%H%j$N%/%m!<%s$r9T$&!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
315 \interaction{daily.copy.clone}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
316 $B:G=i$N%j%]%8%H%j$KLa$C$F!$(B\hgcmd{copy}$B%3%^%s%I$r;H$C$F!$:n@.$7$?%U%!%$%k(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
317 $B$N%3%T!<$r9T$&!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
318 \interaction{daily.copy.copy}
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
319
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
320 %If we look at the output of the \hgcmd{status} command afterwards, the
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
321 %copied file looks just like a normal added file.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
322 %\interaction{daily.copy.status}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
323 %But if we pass the \hgopt{status}{-C} option to \hgcmd{status}, it
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
324 %prints another line of output: this is the file that our newly-added
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
325 %file was copied \emph{from}.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
326 %\interaction{daily.copy.status-copy}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
327
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
328 $B$=$N8e$G(B\hgcmd{status}$B%3%^%s%I$N=PNO$r8+$k$H%3%T!<$5$l$?%U%!%$%k$ODL>oDL(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
329 $B$j$KDI2C$5$l$?%U%!%$%k$H$7$F8+$($k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
330 \interaction{daily.copy.status}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
331 $B$7$+$7(B\hgcmd{status}$B%3%^%s%I$K(B\hgopt{status}{-C}$B%*%W%7%g%s$rEO$9$H!$?7$?(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
332 $B$KDI2C$5$l$?%U%!%$%k$,(B\emph{$B$I$N(B}$B%U%!%$%k$+$i%3%T!<$5$l$?$N$+$r<($99T$,(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
333 $B=PNO$5$l$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
334 \interaction{daily.copy.status-copy}
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
335
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
336 %Now, back in the repository we cloned, let's make a change in
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
337 %parallel. We'll add a line of content to the original file that we
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
338 %created.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
339 %\interaction{daily.copy.other}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
340 %Now we have a modified \filename{file} in this repository. When we
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
341 %pull the changes from the first repository, and merge the two heads,
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
342 %Mercurial will propagate the changes that we made locally to
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
343 %\filename{file} into its copy, \filename{new-file}.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
344 %\interaction{daily.copy.merge}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
345
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
346 $B$3$3$G%/%m!<%s$7$?%j%]%8%H%j$K$bJQ99$r2C$($k!%:n@.$7$?%U%!%$%k$K0l9T$rDI(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
347 $B2C$9$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
348 \interaction{daily.copy.other}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
349 $B$3$l$G$3$N%j%]%8%H%j$K$bJQ99$5$l$?(B\filename{file}$B$,B8:_$9$k$3$H$K$J(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
350 $B$k!%$3$3$G:G=i$N%j%]%8%H%j$+$iJQ99$r(Bpull$B$7!$(B2$B$D$N(Bhead$B$r%^!<%8$9$k$H(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
351 Mercurial$B$O%m!<%+%k$J(B\filename{file}$B$KBP$9$kJQ99$r$=$N%3%T!<(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
352 \filename{new-file}$B$KGH5Z$5$;$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
353 \interaction{daily.copy.merge}
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
354
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
355 %\subsection{Why should changes follow copies?}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
356 \subsection{$BJQ99$O$J$<%3%T!<$K=>$o$J$1$l$P$J$i$J$$$+(B}
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
357 \label{sec:daily:why-copy}
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
358
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
359 %This behaviour---of changes to a file propagating out to copies of the
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
360 %file---might seem esoteric, but in most cases it's highly desirable.
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
361
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
362 $B%U%!%$%k$X$NJQ99$,$=$N%3%T!<$XGH5Z$9$kF0:n$OFq2r$K;W$($k$+$b$7$J$$$,!$B?(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
363 $B$/$N>l9g$OHs>o$KK>$^$7$$F0:n$G$"$k!%(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
364
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
365 %First of all, remember that this propagation \emph{only} happens when
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
366 %you merge. So if you \hgcmd{copy} a file, and subsequently modify the
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
367 %original file during the normal course of your work, nothing will
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
368 %happen.
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
369
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
370 $B$^$:Bh0l$K$3$NGH5Z$O%^!<%8$r9T$&$H$-$K(B\emph{$B$N$_(B}$BH/@8$9$k!%=>$C$F%U%!%$%k(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
371 $B$r(B\hgcmd{copy}$B$9$k>l9g$d!$DL>o$N:n6H$G%*%j%8%J%k%U%!%$%k$rJQ99$9$k>l9g$O(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
372 $B2?$b5/$-$J$$!%(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
373
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
374 %The second thing to know is that modifications will only propagate
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
375 %across a copy as long as the changeset that you're merging changes from
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
376 %\emph{hasn't yet seen} the copy.
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
377
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
378 $BCN$C$F$*$/$Y$-E@$N(B2$B$DL\$O!$JQ99$OJQ99$N%^!<%885$N%A%'%s%8%;%C%H$,%3%T!<$r(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
379 \emph{$B4XCN$7$F$$$J$$>l9g(B}$B$K$N$_GH5Z$9$k$H$$$&$3$H$G$"$k!%(B
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
381 %The reason that Mercurial does this is as follows. Let's say I make
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
382 %an important bug fix in a source file, and commit my changes.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
383 %Meanwhile, you've decided to \hgcmd{copy} the file in your repository,
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
384 %without knowing about the bug or having seen the fix, and you have
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
385 %started hacking on your copy of the file.
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
386
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
387 Mercurial$B$,$3$N$h$&$KF0:n$9$kM}M3$r@bL@$9$k!%:#!$;d$,=EMW$J%P%0=$@5$r(B1$B$D(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
388 $B$N%=!<%9%U%!%$%k$K$D$$$F9T$$!$JQ99$r%3%_%C%H$7$?$H$9$k!%$=$N4V!$$"$J$?$O(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
389 $B<+J,$N%j%]%8%H%j$NCf$G!$$=$N%P%0$"$k$$$O=$@5$rCN$i$:!$$=$N%U%!%$%k$N(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
390 \hgcmd{copy}$B$r9T$$!$%U%!%$%k$NJQ99$r;O$a$?$H$9$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
391
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
392 %If you pulled and merged my changes, and Mercurial \emph{didn't}
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
393 %propagate changes across copies, your new source file would now contain
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
394 %the bug, and unless you knew to propagate the bug fix by hand, the bug
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
395 %would \emph{remain} in your copy of the file.
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
396
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
397 $B$"$J$?$,;d$N9T$C$?JQ99$r(Bpull$B$7!$(Bmerge$B$7$?>l9g!$(BMercurial$B$OJQ99$r%3%T!<4V(B
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
398 $B$GGH5Z$5$;$J$$!%$"$J$?$N?7$7$$%=!<%9%U%!%$%k$O:#%P%0$r;}$C$F$$$k$+$b$7$l(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
399 $B$J$$$,!$%P%0=$@5$r<j$GGH5Z$5$;$J$1$l$P%P%0$O%U%!%$%k$N%3%T!<$K(B\emph{$B;D$k(B}$B!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
400
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
401 %By automatically propagating the change that fixed the bug from the
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
402 %original file to the copy, Mercurial prevents this class of problem.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
403 %To my knowledge, Mercurial is the \emph{only} revision control system
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
404 %that propagates changes across copies like this.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
405
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
406 $B%P%0$r=$@5$9$kJQ99$r<+F0E*$K%*%j%8%J%k%U%!%$%k$+$i%3%T!<$XGH5Z$5$;$k$3$H(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
407 $B$K$h$C$F!$(BMercurial$B$O$3$NN`$NLdBj$rHr$1$F$$$k!%;d$NCN$k8B(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
408 $B$j!$(BMercurial$B$O!$$3$N$h$&$J%3%T!<4V$GJQ99$rGH5Z$5$;$kM#0l$N%j%S%8%g%s%3%s(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
409 $B%H%m!<%k%7%9%F%`$G$"$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
410
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
411 %Once your change history has a record that the copy and subsequent merge
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
412 %occurred, there's usually no further need to propagate changes from the
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
413 %original file to the copied file, and that's why Mercurial only
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
414 %propagates changes across copies at the first merge, and not afterwards.
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
415
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
416 $B%3%T!<$H8eB3$N%^!<%8$,5/$3$C$?$3$H$,99?7MzNr$K4^$^$l$k>l9g!$JQ99$r%*%j%8(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
417 $B%J%k%U%!%$%k$+$i%3%T!<$5$l$?%U%!%$%k$X$5$i$KGH5Z$5$;$kI,MW$O$J$$!%$3$l$,(B
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
418 Mercurial$B$,:G=i$N%^!<%8$N;~$K%3%T!<4V$GJQ99$rGH5Z$5$;!$$=$N8e$G$O9T$o$J$$(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
419 $BM}M3$G$"$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
420
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
421 %\subsection{How to make changes \emph{not} follow a copy}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
422 \subsection{$BJQ99$,%3%T!<$K=>$o$J$$$h$&$K$9$kJ}K!(B}
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
423
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
424 %If, for some reason, you decide that this business of automatically
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
425 %propagating changes across copies is not for you, simply use your
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
426 %system's normal file copy command (on Unix-like systems, that's
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
427 %\command{cp}) to make a copy of a file, then \hgcmd{add} the new copy
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
428 %by hand. Before you do so, though, please do reread
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
429 %section~\ref{sec:daily:why-copy}, and make an informed decision that
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
430 %this behavior is not appropriate to your specific case.
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
431
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
432 $B2?$i$+$NM}M3$G$3$N$h$&$KJQ99$,<+F0E*$KGH5Z$9$k$d$jJ}$,9%$^$7$/$J$$$H;W$o(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 802
diff changeset
433 $B$l$k>l9g$O!$%7%9%F%`I8=`$N%U%!%$%k%3%T!<%3%^%s%I!J(BUNIX$B7O%7%9%F%`$G$O(B
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
434 \command{cp}$B!K$r;H$C$F%U%!%$%k$N%3%T!<$r9T$$!$(B\hgcmd{add}$B$G?7$7$$%3%T!<$r(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
435 $B<jF0$GDI2C$9$k$3$H$,$G$-$k!%$3$l$r<B:]$K9T$&A0(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
436 $B$K!$(B~\ref{sec:daily:why-copy}$B@a$r:FFI$7!$$3$N$d$jJ}$N>\:Y$rF'$^$($?>e$G!$(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
437 $B$"$J$?$N%1!<%9$KE,$7$F$$$k$+H=CG$7$F$[$7$$!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
438
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
439 %\subsection{Behavior of the \hgcmd{copy} command}
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
440 \subsection{\hgcmd{copy}$B%3%^%s%I$N5sF0(B}
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
441
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
442 %When you use the \hgcmd{copy} command, Mercurial makes a copy of each
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
443 %source file as it currently stands in the working directory. This
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
444 %means that if you make some modifications to a file, then \hgcmd{copy}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
445 %it without first having committed those changes, the new copy will
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
446 %also contain the modifications you have made up until that point. (I
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
447 %find this behaviour a little counterintuitive, which is why I mention
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
448 %it here.)
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
449
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
450 \hgcmd{copy}$B%3%^%s%I$r;H$&;~!$(BMercurial$B$O%o!<%-%s%0%G%#%l%/%H%jFb$N%U%!%$(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
451 $B%k$r$=$N;~E@$N>uBV$G%3%T!<$9$k!%$9$J$o$A!$%U%!%$%k$K2?$i$+$NJQ99$r2C$(!$(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
452 $BJQ99$N%3%_%C%H$r$;$:$K(B\hgcmd{copy}$B$r9T$&$H!$?7$?$J%3%T!<$b$=$N;~E@$^$G$K(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
453 $B2C$($?JQ99$r4^$s$G$$$k!%(B $B!JI.<T$O$3$N5sF0$O$d$dD>4Q$KH?$9$k$H9M$($F$$$k$?(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
454 $B$a!$4:$($F$3$3$G8@5Z$7$?!%!K(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
455
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
456 %The \hgcmd{copy} command acts similarly to the Unix \command{cp} command
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
457 %(you can use the \hgcmd{cp} alias if you prefer). We must supply two or
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
458 %more arguments, of which the last is treated as the \emph{destination},
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
459 %and all others are \emph{sources}.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
460
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
461 \hgcmd{copy}$B%3%^%s%I$O(BUnix$B$N(B\command{cp}$B$HF1MM$K?6Iq$&!%!J(B\hgcmd{cp}$B%(%$(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
462 $B%j%"%9$rDj5A$7$F;H$&$3$H$b2DG=$@!%!K0z?t$O(B2$B$D0J>e$,I,MW$G!$:G8e$N0z?t$O(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
463 \emph{$B%3%T!<@h(B}$B$G!$$=$l0J30$N0z?t$O(B\emph{$B%3%T!<85(B}$B$H$7$F07$o$l$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
464
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
465 %If you pass \hgcmd{copy} a single file as the source, and the
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
466 %destination does not exist, it creates a new file with that name.
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
467
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
468 $B%3%T!<85$H$7$FC10l$N%U%!%$%k$r;XDj$7!$%3%T!<@h%U%!%$%k$,B8:_$7$J$$>l9g!$(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
469 $B%3%^%s%I$O%3%T!<@h%U%!%$%k$r?75,$K:n@.$9$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
470
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
471 %\interaction{daily.copy.simple}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
472 %If the destination is a directory, Mercurial copies its sources into
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
473 %that directory.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
474 %\interaction{daily.copy.dir-dest}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
475 %Copying a directory is recursive, and preserves the directory
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
476 %structure of the source.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
477 %\interaction{daily.copy.dir-src}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
478 %If the source and destination are both directories, the source tree is
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
479 %recreated in the destination directory.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
480 %\interaction{daily.copy.dir-src-dest}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
481
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
482 \interaction{daily.copy.simple}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
483 $B%3%T!<@h$,%G%#%l%/%H%j$N>l9g!$(BMercurial$B$O%3%T!<85$r%3%T!<@h%G%#%l%/%H%j(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
484 $B$NCf$K%3%T!<$9$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
485 \interaction{daily.copy.dir-dest}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
486 $B%G%#%l%/%H%j$N%3%T!<$O:F5"E*$G!$%3%T!<85$N%G%#%l%/%H%j9=B$$rJ]$D!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
487 \interaction{daily.copy.dir-src}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
488 $B%3%T!<85$H%3%T!<@h$,6&$K%G%#%l%/%H%j$N>l9g!$%3%T!<85$N%D%j!<9=B$$,%3%T!<(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
489 $B@h$N%G%#%l%/%H%j$NCf$K:F8=$5$l$k!%(B
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
490 \interaction{daily.copy.dir-src-dest}
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
491
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
492 %As with the \hgcmd{remove} command, if you copy a file manually and
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
493 %then want Mercurial to know that you've copied the file, simply use
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
494 %the \hgopt{copy}{--after} option to \hgcmd{copy}.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
495 %\interaction{daily.copy.after}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
496
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
497 \hgcmd{remove}$B%3%^%s%I$HF1MM$K!$%U%!%$%k$r<jF0$G%3%T!<$7$?8e$G!$(BMercurial$B$K(B
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
498 $BA`:n$rDLCN$7$?$$>l9g$O!$(B\hgcmd{copy}$B%3%^%s%I$K(B\hgopt{copy}{--after}$B%*%W(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
499 $B%7%g%s$rIU$1$l$P$h$$!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
500 \interaction{daily.copy.after}
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
501
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
502 %\section{Renaming files}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
503 \section{$B%U%!%$%k$N%j%M!<%`(B}
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
504
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
505 %It's rather more common to need to rename a file than to make a copy
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
506 %of it. The reason I discussed the \hgcmd{copy} command before talking
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
507 %about renaming files is that Mercurial treats a rename in essentially
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
508 %the same way as a copy. Therefore, knowing what Mercurial does when
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
509 %you copy a file tells you what to expect when you rename a file.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
510
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
511 $B%U%!%$%k$r%j%M!<%`$9$k$3$H$O%U%!%$%k$N%3%T!<$h$j$b$h$/9T$o$l$k!%%U%!%$%k(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
512 $B$N%j%M!<%`$h$j$bA0$K(B\hgcmd{copy}$B$K$D$$$F=R$Y$?M}M3$O!$(B Mercurial$B$,K\<AE*(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
513 $B$K%j%M!<%`$r%3%T!<$HF1MM$K07$&$+$i$G$"$k!%=>$C$F!$%U%!%$%k$r%3%T!<$9$k;~(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
514 $B$K(BMercurial$B$,9T$&$3$H$rCN$k$3$H$O!$%j%M!<%`$N:]$K5/$3$k$3$H$rCN$k$3$H$K$J(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
515 $B$k!%(B
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
516
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
517 %When you use the \hgcmd{rename} command, Mercurial makes a copy of
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
518 %each source file, then deletes it and marks the file as removed.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
519 %\interaction{daily.rename.rename}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
520 %The \hgcmd{status} command shows the newly copied file as added, and
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
521 %the copied-from file as removed.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
522 %\interaction{daily.rename.status}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
523
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
524 \hgcmd{rename}$B%3%^%s%I$r;H$&;~!$(BMercurial$B$O3F!9$N%=!<%9%U%!%$%k$r%3%T!<(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
525 $B$7!$85$N%U%!%$%k$r:o=|$7$F!$>C5n:Q$_$H%^!<%/$9$k!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
526 \interaction{daily.rename.rename}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
527 \hgcmd{status}$B%3%^%s%I$O?7$?$K%3%T!<$5$l$?%U%!%$%k$rDI2C$5$l$?%U%!%$%k$H(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
528 $B$7$FI=<($7!$%3%T!<$5$l$?%U%!%$%k$r>C5n$5$l$?%U%!%$%k$HI=<($9$k!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
529 \interaction{daily.rename.status}
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
530
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
531 %As with the results of a \hgcmd{copy}, we must use the
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
532 %\hgopt{status}{-C} option to \hgcmd{status} to see that the added file
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
533 %is really being tracked by Mercurial as a copy of the original, now
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
534 %removed, file.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
535 %\interaction{daily.rename.status-copy}
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
536
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
537 \hgcmd{copy}$B%3%^%s%I$N>l9g$HF1MM$K!$(B \hgcmd{status}$B%3%^%s%I$K(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
538 \hgopt{status}{-C}$B%*%W%7%g%s$rMQ$$$F!$DI2C$5$l$?%U%!%$%k$,>C5n$5$l$?%*%j(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
539 $B%8%J%k%U%!%$%k$N%3%T!<$H$7$F(BMercurial$B$KDI@W$5$l$F$$$k$N$+$rD4$Y$k$3$H$,$G(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
540 $B$-$k!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
541 \interaction{daily.rename.status-copy}
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
542
380
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
543 %As with \hgcmd{remove} and \hgcmd{copy}, you can tell Mercurial about
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
544 %a rename after the fact using the \hgopt{rename}{--after} option. In
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
545 %most other respects, the behaviour of the \hgcmd{rename} command, and
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
546 %the options it accepts, are similar to the \hgcmd{copy} command.
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
547
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
548 \hgcmd{remove}$B$H(B\hgcmd{copy}$B$N$h$&$K!$(B\hgopt{rename}{--after}$B%*%W%7%g%s$r(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
549 $B;H$&$3$H$G!$;v8e$K%j%M!<%`$r$9$k$3$H$,$G$-$k!%B?$/$NE@$G(B\hgcmd{rename}$B%3(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
550 $B%^%s%I$N5sF0$H!$$3$N%3%^%s%I$,<u$1F~$l$k%*%W%7%g%s$O(B\hgcmd{copy}$B%3%^%s%I(B
38f034c1da53 finished daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 379
diff changeset
551 $B$HN`;w$7$F$$$k!%(B
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
552
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
553 %If you're familiar with the Unix command line, you'll be glad to know
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
554 %that \hgcmd{rename} command can be invoked as \hgcmd{mv}.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
555
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
556 Unix$B%3%^%s%I$K47$l$F$$$k$J$i!$(B\hgcmd{rename}$B$NBe$o$j$K(B\hgcmd{mv}$B$,;H$($k(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
557 $B$3$H$rCN$C$F$$$k$H$h$$$@$m$&!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
558
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
559 %\subsection{Renaming files and merging changes}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
560 \subsection{$B%U%!%$%k$N%j%M!<%`$HJQ99$N%^!<%8(B}
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
561
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
562 %Since Mercurial's rename is implemented as copy-and-remove, the same
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
563 %propagation of changes happens when you merge after a rename as after
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
564 %a copy.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
565
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
566 Mercurial$B$N%j%M!<%`$O%3%T!<$H:o=|$H$7$F<BAu$5$l$F$*$j!$%j%M!<%`8e$K%^!<(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
567 $B%8$r9T$&$N$H!$%3%T!<8e$K%^!<%8$r9T$&$N$G$OF1$8JQ99$NGH5Z$,5/$-$k!%(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
568
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
569 %If I modify a file, and you rename it to a new name, and then we merge
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
570 %our respective changes, my modifications to the file under its
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
571 %original name will be propagated into the file under its new name.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
572 %(This is something you might expect to ``simply work,'' but not all
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
573 %revision control systems actually do this.)
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
574
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
575 $B;d$,%U%!%$%k$rJQ99$7!$$"$J$?$,$=$N%U%!%$%k$r$r?7$7$$L>A0$K%j%M!<%`$7$?>l(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
576 $B9g!$2f!9$,$*8_$$$NJQ99$r%^!<%8$9$k$H85$N%U%!%$%kL>$KBP$9$k;d$NJQ99$O!$?7(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
577 $B$7$$%U%!%$%kL>$N%U%!%$%k$KGH5Z$9$k!%(B $B!J$3$l$,$G$-$k$N$OEv$?$jA0$H;W$&$+$b(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
578 $B$7$l$J$$$,!$<B$N$H$3$m!$A4$F$N%j%S%8%g%s%3%s%H%m!<%k%7%9%F%`$,$G$-$k$o$1(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
579 $B$G$O$J$$!%!K(B
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
580
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
581 %Whereas having changes follow a copy is a feature where you can
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
582 %perhaps nod and say ``yes, that might be useful,'' it should be clear
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
583 %that having them follow a rename is definitely important. Without
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
584 %this facility, it would simply be too easy for changes to become
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
585 %orphaned when files are renamed.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
586
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
587 $BJQ99$,%3%T!<$K=>$&5!G=$,M-MQ$G$"$k$3$H$O!$$*$=$i$/MF0W$KF10U$,F@$i$l$k$H(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
588 $B$3$m$G$"$k$H;W$o$l$k!%$H$j$o$1%j%M!<%`$KDI=>$9$k5!G=$O$-$o$a$F=EMW$G$"$k(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
589 $B$3$H$OL@Gr$G$"$k!%$b$7$3$N5!G=$,$J$1$l$P!$%U%!%$%k$N%j%M!<%`$K$h$C$FJQ99(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 802
diff changeset
590 $B$O$?$d$9$/9T$->l$r<:$C$F$7$^$&$@$m$&!%(B
121
9094c9fda8ec Start chapter on error recovery.
Bryan O'Sullivan <bos@serpentine.com>
parents: 118
diff changeset
591
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
592 %\subsection{Divergent renames and merging}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
593 \subsection{$BL>A0$H%^!<%8$NH/;6(B}
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
594
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
595 %The case of diverging names occurs when two developers start with a
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
596 %file---let's call it \filename{foo}---in their respective
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
597 %repositories.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
598
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
599 2$B?M$N3+H/<T$N%j%]%8%H%j4V$G(B1$B$D$N%U%!%$%k(B ---\filename{foo}$B$H8F$V$3$H$K$9(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
600 $B$k(B--- $B$K$D$$$FL>A0$NH/;6$,5/$3$C$?>l9g$K$D$$$F9M$($F$_$h$&!%(B
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
601
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
602 \interaction{rename.divergent.clone}
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
603 %Anne renames the file to \filename{bar}.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
604 $B%"%s$O%U%!%$%k$r(B\filename{bar}$B$H2~L>$7$?!%(B
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
605 \interaction{rename.divergent.rename.anne}
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
606 %Meanwhile, Bob renames it to \filename{quux}. (Remember that \hgcmd{mv}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
607 %is an alias for \hgcmd{rename}.)
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
608 $B$=$N4V!$%\%V$OF1$8%U%!%$%k$r(B\filename{quux}$B$H2~L>$7$?!%!J(B\hgcmd{mv}$B$,(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
609 \hgcmd{rename}$B$N%(%$%j%"%9$G$"$k$3$H$KCm0U!K(B
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
610 \interaction{rename.divergent.rename.bob}
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
611 %I like to think of this as a conflict because each developer has
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
612 %expressed different intentions about what the file ought to be named.
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
613 $B3F!9$N3+H/<T$O%U%!%$%k$,2?$H8F$P$l$k$Y$-$+0[$J$C$?0U8+$r;}$C$F$*$j!$$3$l(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
614 $B$OL>A0$N%3%s%U%j%/%H$G$"$k!%(B
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
615
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
616 %What do you think should happen when they merge their work?
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
617 %Mercurial's actual behaviour is that it always preserves \emph{both}
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
618 %names when it merges changesets that contain divergent renames.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
619 %\interaction{rename.divergent.merge}
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
620
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
621 $BH`$i$,%^!<%8$r9T$C$?:]$K$I$&$J$l$P$h$$$@$m$&$+!)(B Mercurial$B$N<B:]$N5sF0(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
622 $B$O!$H/;6$7$?%j%M!<%`$,$"$k%A%'%s%8%;%C%H$r%^!<%8$7$?>l9g$O>o$K(B\emph{$BN>J}(B}$B$N(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
623 $BL>A0$rJ]B8$9$k!%(B
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
624 \interaction{rename.divergent.merge}
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
625
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
626 %Notice that while Mercurial warns about the divergent renames, it leaves
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
627 %it up to you to do something about the divergence after the merge.
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
628
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
629 Mercurial$B$OL>A0$NH/;6$K$D$$$F7Y9p$9$k$,!$%^!<%88e$bL>A0$NH/;6$N2r7h$O%f!<(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
630 $B%6$KG$$;$kE@$KCm0U!%(B
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
631
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
632 %\subsection{Convergent renames and merging}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
633 \subsection{$B%j%M!<%`$H%^!<%8$K$h$k<}B+(B}
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
634
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
635 %Another kind of rename conflict occurs when two people choose to
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
636 %rename different \emph{source} files to the same \emph{destination}.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
637 %In this case, Mercurial runs its normal merge machinery, and lets you
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
638 %guide it to a suitable resolution.
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
639
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
640 2$B?M$N%f!<%6$,0[$J$k(B\emph{$B%=!<%9(B}$B%U%!%$%k72$rF10l$N(B\emph{$BL\E*(B}$B%U%!%$%k$K%j(B
835
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 802
diff changeset
641 $B%M!<%`$9$k$H%3%s%U%j%/%H$,5/$-$k!%$3$N>l9g!$(BMercurial$B$ODL>o$N%^!<%85!9=$r(B
8a3041e6f3cb reflect comments by Hiroshi Someya.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 802
diff changeset
642 $B5/F0$7!$%f!<%6$KE,@Z$J2r7h$rB%$9!%(B
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
643
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
644 %\subsection{Other name-related corner cases}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
645 \subsection{$BL>A0$K4XO"$7$?$$$/$D$+$NLdBj(B}
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
646
376
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
647 %Mercurial has a longstanding bug in which it fails to handle a merge
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
648 %where one side has a file with a given name, while another has a
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
649 %directory with the same name. This is documented as~\bug{29} .
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
650 %\interaction{issue29.go}
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
651
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
652 Mercurial$B$K$O!$0lJ}$rL>A0$rM?$($?%U%!%$%k!$$b$&0lJ}$rF1L>$N%G%#%l%/%H%j$H(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
653 $B$7$F%^!<%8$r9T$&$H<:GT$9$k%P%0$,0JA0$+$i$"$k!%$3$l$O(B~\bug{29}$B$H$7$F%I%-%e(B
9f7812b79c70 more daily.tex
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 368
diff changeset
654 $B%a%s%H2=$5$l$F$$$k!%(B
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
655 \interaction{issue29.go}
121
9094c9fda8ec Start chapter on error recovery.
Bryan O'Sullivan <bos@serpentine.com>
parents: 118
diff changeset
656
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
657 %\section{Recovering from mistakes}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
658 \section{$B%_%9$+$i$N2sI|(B}
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
659
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
660 %Mercurial has some useful commands that will help you to recover from
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
661 %some common mistakes.
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
662
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
663 Mercurial$B$K$O0lHLE*$J%_%9$+$i$N2sI|$r=u$1$k$$$/$D$+$NM-MQ$J%3%^%s%I$,$"$k!%(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
664
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
665 %The \hgcmd{revert} command lets you undo changes that you have made to
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
666 %your working directory. For example, if you \hgcmd{add} a file by
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
667 %accident, just run \hgcmd{revert} with the name of the file you added,
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
668 %and while the file won't be touched in any way, it won't be tracked
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
669 %for adding by Mercurial any longer, either. You can also use
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
670 %\hgcmd{revert} to get rid of erroneous changes to a file.
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
671
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
672 \hgcmd{revert}$B%3%^%s%I$O%o!<%-%s%0%G%#%l%/%H%jFb$G9T$C$?JQ99$r<h$j>C$9!%(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
673 $B$?$H$($P!$8m$C$F(B\hgcmd{add}$B$r9T$C$?>l9g!$DI2C$7$?%U%!%$%kL>$H6&$K(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
674 \hgcmd{revert}$B$r<B9T$9$l$P%U%!%$%k$O2?$bJQ99$5$l$:!$(BMercurial$B$N4IM}$+$i30(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
675 $B$5$l$k!%$^$?(B\hgcmd{revert}$B$O%U%!%$%k$X$N4V0c$C$?JQ99$r>C5n$9$k$N$b;H$($k!%(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
676
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
677 %It's good to remember that the \hgcmd{revert} command is useful for
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
678 %changes that you have not yet committed. Once you've committed a
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
679 %change, if you decide it was a mistake, you can still do something
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
680 %about it, though your options may be more limited.
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
681
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
682 \hgcmd{revert}$B%3%^%s%I$OL$%3%_%C%H$NJQ99$KBP$7$FM-8z$G$"$k$3$H$r3P$($F$*(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
683 $B$/$HNI$$!%JQ99$r%3%_%C%H$7$?$"$H$G!$$3$l$,4V0c$$$G$"$C$?$3$H$K5$$E$$$?>l(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
684 $B9g$O!$$H$l$k<jCJ$O$d$d8B$i$l$k!%(B
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
685
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
686 %For more information about the \hgcmd{revert} command, and details
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
687 %about how to deal with changes you have already committed, see
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
688 %chapter~\ref{chap:undo}.
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
689
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
690 \hgcmd{revert}$B%3%^%s%I$K$D$$$F$N$h$j>\:Y$J>pJs$H!$$9$G$K%3%_%C%H$7$?JQ99(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
691 $B$X$NA`:n$K$D$$$F$O(B~\ref{chap:undo}$B$N>O$r;2>H$5$l$?$$!%(B
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
692
802
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
693 %\section{Dealing with tricky merges}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
694 \section{$BJ#;($J%^!<%8$N<h$j07$$(B}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
695
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
696 %In a complicated or large project, it's not unusual for a merge of two
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
697 %changesets to result in some headaches. Suppose there's a big source
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
698 %file that's been extensively edited by each side of a merge: this is
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
699 %almost inevitably going to result in conflicts, some of which can take a
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
700 %few tries to sort out.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
701
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
702 $BJ#;($J%W%m%8%'%/%H$dBg5,LO$J%W%m%8%'%/%H$G$O!$(B 2$B$D$N%A%'%s%8%;%C%H$r%^!<(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
703 $B%8$9$k;~$KF,$rG:$^$;$k$3$H$,>/$J$/$J$$!%%^!<%885$NAPJ}$G@9$s$KJT=8$5$l$F(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
704 $B$$$kBg$-$J%=!<%9%U%!%$%k$,$"$k$H$9$k$H!$%3%s%U%j%/%H$,@8$8$k$3$H$O$[$\IT(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
705 $B2DHr$G$"$j!$<}=&$9$k$?$a$K$O>/!9<j?t$,$+$+$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
706
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
707 %Let's develop a simple case of this and see how to deal with it. We'll
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
708 %start off with a repository containing one file, and clone it
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
709 %twice.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
710
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
711 $B$3$N$h$&$J>l9g$K$D$$$F!$4JC1$JNc$G2r7hJ}K!$r$r8+$F$_$h$&!%$^$:!$%U%!%$%k(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
712 1$B$D$N$_$r4^$`%j%]%8%H%j$r:n$j!$$3$l$rFsEY%/%m!<%s$9$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
713
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
714 %\interaction{ch04-resolve.init}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
715
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
716 %In one clone, we'll modify the file in one way.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
717
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
718 $B%/%m!<%s$N0lJ}$G%U%!%$%k$rJQ99$9$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
719
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
720 %\interaction{ch04-resolve.left}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
721
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
722 %In another, we'll modify the file differently.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
723
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
724 $B$b$&0lJ}$N%/%m!<%s$G$bJL$NJQ99$r9T$&!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
725
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
726 %\interaction{ch04-resolve.right}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
727
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
728 %Next, we'll pull each set of changes into our original repo.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
729
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
730 $B<!$K85$N%j%]%8%H%j$K3F!9$NJQ99$r(Bpull$B$9$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
731
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
732 %\interaction{ch04-resolve.pull}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
733
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
734 %We expect our repository to now contain two heads.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
735
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
736 $B85$N%j%]%8%H%j$K$O:#%X%C%I$,(B2$B$D$"$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
737
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
738 %\interaction{ch04-resolve.heads}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
739
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
740 %Normally, if we run \hgcmd{merge} at this point, it will drop us into a
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
741 %GUI that will let us manually resolve the conflicting edits to
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
742
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
743 %\filename{myfile.txt}. However, to simplify things for presentation
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
744 %here, we'd like the merge to fail immediately instead. Here's one way
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
745 %we can do so.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
746
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
747 $BDL>o$N>l9g!$$3$3$G(B\hgcmd{merge}$B$r<B9T$9$k$H!$%U%!%$%k(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
748 \filename{myfile.txt}$B$N%3%s%U%j%/%H$r<jF0$G2r7h$9$k$?$a$N(BGUI$B$,5/F0$9$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
749 $B$7$+$7$3$3$G$O@bL@$rC1=c$K$9$k$?$a$K!$D>$A$K<:GT$9$k%^!<%8$r$7$F$_$h$&!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
750 $B$=$NJ}K!$O$3$N$h$&$K$J$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
751
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
752 %\interaction{ch04-resolve.export}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
753
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
754 %We've told Mercurial's merge machinery to run the command
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
755 %\command{false} (which, as we desire, fails immediately) if it detects a
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
756 %merge that it can't sort out automatically.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
757
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
758 $B<+F0E*$KJRIU$+$J$$%^!<%8$,8+$D$+$C$?>l9g$O!$(BMercurial$B$N%^!<%8%a%+%K%:%`$,(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
759 \command{false}$B%3%^%s%I!J$3$l$O4uK>DL$jD>$A$K<:GT$9$k!%!K$r<B9T$9$k$h$&(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
760 $B$K$5$;$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
761
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
762 %If we now fire up \hgcmd{merge}, it should grind to a halt and report a
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
763 %failure.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
764
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
765 $B$3$3$G(B\hgcmd{merge}$B$r<B9T$9$k$H!$<B9T$ODd;_$7$F!$%^!<%8$N<:GT$,Js9p$5$l(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
766 $B$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
767
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
768 %\interaction{ch04-resolve.merge}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
769
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
770 %Even if we don't notice that the merge failed, Mercurial will prevent us
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
771 %from accidentally committing the result of a failed merge.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
772
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
773 $B%f!<%6$,%^!<%8$N<:GT$K5$IU$+$J$$>l9g$G$b!$(BMercurial$B$O<+F0E*$K<:GT$7$?%^!<(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
774 $B%8$N7k2L$N%3%_%C%H$rK8$2$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
775
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
776 %\interaction{ch04-resolve.cifail}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
777
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
778 %When \hgcmd{commit} fails in this case, it suggests that we use the
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
779 %unfamiliar \hgcmd{resolve} command. As usual, \hgcmd{help resolve} will
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
780 %print a helpful synopsis.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
781
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
782 \hgcmd{commit}$B$,<:GT$9$k$H!$$"$^$jFk@w$_$N$J$$%3%^%s%I$G$"$k(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
783 \hgcmd{resolve}$B$r;H$&$h$&$K%a%C%;!<%8$,I=<($5$l$k!%$3$N%3%^%s%I$N;HMQK!$O(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
784 $B$$$D$bDL$j(B\hgcmd{help resolve}$B$r<B9T$9$k$3$H$G8+$k$3$H$,$G$-$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
785
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
786 %\subsection{File resolution states}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
787 \subsection{$B%U%!%$%k2r7h>uBV(B}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
788
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
789 %When a merge occurs, most files will usually remain unmodified. For
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
790 %each file where Mercurial has to do something, it tracks the state of
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
791 %the file.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
792
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
793 $B%^!<%8$N:]$K$[$H$s$I$N%U%!%$%k$O$=$N$^$^;D$5$l$k!%(BMercurial$B$OA`:n$r9T$&%U%!(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
794 $B%$%k$N>uBV$r4IM}$7$F$$$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
795
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
796 \begin{itemize}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
797 % \item A \emph{resolved} file has been successfully merged, either
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
798 % automatically by Mercurial or manually with human intervention.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
799 \item \emph{$B2r7h:Q$_(B}$B%U%!%$%k$O%^!<%8$,@.8y$7$?%U%!%$%k$G!$(BMercurial$B$K(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
800 $B$h$C$F<+F0E*$K9T$o$l$?$+!$?M$,%^!<%8:n6H$r9T$C$?$+$OLd$o$J$$!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
801 % \item An \emph{unresolved} file was not merged successfully, and needs
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
802 % more attention.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
803 \item \emph{$BL$2r7h(B}$B%U%!%$%k$O%^!<%8$,<:GT$7!$$J$s$i$+$N=$@5$,I,MW$J(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
804 $B%U%!%$%k$G$"$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
805 \end{itemize}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
806
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
807 %If Mercurial sees \emph{any} file in the unresolved state after a merge,
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
808 %it considers the merge to have failed. Fortunately, we do not need to
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
809 %restart the entire merge from scratch.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
810
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
811 Mercurial$B$O%^!<%88e$KL$2r7h>uBV$N%U%!%$%k$r8+$D$1$k$H!$%^!<%8$,<:GT(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
812 $B$7$?$HH=CG$9$k!%9,$$$J$3$H$K$3$N>l9g$G$b%^!<%8$r;O$a$+$i$d$jD>$9I,MW$O$J(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
813 $B$$!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
814
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
815 %The \hgopt{resolve}{--list} or \hgopt{resolve}{-l} option to
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
816 %\hgcmd{resolve} prints out the state of each merged file.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
817
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
818 \hgcmd{resolve}$B%3%^%s%I$G(B\hgopt{resolve}{--list}$B%*%W%7%g%s$d(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
819 \hgopt{resolve}{-l}$B%*%W%7%g%s$r;H$&$H!$%^!<%8$5$l$?3F!9$N%U%!%$%k$N>uBV(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
820 $B$,I=<($5$l$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
821
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
822 %\interaction{ch04-resolve.list}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
823
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
824 %In the output from \hgcmd{resolve}, a resolved file is marked with
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
825 %\texttt{R}, while an unresolved file is marked with \texttt{U}. If any
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
826 %files are listed with \texttt{U}, we know that an attempt to commit the
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
827 %results of the merge will fail.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
828
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
829 \hgcmd{resolve}$B$N=PNO$G!$2r7h:Q$_%U%!%$%k$O(B\texttt{R}$B!$L$2r7h$N%U%!%$%k(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
830 $B$O(B\texttt{U}$B$HI=$5$l$k!%(B\texttt{U}$B$H$J$k%U%!%$%k$,$"$k>l9g!$%^!<%87k2L$N(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
831 $B%3%_%C%H$O<:GT$9$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
832
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
833 %\subsection{Resolving a file merge}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
834 \subsection{$B%U%!%$%k%^!<%8$N2r7h(B}
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
835
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
836 %We have several options to move a file from the unresolved into the
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
837 %resolved state. By far the most common is to rerun \hgcmd{resolve}. If
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
838 %we pass the names of individual files or directories, it will retry the
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
839 %merges of any unresolved files present in those locations. We can also
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
840 %pass the \hgopt{resolve}{--all} or \hgopt{resolve}{-a} option, which
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
841 %will retry the merges of \emph{all} unresolved files.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
842
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
843 $B%U%!%$%k$rL$2r7h>uBV$+$i2r7h:Q$_>uBV$X;}$C$F$$$/J}K!$O$$$/$D$+$"(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
844 $B$k!%:G$b$h$/MQ$$$i$l$k$N$,:FEY(B\hgcmd{resolve}$B$r<B9T$9$kJ}K!$G$"$k!%$3$N%3(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
845 $B%^%s%I$O3F!9$N%U%!%$%k$d%G%#%l%/%H%j$NL>A0$rEO$9$H!$L$2r7h$N%U%!%$%k(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
846 $B$KBP$7$F%^!<%8$r:FEY;n$_$k!%(B \hgopt{resolve}{--all}$B$^$?$O(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
847 \hgopt{resolve}{-a}$B%*%W%7%g%s$rEO$7$F(B\emph{$BA4$F$N(B}$BL$2r7h%U%!%$%k$KBP(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
848 $B$7$F:F%^!<%8$r9T$&$3$H$b$G$-$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
849
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
850 %Mercurial also lets us modify the resolution state of a file directly.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
851 %We can manually mark a file as resolved using the
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
852 %\hgopt{resolve}{--mark} option, or as unresolved using the
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
853 %\hgopt{resolve}{--unmark} option. This allows us to clean up a
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
854 %particularly messy merge by hand, and to keep track of our progress with
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
855 %each file as we go.
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
856
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
857 Mercurial$B$K$h$C$F%U%!%$%k$N2r7h>uBV$rD>@\JQ99$9$k$3$H$b2DG=$@!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
858 \hgopt{resolve}{--mark}$B%*%W%7%g%s$r;H$&$3$H$G!$%U%!%$%k$r2r7h:Q$_$H%^!<(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
859 $B%/$7$?$j!$5U$K(B\hgopt{resolve}{--unmark}$B%*%W%7%g%s$GL$2r7h$H%^!<%/$9$k(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
860 $B$3$H$b$G$-$k!%$3$l$i$K$h$C$F:.Mp$7$?%^!<%8$r<jF0$G@0M}$7$F!$:n6H$rB3$1$k(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
861 $B$3$H$,$G$-$k!%(B
de4142983445 Propagate 3b640272a966
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 380
diff changeset
862
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
863 %%% Local Variables:
293
3b1291f24c0d - replaved latex-mode to yatex-mode
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 290
diff changeset
864 %%% mode: yatex
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
865 %%% TeX-master: "00book"
368
7ef84661e43e started daily.tex either.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 348
diff changeset
866 %%% End: