changeset 766:3b33dd6aba87

Merge with http://hg.serpentine.com/mercurial/book
author Dongsheng Song <songdongsheng@live.cn>
date Thu, 02 Apr 2009 09:24:36 +0800
parents d8c85d831fb4 (current diff) 2b193ab0df9a (diff)
children 55e2953f82d6
files .hgignore en/00book.xml en/Makefile en/ch00-preface.xml en/ch01-tour-basic.xml en/examples/auto-snippets.xml po/zh.po
diffstat 12 files changed, 810 insertions(+), 586 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Tue Mar 31 21:17:59 2009 +0800
+++ b/.hgignore	Thu Apr 02 09:24:36 2009 +0800
@@ -16,6 +16,8 @@
 .run
 .validated-00book.xml
 en/all-ids.dat
+en/complete.xml
+en/svn
 web/hgbook/.database.sqlite3
 web/hgbook/secrets.py
 web/index-read.html.in
--- a/en/00book.xml	Tue Mar 31 21:17:59 2009 +0800
+++ b/en/00book.xml	Thu Apr 02 09:24:36 2009 +0800
@@ -45,6 +45,8 @@
   -->
   <subtitle>Compiled from $rev_id$</subtitle>
   <bookinfo>
+    <edition>1</edition>
+    <isbn>9780596800673</isbn>
     <authorgroup>
       <author>
         <firstname>Bryan</firstname>
@@ -66,22 +68,40 @@
     </copyright>
   </bookinfo>
 
+  <!-- BEGIN ch00 -->
   &ch00;
+  <!-- BEGIN ch01 -->
   &ch01;
+  <!-- BEGIN ch02 -->
   &ch02;
+  <!-- BEGIN ch03 -->
   &ch03;
+  <!-- BEGIN ch04 -->
   &ch04;
+  <!-- BEGIN ch05 -->
   &ch05;
+  <!-- BEGIN ch06 -->
   &ch06;
+  <!-- BEGIN ch07 -->
   &ch07;
+  <!-- BEGIN ch08 -->
   &ch08;
+  <!-- BEGIN ch09 -->
   &ch09;
+  <!-- BEGIN ch10 -->
   &ch10;
+  <!-- BEGIN ch11 -->
   &ch11;
+  <!-- BEGIN ch12 -->
   &ch12;
+  <!-- BEGIN ch13 -->
   &ch13;
+  <!-- BEGIN appA -->
   <!-- &appA; -->
+  <!-- BEGIN appB -->
   &appB;
+  <!-- BEGIN appC -->
   &appC;
+  <!-- BEGIN appD -->
   &appD;
 </book>
--- a/en/Makefile	Tue Mar 31 21:17:59 2009 +0800
+++ b/en/Makefile	Thu Apr 02 09:24:36 2009 +0800
@@ -110,7 +110,7 @@
 hg-version = $(shell hg version -q | \
 		     sed 's,.*(version \(unknown\|[a-f0-9+]*\)),\1,')
 
-all: web
+all: web complete.xml
 
 ../stylesheets/system-xsl: $(system-xsl-dir)
 	ln -s $< $@
@@ -120,7 +120,7 @@
 html: $(obj-web-read)/index.html
 
 ../web/index-read.html.in: ../web/genindex.py $(xml-src-files)
-	$<
+	cd ../web && ./genindex.py
 
 $(obj-web-read)/index.html: ../stylesheets/system-xsl .validated-00book.xml ../web/index-read.html.in
 	xsltproc $(xsltproc-opts) -o $(obj-web-read)/x ../stylesheets/chunk-stylesheet.xsl 00book.xml
@@ -134,6 +134,9 @@
 	cp ../stylesheets/system-xsl/images/*.png $(obj-websup)/figs
 	cp -f ../web/icons/*.png $(obj-websup)/figs
 
+complete.xml: .validated-00book.xml
+	$(xsltproc) $(xsltproc-opts) -o $@ ../stylesheets/dtd-profile.xsl 00book.xml
+
 all-ids.dat: ../stylesheets/all-ids.xsl $(xml-src-files)
 	$(xsltproc) $(xsltproc-opts) -o $@ ../stylesheets/all-ids.xsl 00book.xml
 
@@ -141,7 +144,7 @@
 
 valid: .validated-00book.xml
 
-.validated-00book.xml: $(xml-src-files)
+.validated-00book.xml: $(xml-src-files) examples/.run
 	$(xmllint) --path '$(dtd-dir):$(xml-path)' $(xmllint-opts) $<
 	touch $@
 
@@ -172,7 +175,7 @@
 examples: $(example-prereqs) examples/.run
 
 examples/.run: $(example-sources)
-	cd examples && ./run-example
+	cd examples && ./run-example -a
 
 examples/%.run: examples/% examples/run-example
 
--- a/en/ch00-preface.xml	Tue Mar 31 21:17:59 2009 +0800
+++ b/en/ch00-preface.xml	Thu Apr 02 09:24:36 2009 +0800
@@ -68,9 +68,10 @@
 	    project.</para></listitem>
       </itemizedlist>
 
-      <para id="x_76">Most of these reasons are equally valid---at least in
-	theory---whether you're working on a project by yourself, or
-	with a hundred other people.</para>
+      <para id="x_76">Most of these reasons are equally
+	valid&emdash;at least in theory&emdash;whether you're working
+	on a project by yourself, or with a hundred other
+	people.</para>
 
       <para id="x_77">A key question about the practicality of revision control
 	at these two different scales (<quote>lone hacker</quote> and
@@ -143,7 +144,7 @@
     <title>About the examples in this book</title>
 
     <para id="x_84">This book takes an unusual approach to code samples.  Every
-      example is <quote>live</quote>---each one is actually the result
+      example is <quote>live</quote>&emdash;each one is actually the result
       of a shell script that executes the Mercurial commands you see.
       Every time an image of the book is built from its sources, all
       the example scripts are automatically run, and their current
@@ -353,8 +354,8 @@
 	centralised system to fall over under the combined load of
 	just a few dozen concurrent users.  Once again, the typical
 	response tends to be an expensive and clunky replication
-	facility.  Since the load on a central server---if you have
-	one at all---is many times lower with a distributed tool
+	facility.  Since the load on a central server&emdash;if you have
+	one at all&emdash;is many times lower with a distributed tool
 	(because all of the data is replicated everywhere), a single
 	cheap server can handle the needs of a much larger team, and
 	replication to balance load becomes a simple matter of
--- a/en/ch01-tour-basic.xml	Tue Mar 31 21:17:59 2009 +0800
+++ b/en/ch01-tour-basic.xml	Thu Apr 02 09:24:36 2009 +0800
@@ -12,6 +12,26 @@
       using Mercurial on your computer immediately.</para>
 
     <sect2>
+      <title>Windows</title>
+
+      <para id="x_c">The best version of Mercurial for Windows is
+	TortoiseHg, which can be found at <ulink
+	  url="http://bitbucket.org/tortoisehg/stable/wiki/Home">http://bitbucket.org/tortoisehg/stable/wiki/Home</ulink>. 
+	This package has no external dependencies; it <quote>just
+	  works</quote>.  It provides both command line and graphical
+	user interfaces.</para>
+
+    </sect2>
+
+    <sect2>
+      <title>Mac OS X</title>
+
+      <para id="x_a">Lee Cantey publishes an installer of Mercurial
+	for Mac OS X at <ulink
+	  url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>.</para>
+    </sect2>
+
+    <sect2>
       <title>Linux</title>
 
       <para id="x_2">Because each Linux distribution has its own packaging
@@ -29,18 +49,12 @@
 	<literal>mercurial</literal>.</para>
 
       <itemizedlist>
-	<listitem><para id="x_4">Debian:</para>
+	<listitem><para id="x_4">Ubuntu and Debian:</para>
 	  <programlisting>apt-get install mercurial</programlisting></listitem>
-	<listitem><para id="x_5">Fedora Core:</para>
+	<listitem><para id="x_5">Fedora and OpenSUSE:</para>
 	  <programlisting>yum install mercurial</programlisting></listitem>
 	<listitem><para id="x_6">Gentoo:</para>
 	  <programlisting>emerge mercurial</programlisting></listitem>
-	<listitem><para id="x_7">OpenSUSE:</para>
-	  <programlisting>yum install mercurial</programlisting></listitem>
-	<listitem><para id="x_8">Ubuntu: Ubuntu's Mercurial package is based on
-	    Debian's.  To install it, run the following
-	    command.</para>
-	  <programlisting>apt-get install mercurial</programlisting></listitem>
       </itemizedlist>
 
     </sect2>
@@ -49,49 +63,12 @@
 
       <para id="x_9">SunFreeWare, at <ulink
 	  url="http://www.sunfreeware.com">http://www.sunfreeware.com</ulink>, 
-	is a good source for a large number of pre-built Solaris
-	packages for 32 and 64 bit Intel and Sparc architectures,
-	including current versions of Mercurial.</para>
+	provides prebuilt packages of Mercurial.</para>
 
     </sect2>
-    <sect2>
-      <title>Mac OS X</title>
-
-      <para id="x_a">Lee Cantey publishes an installer of Mercurial for Mac OS
-	X at <ulink
-	  url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>. 
-	This package works on both Intel- and Power-based Macs. Before
-	you can use it, you must install a compatible version of
-	Universal MacPython <citation>web:macpython</citation>. This
-	is easy to do; simply follow the instructions on Lee's
-	site.</para>
-
-      <para id="x_b">It's also possible to install Mercurial using Fink or
-	MacPorts, two popular free package managers for Mac OS X.  If
-	you have Fink, use <command>sudo apt-get install
-	  mercurial-py25</command>.  If MacPorts, <command>sudo port
-	  install mercurial</command>.</para>
 
-    </sect2>
-    <sect2>
-      <title>Windows</title>
-
-      <para id="x_c">Lee Cantey publishes an installer of Mercurial for Windows
-	at <ulink
-	  url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>. 
-	This package has no external dependencies; it <quote>just
-	  works</quote>.</para>
+  </sect1>
 
-      <note>
-	<para id="x_d">  The Windows version of Mercurial does not
-	  automatically convert line endings between Windows and Unix
-	  styles.  If you want to share work with Unix users, you must
-	  do a little additional configuration work. XXX Flesh this
-	  out.</para>
-      </note>
-
-    </sect2>
-  </sect1>
   <sect1>
     <title>Getting started</title>
 
@@ -150,10 +127,16 @@
 	command to make a copy of a repository, it's best to use a
 	built-in command that Mercurial provides.  This command is
 	called <command role="hg-cmd">hg clone</command>, because it
-	creates an identical copy of an existing repository.</para>
+	makes an identical copy of an existing repository.</para>
 
       &interaction.tour.clone;
 
+      <para>One advantage of using <command role="hg-cmd">hg
+	  clone</command> is that, as we can see above, it lets us clone
+	repositories over the network.  Another is that it remembers
+	where we cloned from, which we'll find useful soon when we
+	want to fetch new changes from another repository.</para>
+
       <para id="x_14">If our clone succeeded, we should now have a local
 	directory called <filename class="directory">hello</filename>.
 	This directory will contain some files.</para>
@@ -163,12 +146,12 @@
       <para id="x_15">These files have the same contents and history in our
 	repository as they do in the repository we cloned.</para>
 
-      <para id="x_16">Every Mercurial repository is complete, self-contained,
-	and independent.  It contains its own private copy of a
-	project's files and history.  A cloned repository remembers
-	the location of the repository it was cloned from, but it does
-	not communicate with that repository, or any other, unless you
-	tell it to.</para>
+      <para id="x_16">Every Mercurial repository is complete,
+	self-contained, and independent.  It contains its own private
+	copy of a project's files and history.  As we just mentioned,
+	a cloned repository remembers the location of the repository
+	it was cloned from, but Mercurial will not communicate with
+	that repository, or any other, unless you tell it to.</para>
 
       <para id="x_17">What this means for now is that we're free to experiment
 	with our repository, safe in the knowledge that it's a private
@@ -211,7 +194,7 @@
     <para id="x_1b">One of the first things we might want to do with a new,
       unfamiliar repository is understand its history.  The <command
 	role="hg-cmd">hg log</command> command gives us a view of
-      history.</para>
+      the history of changes in the repository.</para>
 
     &interaction.tour.log;
 
@@ -223,13 +206,20 @@
 
     <para id="x_1d">The fields in a record of output from <command
 	role="hg-cmd">hg log</command> are as follows.</para>
+
     <itemizedlist>
-      <listitem><para id="x_1e"><literal>changeset</literal>: This field has the
-	  format of a number, followed by a colon, followed by a
-	  hexadecimal string.  These are
-	  <emphasis>identifiers</emphasis> for the changeset.  There
-	  are two identifiers because the number is shorter and easier
-	  to type than the hex string.</para></listitem>
+      <listitem><para id="x_1e"><literal>changeset</literal>: This
+	  field has the format of a number, followed by a colon,
+	  followed by a hexadecimal (or <emphasis>hex</emphasis>)
+	  string.  These are <emphasis>identifiers</emphasis> for the
+	  changeset.  The hex string is a unique identifier: the same
+	  hex string will always refer to the same changeset. The
+	  number is shorter and easier to type than the hex string,
+	  but it isn't unique: the same number in two different clones
+	  of a repository may identify different changesets.  Why
+	  provide the number at all, then?  For local
+	  convenience.</para>
+      </listitem>
       <listitem><para id="x_1f"><literal>user</literal>: The identity of the
 	  person who created the changeset.  This is a free-form
 	  field, but it most often contains a person's name and email
@@ -241,10 +231,19 @@
 	  person who created the changeset.)</para></listitem>
       <listitem><para id="x_21"><literal>summary</literal>: The first line of
 	  the text message that the creator of the changeset entered
-	  to describe the changeset.</para></listitem></itemizedlist>
-    <para id="x_22">The default output printed by <command role="hg-cmd">hg
-	log</command> is purely a summary; it is missing a lot of
-      detail.</para>
+	  to describe the changeset.</para></listitem>
+      <listitem>
+	<para>Some changesets, such as the first in the list above,
+	  have a <literal>tag</literal> field.  A tag is another way
+	  to identify a changeset, by giving it an easy-to-remember
+	  name. (The tag named <literal>tip</literal> is special: it
+	  always refers to the newest change in a repository.)</para>
+      </listitem>
+    </itemizedlist>
+
+    <para id="x_22">The default output printed by <command
+	role="hg-cmd">hg log</command> is purely a summary; it is
+      missing a lot of detail.</para>
 
     <para id="x_23"><xref linkend="fig:tour-basic:history"/> provides
       a graphical representation of the history of the <filename
@@ -286,22 +285,26 @@
 	  log</command> identifies a changeset using both a number and
 	a hexadecimal string.</para>
       <itemizedlist>
-	<listitem><para id="x_27">The revision number is <emphasis>only valid in
-	      that repository</emphasis>,</para></listitem>
-	<listitem><para id="x_28">while the hex string is the
+	<listitem><para id="x_27">The revision number is a handy
+	    notation that is <emphasis>only valid in that
+	      repository</emphasis>.</para></listitem>
+	<listitem><para id="x_28">The hexadecimal string is the
 	    <emphasis>permanent, unchanging identifier</emphasis> that
 	    will always identify that exact changeset in
 	    <emphasis>every</emphasis> copy of the
 	    repository.</para></listitem></itemizedlist>
-      <para id="x_29">This distinction is important.  If you send someone an
-	email talking about <quote>revision 33</quote>, there's a high
-	likelihood that their revision 33 will <emphasis>not be the
-	  same</emphasis> as yours.  The reason for this is that a
-	revision number depends on the order in which changes arrived
-	in a repository, and there is no guarantee that the same
-	changes will happen in the same order in different
-	repositories. Three changes $a,b,c$ can easily appear in one
-	repository as $0,1,2$, while in another as $1,0,2$.</para>
+
+      <para id="x_29">This distinction is important.  If you send
+	someone an email talking about <quote>revision 33</quote>,
+	there's a high likelihood that their revision 33 will
+	<emphasis>not be the same</emphasis> as yours.  The reason for
+	this is that a revision number depends on the order in which
+	changes arrived in a repository, and there is no guarantee
+	that the same changes will happen in the same order in
+	different repositories. Three changes <literal>a,b,c</literal>
+	can easily appear in one repository as
+	<literal>0,1,2</literal>, while in another as
+	<literal>0,2,1</literal>.</para>
 
       <para id="x_2a">Mercurial uses revision numbers purely as a convenient
 	shorthand.  If you need to discuss a changeset with someone,
@@ -317,7 +320,7 @@
 	  log</command> down to a single revision, use the <option
 	  role="hg-opt-log">-r</option> (or <option
 	  role="hg-opt-log">--rev</option>) option.  You can use
-	either a revision number or a long-form changeset identifier,
+	either a revision number or a hexadecimal identifier,
 	and you can provide as many revisions as you want.</para>
 
       &interaction.tour.log-r;
@@ -361,8 +364,12 @@
 
       &interaction.tour.log-vp;
 
+      <para>The <option role="hg-opt-log">-p</option> option is
+	tremendously useful, so it's well worth remembering.</para>
+
     </sect2>
   </sect1>
+
   <sect1>
     <title>All about command options</title>
 
@@ -374,26 +381,42 @@
       dealing with the options that you can pass to commands.  It
       follows the conventions for options that are common to modern
       Linux and Unix systems.</para>
+
     <itemizedlist>
-      <listitem><para id="x_32">Every option has a long name.  For example, as
+      <listitem>
+	<para id="x_32">Every option has a long name.  For example, as
 	  we've already seen, the <command role="hg-cmd">hg
 	    log</command> command accepts a <option
-	    role="hg-opt-log">--rev</option> option.</para></listitem>
-      <listitem><para id="x_33">Most options have short names, too.  Instead of
-	  <option role="hg-opt-log">--rev</option>, we can use <option
-	    role="hg-opt-log">-r</option>.  (The reason that some
-	  options don't have short names is that the options in
-	  question are rarely used.)</para></listitem>
-      <listitem><para id="x_34">Long options start with two dashes (e.g. <option
-	    role="hg-opt-log">--rev</option>), while short options
-	  start with one (e.g. <option
-	    role="hg-opt-log">-r</option>).</para></listitem>
-      <listitem><para id="x_35">Option naming and usage is consistent across
+	    role="hg-opt-log">--rev</option> option.</para>
+      </listitem>
+      <listitem>
+	<para id="x_33">Most options have short names, too.  Instead
+	  of <option role="hg-opt-log">--rev</option>, we can use
+	  <option role="hg-opt-log">-r</option>.  (The reason that
+	  some options don't have short names is that the options in
+	  question are rarely used.)</para>
+      </listitem>
+      <listitem>
+	<para id="x_34">Long options start with two dashes (e.g.
+	  <option role="hg-opt-log">--rev</option>), while short
+	  options start with one (e.g. <option
+	    role="hg-opt-log">-r</option>).</para>
+      </listitem>
+      <listitem>
+	<para id="x_35">Option naming and usage is consistent across
 	  commands.  For example, every command that lets you specify
 	  a changeset ID or revision number accepts both <option
 	    role="hg-opt-log">-r</option> and <option
-	    role="hg-opt-log">--rev</option>
-	  arguments.</para></listitem></itemizedlist>
+	    role="hg-opt-log">--rev</option> arguments.</para>
+      </listitem>
+      <listitem>
+	<para>If you are using short options, you can save typing by
+	  running them together. For example, the command <command
+	    role="hg-cmd">hg log -v -p -r 2</command> can be written
+	  as <command role="hg-cmd">hg log -vpr2</command>.</para>
+      </listitem>
+    </itemizedlist>
+
     <para id="x_36">In the examples throughout this book, I use short options
       instead of long.  This just reflects my own preference, so don't
       read anything significant into it.</para>
@@ -404,6 +427,18 @@
       less when passed <option role="hg-opt-global">-q</option> (or
       <option role="hg-opt-global">--quiet</option>).</para>
 
+    <note>
+      <title>Option naming consistency</title>
+
+      <para>Almost always, Mercurial commands use consistent option
+	names to refer to the same concepts.  For instance, if a
+	command deals with changesets, you'll always identify them
+	with <option role="hg-opt-log">--rev</option> or <option
+	  role="hg-opt-log">-r</option>.  This consistent use of
+	option names makes it easier to remember what options a
+	particular command takes.</para>
+    </note>
+
   </sect1>
   <sect1>
     <title>Making and reviewing changes</title>
@@ -418,7 +453,14 @@
       the remote repository.  Since we already have a copy of it
       locally, we can just clone that instead.  This is much faster
       than cloning over the network, and cloning a local repository
-      uses less disk space in most cases, too.</para>
+      uses less disk space in most cases, too<footnote>
+	<para>The saving of space arises when source and destination
+	  repositories are on the same filesystem, in which case
+	  Mercurial will use hardlinks to do copy-on-write sharing of
+	  its internal metadata.  If that explanation meant nothing to
+	  you, don't worry: everything happens transparently and
+	  automatically, and you don't need to understand it.</para>
+	</footnote>.</para>
 
     &interaction.tour.reclone;
 
@@ -433,16 +475,14 @@
 
     <para id="x_3b">In our <filename class="directory">my-hello</filename>
       repository, we have a file <filename>hello.c</filename> that
-      contains the classic <quote>hello, world</quote> program. Let's
-      use the ancient and venerable <command>sed</command> command to
-      edit this file so that it prints a second line of output.  (I'm
-      only using <command>sed</command> to do this because it's easy
-      to write a scripted example this way.  Since you're not under
-      the same constraint, you probably won't want to use
-      <command>sed</command>; simply use your preferred text editor to
-      do the same thing.)</para>
+      contains the classic <quote>hello, world</quote> program.</para>
+
+    &interaction.tour.cat1;
 
-    &interaction.tour.sed;
+    <para>Let's edit this file so that it prints a second line of
+      output.</para>
+
+    &interaction.tour.cat2;
 
     <para id="x_3c">Mercurial's <command role="hg-cmd">hg status</command>
       command will tell us what Mercurial knows about the files in the
@@ -465,7 +505,7 @@
       file after we were done; it was able to figure this out
       itself.</para>
 
-    <para id="x_3f">It's a little bit helpful to know that we've modified
+    <para id="x_3f">It's somewhat helpful to know that we've modified
       <filename>hello.c</filename>, but we might prefer to know
       exactly <emphasis>what</emphasis> changes we've made to it.  To
       do this, we use the <command role="hg-cmd">hg diff</command>
@@ -473,6 +513,13 @@
 
     &interaction.tour.diff;
 
+    <tip>
+      <title>Understanding patches</title>
+
+      <para>Remember to take a look at <xref
+	  linkend="sec:mq:patch"/> if you don't know how to read
+	output above.</para>
+    </tip>
   </sect1>
   <sect1>
     <title>Recording changes in a new changeset</title>
@@ -549,10 +596,13 @@
 	    configuration settings.  The initial contents of your
 	    <filename role="special">.hgrc</filename> should look like
 	    this.</para>
+
+	<remark>Figure out what the appropriate directory is on
+	  Windows.</remark>
+
 	<programlisting># This is a Mercurial configuration file.
 [ui]
-username = Firstname Lastname
-&lt;email.address@domain.net&gt;</programlisting>
+username = Firstname Lastname &lt;email.address@domain.net&gt;</programlisting>
 
 	<para id="x_4b">The <quote><literal>[ui]</literal></quote> line begins a
 	  <emphasis>section</emphasis> of the config file, so you can
@@ -571,8 +621,8 @@
 
 	<para id="x_4c">You can use any text you like as the value of
 	    the <literal>username</literal> config item, since this
-	    information is for reading by other people, but for
-	    interpreting by Mercurial.  The convention that most
+	    information is for reading by other people, but will not be
+	    interpreted by Mercurial.  The convention that most
 	    people follow is to use their name and email address, as
 	    in the example above.</para>
 	<note>
@@ -600,10 +650,17 @@
 
       <para id="x_4f">The editor that the <command role="hg-cmd">hg
 	    commit</command> command drops us into will contain an
-	  empty line, followed by a number of lines starting with
+	  empty line or two, followed by a number of lines starting with
 	  <quote><literal>HG:</literal></quote>.</para>
 
-    <programlisting>XXX fix this XXX</programlisting>
+    <programlisting>
+This is where I type my commit comment.
+
+HG: Enter commit message.  Lines beginning with 'HG:' are removed.
+HG: --
+HG: user: Bryan O'Sullivan &lt;bos@serpentine.com&gt;
+HG: branch 'default'
+HG: changed hello.c</programlisting>
 
       <para id="x_50">Mercurial ignores the lines that start with
 	  <quote><literal>HG:</literal></quote>; it uses them only to
@@ -665,9 +722,18 @@
 
       &interaction.tour.tip;
 
-      <para id="x_57">We refer to
-	  the newest revision in the repository as the tip revision,
-	  or simply the tip.</para>
+      <para id="x_57">We refer to the newest revision in the
+	repository as the <emphasis>tip revision</emphasis>, or simply
+	the <emphasis>tip</emphasis>.</para>
+
+      <para>By the way, the <command role="hg-cmd">hg tip</command>
+	command accepts many of the same options as <command
+	  role="hg-cmd">hg log</command>, so <option
+	  role="hg-opt-global">-v</option> above indicates <quote>be
+	  verbose</quote>, <option role="hg-opt-tip">-p</option>
+	specifies <quote>print a patch</quote>.  The use of <option
+	  role="hg-opt-tip">-p</option> to print patches is another
+	example of the consistent naming we mentioned earlier.</para>
     </sect2>
   </sect1>
 
@@ -704,12 +770,13 @@
 
       &interaction.tour.incoming;
 
-      <para id="x_5b">(Of course, someone could
-	  cause more changesets to appear in the repository that we
-	  ran <command role="hg-cmd">hg incoming</command> in, before
-	  we get a chance to <command role="hg-cmd">hg pull</command>
-	  the changes, so that we could end up pulling changes that we
-	  didn't expect.)</para>
+      <para id="x_5b">Suppose you're pulling changes from a repository
+      on the network somewhere. While you are looking at the <command
+	  role="hg-cmd">hg incoming</command> output, and before you
+	pull those changes, someone might have committed something in
+	the remote repository. This means that it's possible to pull
+	more changes than you saw when using <command
+	  role="hg-cmd">hg incoming</command>.</para>
 
       <para id="x_5c">Bringing changes into a repository is a simple
 	  matter of running the <command role="hg-cmd">hg
@@ -746,8 +813,8 @@
 	can use <command role="hg-cmd">hg update</command> to update
 	the working directory to the state it was in at <emphasis>any
 	  revision</emphasis> in the history of the repository.  If
-	you had the working directory updated to an old revision---to
-	hunt down the origin of a bug, say---and ran a <command
+	you had the working directory updated to an old revision&emdash;to
+	hunt down the origin of a bug, say&emdash;and ran a <command
 	  role="hg-cmd">hg pull</command> which automatically updated
 	the working directory to a new revision, you might not be
 	terribly happy.</para>
@@ -817,14 +884,17 @@
 
       &interaction.tour.push;
 
-      <para id="x_69">As with
-	  <command role="hg-cmd">hg pull</command>, the <command
-	    role="hg-cmd">hg push</command> command does not update
-	  the working directory in the repository that it's pushing
-	  changes into. (Unlike <command role="hg-cmd">hg
-	    pull</command>, <command role="hg-cmd">hg push</command>
-	  does not provide a <literal>-u</literal> option that updates
-	  the other repository's working directory.)</para>
+      <para id="x_69">As with <command role="hg-cmd">hg
+	  pull</command>, the <command role="hg-cmd">hg push</command>
+	command does not update the working directory in the
+	repository that it's pushing changes into. Unlike <command
+	  role="hg-cmd">hg pull</command>, <command role="hg-cmd">hg
+	  push</command> does not provide a <literal>-u</literal>
+	option that updates the other repository's working directory.
+	This asymmetry is deliberate: the repository we're pushing to
+	might be on a remote server and shared between several people.
+	If we were to update its working directory while someone was
+	working in it, their work would be disrupted.</para>
 
       <para id="x_6a">What happens if we try to pull or push changes
 	  and the receiving repository already has those changes?
--- a/en/examples/auto-snippets.xml	Tue Mar 31 21:17:59 2009 +0800
+++ b/en/examples/auto-snippets.xml	Thu Apr 02 09:24:36 2009 +0800
@@ -180,6 +180,8 @@
 <!ENTITY interaction.tour-merge-conflict.pull SYSTEM "results/tour-merge-conflict.pull.lxo">
 <!ENTITY interaction.tour-merge-conflict.son SYSTEM "results/tour-merge-conflict.son.lxo">
 <!ENTITY interaction.tour-merge-conflict.wife SYSTEM "results/tour-merge-conflict.wife.lxo">
+<!ENTITY interaction.tour.cat1 SYSTEM "results/tour.cat1.lxo">
+<!ENTITY interaction.tour.cat2 SYSTEM "results/tour.cat2.lxo">
 <!ENTITY interaction.tour.clone SYSTEM "results/tour.clone.lxo">
 <!ENTITY interaction.tour.clone-pull SYSTEM "results/tour.clone-pull.lxo">
 <!ENTITY interaction.tour.clone-push SYSTEM "results/tour.clone-push.lxo">
--- a/en/examples/run-example	Tue Mar 31 21:17:59 2009 +0800
+++ b/en/examples/run-example	Thu Apr 02 09:24:36 2009 +0800
@@ -127,9 +127,11 @@
         s = open(self.name).read().rstrip()
         s = s.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;')
         ofp = wopen(result_name(self.name + '.tmp'))
+        ofp.write('<!-- BEGIN %s -->\n' % self.name)
         ofp.write('<programlisting>')
         ofp.write(s)
         ofp.write('</programlisting>\n')
+        ofp.write('<!-- END %s -->\n' % self.name)
         ofp.close()
         self.rename_output(self.name)
         norm = self.name.replace(os.sep, '-')
@@ -309,6 +311,7 @@
                             assert os.sep not in out
                             if ofp is not None:
                                 ofp.write('</screen>\n')
+                                ofp.write('<!-- END %s -->\n' % ofp_basename)
                                 ofp.close()
                                 err |= self.rename_output(ofp_basename, ignore)
                             if out:
@@ -320,6 +323,7 @@
                                     % (norm, norm)] = 1
                                 read_hint = ofp_basename + ' '
                                 ofp = wopen(result_name(ofp_basename + '.tmp'))
+                                ofp.write('<!-- BEGIN %s -->\n' % ofp_basename)
                                 ofp.write('<screen>')
                             else:
                                 ofp = None
@@ -333,7 +337,8 @@
                         # first, print the command we ran
                         if not hunk.startswith('#'):
                             nl = hunk.endswith('\n')
-                            hunk = ('<prompt>%s</prompt> <userinput>%s</userinput>' %
+                            hunk = ('<prompt>%s</prompt> '
+                                    '<userinput>%s</userinput>' %
                                     (prompts[ps],
                                      xml_escape(hunk.rstrip('\n'))))
                             if nl: hunk += '\n'
@@ -353,6 +358,7 @@
                     if ofp is not None:
                         ofp.write(output)
                         ofp.write('</screen>\n')
+                        ofp.write('<!-- END %s -->\n' % ofp_basename)
                         ofp.close()
                         err |= self.rename_output(ofp_basename, ignore)
                     os.close(self.cfd)
@@ -379,7 +385,7 @@
     print >> sys.stderr, 'Options:'
     print >> sys.stderr, '  -a --all       run all examples in this directory'
     print >> sys.stderr, '  -h --help      print this help message'
-    print >> sys.stderr, '     --help      keep new output as desired output'
+    print >> sys.stderr, '     --keep      keep new output as desired output'
     print >> sys.stderr, '  -v --verbose   display extra debug output'
     sys.exit(exit)
 
--- a/en/examples/tour	Tue Mar 31 21:17:59 2009 +0800
+++ b/en/examples/tour	Thu Apr 02 09:24:36 2009 +0800
@@ -52,10 +52,17 @@
 hg clone hello my-hello
 cd my-hello
 
-#$ name: sed
+#$ name: cat1
+cat hello.c
+
+#$ name:
 
 sed -i '/printf/a\\tprintf("hello again!\\n");' hello.c
 
+#$ name: cat2
+# ... edit edit edit ...
+cat hello.c
+
 #$ name: status
 
 ls
--- a/po/zh.po	Tue Mar 31 21:17:59 2009 +0800
+++ b/po/zh.po	Thu Apr 02 09:24:36 2009 +0800
@@ -41,7 +41,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: hgbook 1.2\n"
-"POT-Creation-Date: 2009-03-31 10:46+0800\n"
+"POT-Creation-Date: 2009-04-02 09:21+0800\n"
 "PO-Revision-Date: 2009-03-31 10:12+0800\n"
 "Last-Translator: \n"
 "Language-Team: Simplified Chinese <i18n-zh@googlegroups.com >\n"
@@ -62,18 +62,23 @@
 msgid "Compiled from $rev_id$"
 msgstr "编译自 $rev_id$"
 
+#. type: Content of: <book><bookinfo>
+#: ../en/00book.xml:48
+msgid "<edition>1</edition> <isbn>9780596800673</isbn>"
+msgstr ""
+
 #. type: Content of: <book><bookinfo><authorgroup><author><firstname>
-#: ../en/00book.xml:50
+#: ../en/00book.xml:52
 msgid "Bryan"
 msgstr "Bryan"
 
 #. type: Content of: <book><bookinfo><authorgroup><author><surname>
-#: ../en/00book.xml:51
+#: ../en/00book.xml:53
 msgid "O'Sullivan"
 msgstr "O'Sullivan"
 
 #. type: Content of: <book><bookinfo>
-#: ../en/00book.xml:55
+#: ../en/00book.xml:57
 msgid ""
 "<editor> <firstname>Mike</firstname> <surname>Loukides</surname> </editor> "
 "<copyright> <year>2006</year> <year>2007</year> <year>2008</year> <year>2009</"
@@ -436,6 +441,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:14
+#, fuzzy
 msgid "<command role=\"hg-ext-mq\">qapplied</command>—print applied patches"
 msgstr "<command role=\"hg-ext-mq\">qapplied</command>—显示已应用的补丁"
 
@@ -449,6 +455,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:24
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qcommit</command>—commit changes in the queue "
 "repository"
@@ -476,6 +483,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:43
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qdelete</command>—delete a patch from the "
 "<filename role=\"special\">series</filename> file"
@@ -510,6 +518,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:66
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qdiff</command>—print a diff of the topmost "
 "applied patch"
@@ -525,6 +534,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:75
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qfold</command>—merge (<quote>fold</quote>) "
 "several patches into one"
@@ -584,6 +594,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:119
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qheader</command>—display the header/description "
 "of a patch"
@@ -599,6 +610,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:130
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qimport</command>—import a third-party patch into "
 "the queue"
@@ -625,6 +637,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:149
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qinit</command>—prepare a repository to work with "
 "MQ"
@@ -658,6 +671,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:178
+#, fuzzy
 msgid "<command role=\"hg-ext-mq\">qnew</command>—create a new patch"
 msgstr "<command role=\"hg-ext-mq\">qnew</command>—创建新补丁"
 
@@ -700,6 +714,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:215
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qnext</command>—print the name of the next patch"
 msgstr "<command role=\"hg-ext-mq\">qnext</command>—显示下个补丁的名称"
@@ -715,6 +730,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:227
+#, fuzzy
 msgid "<command role=\"hg-ext-mq\">qpop</command>—pop patches off the stack"
 msgstr "<command role=\"hg-ext-mq\">qpop</command>—删除堆栈顶部的补丁"
 
@@ -798,6 +814,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:288
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qprev</command>—print the name of the previous "
 "patch"
@@ -814,6 +831,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:300
+#, fuzzy
 msgid "<command role=\"hg-ext-mq\">qpush</command>—push patches onto the stack"
 msgstr "<command role=\"hg-ext-mq\">qpush</command>—增加补丁到堆栈"
 
@@ -911,6 +929,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:368
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qrefresh</command>—update the topmost applied "
 "patch"
@@ -988,6 +1007,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:424
+#, fuzzy
 msgid "<command role=\"hg-ext-mq\">qrename</command>—rename a patch"
 msgstr "<command role=\"hg-ext-mq\">qrename</command>—改名补丁"
 
@@ -1009,6 +1029,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:438
+#, fuzzy
 msgid "<command role=\"hg-ext-mq\">qrestore</command>—restore saved queue state"
 msgstr "<command role=\"hg-ext-mq\">qrestore</command>—恢复保存的队列"
 
@@ -1019,6 +1040,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:446
+#, fuzzy
 msgid "<command role=\"hg-ext-mq\">qsave</command>—save current queue state"
 msgstr "<command role=\"hg-ext-mq\">qsave</command>—保存当前的队列状态"
 
@@ -1029,6 +1051,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:453
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qseries</command>—print the entire patch series"
 msgstr "<command role=\"hg-ext-mq\">qseries</command>—显示补丁序列"
@@ -1044,6 +1067,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:464
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qtop</command>—print the name of the current patch"
 msgstr "<command role=\"hg-ext-mq\">qtop</command>—显示当前补丁的名称"
@@ -1057,6 +1081,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:472
+#, fuzzy
 msgid ""
 "<command role=\"hg-ext-mq\">qunapplied</command>—print patches not yet applied"
 msgstr "<command role=\"hg-ext-mq\">qunapplied</command>—显示尚未应用的补丁"
@@ -1072,6 +1097,7 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:484
+#, fuzzy
 msgid ""
 "<command role=\"hg-cmd\">hg strip</command>—remove a revision and descendants"
 msgstr "<command role=\"hg-cmd\">hg strip</command>—删除一个版本及其后继"
@@ -1606,12 +1632,12 @@
 #. type: Content of: <book><preface><sect1><sect2><para>
 #: ../en/ch00-preface.xml:71
 msgid ""
-"Most of these reasons are equally valid---at least in theory---whether you're "
-"working on a project by yourself, or with a hundred other people."
+"Most of these reasons are equally valid—at least in theory&emdash;whether "
+"you're working on a project by yourself, or with a hundred other people."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:75
+#: ../en/ch00-preface.xml:76
 msgid ""
 "A key question about the practicality of revision control at these two "
 "different scales (<quote>lone hacker</quote> and <quote>huge team</quote>) is "
@@ -1621,7 +1647,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:83
+#: ../en/ch00-preface.xml:84
 msgid ""
 "A five-hundred-person project is likely to collapse under its own weight "
 "almost immediately without a revision control tool and process. In this case, "
@@ -1630,7 +1656,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:90
+#: ../en/ch00-preface.xml:91
 msgid ""
 "On the other hand, a one-person <quote>quick hack</quote> might seem like a "
 "poor place to use a revision control tool, because surely the cost of using "
@@ -1638,7 +1664,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:95
+#: ../en/ch00-preface.xml:96
 msgid ""
 "Mercurial uniquely supports <emphasis>both</emphasis> of these scales of "
 "development.  You can learn the basics in just a few minutes, and due to its "
@@ -1651,7 +1677,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:105
+#: ../en/ch00-preface.xml:106
 msgid ""
 "No revision control tool can rescue a poorly run project, but a good choice "
 "of tools can make a huge difference to the fluidity with which you can work "
@@ -1659,12 +1685,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><title>
-#: ../en/ch00-preface.xml:112
+#: ../en/ch00-preface.xml:113
 msgid "The many names of revision control"
 msgstr "版本控制的别名"
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:114
+#: ../en/ch00-preface.xml:115
 msgid ""
 "Revision control is a diverse field, so much so that it is referred to by "
 "many names and acronyms.  Here are a few of the more common variations you'll "
@@ -1672,32 +1698,32 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:118
+#: ../en/ch00-preface.xml:119
 msgid "Revision control (RCS)"
 msgstr "版本控制(RCS)"
 
 #. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:119
+#: ../en/ch00-preface.xml:120
 msgid "Software configuration management (SCM), or configuration management"
 msgstr "软件配置管理(SCM),或配置管理"
 
 #. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:121
+#: ../en/ch00-preface.xml:122
 msgid "Source code management"
 msgstr "源代码管理"
 
 #. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:122
+#: ../en/ch00-preface.xml:123
 msgid "Source code control, or source control"
 msgstr "源代码控制,或源控制"
 
 #. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:124
+#: ../en/ch00-preface.xml:125
 msgid "Version control (VCS)"
 msgstr "版本控制(VCS)"
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:126
+#: ../en/ch00-preface.xml:127
 msgid ""
 "Some people claim that these terms actually have different meanings, but in "
 "practice they overlap so much that there's no agreed or even useful way to "
@@ -1705,12 +1731,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><title>
-#: ../en/ch00-preface.xml:134
+#: ../en/ch00-preface.xml:135
 msgid "This book is a work in progress"
 msgstr "本书正在编写中"
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:136
+#: ../en/ch00-preface.xml:137
 msgid ""
 "I am releasing this book while I am still writing it, in the hope that it "
 "will prove useful to others.  I am writing under an open license in the hope "
@@ -1719,22 +1745,22 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><title>
-#: ../en/ch00-preface.xml:143
+#: ../en/ch00-preface.xml:144
 msgid "About the examples in this book"
 msgstr "本书的例子"
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:145
+#: ../en/ch00-preface.xml:146
 msgid ""
 "This book takes an unusual approach to code samples.  Every example is "
-"<quote>live</quote>---each one is actually the result of a shell script that "
+"<quote>live</quote>—each one is actually the result of a shell script that "
 "executes the Mercurial commands you see.  Every time an image of the book is "
 "built from its sources, all the example scripts are automatically run, and "
 "their current results compared against their expected results."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:152
+#: ../en/ch00-preface.xml:153
 msgid ""
 "The advantage of this approach is that the examples are always accurate; they "
 "describe <emphasis>exactly</emphasis> the behaviour of the version of "
@@ -1744,7 +1770,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:159
+#: ../en/ch00-preface.xml:160
 msgid ""
 "There is a small disadvantage to this approach, which is that the dates and "
 "times you'll see in examples tend to be <quote>squashed</quote> together in a "
@@ -1755,7 +1781,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:167
+#: ../en/ch00-preface.xml:168
 msgid ""
 "As an instance of this, several consecutive commits in an example can show up "
 "as having occurred during the same second.  You can see this occur in the "
@@ -1764,7 +1790,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:173
+#: ../en/ch00-preface.xml:174
 msgid ""
 "So when you're reading examples, don't place too much weight on the dates or "
 "times you see in the output of commands.  But <emphasis>do</emphasis> be "
@@ -1772,12 +1798,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><title>
-#: ../en/ch00-preface.xml:181
+#: ../en/ch00-preface.xml:182
 msgid "Trends in the field"
 msgstr "版本控制的发展趋势"
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:183
+#: ../en/ch00-preface.xml:184
 msgid ""
 "There has been an unmistakable trend in the development and use of revision "
 "control tools over the past four decades, as people have become familiar with "
@@ -1785,7 +1811,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:188
+#: ../en/ch00-preface.xml:189
 msgid ""
 "The first generation began by managing single files on individual computers.  "
 "Although these tools represented a huge advance over ad-hoc manual revision "
@@ -1794,7 +1820,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:194
+#: ../en/ch00-preface.xml:195
 msgid ""
 "The second generation loosened these constraints by moving to network-"
 "centered architectures, and managing entire projects at a time.  As projects "
@@ -1808,7 +1834,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:206
+#: ../en/ch00-preface.xml:207
 msgid ""
 "The current generation of revision control tools is peer-to-peer in nature.  "
 "All of these systems have dropped the dependency on a single central server, "
@@ -1820,12 +1846,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><title>
-#: ../en/ch00-preface.xml:218
+#: ../en/ch00-preface.xml:219
 msgid "A few of the advantages of distributed revision control"
 msgstr "分布版本控制的优点"
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:221
+#: ../en/ch00-preface.xml:222
 msgid ""
 "Even though distributed revision control tools have for several years been as "
 "robust and usable as their previous-generation counterparts, people using "
@@ -1835,7 +1861,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:228
+#: ../en/ch00-preface.xml:229
 msgid ""
 "For an individual developer, distributed tools are almost always much faster "
 "than centralised tools.  This is for a simple reason: a centralised tool "
@@ -1848,7 +1874,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:239
+#: ../en/ch00-preface.xml:240
 msgid ""
 "Distributed tools are indifferent to the vagaries of your server "
 "infrastructure, again because they replicate metadata to so many locations.  "
@@ -1859,7 +1885,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:247
+#: ../en/ch00-preface.xml:248
 msgid ""
 "The reliability of your network will affect distributed tools far less than "
 "it will centralised tools.  You can't even use a centralised tool without a "
@@ -1872,12 +1898,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><title>
-#: ../en/ch00-preface.xml:258
+#: ../en/ch00-preface.xml:259
 msgid "Advantages for open source projects"
 msgstr "开源项目的优点"
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:260
+#: ../en/ch00-preface.xml:261
 msgid ""
 "If you take a shine to an open source project and decide that you would like "
 "to start hacking on it, and that project uses a distributed revision control "
@@ -1893,12 +1919,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><sect3><title>
-#: ../en/ch00-preface.xml:276
+#: ../en/ch00-preface.xml:277
 msgid "The forking non-problem"
 msgstr "分叉不是问题"
 
 #. type: Content of: <book><preface><sect1><sect2><sect3><para>
-#: ../en/ch00-preface.xml:278
+#: ../en/ch00-preface.xml:279
 msgid ""
 "It has been suggested that distributed revision control tools pose some sort "
 "of risk to open source projects because they make it easy to <quote>fork</"
@@ -1910,7 +1936,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><sect3><para>
-#: ../en/ch00-preface.xml:288
+#: ../en/ch00-preface.xml:289
 msgid ""
 "Sometimes the camps in a fork decide to reconcile their differences. With a "
 "centralised revision control system, the <emphasis>technical</emphasis> "
@@ -1921,7 +1947,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><sect3><para>
-#: ../en/ch00-preface.xml:297
+#: ../en/ch00-preface.xml:298
 msgid ""
 "What distributed tools do with respect to forking is they make forking the "
 "<emphasis>only</emphasis> way to develop a project.  Every single change that "
@@ -1932,7 +1958,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><sect3><para>
-#: ../en/ch00-preface.xml:306
+#: ../en/ch00-preface.xml:307
 msgid ""
 "If every piece of work that everybody does, all the time, is framed in terms "
 "of forking and merging, then what the open source world refers to as a "
@@ -1942,14 +1968,14 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><sect3><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:313
+#: ../en/ch00-preface.xml:314
 msgid ""
 "They eliminate the social distinction that centralised tools impose: that "
 "between insiders (people with commit access) and outsiders (people without)."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><sect3><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:317
+#: ../en/ch00-preface.xml:318
 msgid ""
 "They make it easier to reconcile after a social fork, because all that's "
 "involved from the perspective of the revision control software is just "
@@ -1957,7 +1983,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><sect3><para>
-#: ../en/ch00-preface.xml:322
+#: ../en/ch00-preface.xml:323
 msgid ""
 "Some people resist distributed tools because they want to retain tight "
 "control over their projects, and they believe that centralised tools give "
@@ -1970,12 +1996,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><title>
-#: ../en/ch00-preface.xml:337
+#: ../en/ch00-preface.xml:338
 msgid "Advantages for commercial projects"
 msgstr "商业项目的优点"
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:339
+#: ../en/ch00-preface.xml:340
 msgid ""
 "Many commercial projects are undertaken by teams that are scattered across "
 "the globe.  Contributors who are far from a central server will see slower "
@@ -1989,21 +2015,20 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:351
+#: ../en/ch00-preface.xml:352
 msgid ""
 "Centralised revision control systems tend to have relatively low "
 "scalability.  It's not unusual for an expensive centralised system to fall "
 "over under the combined load of just a few dozen concurrent users.  Once "
 "again, the typical response tends to be an expensive and clunky replication "
-"facility.  Since the load on a central server---if you have one at all---is "
-"many times lower with a distributed tool (because all of the data is "
-"replicated everywhere), a single cheap server can handle the needs of a much "
-"larger team, and replication to balance load becomes a simple matter of "
-"scripting."
+"facility.  Since the load on a central server—if you have one at all—is many "
+"times lower with a distributed tool (because all of the data is replicated "
+"everywhere), a single cheap server can handle the needs of a much larger "
+"team, and replication to balance load becomes a simple matter of scripting."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:363
+#: ../en/ch00-preface.xml:364
 msgid ""
 "If you have an employee in the field, troubleshooting a problem at a "
 "customer's site, they'll benefit from distributed revision control. The tool "
@@ -2014,39 +2039,39 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><title>
-#: ../en/ch00-preface.xml:374
+#: ../en/ch00-preface.xml:375
 msgid "Why choose Mercurial?"
 msgstr "为什么选择 Mercurial?"
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:376
+#: ../en/ch00-preface.xml:377
 msgid ""
 "Mercurial has a unique set of properties that make it a particularly good "
 "choice as a revision control system."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:379
+#: ../en/ch00-preface.xml:380
 msgid "It is easy to learn and use."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:380
-msgid "It is lightweight."
-msgstr ""
-
-#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para>
 #: ../en/ch00-preface.xml:381
-msgid "It scales excellently."
+msgid "It is lightweight."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><itemizedlist><listitem><para>
 #: ../en/ch00-preface.xml:382
+msgid "It scales excellently."
+msgstr ""
+
+#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para>
+#: ../en/ch00-preface.xml:383
 msgid "It is easy to customise."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:385
+#: ../en/ch00-preface.xml:386
 msgid ""
 "If you are at all familiar with revision control systems, you should be able "
 "to get up and running with Mercurial in less than five minutes.  Even if not, "
@@ -2056,7 +2081,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:392
+#: ../en/ch00-preface.xml:393
 msgid ""
 "On a small project, you can start working with Mercurial in moments. Creating "
 "new changes and branches; transferring changes around (whether locally or "
@@ -2066,7 +2091,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:399
+#: ../en/ch00-preface.xml:400
 msgid ""
 "The usefulness of Mercurial is not limited to small projects: it is used by "
 "projects with hundreds to thousands of contributors, each containing tens of "
@@ -2074,7 +2099,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:404
+#: ../en/ch00-preface.xml:405
 msgid ""
 "If the core functionality of Mercurial is not enough for you, it's easy to "
 "build on.  Mercurial is well suited to scripting tasks, and its clean "
@@ -2085,12 +2110,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><title>
-#: ../en/ch00-preface.xml:414
+#: ../en/ch00-preface.xml:415
 msgid "Mercurial compared with other tools"
 msgstr "Mercurial 与其它工具的比较"
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:416
+#: ../en/ch00-preface.xml:417
 msgid ""
 "Before you read on, please understand that this section necessarily reflects "
 "my own experiences, interests, and (dare I say it) biases.  I have used every "
@@ -2099,19 +2124,19 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:424 ../en/ch00-preface.xml:635
+#: ../en/ch00-preface.xml:425 ../en/ch00-preface.xml:636
 msgid "Subversion"
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:426
+#: ../en/ch00-preface.xml:427
 msgid ""
 "Subversion is a popular revision control tool, developed to replace CVS.  It "
 "has a centralised client/server architecture."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:430
+#: ../en/ch00-preface.xml:431
 msgid ""
 "Subversion and Mercurial have similarly named commands for performing the "
 "same operations, so if you're familiar with one, it is easy to learn to use "
@@ -2119,7 +2144,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:435
+#: ../en/ch00-preface.xml:436
 msgid ""
 "Prior to version 1.5, Subversion had no useful support for merges. At the "
 "time of writing, its merge tracking capability is new, and known to be <ulink "
@@ -2128,7 +2153,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:441
+#: ../en/ch00-preface.xml:442
 msgid ""
 "Mercurial has a substantial performance advantage over Subversion on every "
 "revision control operation I have benchmarked.  I have measured its advantage "
@@ -2142,7 +2167,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:454
+#: ../en/ch00-preface.xml:455
 msgid ""
 "Additionally, Subversion incurs substantial storage overhead to avoid network "
 "transactions for a few common operations, such as finding modified files "
@@ -2154,7 +2179,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:464
+#: ../en/ch00-preface.xml:465
 msgid ""
 "Subversion is widely supported by third party tools.  Mercurial currently "
 "lags considerably in this area.  This gap is closing, however, and indeed "
@@ -2163,7 +2188,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:470
+#: ../en/ch00-preface.xml:471
 msgid ""
 "Because Subversion doesn't store revision history on the client, it is well "
 "suited to managing projects that deal with lots of large, opaque binary "
@@ -2174,7 +2199,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:479
+#: ../en/ch00-preface.xml:480
 msgid ""
 "In addition, it's often difficult or, more usually, impossible to merge "
 "different versions of a binary file.  Subversion's ability to let a user lock "
@@ -2184,7 +2209,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:486
+#: ../en/ch00-preface.xml:487
 msgid ""
 "Mercurial can import revision history from a Subversion repository. It can "
 "also export revision history to a Subversion repository.  This makes it easy "
@@ -2195,12 +2220,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:498 ../en/ch00-preface.xml:637
+#: ../en/ch00-preface.xml:499 ../en/ch00-preface.xml:638
 msgid "Git"
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:500
+#: ../en/ch00-preface.xml:501
 msgid ""
 "Git is a distributed revision control tool that was developed for managing "
 "the Linux kernel source tree.  Like Mercurial, its early design was somewhat "
@@ -2208,7 +2233,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:505
+#: ../en/ch00-preface.xml:506
 msgid ""
 "Git has a very large command set, with version 1.5.0 providing 139 individual "
 "commands.  It has something of a reputation for being difficult to learn.  "
@@ -2216,7 +2241,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:510
+#: ../en/ch00-preface.xml:511
 msgid ""
 "In terms of performance, Git is extremely fast.  In several cases, it is "
 "faster than Mercurial, at least on Linux, while Mercurial performs better on "
@@ -2226,7 +2251,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:517
+#: ../en/ch00-preface.xml:518
 msgid ""
 "While a Mercurial repository needs no maintenance, a Git repository requires "
 "frequent manual <quote>repacks</quote> of its metadata.  Without these, "
@@ -2239,7 +2264,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:528
+#: ../en/ch00-preface.xml:529
 msgid ""
 "The core of Git is written in C.  Many Git commands are implemented as shell "
 "or Perl scripts, and the quality of these scripts varies widely. I have "
@@ -2248,17 +2273,17 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:534
+#: ../en/ch00-preface.xml:535
 msgid "Mercurial can import revision history from a Git repository."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:540 ../en/ch00-preface.xml:636
+#: ../en/ch00-preface.xml:541 ../en/ch00-preface.xml:637
 msgid "CVS"
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:542
+#: ../en/ch00-preface.xml:543
 msgid ""
 "CVS is probably the most widely used revision control tool in the world.  Due "
 "to its age and internal untidiness, it has been only lightly maintained for "
@@ -2266,7 +2291,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:546
+#: ../en/ch00-preface.xml:547
 msgid ""
 "It has a centralised client/server architecture.  It does not group related "
 "file changes into atomic commits, making it easy for people to <quote>break "
@@ -2280,7 +2305,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:558
+#: ../en/ch00-preface.xml:559
 msgid ""
 "CVS has a muddled notion of tags and branches that I will not attempt to even "
 "describe.  It does not support renaming of files or directories well, making "
@@ -2291,7 +2316,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:566
+#: ../en/ch00-preface.xml:567
 msgid ""
 "Mercurial can import CVS revision history.  However, there are a few caveats "
 "that apply; these are true of every other revision control tool's CVS "
@@ -2306,17 +2331,17 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:580
+#: ../en/ch00-preface.xml:581
 msgid "Mercurial can import revision history from a CVS repository."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><title>
-#: ../en/ch00-preface.xml:586
+#: ../en/ch00-preface.xml:587
 msgid "Commercial tools"
 msgstr "商业工具"
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:588
+#: ../en/ch00-preface.xml:589
 msgid ""
 "Perforce has a centralised client/server architecture, with no client-side "
 "caching of any data.  Unlike modern revision control tools, Perforce requires "
@@ -2325,7 +2350,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:594
+#: ../en/ch00-preface.xml:595
 msgid ""
 "The performance of Perforce is quite good for small teams, but it falls off "
 "rapidly as the number of users grows beyond a few dozen. Modestly large "
@@ -2334,12 +2359,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><title>
-#: ../en/ch00-preface.xml:603
+#: ../en/ch00-preface.xml:604
 msgid "Choosing a revision control tool"
 msgstr "选择版本控制工具"
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:605
+#: ../en/ch00-preface.xml:606
 msgid ""
 "With the exception of CVS, all of the tools listed above have unique "
 "strengths that suit them to particular styles of work.  There is no single "
@@ -2347,14 +2372,14 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:610
+#: ../en/ch00-preface.xml:611
 msgid ""
 "As an example, Subversion is a good choice for working with frequently edited "
 "binary files, due to its centralised nature and support for file locking."
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><sect2><para>
-#: ../en/ch00-preface.xml:614
+#: ../en/ch00-preface.xml:615
 msgid ""
 "I personally find Mercurial's properties of simplicity, performance, and good "
 "merge support to be a compelling combination that has served me well for "
@@ -2362,12 +2387,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><title>
-#: ../en/ch00-preface.xml:622
+#: ../en/ch00-preface.xml:623
 msgid "Switching from another tool to Mercurial"
 msgstr "从其它工具切换到 Mercurial"
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:624
+#: ../en/ch00-preface.xml:625
 msgid ""
 "Mercurial is bundled with an extension named <literal role=\"hg-ext"
 "\">convert</literal>, which can incrementally import revision history from "
@@ -2378,19 +2403,19 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:632
+#: ../en/ch00-preface.xml:633
 msgid ""
 "The revision control tools supported by <literal role=\"hg-ext\">convert</"
 "literal> are as follows:"
 msgstr "<literal role=\"hg-ext\">convert</literal> 支持的版本控制工具有:"
 
 #. type: Content of: <book><preface><sect1><itemizedlist><listitem><para>
-#: ../en/ch00-preface.xml:638
+#: ../en/ch00-preface.xml:639
 msgid "Darcs"
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:640
+#: ../en/ch00-preface.xml:641
 msgid ""
 "In addition, <literal role=\"hg-ext\">convert</literal> can export changes "
 "from Mercurial to Subversion.  This makes it possible to try Subversion and "
@@ -2399,7 +2424,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:646
+#: ../en/ch00-preface.xml:647
 msgid ""
 "The <command role=\"hg-ext-convert\">convert</command> command is easy to "
 "use.  Simply point it at the path or URL of the source repository, optionally "
@@ -2409,12 +2434,12 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><title>
-#: ../en/ch00-preface.xml:655
+#: ../en/ch00-preface.xml:656
 msgid "A short history of revision control"
 msgstr "版本控制简史"
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:657
+#: ../en/ch00-preface.xml:658
 msgid ""
 "The best known of the old-time revision control tools is SCCS (Source Code "
 "Control System), which Marc Rochkind wrote at Bell Labs, in the early 1970s.  "
@@ -2427,7 +2452,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:668
+#: ../en/ch00-preface.xml:669
 msgid ""
 "Walter Tichy developed a free alternative to SCCS in the early 1980s; he "
 "called his program RCS (Revision Control System).  Like SCCS, RCS required "
@@ -2436,7 +2461,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:674
+#: ../en/ch00-preface.xml:675
 msgid ""
 "Later in the 1980s, Dick Grune used RCS as a building block for a set of "
 "shell scripts he initially called cmt, but then renamed to CVS (Concurrent "
@@ -2449,7 +2474,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:685
+#: ../en/ch00-preface.xml:686
 msgid ""
 "Brian Berliner took Grune's original scripts and rewrote them in C, releasing "
 "in 1989 the code that has since developed into the modern version of CVS.  "
@@ -2463,7 +2488,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:696
+#: ../en/ch00-preface.xml:697
 msgid ""
 "In the early 1990s, Sun Microsystems developed an early distributed revision "
 "control system, called TeamWare.  A TeamWare workspace contains a complete "
@@ -2473,7 +2498,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:703
+#: ../en/ch00-preface.xml:704
 msgid ""
 "As the 1990s progressed, awareness grew of a number of problems with CVS.  It "
 "records simultaneous changes to multiple files individually, instead of "
@@ -2485,7 +2510,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:713
+#: ../en/ch00-preface.xml:714
 msgid ""
 "In 2001, Jim Blandy and Karl Fogel, two developers who had worked on CVS, "
 "started a project to replace it with a tool that would have a better "
@@ -2497,7 +2522,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:722
+#: ../en/ch00-preface.xml:723
 msgid ""
 "More or less simultaneously, Graydon Hoare began working on an ambitious "
 "distributed revision control system that he named Monotone. While Monotone "
@@ -2508,7 +2533,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:731
+#: ../en/ch00-preface.xml:732
 msgid ""
 "Mercurial began life in 2005.  While a few aspects of its design are "
 "influenced by Monotone, Mercurial focuses on ease of use, high performance, "
@@ -2516,12 +2541,13 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><title>
-#: ../en/ch00-preface.xml:739
+#: ../en/ch00-preface.xml:740
+#, fuzzy
 msgid "Colophon—this book is Free"
 msgstr "后记—本书是自由的!"
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:741
+#: ../en/ch00-preface.xml:742
 msgid ""
 "This book is licensed under the Open Publication License, and is produced "
 "entirely using Free Software tools.  It is typeset with DocBook XML.  "
@@ -2530,7 +2556,7 @@
 msgstr ""
 
 #. type: Content of: <book><preface><sect1><para>
-#: ../en/ch00-preface.xml:746
+#: ../en/ch00-preface.xml:747
 msgid ""
 "The complete source code for this book is published as a Mercurial "
 "repository, at <ulink url=\"http://hg.serpentine.com/mercurial/book\">http://"
@@ -2559,12 +2585,39 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch01-tour-basic.xml:15
-msgid "Linux"
-msgstr "Linux"
+msgid "Windows"
+msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-tour-basic.xml:17
 msgid ""
+"The best version of Mercurial for Windows is TortoiseHg, which can be found "
+"at <ulink url=\"http://bitbucket.org/tortoisehg/stable/wiki/Home\">http://"
+"bitbucket.org/tortoisehg/stable/wiki/Home</ulink>.  This package has no "
+"external dependencies; it <quote>just works</quote>.  It provides both "
+"command line and graphical user interfaces."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><title>
+#: ../en/ch01-tour-basic.xml:27
+msgid "Mac OS X"
+msgstr "Mac OS X"
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:29
+msgid ""
+"Lee Cantey publishes an installer of Mercurial for Mac OS X at <ulink url="
+"\"http://mercurial.berkwood.com\">http://mercurial.berkwood.com</ulink>."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><title>
+#: ../en/ch01-tour-basic.xml:35
+msgid "Linux"
+msgstr "Linux"
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:37
+msgid ""
 "Because each Linux distribution has its own packaging tools, policies, and "
 "rate of development, it's difficult to give a comprehensive set of "
 "instructions on how to install Mercurial binaries.  The version of Mercurial "
@@ -2576,7 +2629,7 @@
 "使用的发行版的 Mercurial 维护者的活跃程度。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:24
+#: ../en/ch01-tour-basic.xml:44
 msgid ""
 "To keep things simple, I will focus on installing Mercurial from the command "
 "line under the most popular Linux distributions.  Most of these distributions "
@@ -2588,102 +2641,44 @@
 "Mercurial;寻找的包名称是 <literal>mercurial</literal>。"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:32
-msgid "Debian:"
-msgstr "Debian:"
-
-#. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:34
-msgid "Fedora Core:"
-msgstr "Fedora Core:"
-
-#. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:36
+#: ../en/ch01-tour-basic.xml:52
+msgid "Ubuntu and Debian:"
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
+#: ../en/ch01-tour-basic.xml:54
+#, fuzzy
+msgid "Fedora and OpenSUSE:"
+msgstr "OpenSUSE:"
+
+#. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
+#: ../en/ch01-tour-basic.xml:56
 msgid "Gentoo:"
 msgstr "Gentoo:"
 
-#. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:38
-msgid "OpenSUSE:"
-msgstr "OpenSUSE:"
-
-#. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:40
-msgid ""
-"Ubuntu: Ubuntu's Mercurial package is based on Debian's.  To install it, run "
-"the following command."
-msgstr "Ubuntu: Ubuntu 的 Mercurial 包基于 Debian。安装时,使用如下命令:"
-
-#. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:48
+#. type: Content of: <book><chapter><sect1><sect2><title>
+#: ../en/ch01-tour-basic.xml:62
 msgid "Solaris"
 msgstr "Solaris"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:50
+#: ../en/ch01-tour-basic.xml:64
+#, fuzzy
 msgid ""
 "SunFreeWare, at <ulink url=\"http://www.sunfreeware.com\">http://www."
-"sunfreeware.com</ulink>, is a good source for a large number of pre-built "
-"Solaris packages for 32 and 64 bit Intel and Sparc architectures, including "
-"current versions of Mercurial."
+"sunfreeware.com</ulink>, provides prebuilt packages of Mercurial."
 msgstr ""
 "位于 <ulink url=\"http://www.sunfreeware.com\">http://www.sunfreeware.com</"
 "ulink> 的 SunFreeWare 是很好的二进制安装源,它包含 Intel 和 Sparc 架构的 32 位"
 "和 64 位包,包含 Mercurial 的当前版本。"
 
-#. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:58
-msgid "Mac OS X"
-msgstr "Mac OS X"
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:60
-msgid ""
-"Lee Cantey publishes an installer of Mercurial for Mac OS X at <ulink url="
-"\"http://mercurial.berkwood.com\">http://mercurial.berkwood.com</ulink>.  "
-"This package works on both Intel- and Power-based Macs. Before you can use "
-"it, you must install a compatible version of Universal MacPython "
-"<citation>web:macpython</citation>. This is easy to do; simply follow the "
-"instructions on Lee's site."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:69
-msgid ""
-"It's also possible to install Mercurial using Fink or MacPorts, two popular "
-"free package managers for Mac OS X.  If you have Fink, use <command>sudo apt-"
-"get install mercurial-py25</command>.  If MacPorts, <command>sudo port "
-"install mercurial</command>."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:77
-msgid "Windows"
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:79
-msgid ""
-"Lee Cantey publishes an installer of Mercurial for Windows at <ulink url="
-"\"http://mercurial.berkwood.com\">http://mercurial.berkwood.com</ulink>.  "
-"This package has no external dependencies; it <quote>just works</quote>."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><note><para>
-#: ../en/ch01-tour-basic.xml:86
-msgid ""
-"The Windows version of Mercurial does not automatically convert line endings "
-"between Windows and Unix styles.  If you want to share work with Unix users, "
-"you must do a little additional configuration work. XXX Flesh this out."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><title>
-#: ../en/ch01-tour-basic.xml:96
+#. type: Content of: <book><chapter><sect1><title>
+#: ../en/ch01-tour-basic.xml:73
 msgid "Getting started"
 msgstr "开始"
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:98
+#: ../en/ch01-tour-basic.xml:75
 msgid ""
 "To begin, we'll use the <command role=\"hg-cmd\">hg version</command> command "
 "to find out whether Mercurial is actually installed properly.  The actual "
@@ -2692,12 +2687,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:107
+#: ../en/ch01-tour-basic.xml:84
 msgid "Built-in help"
 msgstr "内置帮助"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:109
+#: ../en/ch01-tour-basic.xml:86
 msgid ""
 "Mercurial provides a built-in help system.  This is invaluable for those "
 "times when you find yourself stuck trying to remember how to run a command.  "
@@ -2708,7 +2703,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:120
+#: ../en/ch01-tour-basic.xml:97
 msgid ""
 "For a more impressive level of detail (which you won't usually need) run "
 "<command role=\"hg-cmd\">hg help <option role=\"hg-opt-global\">-v</option></"
@@ -2718,12 +2713,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><title>
-#: ../en/ch01-tour-basic.xml:131
+#: ../en/ch01-tour-basic.xml:108
 msgid "Working with a repository"
 msgstr "使用版本库"
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:133
+#: ../en/ch01-tour-basic.xml:110
 msgid ""
 "In Mercurial, everything happens inside a <emphasis>repository</emphasis>.  "
 "The repository for a project contains all of the files that <quote>belong to</"
@@ -2731,7 +2726,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:139
+#: ../en/ch01-tour-basic.xml:116
 msgid ""
 "There's nothing particularly magical about a repository; it is simply a "
 "directory tree in your filesystem that Mercurial treats as special. You can "
@@ -2740,46 +2735,55 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:146
+#: ../en/ch01-tour-basic.xml:123
 msgid "Making a local copy of a repository"
 msgstr "创建版本库的工作副本"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:148
+#: ../en/ch01-tour-basic.xml:125
 msgid ""
 "<emphasis>Copying</emphasis> a repository is just a little bit special.  "
 "While you could use a normal file copying command to make a copy of a "
 "repository, it's best to use a built-in command that Mercurial provides.  "
 "This command is called <command role=\"hg-cmd\">hg clone</command>, because "
-"it creates an identical copy of an existing repository."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:157
+"it makes an identical copy of an existing repository."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:134
+msgid ""
+"One advantage of using <command role=\"hg-cmd\">hg clone</command> is that, "
+"as we can see above, it lets us clone repositories over the network.  Another "
+"is that it remembers where we cloned from, which we'll find useful soon when "
+"we want to fetch new changes from another repository."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:140
 msgid ""
 "If our clone succeeded, we should now have a local directory called <filename "
 "class=\"directory\">hello</filename>.  This directory will contain some files."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:163
+#: ../en/ch01-tour-basic.xml:146
 msgid ""
 "These files have the same contents and history in our repository as they do "
 "in the repository we cloned."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:166
+#: ../en/ch01-tour-basic.xml:149
 msgid ""
 "Every Mercurial repository is complete, self-contained, and independent.  It "
-"contains its own private copy of a project's files and history.  A cloned "
-"repository remembers the location of the repository it was cloned from, but "
-"it does not communicate with that repository, or any other, unless you tell "
-"it to."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:173
+"contains its own private copy of a project's files and history.  As we just "
+"mentioned, a cloned repository remembers the location of the repository it "
+"was cloned from, but Mercurial will not communicate with that repository, or "
+"any other, unless you tell it to."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:156
 msgid ""
 "What this means for now is that we're free to experiment with our repository, "
 "safe in the knowledge that it's a private <quote>sandbox</quote> that won't "
@@ -2787,12 +2791,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:179
+#: ../en/ch01-tour-basic.xml:162
 msgid "What's in a repository?"
 msgstr "什么是版本库?"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:181
+#: ../en/ch01-tour-basic.xml:164
 msgid ""
 "When we take a more detailed look inside a repository, we can see that it "
 "contains a directory named <filename class=\"directory\">.hg</filename>.  "
@@ -2800,7 +2804,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:188
+#: ../en/ch01-tour-basic.xml:171
 msgid ""
 "The contents of the <filename class=\"directory\">.hg</filename> directory "
 "and its subdirectories are private to Mercurial.  Every other file and "
@@ -2808,7 +2812,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:194
+#: ../en/ch01-tour-basic.xml:177
 msgid ""
 "To introduce a little terminology, the <filename class=\"directory\">.hg</"
 "filename> directory is the <quote>real</quote> repository, and all of the "
@@ -2821,20 +2825,20 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><title>
-#: ../en/ch01-tour-basic.xml:209
+#: ../en/ch01-tour-basic.xml:192
 msgid "A tour through history"
 msgstr "回溯历史"
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:211
+#: ../en/ch01-tour-basic.xml:194
 msgid ""
 "One of the first things we might want to do with a new, unfamiliar repository "
 "is understand its history.  The <command role=\"hg-cmd\">hg log</command> "
-"command gives us a view of history."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:218
+"command gives us a view of the history of changes in the repository."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><para>
+#: ../en/ch01-tour-basic.xml:201
 msgid ""
 "By default, this command prints a brief paragraph of output for each change "
 "to the project that was recorded.  In Mercurial terminology, we call each of "
@@ -2843,33 +2847,36 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:224
+#: ../en/ch01-tour-basic.xml:207
 msgid ""
 "The fields in a record of output from <command role=\"hg-cmd\">hg log</"
 "command> are as follows."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
+#: ../en/ch01-tour-basic.xml:211
+msgid ""
+"<literal>changeset</literal>: This field has the format of a number, followed "
+"by a colon, followed by a hexadecimal (or <emphasis>hex</emphasis>)  string.  "
+"These are <emphasis>identifiers</emphasis> for the changeset.  The hex string "
+"is a unique identifier: the same hex string will always refer to the same "
+"changeset. The number is shorter and easier to type than the hex string, but "
+"it isn't unique: the same number in two different clones of a repository may "
+"identify different changesets.  Why provide the number at all, then? For "
+"local convenience."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
+#: ../en/ch01-tour-basic.xml:223
+msgid ""
+"<literal>user</literal>: The identity of the person who created the "
+"changeset.  This is a free-form field, but it most often contains a person's "
+"name and email address."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
 #: ../en/ch01-tour-basic.xml:227
 msgid ""
-"<literal>changeset</literal>: This field has the format of a number, followed "
-"by a colon, followed by a hexadecimal string.  These are "
-"<emphasis>identifiers</emphasis> for the changeset.  There are two "
-"identifiers because the number is shorter and easier to type than the hex "
-"string."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:233
-msgid ""
-"<literal>user</literal>: The identity of the person who created the "
-"changeset.  This is a free-form field, but it most often contains a person's "
-"name and email address."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:237
-msgid ""
 "<literal>date</literal>: The date and time on which the changeset was "
 "created, and the timezone in which it was created.  (The date and time are "
 "local to that timezone; they display what time and date it was for the person "
@@ -2877,21 +2884,30 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:242
+#: ../en/ch01-tour-basic.xml:232
 msgid ""
 "<literal>summary</literal>: The first line of the text message that the "
 "creator of the changeset entered to describe the changeset."
 msgstr ""
 
-#. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:245
+#. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
+#: ../en/ch01-tour-basic.xml:236
+msgid ""
+"Some changesets, such as the first in the list above, have a <literal>tag</"
+"literal> field.  A tag is another way to identify a changeset, by giving it "
+"an easy-to-remember name. (The tag named <literal>tip</literal> is special: "
+"it always refers to the newest change in a repository.)"
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><para>
+#: ../en/ch01-tour-basic.xml:244
 msgid ""
 "The default output printed by <command role=\"hg-cmd\">hg log</command> is "
 "purely a summary; it is missing a lot of detail."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:249
+#: ../en/ch01-tour-basic.xml:248
 msgid ""
 "<xref linkend=\"fig:tour-basic:history\"/> provides a graphical "
 "representation of the history of the <filename class=\"directory\">hello</"
@@ -2901,26 +2917,26 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><figure><title>
-#: ../en/ch01-tour-basic.xml:258
+#: ../en/ch01-tour-basic.xml:257
 msgid ""
 "Graphical history of the <filename class=\"directory\">hello</filename> "
 "repository"
 msgstr "版本库 <filename class=\"directory\">hello</filename> 的历史图"
 
 #. type: Content of: <book><chapter><sect1><figure>
-#: ../en/ch01-tour-basic.xml:260 ../en/ch02-tour-merge.xml:50
+#: ../en/ch01-tour-basic.xml:259 ../en/ch02-tour-merge.xml:50
 #: ../en/ch02-tour-merge.xml:181 ../en/ch03-concepts.xml:293
 msgid "<placeholder type=\"mediaobject\" id=\"0\"/>"
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><figure><mediaobject>
-#: ../en/ch01-tour-basic.xml:261
+#: ../en/ch01-tour-basic.xml:260
 msgid ""
 "<imageobject><imagedata fileref=\"figs/tour-history.png\"/></imageobject>"
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><figure><mediaobject><textobject><phrase>
-#: ../en/ch01-tour-basic.xml:262 ../en/ch02-tour-merge.xml:52
+#: ../en/ch01-tour-basic.xml:261 ../en/ch02-tour-merge.xml:52
 #: ../en/ch02-tour-merge.xml:82 ../en/ch02-tour-merge.xml:129
 #: ../en/ch02-tour-merge.xml:183 ../en/ch02-tour-merge.xml:254
 #: ../en/ch03-concepts.xml:57 ../en/ch03-concepts.xml:106
@@ -2934,12 +2950,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:267
+#: ../en/ch01-tour-basic.xml:266
 msgid "Changesets, revisions, and talking to other people"
 msgstr "修改集,版本,与其它用户交互"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:270
+#: ../en/ch01-tour-basic.xml:269
 msgid ""
 "As English is a notoriously sloppy language, and computer science has a "
 "hallowed history of terminological confusion (why use one term when four will "
@@ -2951,7 +2967,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:280
+#: ../en/ch01-tour-basic.xml:279
 msgid ""
 "While it doesn't matter what <emphasis>word</emphasis> you use to refer to "
 "the concept of <quote>a changeset</quote>, the <emphasis>identifier</"
@@ -2962,33 +2978,35 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:289
-msgid ""
-"The revision number is <emphasis>only valid in that repository</emphasis>,"
+#: ../en/ch01-tour-basic.xml:288
+msgid ""
+"The revision number is a handy notation that is <emphasis>only valid in that "
+"repository</emphasis>."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-tour-basic.xml:291
 msgid ""
-"while the hex string is the <emphasis>permanent, unchanging identifier</"
+"The hexadecimal string is the <emphasis>permanent, unchanging identifier</"
 "emphasis> that will always identify that exact changeset in <emphasis>every</"
 "emphasis> copy of the repository."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:296
+#: ../en/ch01-tour-basic.xml:297
 msgid ""
 "This distinction is important.  If you send someone an email talking about "
 "<quote>revision 33</quote>, there's a high likelihood that their revision 33 "
 "will <emphasis>not be the same</emphasis> as yours.  The reason for this is "
 "that a revision number depends on the order in which changes arrived in a "
 "repository, and there is no guarantee that the same changes will happen in "
-"the same order in different repositories. Three changes $a,b,c$ can easily "
-"appear in one repository as $0,1,2$, while in another as $1,0,2$."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:306
+"the same order in different repositories. Three changes <literal>a,b,c</"
+"literal> can easily appear in one repository as <literal>0,1,2</literal>, "
+"while in another as <literal>0,2,1</literal>."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:309
 msgid ""
 "Mercurial uses revision numbers purely as a convenient shorthand.  If you "
 "need to discuss a changeset with someone, or make a record of a changeset for "
@@ -2997,22 +3015,22 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:314
+#: ../en/ch01-tour-basic.xml:317
 msgid "Viewing specific revisions"
 msgstr "察看指定版本"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:316
+#: ../en/ch01-tour-basic.xml:319
 msgid ""
 "To narrow the output of <command role=\"hg-cmd\">hg log</command> down to a "
 "single revision, use the <option role=\"hg-opt-log\">-r</option> (or <option "
 "role=\"hg-opt-log\">--rev</option>) option.  You can use either a revision "
-"number or a long-form changeset identifier, and you can provide as many "
-"revisions as you want."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:325
+"number or a hexadecimal identifier, and you can provide as many revisions as "
+"you want."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:328
 msgid ""
 "If you want to see the history of several revisions without having to list "
 "each one, you can use <emphasis>range notation</emphasis>; this lets you "
@@ -3021,7 +3039,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:333
+#: ../en/ch01-tour-basic.xml:336
 msgid ""
 "Mercurial also honours the order in which you specify revisions, so <command "
 "role=\"hg-cmd\">hg log -r 2:4</command> prints 2, 3, and 4. while <command "
@@ -3029,12 +3047,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:340
+#: ../en/ch01-tour-basic.xml:343
 msgid "More detailed information"
 msgstr "更详细的信息"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:342
+#: ../en/ch01-tour-basic.xml:345
 msgid ""
 "While the summary information printed by <command role=\"hg-cmd\">hg log</"
 "command> is useful if you already know what you're looking for, you may need "
@@ -3046,7 +3064,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:354
+#: ../en/ch01-tour-basic.xml:357
 msgid ""
 "If you want to see both the description and content of a change, add the "
 "<option role=\"hg-opt-log\">-p</option> (or <option role=\"hg-opt-log\">--"
@@ -3055,13 +3073,20 @@
 "before, see <xref linkend=\"sec:mq:patch\"/> for an overview)."
 msgstr ""
 
-#. type: Content of: <book><chapter><sect1><title>
+#. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-tour-basic.xml:367
+msgid ""
+"The <option role=\"hg-opt-log\">-p</option> option is tremendously useful, so "
+"it's well worth remembering."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><title>
+#: ../en/ch01-tour-basic.xml:374
 msgid "All about command options"
 msgstr "命令选项"
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:369
+#: ../en/ch01-tour-basic.xml:376
 msgid ""
 "Let's take a brief break from exploring Mercurial commands to discuss a "
 "pattern in the way that they work; you may find this useful to keep in mind "
@@ -3069,7 +3094,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:373
+#: ../en/ch01-tour-basic.xml:380
 msgid ""
 "Mercurial has a consistent and straightforward approach to dealing with the "
 "options that you can pass to commands.  It follows the conventions for "
@@ -3077,7 +3102,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:378
+#: ../en/ch01-tour-basic.xml:387
 msgid ""
 "Every option has a long name.  For example, as we've already seen, the "
 "<command role=\"hg-cmd\">hg log</command> command accepts a <option role=\"hg-"
@@ -3085,7 +3110,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:382
+#: ../en/ch01-tour-basic.xml:393
 msgid ""
 "Most options have short names, too.  Instead of <option role=\"hg-opt-log\">--"
 "rev</option>, we can use <option role=\"hg-opt-log\">-r</option>.  (The "
@@ -3094,15 +3119,15 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:387
-msgid ""
-"Long options start with two dashes (e.g. <option role=\"hg-opt-log\">--rev</"
+#: ../en/ch01-tour-basic.xml:400
+msgid ""
+"Long options start with two dashes (e.g.  <option role=\"hg-opt-log\">--rev</"
 "option>), while short options start with one (e.g. <option role=\"hg-opt-log"
 "\">-r</option>)."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:391
+#: ../en/ch01-tour-basic.xml:406
 msgid ""
 "Option naming and usage is consistent across commands.  For example, every "
 "command that lets you specify a changeset ID or revision number accepts both "
@@ -3110,8 +3135,16 @@
 "rev</option> arguments."
 msgstr ""
 
-#. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:397
+#. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
+#: ../en/ch01-tour-basic.xml:413
+msgid ""
+"If you are using short options, you can save typing by running them together. "
+"For example, the command <command role=\"hg-cmd\">hg log -v -p -r 2</command> "
+"can be written as <command role=\"hg-cmd\">hg log -vpr2</command>."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><para>
+#: ../en/ch01-tour-basic.xml:420
 msgid ""
 "In the examples throughout this book, I use short options instead of long.  "
 "This just reflects my own preference, so don't read anything significant into "
@@ -3119,7 +3152,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:401
+#: ../en/ch01-tour-basic.xml:424
 msgid ""
 "Most commands that print output of some kind will print more output when "
 "passed a <option role=\"hg-opt-global\">-v</option> (or <option role=\"hg-opt-"
@@ -3127,31 +3160,56 @@
 "opt-global\">-q</option> (or <option role=\"hg-opt-global\">--quiet</option>)."
 msgstr ""
 
-#. type: Content of: <book><chapter><sect1><title>
-#: ../en/ch01-tour-basic.xml:409
+#. type: Content of: <book><chapter><sect1><note><title>
+#: ../en/ch01-tour-basic.xml:431
+msgid "Option naming consistency"
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><note><para>
+#: ../en/ch01-tour-basic.xml:433
+msgid ""
+"Almost always, Mercurial commands use consistent option names to refer to the "
+"same concepts.  For instance, if a command deals with changesets, you'll "
+"always identify them with <option role=\"hg-opt-log\">--rev</option> or "
+"<option role=\"hg-opt-log\">-r</option>.  This consistent use of option names "
+"makes it easier to remember what options a particular command takes."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><title>
+#: ../en/ch01-tour-basic.xml:444
 msgid "Making and reviewing changes"
 msgstr "创建和复审修改"
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:411
+#: ../en/ch01-tour-basic.xml:446
 msgid ""
 "Now that we have a grasp of viewing history in Mercurial, let's take a look "
 "at making some changes and examining them."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:415
+#: ../en/ch01-tour-basic.xml:450
 msgid ""
 "The first thing we'll do is isolate our experiment in a repository of its "
 "own.  We use the <command role=\"hg-cmd\">hg clone</command> command, but we "
 "don't need to clone a copy of the remote repository.  Since we already have a "
 "copy of it locally, we can just clone that instead.  This is much faster than "
 "cloning over the network, and cloning a local repository uses less disk space "
-"in most cases, too."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:425
+"in most cases, too<placeholder type=\"footnote\" id=\"0\"/>."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><para><footnote><para>
+#: ../en/ch01-tour-basic.xml:457
+msgid ""
+"The saving of space arises when source and destination repositories are on "
+"the same filesystem, in which case Mercurial will use hardlinks to do copy-on-"
+"write sharing of its internal metadata.  If that explanation meant nothing to "
+"you, don't worry: everything happens transparently and automatically, and you "
+"don't need to understand it."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><para>
+#: ../en/ch01-tour-basic.xml:467
 msgid ""
 "As an aside, it's often good practice to keep a <quote>pristine</quote> copy "
 "of a remote repository around, which you can then make temporary clones of to "
@@ -3163,27 +3221,27 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:434
+#: ../en/ch01-tour-basic.xml:476
 msgid ""
 "In our <filename class=\"directory\">my-hello</filename> repository, we have "
 "a file <filename>hello.c</filename> that contains the classic <quote>hello, "
-"world</quote> program. Let's use the ancient and venerable <command>sed</"
-"command> command to edit this file so that it prints a second line of "
-"output.  (I'm only using <command>sed</command> to do this because it's easy "
-"to write a scripted example this way.  Since you're not under the same "
-"constraint, you probably won't want to use <command>sed</command>; simply use "
-"your preferred text editor to do the same thing.)"
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:447
+"world</quote> program."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><para>
+#: ../en/ch01-tour-basic.xml:482
+msgid "Let's edit this file so that it prints a second line of output."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><para>
+#: ../en/ch01-tour-basic.xml:487
 msgid ""
 "Mercurial's <command role=\"hg-cmd\">hg status</command> command will tell us "
 "what Mercurial knows about the files in the repository."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:453
+#: ../en/ch01-tour-basic.xml:493
 msgid ""
 "The <command role=\"hg-cmd\">hg status</command> command prints no output for "
 "some files, but a line starting with <quote><literal>M</literal></quote> for "
@@ -3193,7 +3251,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:460
+#: ../en/ch01-tour-basic.xml:500
 msgid ""
 "The <quote><literal>M</literal></quote> indicates that Mercurial has noticed "
 "that we modified <filename>hello.c</filename>.  We didn't need to "
@@ -3203,21 +3261,33 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:468
-msgid ""
-"It's a little bit helpful to know that we've modified <filename>hello.c</"
+#: ../en/ch01-tour-basic.xml:508
+msgid ""
+"It's somewhat helpful to know that we've modified <filename>hello.c</"
 "filename>, but we might prefer to know exactly <emphasis>what</emphasis> "
 "changes we've made to it.  To do this, we use the <command role=\"hg-cmd\">hg "
 "diff</command> command."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><title>
-#: ../en/ch01-tour-basic.xml:478
+#: ../en/ch01-tour-basic.xml:517 ../en/ch11-mq.xml:187
+msgid "Understanding patches"
+msgstr "理解补丁"
+
+#. type: Content of: <book><chapter><sect1><tip><para>
+#: ../en/ch01-tour-basic.xml:519
+msgid ""
+"Remember to take a look at <xref linkend=\"sec:mq:patch\"/> if you don't know "
+"how to read output above."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><title>
+#: ../en/ch01-tour-basic.xml:525
 msgid "Recording changes in a new changeset"
 msgstr "在新修改集中记录修改"
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:480
+#: ../en/ch01-tour-basic.xml:527
 msgid ""
 "We can modify files, build and test our changes, and use <command role=\"hg-"
 "cmd\">hg status</command> and <command role=\"hg-cmd\">hg diff</command> to "
@@ -3226,7 +3296,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:487
+#: ../en/ch01-tour-basic.xml:534
 msgid ""
 "The <command role=\"hg-cmd\">hg commit</command> command lets us create a new "
 "changeset; we'll usually refer to this as <quote>making a commit</quote> or "
@@ -3234,12 +3304,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:493
+#: ../en/ch01-tour-basic.xml:540
 msgid "Setting up a username"
 msgstr "配置用户名称"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:495
+#: ../en/ch01-tour-basic.xml:542
 msgid ""
 "When you try to run <command role=\"hg-cmd\">hg commit</command> for the "
 "first time, it is not guaranteed to succeed.  Mercurial records your name and "
@@ -3250,7 +3320,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><orderedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:504
+#: ../en/ch01-tour-basic.xml:551
 msgid ""
 "If you specify a <option role=\"hg-opt-commit\">-u</option> option to the "
 "<command role=\"hg-cmd\">hg commit</command> command on the command line, "
@@ -3258,14 +3328,14 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><orderedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:509
+#: ../en/ch01-tour-basic.xml:556
 msgid ""
 "If you have set the <envar>HGUSER</envar> environment variable, this is "
 "checked next."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><orderedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:512
+#: ../en/ch01-tour-basic.xml:559
 msgid ""
 "If you create a file in your home directory called <filename role=\"special"
 "\">.hgrc</filename>, with a <envar role=\"rc-item-ui\">username</envar> "
@@ -3274,14 +3344,14 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><orderedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:520
+#: ../en/ch01-tour-basic.xml:567
 msgid ""
 "If you have set the <envar>EMAIL</envar> environment variable, this will be "
 "used next."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><orderedlist><listitem><para>
-#: ../en/ch01-tour-basic.xml:523
+#: ../en/ch01-tour-basic.xml:570
 msgid ""
 "Mercurial will query your system to find out your local user name and host "
 "name, and construct a username from these components. Since this often "
@@ -3290,7 +3360,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:530
+#: ../en/ch01-tour-basic.xml:577
 msgid ""
 "If all of these mechanisms fail, Mercurial will fail, printing an error "
 "message.  In this case, it will not let you commit until you set up a "
@@ -3298,7 +3368,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:534
+#: ../en/ch01-tour-basic.xml:581
 msgid ""
 "You should think of the <envar>HGUSER</envar> environment variable and the "
 "<option role=\"hg-opt-commit\">-u</option> option to the <command role=\"hg-"
@@ -3309,12 +3379,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><title>
-#: ../en/ch01-tour-basic.xml:543
+#: ../en/ch01-tour-basic.xml:590
 msgid "Creating a Mercurial configuration file"
 msgstr "创建 Mercurial 的配置文件"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><para>
-#: ../en/ch01-tour-basic.xml:545
+#: ../en/ch01-tour-basic.xml:592
 msgid ""
 "To set a user name, use your favourite editor to create a file called "
 "<filename role=\"special\">.hgrc</filename> in your home directory.  "
@@ -3323,8 +3393,13 @@
 "filename> should look like this."
 msgstr ""
 
-#. type: Content of: <book><chapter><sect1><sect2><sect3><para>
-#: ../en/ch01-tour-basic.xml:557
+#. type: Content of: <book><chapter><sect1><sect2><sect3><remark>
+#: ../en/ch01-tour-basic.xml:600
+msgid "Figure out what the appropriate directory is on Windows."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><sect3><para>
+#: ../en/ch01-tour-basic.xml:607
 msgid ""
 "The <quote><literal>[ui]</literal></quote> line begins a <emphasis>section</"
 "emphasis> of the config file, so you can read the <quote><literal>username "
@@ -3336,21 +3411,21 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><title>
-#: ../en/ch01-tour-basic.xml:570
+#: ../en/ch01-tour-basic.xml:620
 msgid "Choosing a user name"
 msgstr "选择用户名称"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><para>
-#: ../en/ch01-tour-basic.xml:572
+#: ../en/ch01-tour-basic.xml:622
 msgid ""
 "You can use any text you like as the value of the <literal>username</literal> "
-"config item, since this information is for reading by other people, but for "
-"interpreting by Mercurial.  The convention that most people follow is to use "
-"their name and email address, as in the example above."
+"config item, since this information is for reading by other people, but will "
+"not be interpreted by Mercurial.  The convention that most people follow is "
+"to use their name and email address, as in the example above."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><note><para>
-#: ../en/ch01-tour-basic.xml:579
+#: ../en/ch01-tour-basic.xml:629
 msgid ""
 "Mercurial's built-in web server obfuscates email addresses, to make it more "
 "difficult for the email harvesting tools that spammers use. This reduces the "
@@ -3359,12 +3434,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:589
+#: ../en/ch01-tour-basic.xml:639
 msgid "Writing a commit message"
 msgstr "写提交日志"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:591
+#: ../en/ch01-tour-basic.xml:641
 msgid ""
 "When we commit a change, Mercurial drops us into a text editor, to enter a "
 "message that will describe the modifications we've made in this changeset.  "
@@ -3374,15 +3449,15 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:601
+#: ../en/ch01-tour-basic.xml:651
 msgid ""
 "The editor that the <command role=\"hg-cmd\">hg commit</command> command "
-"drops us into will contain an empty line, followed by a number of lines "
-"starting with <quote><literal>HG:</literal></quote>."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:608
+"drops us into will contain an empty line or two, followed by a number of "
+"lines starting with <quote><literal>HG:</literal></quote>."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:665
 msgid ""
 "Mercurial ignores the lines that start with <quote><literal>HG:</literal></"
 "quote>; it uses them only to tell us which files it's recording changes to.  "
@@ -3390,12 +3465,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:614
+#: ../en/ch01-tour-basic.xml:671
 msgid "Writing a good commit message"
 msgstr "写好提交日志"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:616
+#: ../en/ch01-tour-basic.xml:673
 msgid ""
 "Since <command role=\"hg-cmd\">hg log</command> only prints the first line of "
 "a commit message by default, it's best to write a commit message whose first "
@@ -3405,7 +3480,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:630
+#: ../en/ch01-tour-basic.xml:687
 msgid ""
 "As far as the remainder of the contents of the commit message are concerned, "
 "there are no hard-and-fast rules.  Mercurial itself doesn't interpret or care "
@@ -3414,7 +3489,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:636
+#: ../en/ch01-tour-basic.xml:693
 msgid ""
 "My personal preference is for short, but informative, commit messages that "
 "tell me something that I can't figure out with a quick glance at the output "
@@ -3422,12 +3497,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:643
+#: ../en/ch01-tour-basic.xml:700
 msgid "Aborting a commit"
 msgstr "终止提交"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:645
+#: ../en/ch01-tour-basic.xml:702
 msgid ""
 "If you decide that you don't want to commit while in the middle of editing a "
 "commit message, simply exit from your editor without saving the file that "
@@ -3436,7 +3511,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:650
+#: ../en/ch01-tour-basic.xml:707
 msgid ""
 "If we run the <command role=\"hg-cmd\">hg commit</command> command without "
 "any arguments, it records all of the changes we've made, as reported by "
@@ -3445,12 +3520,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:657
+#: ../en/ch01-tour-basic.xml:714
 msgid "Admiring our new handiwork"
 msgstr "欣赏我们的成果"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:659
+#: ../en/ch01-tour-basic.xml:716
 msgid ""
 "Once we've finished the commit, we can use the <command role=\"hg-cmd\">hg "
 "tip</command> command to display the changeset we just created.  This command "
@@ -3459,19 +3534,30 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:668
-msgid ""
-"We refer to the newest revision in the repository as the tip revision, or "
-"simply the tip."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><title>
-#: ../en/ch01-tour-basic.xml:675
+#: ../en/ch01-tour-basic.xml:725
+msgid ""
+"We refer to the newest revision in the repository as the <emphasis>tip "
+"revision</emphasis>, or simply the <emphasis>tip</emphasis>."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:729
+msgid ""
+"By the way, the <command role=\"hg-cmd\">hg tip</command> command accepts "
+"many of the same options as <command role=\"hg-cmd\">hg log</command>, so "
+"<option role=\"hg-opt-global\">-v</option> above indicates <quote>be verbose</"
+"quote>, <option role=\"hg-opt-tip\">-p</option> specifies <quote>print a "
+"patch</quote>.  The use of <option role=\"hg-opt-tip\">-p</option> to print "
+"patches is another example of the consistent naming we mentioned earlier."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><title>
+#: ../en/ch01-tour-basic.xml:741
 msgid "Sharing changes"
 msgstr "共享修改"
 
 #. type: Content of: <book><chapter><sect1><para>
-#: ../en/ch01-tour-basic.xml:677
+#: ../en/ch01-tour-basic.xml:743
 msgid ""
 "We mentioned earlier that repositories in Mercurial are self-contained.  This "
 "means that the changeset we just created exists only in our <filename class="
@@ -3480,12 +3566,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:685
+#: ../en/ch01-tour-basic.xml:751
 msgid "Pulling changes from another repository"
 msgstr "从其它版本库取得修改"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:686
+#: ../en/ch01-tour-basic.xml:752
 msgid ""
 "To get started, let's clone our original <filename class=\"directory\">hello</"
 "filename> repository, which does not contain the change we just committed.  "
@@ -3494,7 +3580,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:694
+#: ../en/ch01-tour-basic.xml:760
 msgid ""
 "We'll use the <command role=\"hg-cmd\">hg pull</command> command to bring "
 "changes from <filename class=\"directory\">my-hello</filename> into <filename "
@@ -3507,16 +3593,18 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:707
-msgid ""
-"(Of course, someone could cause more changesets to appear in the repository "
-"that we ran <command role=\"hg-cmd\">hg incoming</command> in, before we get "
-"a chance to <command role=\"hg-cmd\">hg pull</command> the changes, so that "
-"we could end up pulling changes that we didn't expect.)"
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:714
+#: ../en/ch01-tour-basic.xml:773
+msgid ""
+"Suppose you're pulling changes from a repository on the network somewhere. "
+"While you are looking at the <command role=\"hg-cmd\">hg incoming</command> "
+"output, and before you pull those changes, someone might have committed "
+"something in the remote repository. This means that it's possible to pull "
+"more changes than you saw when using <command role=\"hg-cmd\">hg incoming</"
+"command>."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:781
 msgid ""
 "Bringing changes into a repository is a simple matter of running the <command "
 "role=\"hg-cmd\">hg pull</command> command, and telling it which repository to "
@@ -3524,7 +3612,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:721
+#: ../en/ch01-tour-basic.xml:788
 msgid ""
 "As you can see from the before-and-after output of <command role=\"hg-cmd"
 "\">hg tip</command>, we have successfully pulled changes into our "
@@ -3533,12 +3621,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:729
+#: ../en/ch01-tour-basic.xml:796
 msgid "Updating the working directory"
 msgstr "更新工作目录"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:731
+#: ../en/ch01-tour-basic.xml:798
 msgid ""
 "We have so far glossed over the relationship between a repository and its "
 "working directory.  The <command role=\"hg-cmd\">hg pull</command> command "
@@ -3550,21 +3638,21 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:743
+#: ../en/ch01-tour-basic.xml:810
 msgid ""
 "It might seem a bit strange that <command role=\"hg-cmd\">hg pull</command> "
 "doesn't update the working directory automatically.  There's actually a good "
 "reason for this: you can use <command role=\"hg-cmd\">hg update</command> to "
 "update the working directory to the state it was in at <emphasis>any "
 "revision</emphasis> in the history of the repository.  If you had the working "
-"directory updated to an old revision---to hunt down the origin of a bug, "
-"say---and ran a <command role=\"hg-cmd\">hg pull</command> which "
-"automatically updated the working directory to a new revision, you might not "
-"be terribly happy."
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:754
+"directory updated to an old revision—to hunt down the origin of a bug, say—"
+"and ran a <command role=\"hg-cmd\">hg pull</command> which automatically "
+"updated the working directory to a new revision, you might not be terribly "
+"happy."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:821
 msgid ""
 "However, since pull-then-update is such a common thing to do, Mercurial lets "
 "you combine the two by passing the <option role=\"hg-opt-pull\">-u</option> "
@@ -3572,7 +3660,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:759
+#: ../en/ch01-tour-basic.xml:826
 msgid ""
 "If you look back at the output of <command role=\"hg-cmd\">hg pull</command> "
 "in <xref linkend=\"sec:tour:pull\"/> when we ran it without <option role=\"hg-"
@@ -3581,14 +3669,14 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:768
+#: ../en/ch01-tour-basic.xml:835
 msgid ""
 "To find out what revision the working directory is at, use the <command role="
 "\"hg-cmd\">hg parents</command> command."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:774
+#: ../en/ch01-tour-basic.xml:841
 msgid ""
 "If you look back at <xref linkend=\"fig:tour-basic:history\"/>, you'll see "
 "arrows connecting each changeset.  The node that the arrow leads "
@@ -3599,7 +3687,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:783
+#: ../en/ch01-tour-basic.xml:850
 msgid ""
 "To update the working directory to a particular revision, give a revision "
 "number or changeset ID to the <command role=\"hg-cmd\">hg update</command> "
@@ -3607,7 +3695,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:790
+#: ../en/ch01-tour-basic.xml:857
 msgid ""
 "If you omit an explicit revision, <command role=\"hg-cmd\">hg update</"
 "command> will update to the tip revision, as shown by the second call to "
@@ -3615,12 +3703,12 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:798
+#: ../en/ch01-tour-basic.xml:865
 msgid "Pushing changes to another repository"
 msgstr "发布修改到其它版本库"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:800
+#: ../en/ch01-tour-basic.xml:867
 msgid ""
 "Mercurial lets us push changes to another repository, from the repository "
 "we're currently visiting.  As with the example of <command role=\"hg-cmd\">hg "
@@ -3629,44 +3717,47 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:808
+#: ../en/ch01-tour-basic.xml:875
 msgid ""
 "The <command role=\"hg-cmd\">hg outgoing</command> command tells us what "
 "changes would be pushed into another repository."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:814
+#: ../en/ch01-tour-basic.xml:881
 msgid ""
 "And the <command role=\"hg-cmd\">hg push</command> command does the actual "
 "push."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:820
+#: ../en/ch01-tour-basic.xml:887
 msgid ""
 "As with <command role=\"hg-cmd\">hg pull</command>, the <command role=\"hg-cmd"
 "\">hg push</command> command does not update the working directory in the "
-"repository that it's pushing changes into. (Unlike <command role=\"hg-cmd"
-"\">hg pull</command>, <command role=\"hg-cmd\">hg push</command> does not "
-"provide a <literal>-u</literal> option that updates the other repository's "
-"working directory.)"
-msgstr ""
-
-#. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:829
+"repository that it's pushing changes into. Unlike <command role=\"hg-cmd\">hg "
+"pull</command>, <command role=\"hg-cmd\">hg push</command> does not provide a "
+"<literal>-u</literal> option that updates the other repository's working "
+"directory.  This asymmetry is deliberate: the repository we're pushing to "
+"might be on a remote server and shared between several people.  If we were to "
+"update its working directory while someone was working in it, their work "
+"would be disrupted."
+msgstr ""
+
+#. type: Content of: <book><chapter><sect1><sect2><para>
+#: ../en/ch01-tour-basic.xml:899
 msgid ""
 "What happens if we try to pull or push changes and the receiving repository "
 "already has those changes? Nothing too exciting."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
-#: ../en/ch01-tour-basic.xml:836
+#: ../en/ch01-tour-basic.xml:906
 msgid "Sharing changes over a network"
 msgstr "通过网络共享修改"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:838
+#: ../en/ch01-tour-basic.xml:908
 msgid ""
 "The commands we have covered in the previous few sections are not limited to "
 "working with local repositories.  Each works in exactly the same fashion over "
@@ -3674,7 +3765,7 @@
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
-#: ../en/ch01-tour-basic.xml:846
+#: ../en/ch01-tour-basic.xml:916
 msgid ""
 "In this example, we can see what changes we could push to the remote "
 "repository, but the repository is understandably not set up to let anonymous "
@@ -5393,6 +5484,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch04-daily.xml:198
+#, fuzzy
 msgid "Useful shorthand—adding and removing files in one step"
 msgstr "有用的速记—一个步骤添加和删除文件"
 
@@ -8521,6 +8613,7 @@
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch07-branch.xml:228
+#, fuzzy
 msgid "The flow of changes—big picture vs. little"
 msgstr "修改流程—宏观与微观"
 
@@ -11185,6 +11278,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:716
+#, fuzzy
 msgid ""
 "<literal role=\"hg-ext\">acl</literal>—access control for parts of a "
 "repository"
@@ -11333,6 +11427,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:844
+#, fuzzy
 msgid "<literal role=\"hg-ext\">bugzilla</literal>—integration with Bugzilla"
 msgstr "<literal role=\"hg-ext\">bugzilla</literal>—与 Bugzilla 的集成"
 
@@ -11665,6 +11760,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1150
+#, fuzzy
 msgid "<literal role=\"hg-ext\">notify</literal>—send email notifications"
 msgstr "<literal role=\"hg-ext\">notify</literal>—邮件通知"
 
@@ -11989,6 +12085,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><title>
 #: ../en/ch09-hook.xml:1431
+#, fuzzy
 msgid "Where changes are going—remote repository URLs"
 msgstr "修改集要到哪里—远程版本库的地址"
 
@@ -12038,6 +12135,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1473
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">changegroup</literal>—after remote changesets added"
 msgstr "<literal role=\"hook\">changegroup</literal>—增加远程修改集之后"
@@ -12106,6 +12204,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1526
+#, fuzzy
 msgid "<literal role=\"hook\">commit</literal>—after a new changeset is created"
 msgstr "<literal role=\"hook\">commit</literal>—创建新修改集之后"
 
@@ -12145,6 +12244,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1559
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">incoming</literal>—after one remote changeset is added"
 msgstr "<literal role=\"hook\">incoming</literal>—增加远程修改集之后"
@@ -12185,6 +12285,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1605
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">outgoing</literal>—after changesets are propagated"
 msgstr "<literal role=\"hook\">outgoing</literal>—传播修改集之后"
@@ -12232,6 +12333,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1652
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">prechangegroup</literal>—before starting to add remote "
 "changesets"
@@ -12272,6 +12374,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1698
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">precommit</literal>—before starting to commit a "
 "changeset"
@@ -12324,6 +12427,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1738
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">preoutgoing</literal>—before starting to propagate "
 "changesets"
@@ -12362,6 +12466,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1775
+#, fuzzy
 msgid "<literal role=\"hook\">pretag</literal>—before tagging a changeset"
 msgstr "<literal role=\"hook\">pretag</literal>—创建标签之前"
 
@@ -12411,6 +12516,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1815
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">pretxnchangegroup</literal>—before completing addition "
 "of remote changesets"
@@ -12463,6 +12569,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1881
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">pretxncommit</literal>—before completing commit of new "
 "changeset"
@@ -12505,6 +12612,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1929
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">preupdate</literal>—before updating or merging working "
 "directory"
@@ -12544,6 +12652,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1961
+#, fuzzy
 msgid "<literal role=\"hook\">tag</literal>—after tagging a changeset"
 msgstr "<literal role=\"hook\">tag</literal>—创建标签之后"
 
@@ -12592,6 +12701,7 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1998
+#, fuzzy
 msgid ""
 "<literal role=\"hook\">update</literal>—after updating or merging working "
 "directory"
@@ -13787,11 +13897,6 @@
 "particular line of a source file.  And so on."
 msgstr ""
 
-#. type: Content of: <book><chapter><sect1><title>
-#: ../en/ch11-mq.xml:187
-msgid "Understanding patches"
-msgstr "理解补丁"
-
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch11-mq.xml:189
 msgid ""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/hgbook/admin.py	Thu Apr 02 09:24:36 2009 +0800
@@ -0,0 +1,23 @@
+from django.contrib import admin
+from hgbook.comments.models import Comment, Element
+
+class CommentAdmin(admin.ModelAdmin):
+    list_display = ['element', 'submitter_name', 'comment', 'reviewed',
+                    'hidden', 'date']
+    search_fields = ['comment']
+    date_hierarchy = 'date'
+    list_filter = ['date', 'submitter_name']
+    search_fields = ['title', 'submitter_name', 'submitter_url']
+    fields = (
+        (None, {'fields': ('submitter_name', 'element', 'comment')}),
+        ('Review and presentation state',
+         {'fields': ('reviewed', 'hidden')}),
+        ('Other info', {'fields': ('date', 'submitter_url', 'ip')}),
+        )
+
+class ElementAdmin(admin.ModelAdmin):
+    search_fields = ['id', 'chapter']
+    list_filter = ['chapter', 'title']
+
+admin.site.register(Comment, CommentAdmin)
+admin.site.register(Element, ElementAdmin)
--- a/web/hgbook/comments/models.py	Tue Mar 31 21:17:59 2009 +0800
+++ b/web/hgbook/comments/models.py	Thu Apr 02 09:24:36 2009 +0800
@@ -4,10 +4,6 @@
 mutable = True
 
 class Element(models.Model):
-    class Admin:
-        search_fields = ['id', 'chapter']
-        list_filter = ['chapter', 'title']
-
     id = models.CharField('ID attribute', max_length=64, editable=False,
                           primary_key=True)
     chapter = models.CharField('Chapter ID', max_length=64, editable=False,
@@ -18,20 +14,6 @@
         return self.id
     
 class Comment(models.Model):
-    class Admin:
-        list_display = ['element', 'submitter_name', 'comment', 'reviewed',
-                        'hidden', 'date']
-        search_fields = ['comment']
-        date_hierarchy = 'date'
-        list_filter = ['date', 'submitter_name']
-        search_fields = ['title', 'submitter_name', 'submitter_url']
-        fields = (
-            (None, {'fields': ('submitter_name', 'element', 'comment')}),
-            ('Review and presentation state',
-             {'fields': ('reviewed', 'hidden')}),
-            ('Other info', {'fields': ('date', 'submitter_url', 'ip')}),
-            )
-            
     element = models.ForeignKey(Element,
         help_text='ID of paragraph that was commented on')
     comment = models.TextField(editable=mutable,
--- a/web/hgbook/urls.py	Tue Mar 31 21:17:59 2009 +0800
+++ b/web/hgbook/urls.py	Thu Apr 02 09:24:36 2009 +0800
@@ -1,6 +1,9 @@
 import os
 from django.conf.urls.defaults import *
 import hgbook.comments.feeds as feeds
+from django.contrib import admin
+
+admin.autodiscover()
 
 feeds = {
     'comments': feeds.Comments,
@@ -18,5 +21,5 @@
     #    sys.modules[__name__].__file__) + '/../../en/html'),
 
     # Uncomment this for admin:
-    (r'^admin/', include('django.contrib.admin.urls')),
+    (r'^admin/(.*)', admin.site.root),
 )