annotate en/appA-svn.xml @ 838:d1f676a6a4b3 default tip

update mq chapter. propagate ef53d025f410.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Thu, 03 Dec 2009 01:26:08 +0900
parents fd2e83ffb165
children
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 : -->
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
2
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
3 <appendix id="svn">
815
0ffae4ee4c47 Fix indexing.
Bryan O'Sullivan <bos@serpentine.com>
parents: 814
diff changeset
4 <?dbhtml filename="migrating-to-mercurial.html"?>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
5 <title>Migrating to Mercurial</title>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
6
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
7 <para id="x_6e1">A common way to test the waters with a new revision control
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
8 tool is to experiment with switching an existing project, rather
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
9 than starting a new project from scratch.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
10
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
11 <para id="x_6e2">In this appendix, we discuss how to import a project's history
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
12 into Mercurial, and what to look out for if you are used to a
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
13 different revision control system.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
14
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
15 <sect1>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
16 <title>Importing history from another system</title>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
17
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
18 <para id="x_6e3">Mercurial ships with an extension named
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
19 <literal>convert</literal>, which can import project history
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
20 from most popular revision control systems. At the time this
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
21 book was written, it could import history from the following
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
22 systems:</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
23 <itemizedlist>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
24 <listitem>
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
25 <para id="x_6e4">Subversion</para>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
26 </listitem>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
27 <listitem>
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
28 <para id="x_6e5">CVS</para>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
29 </listitem>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
30 <listitem>
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
31 <para id="x_6e6">git</para>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
32 </listitem>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
33 <listitem>
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
34 <para id="x_6e7">Darcs</para>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
35 </listitem>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
36 <listitem>
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
37 <para id="x_6e8">Bazaar</para>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
38 </listitem>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
39 <listitem>
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
40 <para id="x_6e9">Monotone</para>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
41 </listitem>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
42 <listitem>
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
43 <para id="x_6ea">GNU Arch</para>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
44 </listitem>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
45 <listitem>
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
46 <para id="x_6eb">Mercurial</para>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
47 </listitem>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
48 </itemizedlist>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
49
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
50 <para id="x_6ec">(To see why Mercurial itself is supported as a source, see
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
51 <xref linkend="svn.filemap"/>.)</para>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
52
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
53 <para id="x_6ed">You can enable the extension in the usual way, by editing
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
54 your <filename>~/.hgrc</filename> file.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
55
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
56 <programlisting>[extensions]
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
57 convert =</programlisting>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
58
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
59 <para id="x_6ee">This will make a <command>hg convert</command> command
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
60 available. The command is easy to use. For instance, this
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
61 command will import the Subversion history for the Nose unit
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
62 testing framework into Mercurial.</para>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
63
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
64 <screen><prompt>$</prompt> <userinput>hg convert http://python-nose.googlecode.com/svn/trunk</userinput></screen>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
65
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
66 <para id="x_6ef">The <literal>convert</literal> extension operates
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
67 incrementally. In other words, after you have run <command>hg
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
68 convert</command> once, running it again will import any new
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
69 revisions committed after the first run began. Incremental
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
70 conversion will only work if you run <command>hg
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
71 convert</command> in the same Mercurial repository that you
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
72 originally used, because the <literal>convert</literal>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
73 extension saves some private metadata in a
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
74 non-revision-controlled file named
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
75 <filename>.hg/shamap</filename> inside the target
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
76 repository.</para>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
77
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
78 <para id="x_707">When you want to start making changes using Mercurial, it's
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
79 best to clone the tree in which you are doing your conversions,
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
80 and leave the original tree for future incremental conversions.
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
81 This is the safest way to let you pull and merge future commits
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
82 from the source revision control system into your newly active
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
83 Mercurial project.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
84
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
85 <sect2>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
86 <title>Converting multiple branches</title>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
87
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
88 <para id="x_708">The <command>hg convert</command> command given above
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
89 converts only the history of the <literal>trunk</literal>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
90 branch of the Subversion repository. If we instead use the
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
91 URL <literal>http://python-nose.googlecode.com/svn</literal>,
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
92 Mercurial will automatically detect the
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
93 <literal>trunk</literal>, <literal>tags</literal> and
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
94 <literal>branches</literal> layout that Subversion projects
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
95 usually use, and it will import each as a separate Mercurial
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
96 branch.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
97
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
98 <para id="x_709">By default, each Subversion branch imported into Mercurial
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
99 is given a branch name. After the conversion completes, you
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
100 can get a list of the active branch names in the Mercurial
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
101 repository using <command>hg branches -a</command>. If you
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
102 would prefer to import the Subversion branches without names,
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
103 pass the <option>--config
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
104 convert.hg.usebranchnames=false</option> option to
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
105 <command>hg convert</command>.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
106
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
107 <para id="x_70a">Once you have converted your tree, if you want to follow
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
108 the usual Mercurial practice of working in a tree that
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
109 contains a single branch, you can clone that single branch
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
110 using <command>hg clone -r mybranchname</command>.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
111 </sect2>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
112
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
113 <sect2>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
114 <title>Mapping user names</title>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
115
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
116 <para id="x_6f0">Some revision control tools save only short usernames with
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
117 commits, and these can be difficult to interpret. The norm
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
118 with Mercurial is to save a committer's name and email
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
119 address, which is much more useful for talking to them after
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
120 the fact.</para>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
121
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
122 <para id="x_6f1">If you are converting a tree from a revision control
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
123 system that uses short names, you can map those names to
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
124 longer equivalents by passing a <option>--authors</option>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
125 option to <command>hg convert</command>. This option accepts
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
126 a file name that should contain entries of the following
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
127 form.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
128
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
129 <programlisting>arist = Aristotle &lt;aristotle@phil.example.gr&gt;
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
130 soc = Socrates &lt;socrates@phil.example.gr&gt;</programlisting>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
131
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
132 <para id="x_6f2">Whenever <literal>convert</literal> encounters a commit
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
133 with the username <literal>arist</literal> in the source
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
134 repository, it will use the name <literal>Aristotle
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
135 &lt;aristotle@phil.example.gr&gt;</literal> in the converted
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
136 Mercurial revision. If no match is found for a name, it is
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
137 used verbatim.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
138 </sect2>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
139
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
140 <sect2 id="svn.filemap">
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
141 <title>Tidying up the tree</title>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
142
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
143 <para id="x_6f3">Not all projects have pristine history. There may be a
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
144 directory that should never have been checked in, a file that
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
145 is too big, or a whole hierarchy that needs to be
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
146 refactored.</para>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
147
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
148 <para id="x_6f4">The <literal>convert</literal> extension supports the idea
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
149 of a <quote>file map</quote> that can reorganize the files and
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
150 directories in a project as it imports the project's history.
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
151 This is useful not only when importing history from other
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
152 revision control systems, but also to prune or refactor a
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
153 Mercurial tree.</para>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
154
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
155 <para id="x_6f5">To specify a file map, use the <option>--filemap</option>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
156 option and supply a file name. A file map contains lines of the
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
157 following forms.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
158
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
159 <programlisting># This is a comment.
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
160 # Empty lines are ignored.
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
161
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
162 include path/to/file
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
163
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
164 exclude path/to/file
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
165
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
166 rename from/some/path to/some/other/place
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
167 </programlisting>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
168
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
169 <para id="x_6f6">The <literal>include</literal> directive causes a file, or
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
170 all files under a directory, to be included in the destination
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
171 repository. This also excludes all other files and dirs not
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
172 explicitely included. The <literal>exclude</literal>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
173 directive causes files or directories to be omitted, and
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
174 others not explicitly mentioned to be included.</para>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
175
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
176 <para id="x_6f7">To move a file or directory from one location to another,
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
177 use the <literal>rename</literal> directive. If you need to
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
178 move a file or directory from a subdirectory into the root of
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
179 the repository, use <literal>.</literal> as the second
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
180 argument to the <literal>rename</literal> directive.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
181 </sect2>
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
182
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
183 <sect2>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
184 <title>Improving Subversion conversion performance</title>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
185
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
186 <para id="x_70b">You will often need several attempts before you hit the
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
187 perfect combination of user map, file map, and other
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
188 conversion parameters. Converting a Subversion repository
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
189 over an access protocol like <literal>ssh</literal> or
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
190 <literal>http</literal> can proceed thousands of times more
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
191 slowly than Mercurial is capable of actually operating, due to
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
192 network delays. This can make tuning that perfect conversion
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
193 recipe very painful.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
194
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
195 <para id="x_70c">The <ulink
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
196 url="http://svn.collab.net/repos/svn/trunk/notes/svnsync.txt"><command>svnsync</command></ulink>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
197 command can greatly speed up the conversion of a Subversion
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
198 repository. It is a read-only mirroring program for
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
199 Subversion repositories. The idea is that you create a local
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
200 mirror of your Subversion tree, then convert the mirror into a
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
201 Mercurial repository.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
202
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
203 <para id="x_70d">Suppose we want to convert the Subversion repository for
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
204 the popular Memcached project into a Mercurial tree. First,
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
205 we create a local Subversion repository.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
206
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
207 <screen><prompt>$</prompt> <userinput>svnadmin create memcached-mirror</userinput></screen>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
208
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
209 <para id="x_70e">Next, we set up a Subversion hook that
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
210 <command>svnsync</command> needs.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
211
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
212 <screen><prompt>$</prompt> <userinput>echo '#!/bin/sh' > memcached-mirror/hooks/pre-revprop-change</userinput>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
213 <prompt>$</prompt> <userinput>chmod +x memcached-mirror/hooks/pre-revprop-change</userinput></screen>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
214
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
215 <para id="x_70f">We then initialize <command>svnsync</command> in this
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
216 repository.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
217
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
218 <screen><prompt>$</prompt> <userinput>svnsync --init file://`pwd`/memcached-mirror \
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
219 http://code.sixapart.com/svn/memcached</userinput></screen>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
220
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
221 <para id="x_710">Our next step is to begin the <command>svnsync</command>
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
222 mirroring process.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
223
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
224 <screen><prompt>$</prompt> <userinput>svnsync sync file://`pwd`/memcached-mirror</userinput></screen>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
225
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
226 <para id="x_711">Finally, we import the history of our local Subversion
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
227 mirror into Mercurial.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
228
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
229 <screen><prompt>$</prompt> <userinput>hg convert memcached-mirror</userinput></screen>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
230
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
231 <para id="x_712">We can use this process incrementally if the Subversion
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
232 repository is still in use. We run <command>svnsync</command>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
233 to pull new changes into our mirror, then <command>hg
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
234 convert</command> to import them into our Mercurial
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
235 tree.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
236
822
fd2e83ffb165 Add paragraph tags
Bryan O'Sullivan <bos@serpentine.com>
parents: 820
diff changeset
237 <para id="x_713">There are two advantages to doing a two-stage import with
820
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
238 <command>svnsync</command>. The first is that it uses more
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
239 efficient Subversion network syncing code than <command>hg
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
240 convert</command>, so it transfers less data over the
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
241 network. The second is that the import from a local
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
242 Subversion tree is so fast that you can tweak your conversion
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
243 setup repeatedly without having to sit through a painfully
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
244 slow network-based conversion process each time.</para>
3edacbff2b43 Add more details on Subversion conversion.
Bryan O'Sullivan <bos@serpentine.com>
parents: 819
diff changeset
245 </sect2>
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
246 </sect1>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
247
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
248 <sect1>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
249 <title>Migrating from Subversion</title>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
250
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
251 <para id="x_6f8">Subversion is currently the most popular open source
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
252 revision control system. Although there are many differences
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
253 between Mercurial and Subversion, making the transition from
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
254 Subversion to Mercurial is not particularly difficult. The two
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
255 have similar command sets and generally uniform
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
256 interfaces.</para>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
257
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
258 <sect2>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
259 <title>Philosophical differences</title>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
260
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
261 <para id="x_6f9">The fundamental difference between Subversion and
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
262 Mercurial is of course that Subversion is centralized, while
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
263 Mercurial is distributed. Since Mercurial stores all of a
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
264 project's history on your local drive, it only needs to
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
265 perform a network access when you want to explicitly
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
266 communicate with another repository. In contrast, Subversion
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
267 stores very little information locally, and the client must
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
268 thus contact its server for many common operations.</para>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
269
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
270 <para id="x_6fa">Subversion more or less gets away without a well-defined
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
271 notion of a branch: which portion of a server's namespace
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
272 qualifies as a branch is a matter of convention, with the
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
273 software providing no enforcement. Mercurial treats a
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
274 repository as the unit of branch management.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
275
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
276 <sect3>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
277 <title>Scope of commands</title>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
278
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
279 <para id="x_6fb">Since Subversion doesn't know what parts of its
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
280 namespace are really branches, it treats most commands as
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
281 requests to operate at and below whatever directory you are
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
282 currently visiting. For instance, if you run <command>svn
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
283 log</command>, you'll get the history of whatever part of
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
284 the tree you're looking at, not the tree as a whole.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
285
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
286 <para id="x_6fc">Mercurial's commands behave differently, by defaulting
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
287 to operating over an entire repository. Run <command>hg
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
288 log</command> and it will tell you the history of the
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
289 entire tree, no matter what part of the working directory
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
290 you're visiting at the time. If you want the history of
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
291 just a particular file or directory, simply supply it by
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
292 name, e.g. <command>hg log src</command>.</para>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
293
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
294 <para id="x_6fd">From my own experience, this difference in default
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
295 behaviors is probably the most likely to trip you up if you
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
296 have to switch back and forth frequently between the two
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
297 tools.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
298 </sect3>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
299
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
300 <sect3>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
301 <title>Multi-user operation and safety</title>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
302
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
303 <para id="x_6fe">With Subversion, it is normal (though slightly frowned
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
304 upon) for multiple people to collaborate in a single branch.
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
305 If Alice and Bob are working together, and Alice commits
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
306 some changes to their shared branch, Bob must update his
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
307 client's view of the branch before he can commit. Since at
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
308 this time he has no permanent record of the changes he has
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
309 made, he can corrupt or lose his modifications during and
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
310 after his update.</para>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
311
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
312 <para id="x_6ff">Mercurial encourages a commit-then-merge model instead.
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
313 Bob commits his changes locally before pulling changes from,
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
314 or pushing them to, the server that he shares with Alice.
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
315 If Alice pushed her changes before Bob tries to push his, he
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
316 will not be able to push his changes until he pulls hers,
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
317 merges with them, and commits the result of the merge. If
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
318 he makes a mistake during the merge, he still has the option
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
319 of reverting to the commit that recorded his changes.</para>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
320
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
321 <para id="x_700">It is worth emphasizing that these are the common ways
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
322 of working with these tools. Subversion supports a safer
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
323 work-in-your-own-branch model, but it is cumbersome enough
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
324 in practice to not be widely used. Mercurial can support
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
325 the less safe mode of allowing changes to be pulled in and
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
326 merged on top of uncommitted edits, but this is considered
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
327 highly unusual.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
328 </sect3>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
329
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
330 <sect3>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
331 <title>Published vs local changes</title>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
332
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
333 <para id="x_701">A Subversion <command>svn commit</command> command
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
334 immediately publishes changes to a server, where they can be
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
335 seen by everyone who has read access.</para>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
336
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
337 <para id="x_702">With Mercurial, commits are always local, and must be
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
338 published via a <command>hg push</command> command
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
339 afterwards.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
340
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
341 <para id="x_703">Each approach has its advantages and disadvantages. The
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
342 Subversion model means that changes are published, and hence
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
343 reviewable and usable, immediately. On the other hand, this
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
344 means that a user must have commit access to a repository in
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
345 order to use the software in a normal way, and commit access
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
346 is not lightly given out by most open source
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
347 projects.</para>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
348
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
349 <para id="x_704">The Mercurial approach allows anyone who can clone a
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
350 repository to commit changes without the need for someone
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
351 else's permission, and they can then publish their changes
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
352 and continue to participate however they see fit. The
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
353 distinction between committing and pushing does open up the
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
354 possibility of someone committing changes to their laptop
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
355 and walking away for a few days having forgotten to push
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
356 them, which in rare cases might leave collaborators
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
357 temporarily stuck.</para>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
358 </sect3>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
359 </sect2>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
360
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
361 <sect2>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
362 <title>Quick reference</title>
133
1e013fbe35f7 Lots of filename related content. A little more command reference
Bryan O'Sullivan <bos@serpentine.com>
parents: 132
diff changeset
363
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
364 <table>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
365 <title>Subversion commands and Mercurial equivalents</title>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
366 <tgroup cols="3">
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
367 <thead>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
368 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
369 <entry>Subversion</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
370 <entry>Mercurial</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
371 <entry>Notes</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
372 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
373 </thead>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
374 <tbody>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
375 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
376 <entry><command>svn add</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
377 <entry><command>hg add</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
378 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
379 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
380 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
381 <entry><command>svn blame</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
382 <entry><command>hg annotate</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
383 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
384 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
385 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
386 <entry><command>svn cat</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
387 <entry><command>hg cat</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
388 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
389 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
390 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
391 <entry><command>svn checkout</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
392 <entry><command>hg clone</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
393 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
394 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
395 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
396 <entry><command>svn cleanup</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
397 <entry>n/a</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
398 <entry>No cleanup needed</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
399 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
400 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
401 <entry><command>svn commit</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
402 <entry><command>hg commit</command>; <command>hg
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
403 push</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
404 <entry><command>hg push</command> publishes after
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
405 commit</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
406 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
407 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
408 <entry><command>svn copy</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
409 <entry><command>hg clone</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
410 <entry>To create a new branch</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
411 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
412 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
413 <entry><command>svn copy</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
414 <entry><command>hg copy</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
415 <entry>To copy files or directories</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
416 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
417 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
418 <entry><command>svn delete</command> (<command>svn
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
419 remove</command>)</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
420 <entry><command>hg remove</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
421 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
422 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
423 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
424 <entry><command>svn diff</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
425 <entry><command>hg diff</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
426 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
427 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
428 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
429 <entry><command>svn export</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
430 <entry><command>hg archive</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
431 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
432 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
433 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
434 <entry><command>svn help</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
435 <entry><command>hg help</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
436 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
437 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
438 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
439 <entry><command>svn import</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
440 <entry><command>hg addremove</command>; <command>hg
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
441 commit</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
442 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
443 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
444 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
445 <entry><command>svn info</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
446 <entry><command>hg parents</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
447 <entry>Shows what revision is checked out</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
448 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
449 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
450 <entry><command>svn info</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
451 <entry><command>hg showconfig
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
452 paths.parent</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
453 <entry>Shows what URL is checked out</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
454 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
455 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
456 <entry><command>svn list</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
457 <entry><command>hg manifest</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
458 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
459 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
460 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
461 <entry><command>svn log</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
462 <entry><command>hg log</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
463 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
464 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
465 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
466 <entry><command>svn merge</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
467 <entry><command>hg merge</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
468 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
469 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
470 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
471 <entry><command>svn mkdir</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
472 <entry>n/a</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
473 <entry>Mercurial does not track directories</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
474 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
475 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
476 <entry><command>svn move</command> (<command>svn
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
477 rename</command>)</entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
478 <entry><command>hg rename</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
479 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
480 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
481 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
482 <entry><command>svn resolved</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
483 <entry><command>hg resolve -m</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
484 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
485 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
486 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
487 <entry><command>svn revert</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
488 <entry><command>hg revert</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
489 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
490 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
491 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
492 <entry><command>svn status</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
493 <entry><command>hg status</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
494 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
495 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
496 <row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
497 <entry><command>svn update</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
498 <entry><command>hg pull -u</command></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
499 <entry></entry>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
500 </row>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
501 </tbody>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
502 </tgroup>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
503 </table>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
504 </sect2>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
505 </sect1>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
506
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
507 <sect1>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
508 <title>Useful tips for newcomers</title>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
509
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
510 <para id="x_705">Under some revision control systems, printing a diff for a
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
511 single committed revision can be painful. For instance, with
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
512 Subversion, to see what changed in revision 104654, you must
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
513 type <command>svn diff -r104653:104654</command>. Mercurial
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
514 eliminates the need to type the revision ID twice in this common
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
515 case. For a plain diff, <command>hg export 104654</command>. For
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
516 a log message followed by a diff, <command>hg log -r104654
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
517 -p</command>.</para>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
518
817
7d72167a009c Fix indexes
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
519 <para id="x_706">When you run <command>hg status</command> without any
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
520 arguments, it prints the status of the entire tree, with paths
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
521 relative to the root of the repository. This makes it tricky to
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
522 copy a file name from the output of <command>hg status</command>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
523 into the command line. If you supply a file or directory name
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
524 to <command>hg status</command>, it will print paths relative to
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
525 your current location instead. So to get tree-wide status from
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
526 <command>hg status</command>, with paths that are relative to
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
527 your current directory and not the root of the repository, feed
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
528 the output of <command>hg root</command> into <command>hg
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
529 status</command>. You can easily do this as follows on a
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
530 Unix-like system:</para>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
531
814
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
532 <screen><prompt>$</prompt> <userinput>hg status `hg root`</userinput></screen>
e9154b3daa94 Repurpose appendix A.
Bryan O'Sullivan <bos@serpentine.com>
parents: 771
diff changeset
533 </sect1>
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
534 </appendix>
132
e1e2f3e0256a Start command reference, with the diff command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
535
658
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
536 <!--
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
537 local variables:
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
538 sgml-parent-document: ("00book.xml" "book" "appendix")
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
539 end:
b90b024729f1 WIP DocBook snapshot that all compiles. Mirabile dictu!
Bryan O'Sullivan <bos@serpentine.com>
parents: 650
diff changeset
540 -->