Mercurial > hgbook
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 -<email.address@domain.net></programlisting> +username = Firstname Lastname <email.address@domain.net></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 <bos@serpentine.com> +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('&', '&').replace('<', '<').replace('>', '>') 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), )