annotate en/ch04-daily.xml @ 773:3b640272a966

Progres on resolve
author Bryan O'Sullivan <bos@serpentine.com>
date Sun, 12 Apr 2009 00:05:30 -0700
parents b338f5490029
children 29f0f79cf614
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
1 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
2
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
3 <chapter id="chap:daily">
671
13513d2a128d Add sensible names to chapters.
Bryan O'Sullivan <bos@serpentine.com>
parents: 666
diff changeset
4 <?dbhtml filename="mercurial-in-daily-use.html"?>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
5 <title>Mercurial in daily use</title>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
6
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
7 <sect1>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
8 <title>Telling Mercurial which files to track</title>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
9
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
10 <para id="x_1a3">Mercurial does not work with files in your repository unless
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
11 you tell it to manage them. The <command role="hg-cmd">hg
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
12 status</command> command will tell you which files Mercurial
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
13 doesn't know about; it uses a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
14 <quote><literal>?</literal></quote> to display such
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
15 files.</para>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
16
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
17 <para id="x_1a4">To tell Mercurial to track a file, use the <command
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
18 role="hg-cmd">hg add</command> command. Once you have added a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
19 file, the entry in the output of <command role="hg-cmd">hg
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
20 status</command> for that file changes from
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
21 <quote><literal>?</literal></quote> to
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
22 <quote><literal>A</literal></quote>.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
23
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
24 &interaction.daily.files.add;
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
25
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
26 <para id="x_1a5">After you run a <command role="hg-cmd">hg commit</command>,
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
27 the files that you added before the commit will no longer be
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
28 listed in the output of <command role="hg-cmd">hg
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
29 status</command>. The reason for this is that by default, <command
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
30 role="hg-cmd">hg status</command> only tells you about
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
31 <quote>interesting</quote> files&emdash;those that you have (for
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
32 example) modified, removed, or renamed. If you have a repository
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
33 that contains thousands of files, you will rarely want to know
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
34 about files that Mercurial is tracking, but that have not
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
35 changed. (You can still get this information; we'll return to
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
36 this later.)</para>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
37
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
38 <para id="x_1a6">Once you add a file, Mercurial doesn't do anything with it
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
39 immediately. Instead, it will take a snapshot of the file's
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
40 state the next time you perform a commit. It will then continue
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
41 to track the changes you make to the file every time you commit,
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
42 until you remove the file.</para>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
43
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
44 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
45 <title>Explicit versus implicit file naming</title>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
46
771
b338f5490029 Americanize spellings :-(
Bryan O'Sullivan <bos@serpentine.com>
parents: 753
diff changeset
47 <para id="x_1a7">A useful behavior that Mercurial has is that if you pass
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
48 the name of a directory to a command, every Mercurial command
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
49 will treat this as <quote>I want to operate on every file in
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
50 this directory and its subdirectories</quote>.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
51
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
52 &interaction.daily.files.add-dir;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
53
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
54 <para id="x_1a8">Notice in this example that Mercurial printed
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
55 the names of the files it added, whereas it didn't do so when
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
56 we added the file named <filename>myfile.txt</filename> in the
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
57 earlier example.</para>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
58
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
59 <para id="x_1a9">What's going on is that in the former case, we explicitly
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
60 named the file to add on the command line. The assumption
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
61 that Mercurial makes in such cases is that we know what we
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
62 are doing, and it doesn't print any output.</para>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
63
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
64 <para id="x_1aa">However, when we <emphasis>imply</emphasis> the names of
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
65 files by giving the name of a directory, Mercurial takes the
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
66 extra step of printing the name of each file that it does
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
67 something with. This makes it more clear what is happening,
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
68 and reduces the likelihood of a silent and nasty surprise.
771
b338f5490029 Americanize spellings :-(
Bryan O'Sullivan <bos@serpentine.com>
parents: 753
diff changeset
69 This behavior is common to most Mercurial commands.</para>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
70 </sect2>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
71
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
72 <sect2>
771
b338f5490029 Americanize spellings :-(
Bryan O'Sullivan <bos@serpentine.com>
parents: 753
diff changeset
73 <title>Mercurial tracks files, not directories</title>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
74
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
75 <para id="x_1ab">Mercurial does not track directory information. Instead,
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
76 it tracks the path to a file. Before creating a file, it
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
77 first creates any missing directory components of the path.
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
78 After it deletes a file, it then deletes any empty directories
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
79 that were in the deleted file's path. This sounds like a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
80 trivial distinction, but it has one minor practical
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
81 consequence: it is not possible to represent a completely
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
82 empty directory in Mercurial.</para>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
83
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
84 <para id="x_1ac">Empty directories are rarely useful, and there are
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
85 unintrusive workarounds that you can use to achieve an
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
86 appropriate effect. The developers of Mercurial thus felt
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
87 that the complexity that would be required to manage empty
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
88 directories was not worth the limited benefit this feature
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
89 would bring.</para>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
90
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
91 <para id="x_1ad">If you need an empty directory in your repository, there
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
92 are a few ways to achieve this. One is to create a directory,
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
93 then <command role="hg-cmd">hg add</command> a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
94 <quote>hidden</quote> file to that directory. On Unix-like
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
95 systems, any file name that begins with a period
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
96 (<quote><literal>.</literal></quote>) is treated as hidden by
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
97 most commands and GUI tools. This approach is illustrated
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
98 below.</para>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
99
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
100 &interaction.daily.files.hidden;
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
101
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
102 <para id="x_1ae">Another way to tackle a need for an empty directory is to
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
103 simply create one in your automated build scripts before they
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
104 will need it.</para>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
105 </sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
106 </sect1>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
107
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
108 <sect1>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
109 <title>How to stop tracking a file</title>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
110
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
111 <para id="x_1af">Once you decide that a file no longer belongs in your
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
112 repository, use the <command role="hg-cmd">hg remove</command>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
113 command. This deletes the file, and tells Mercurial to stop
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
114 tracking it. A removed file is represented in the output of
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
115 <command role="hg-cmd">hg status</command> with a
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
116 <quote><literal>R</literal></quote>.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
117
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
118 &interaction.daily.files.remove;
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
119
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
120 <para id="x_1b0">After you <command role="hg-cmd">hg remove</command> a file,
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
121 Mercurial will no longer track changes to that file, even if you
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
122 recreate a file with the same name in your working directory.
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
123 If you do recreate a file with the same name and want Mercurial
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
124 to track the new file, simply <command role="hg-cmd">hg
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
125 add</command> it. Mercurial will know that the newly added
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
126 file is not related to the old file of the same name.</para>
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
127
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
128 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
129 <title>Removing a file does not affect its history</title>
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
130
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
131 <para id="x_1b1">It is important to understand that removing a file has
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
132 only two effects.</para>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
133 <itemizedlist>
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
134 <listitem><para id="x_1b2">It removes the current version of the file
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
135 from the working directory.</para>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
136 </listitem>
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
137 <listitem><para id="x_1b3">It stops Mercurial from tracking changes to
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
138 the file, from the time of the next commit.</para>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
139 </listitem></itemizedlist>
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
140 <para id="x_1b4">Removing a file <emphasis>does not</emphasis> in any way
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
141 alter the <emphasis>history</emphasis> of the file.</para>
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
142
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
143 <para id="x_1b5">If you update the working directory to a
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
144 changeset that was committed when it was still tracking a file
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
145 that you later removed, the file will reappear in the working
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
146 directory, with the contents it had when you committed that
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
147 changeset. If you then update the working directory to a
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
148 later changeset, in which the file had been removed, Mercurial
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
149 will once again remove the file from the working
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
150 directory.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
151 </sect2>
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
152
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
153 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
154 <title>Missing files</title>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
155
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
156 <para id="x_1b6">Mercurial considers a file that you have deleted, but not
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
157 used <command role="hg-cmd">hg remove</command> to delete, to
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
158 be <emphasis>missing</emphasis>. A missing file is
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
159 represented with <quote><literal>!</literal></quote> in the
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
160 output of <command role="hg-cmd">hg status</command>.
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
161 Mercurial commands will not generally do anything with missing
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
162 files.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
163
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
164 &interaction.daily.files.missing;
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
165
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
166 <para id="x_1b7">If your repository contains a file that <command
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
167 role="hg-cmd">hg status</command> reports as missing, and
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
168 you want the file to stay gone, you can run <command
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
169 role="hg-cmd">hg remove <option
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
170 role="hg-opt-remove">--after</option></command> at any
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
171 time later on, to tell Mercurial that you really did mean to
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
172 remove the file.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
173
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
174 &interaction.daily.files.remove-after;
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
175
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
176 <para id="x_1b8">On the other hand, if you deleted the missing file by
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
177 accident, give <command role="hg-cmd">hg revert</command> the
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
178 name of the file to recover. It will reappear, in unmodified
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
179 form.</para>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
180
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
181 &interaction.daily.files.recover-missing;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
182 </sect2>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
183
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
184 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
185 <title>Aside: why tell Mercurial explicitly to remove a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
186 file?</title>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
187
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
188 <para id="x_1b9">You might wonder why Mercurial requires you to explicitly
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
189 tell it that you are deleting a file. Early during the
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
190 development of Mercurial, it let you delete a file however you
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
191 pleased; Mercurial would notice the absence of the file
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
192 automatically when you next ran a <command role="hg-cmd">hg
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
193 commit</command>, and stop tracking the file. In practice,
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
194 this made it too easy to accidentally remove a file without
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
195 noticing.</para>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
196 </sect2>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
197
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
198 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
199 <title>Useful shorthand&emdash;adding and removing files in one
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
200 step</title>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
201
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
202 <para id="x_1ba">Mercurial offers a combination command, <command
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
203 role="hg-cmd">hg addremove</command>, that adds untracked
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
204 files and marks missing files as removed.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
205
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
206 &interaction.daily.files.addremove;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
207
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
208 <para id="x_1bb">The <command role="hg-cmd">hg commit</command> command
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
209 also provides a <option role="hg-opt-commit">-A</option>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
210 option that performs this same add-and-remove, immediately
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
211 followed by a commit.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
212
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
213 &interaction.daily.files.commit-addremove;
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
214 </sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
215 </sect1>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
216
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
217 <sect1>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
218 <title>Copying files</title>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
219
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
220 <para id="x_1bc">Mercurial provides a <command role="hg-cmd">hg
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
221 copy</command> command that lets you make a new copy of a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
222 file. When you copy a file using this command, Mercurial makes
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
223 a record of the fact that the new file is a copy of the original
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
224 file. It treats these copied files specially when you merge
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
225 your work with someone else's.</para>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
226
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
227 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
228 <title>The results of copying during a merge</title>
121
9094c9fda8ec Start chapter on error recovery.
Bryan O'Sullivan <bos@serpentine.com>
parents: 118
diff changeset
229
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
230 <para id="x_1bd">What happens during a merge is that changes
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
231 <quote>follow</quote> a copy. To best illustrate what this
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
232 means, let's create an example. We'll start with the usual
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
233 tiny repository that contains a single file.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
234
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
235 &interaction.daily.copy.init;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
236
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
237 <para id="x_1be">We need to do some work in
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
238 parallel, so that we'll have something to merge. So let's
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
239 clone our repository.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
240
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
241 &interaction.daily.copy.clone;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
242
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
243 <para id="x_1bf">Back in our initial repository, let's use the <command
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
244 role="hg-cmd">hg copy</command> command to make a copy of
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
245 the first file we created.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
246
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
247 &interaction.daily.copy.copy;
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
248
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
249 <para id="x_1c0">If we look at the output of the <command role="hg-cmd">hg
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
250 status</command> command afterwards, the copied file looks
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
251 just like a normal added file.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
252
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
253 &interaction.daily.copy.status;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
254
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
255 <para id="x_1c1">But if we pass the <option
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
256 role="hg-opt-status">-C</option> option to <command
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
257 role="hg-cmd">hg status</command>, it prints another line of
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
258 output: this is the file that our newly-added file was copied
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
259 <emphasis>from</emphasis>.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
260
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
261 &interaction.daily.copy.status-copy;
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
262
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
263 <para id="x_1c2">Now, back in the repository we cloned, let's make a change
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
264 in parallel. We'll add a line of content to the original file
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
265 that we created.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
266
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
267 &interaction.daily.copy.other;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
268
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
269 <para id="x_1c3">Now we have a modified <filename>file</filename> in this
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
270 repository. When we pull the changes from the first
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
271 repository, and merge the two heads, Mercurial will propagate
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
272 the changes that we made locally to <filename>file</filename>
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
273 into its copy, <filename>new-file</filename>.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
274
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
275 &interaction.daily.copy.merge;
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
276 </sect2>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
277
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
278 <sect2 id="sec:daily:why-copy">
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
279 <title>Why should changes follow copies?</title>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
280
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
281 <para id="x_1c4">This behavior&emdash;of changes to a file
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
282 propagating out to copies of the file&emdash;might seem
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
283 esoteric, but in most cases it's highly desirable.</para>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
284
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
285 <para id="x_1c5">First of all, remember that this propagation
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
286 <emphasis>only</emphasis> happens when you merge. So if you
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
287 <command role="hg-cmd">hg copy</command> a file, and
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
288 subsequently modify the original file during the normal course
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
289 of your work, nothing will happen.</para>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
290
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
291 <para id="x_1c6">The second thing to know is that modifications will only
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
292 propagate across a copy as long as the changeset that you're
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
293 merging changes from <emphasis>hasn't yet seen</emphasis>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
294 the copy.</para>
42
cbfa08bcf181 Start the "Mercurial in daily use" chapter.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
295
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
296 <para id="x_1c7">The reason that Mercurial does this is as follows. Let's
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
297 say I make an important bug fix in a source file, and commit
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
298 my changes. Meanwhile, you've decided to <command
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
299 role="hg-cmd">hg copy</command> the file in your repository,
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
300 without knowing about the bug or having seen the fix, and you
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
301 have started hacking on your copy of the file.</para>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
302
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
303 <para id="x_1c8">If you pulled and merged my changes, and Mercurial
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
304 <emphasis>didn't</emphasis> propagate changes across copies,
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
305 your new source file would now contain the bug, and unless you
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
306 knew to propagate the bug fix by hand, the bug would
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
307 <emphasis>remain</emphasis> in your copy of the file.</para>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
308
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
309 <para id="x_1c9">By automatically propagating the change that fixed the bug
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
310 from the original file to the copy, Mercurial prevents this
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
311 class of problem. To my knowledge, Mercurial is the
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
312 <emphasis>only</emphasis> revision control system that
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
313 propagates changes across copies like this.</para>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
314
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
315 <para id="x_1ca">Once your change history has a record that the copy and
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
316 subsequent merge occurred, there's usually no further need to
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
317 propagate changes from the original file to the copied file,
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
318 and that's why Mercurial only propagates changes across copies
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
319 at the first merge, and not afterwards.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
320 </sect2>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
321
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
322 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
323 <title>How to make changes <emphasis>not</emphasis> follow a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
324 copy</title>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
325
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
326 <para id="x_1cb">If, for some reason, you decide that this business of
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
327 automatically propagating changes across copies is not for
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
328 you, simply use your system's normal file copy command (on
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
329 Unix-like systems, that's <command>cp</command>) to make a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
330 copy of a file, then <command role="hg-cmd">hg add</command>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
331 the new copy by hand. Before you do so, though, please do
691
4ce9d0754af3 Remove the words "section", "chapter", etc from in front of xref tags.
Bryan O'Sullivan <bos@serpentine.com>
parents: 683
diff changeset
332 reread <xref linkend="sec:daily:why-copy"/>, and make
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
333 an informed
771
b338f5490029 Americanize spellings :-(
Bryan O'Sullivan <bos@serpentine.com>
parents: 753
diff changeset
334 decision that this behavior is not appropriate to your
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
335 specific case.</para>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
336
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
337 </sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
338 <sect2>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
339 <title>Behavior of the <command role="hg-cmd">hg copy</command>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
340 command</title>
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
341
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
342 <para id="x_1cc">When you use the <command role="hg-cmd">hg copy</command>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
343 command, Mercurial makes a copy of each source file as it
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
344 currently stands in the working directory. This means that if
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
345 you make some modifications to a file, then <command
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
346 role="hg-cmd">hg copy</command> it without first having
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
347 committed those changes, the new copy will also contain the
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
348 modifications you have made up until that point. (I find this
771
b338f5490029 Americanize spellings :-(
Bryan O'Sullivan <bos@serpentine.com>
parents: 753
diff changeset
349 behavior a little counterintuitive, which is why I mention it
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
350 here.)</para>
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
351
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
352 <para id="x_1cd">The <command role="hg-cmd">hg copy</command>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
353 command acts similarly to the Unix <command>cp</command>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
354 command (you can use the <command role="hg-cmd">hg
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
355 cp</command> alias if you prefer). We must supply two or
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
356 more arguments, of which the last is treated as the
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
357 <emphasis>destination</emphasis>, and all others are
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
358 <emphasis>sources</emphasis>.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
359
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
360 <para>If you pass <command role="hg-cmd">hg copy</command> a
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
361 single file as the source, and the destination does not exist,
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
362 it creates a new file with that name.</para>
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
363
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
364 &interaction.daily.copy.simple;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
365
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
366 <para id="x_1ce">If the destination is a directory, Mercurial copies its
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
367 sources into that directory.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
368
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
369 &interaction.daily.copy.dir-dest;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
370
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
371 <para id="x_1cf">Copying a directory is
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
372 recursive, and preserves the directory structure of the
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
373 source.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
374
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
375 &interaction.daily.copy.dir-src;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
376
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
377 <para id="x_1d0">If the source and destination are both directories, the
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
378 source tree is recreated in the destination directory.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
379
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
380 &interaction.daily.copy.dir-src-dest;
117
6b0f4498569e Beef up daily routine material. Focus on merge-across-copy.
Bryan O'Sullivan <bos@serpentine.com>
parents: 43
diff changeset
381
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
382 <para id="x_1d1">As with the <command role="hg-cmd">hg remove</command>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
383 command, if you copy a file manually and then want Mercurial
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
384 to know that you've copied the file, simply use the <option
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
385 role="hg-opt-copy">--after</option> option to <command
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
386 role="hg-cmd">hg copy</command>.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
387
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
388 &interaction.daily.copy.after;
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
389 </sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
390 </sect1>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
391
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
392 <sect1>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
393 <title>Renaming files</title>
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
394
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
395 <para id="x_1d2">It's rather more common to need to rename a file than to
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
396 make a copy of it. The reason I discussed the <command
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
397 role="hg-cmd">hg copy</command> command before talking about
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
398 renaming files is that Mercurial treats a rename in essentially
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
399 the same way as a copy. Therefore, knowing what Mercurial does
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
400 when you copy a file tells you what to expect when you rename a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
401 file.</para>
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
402
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
403 <para id="x_1d3">When you use the <command role="hg-cmd">hg rename</command>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
404 command, Mercurial makes a copy of each source file, then
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
405 deletes it and marks the file as removed.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
406
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
407 &interaction.daily.rename.rename;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
408
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
409 <para id="x_1d4">The <command role="hg-cmd">hg status</command> command shows
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
410 the newly copied file as added, and the copied-from file as
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
411 removed.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
412
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
413 &interaction.daily.rename.status;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
414
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
415 <para id="x_1d5">As with the results of a <command role="hg-cmd">hg
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
416 copy</command>, we must use the <option
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
417 role="hg-opt-status">-C</option> option to <command
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
418 role="hg-cmd">hg status</command> to see that the added file
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
419 is really being tracked by Mercurial as a copy of the original,
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
420 now removed, file.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
421
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
422 &interaction.daily.rename.status-copy;
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
423
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
424 <para id="x_1d6">As with <command role="hg-cmd">hg remove</command> and
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
425 <command role="hg-cmd">hg copy</command>, you can tell Mercurial
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
426 about a rename after the fact using the <option
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
427 role="hg-opt-rename">--after</option> option. In most other
771
b338f5490029 Americanize spellings :-(
Bryan O'Sullivan <bos@serpentine.com>
parents: 753
diff changeset
428 respects, the behavior of the <command role="hg-cmd">hg
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
429 rename</command> command, and the options it accepts, are
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
430 similar to the <command role="hg-cmd">hg copy</command>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
431 command.</para>
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
432
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
433 <para>If you're familiar with the Unix command line, you'll be
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
434 glad to know that <command role="hg-cmd">hg rename</command>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
435 command can be invoked as <command role="hg-cmd">hg
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
436 mv</command>.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
437
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
438 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
439 <title>Renaming files and merging changes</title>
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
440
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
441 <para id="x_1d7">Since Mercurial's rename is implemented as
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
442 copy-and-remove, the same propagation of changes happens when
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
443 you merge after a rename as after a copy.</para>
118
1ee53cb37a99 More progress on daily work.
Bryan O'Sullivan <bos@serpentine.com>
parents: 117
diff changeset
444
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
445 <para id="x_1d8">If I modify a file, and you rename it to a new name, and
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
446 then we merge our respective changes, my modifications to the
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
447 file under its original name will be propagated into the file
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
448 under its new name. (This is something you might expect to
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
449 <quote>simply work,</quote> but not all revision control
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
450 systems actually do this.)</para>
43
7ac85766db0f Rename, remove.
Bryan O'Sullivan <bos@serpentine.com>
parents: 42
diff changeset
451
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
452 <para id="x_1d9">Whereas having changes follow a copy is a feature where
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
453 you can perhaps nod and say <quote>yes, that might be
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
454 useful,</quote> it should be clear that having them follow a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
455 rename is definitely important. Without this facility, it
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
456 would simply be too easy for changes to become orphaned when
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
457 files are renamed.</para>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
458 </sect2>
121
9094c9fda8ec Start chapter on error recovery.
Bryan O'Sullivan <bos@serpentine.com>
parents: 118
diff changeset
459
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
460 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
461 <title>Divergent renames and merging</title>
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
462
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
463 <para id="x_1da">The case of diverging names occurs when two developers
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
464 start with a file&emdash;let's call it
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
465 <filename>foo</filename>&emdash;in their respective
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
466 repositories.</para>
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
467
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
468 &interaction.rename.divergent.clone;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
469
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
470 <para id="x_1db">Anne renames the file to <filename>bar</filename>.</para>
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
471
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
472 &interaction.rename.divergent.rename.anne;
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
473
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
474 <para id="x_1dc">Meanwhile, Bob renames it to
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
475 <filename>quux</filename>. (Remember that <command
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
476 role="hg-cmd">hg mv</command> is an alias for <command
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
477 role="hg-cmd">hg rename</command>.)</para>
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
478
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
479 &interaction.rename.divergent.rename.bob;
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
480
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
481 <para id="x_1dd">I like to think of this as a conflict because each
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
482 developer has expressed different intentions about what the
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
483 file ought to be named.</para>
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
484
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
485 <para id="x_1de">What do you think should happen when they merge their
771
b338f5490029 Americanize spellings :-(
Bryan O'Sullivan <bos@serpentine.com>
parents: 753
diff changeset
486 work? Mercurial's actual behavior is that it always preserves
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
487 <emphasis>both</emphasis> names when it merges changesets that
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
488 contain divergent renames.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
489
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
490 &interaction.rename.divergent.merge;
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
491
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
492 <para id="x_1df">Notice that while Mercurial warns about the divergent
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
493 renames, it leaves it up to you to do something about the
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
494 divergence after the merge.</para>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
495 </sect2>
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
496
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
497 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
498 <title>Convergent renames and merging</title>
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
499
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
500 <para id="x_1e0">Another kind of rename conflict occurs when two people
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
501 choose to rename different <emphasis>source</emphasis> files
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
502 to the same <emphasis>destination</emphasis>. In this case,
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
503 Mercurial runs its normal merge machinery, and lets you guide
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
504 it to a suitable resolution.</para>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
505 </sect2>
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
506
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
507 <sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
508 <title>Other name-related corner cases</title>
156
91a936be78b8 Document merge behaviour with file names.
Bryan O'Sullivan <bos@serpentine.com>
parents: 121
diff changeset
509
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
510 <para id="x_1e1">Mercurial has a longstanding bug in which it fails to
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
511 handle a merge where one side has a file with a given name,
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
512 while another has a directory with the same name. This is
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
513 documented as <ulink role="hg-bug"
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
514 url="http://www.selenic.com/mercurial/bts/issue29">issue
666
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
515 29</ulink>.</para>
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
516
8fcd44708f41 Uncomment all the mangled interaction examples.
Bryan O'Sullivan <bos@serpentine.com>
parents: 658
diff changeset
517 &interaction.issue29.go;
121
9094c9fda8ec Start chapter on error recovery.
Bryan O'Sullivan <bos@serpentine.com>
parents: 118
diff changeset
518
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
519 </sect2>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
520 </sect1>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
521
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
522 <sect1>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
523 <title>Recovering from mistakes</title>
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
524
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
525 <para id="x_1e2">Mercurial has some useful commands that will help you to
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
526 recover from some common mistakes.</para>
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
527
683
c838b3975bc6 Add IDs to paragraphs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 682
diff changeset
528 <para id="x_1e3">The <command role="hg-cmd">hg revert</command> command lets
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
529 you undo changes that you have made to your working directory.
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
530 For example, if you <command role="hg-cmd">hg add</command> a
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
531 file by accident, just run <command role="hg-cmd">hg
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
532 revert</command> with the name of the file you added, and
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
533 while the file won't be touched in any way, it won't be tracked
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
534 for adding by Mercurial any longer, either. You can also use
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
535 <command role="hg-cmd">hg revert</command> to get rid of
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
536 erroneous changes to a file.</para>
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
537
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
538 <para id="x_1e4">It's good to remember that the <command role="hg-cmd">hg
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
539 revert</command> command is useful for changes that you have
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
540 not yet committed. Once you've committed a change, if you
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
541 decide it was a mistake, you can still do something about it,
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
542 though your options may be more limited.</para>
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
543
691
4ce9d0754af3 Remove the words "section", "chapter", etc from in front of xref tags.
Bryan O'Sullivan <bos@serpentine.com>
parents: 683
diff changeset
544 <para id="x_1e5">For more information about the <command
4ce9d0754af3 Remove the words "section", "chapter", etc from in front of xref tags.
Bryan O'Sullivan <bos@serpentine.com>
parents: 683
diff changeset
545 role="hg-cmd">hg revert</command> command, and details about
4ce9d0754af3 Remove the words "section", "chapter", etc from in front of xref tags.
Bryan O'Sullivan <bos@serpentine.com>
parents: 683
diff changeset
546 how to deal with changes you have already committed, see <xref
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
547 linkend="chap:undo"/>.</para>
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
548 </sect1>
180
6413f88338df Point to chapter on undoing mistakes.
Bryan O'Sullivan <bos@serpentine.com>
parents: 178
diff changeset
549
773
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
550 <sect1>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
551 <title>Dealing with tricky merges</title>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
552
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
553 <para>In a complicated or large project, it's not unusual for a
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
554 merge of two changesets to result in some headaches. Suppose
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
555 there's a big source file that's been extensively edited by each
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
556 side of a merge: this is almost inevitably going to result in
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
557 conflicts, some of which can take a few tries to sort
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
558 out.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
559
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
560 <para>Let's develop a simple case of this and see how to deal with
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
561 it. We'll start off with a repository containing one file, and
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
562 clone it twice.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
563
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
564 &interaction.ch04-resolve.init;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
565
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
566 <para>In one clone, we'll modify the file in one way.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
567
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
568 &interaction.ch04-resolve.left;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
569
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
570 <para>In another, we'll modify the file differently.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
571
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
572 &interaction.ch04-resolve.right;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
573
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
574 <para>Next, we'll pull each set of changes into our original
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
575 repo.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
576
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
577 &interaction.ch04-resolve.pull;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
578
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
579 <para>We expect our repository to now contain two heads.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
580
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
581 &interaction.ch04-resolve.heads;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
582
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
583 <para>Normally, if we run <command role="hg-cmd">hg
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
584 merge</command> at this point, it will drop us into a GUI that
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
585 will let us manually resolve the conflicting edits to
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
586 <filename>myfile.txt</filename>. However, to simplify things
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
587 for presentation here, we'd like the merge to fail immediately
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
588 instead. Here's one way we can do so.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
589
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
590 &interaction.ch04-resolve.export;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
591
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
592 <para>We've told Mercurial's merge machinery to run the command
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
593 <command>false</command> (which, as we desire, fails
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
594 immediately) if it detects a merge that it can't sort out
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
595 automatically.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
596
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
597 <para>If we now fire up <command role="hg-cmd">hg
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
598 merge</command>, it should grind to a halt and report a
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
599 failure.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
600
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
601 &interaction.ch04-resolve.merge;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
602
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
603 <para>Even if we don't notice that the merge failed, Mercurial
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
604 will prevent us from accidentally committing the result of a
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
605 failed merge.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
606
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
607 &interaction.ch04-resolve.cifail;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
608
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
609 <para>When <command role="hg-cmd">hg commit</command> fails in
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
610 this case, it suggests that we use the unfamiliar <command
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
611 role="hg-cmd">hg resolve</command> command. As usual,
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
612 <command role="hg-cmd">hg help resolve</command> will print a
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
613 helpful synopsis.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
614
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
615 <sect2>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
616 <title>File resolution states</title>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
617
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
618 <para>When a merge occurs, most files will usually remain
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
619 unmodified. For each file where Mercurial has to do
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
620 something, it tracks the state of the file.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
621
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
622 <itemizedlist>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
623 <listitem>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
624 <para>A <emphasis>resolved</emphasis> file has been
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
625 successfully merged, either automatically by Mercurial or
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
626 manually with human intervention.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
627 </listitem>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
628 <listitem>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
629 <para>An <emphasis>unresolved</emphasis> file was not merged
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
630 successfully, and needs more attention.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
631 </listitem>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
632 </itemizedlist>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
633
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
634 <para>If Mercurial sees <emphasis>any</emphasis> file in the
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
635 unresolved state after a merge, it considers the merge to have
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
636 failed. Fortunately, we do not need to restart the entire
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
637 merge from scratch.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
638
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
639 <para>The <option role="hg-opt-resolve">--list</option> or
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
640 <option role="hg-opt-resolve">-l</option> option to <command
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
641 role="hg-cmd">hg resolve</command> prints out the state of
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
642 each merged file.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
643
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
644 &interaction.ch04-resolve.list;
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
645
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
646 <para>In the output from <command role="hg-cmd">hg
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
647 resolve</command>, a resolved file is marked with
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
648 <literal>R</literal>, while an unresolved file is marked with
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
649 <literal>U</literal>. If any files are listed with
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
650 <literal>U</literal>, we know that an attempt to commit the
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
651 results of the merge will fail.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
652 </sect2>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
653
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
654 <sect2>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
655 <title>Resolving a file merge</title>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
656
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
657 <para>We have several options to move a file from the unresolved
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
658 into the resolved state. By far the most common is to rerun
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
659 <command role="hg-cmd">hg resolve</command>. If we pass the
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
660 names of individual files or directories, it will retry the
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
661 merges of any unresolved files present in those locations. We
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
662 can also pass the <option role="hg-opt-resolve">--all</option>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
663 or <option role="hg-opt-resolve">-a</option> option, which
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
664 will retry the merges of <emphasis>all</emphasis> unresolved
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
665 files.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
666
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
667 <para>Mercurial also lets us modify the resolution state of a
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
668 file directly. We can manually mark a file as resolved using
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
669 the <option role="hg-opt-resolve">--mark</option> option, or
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
670 as unresolved using the <option
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
671 role="hg-opt-resolve">--unmark</option> option. This allows
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
672 us to clean up a particularly messy merge by hand, and to keep
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
673 track of our progress with each file as we go.</para>
3b640272a966 Progres on resolve
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
674 </sect2>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
675 </sect1>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
676 </chapter>
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
677
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
678 <!--
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
679 local variables:
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
680 sgml-parent-document: ("00book.xml" "book" "chapter")
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
681 end:
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
682 -->