[svnbook commit] r3181 - trunk/src/de/book

khmarbaise noreply at red-bean.com
Sun Jun 29 14:23:17 CDT 2008


Author: khmarbaise
Date: Sun Jun 29 14:23:17 2008
New Revision: 3181

Log:
* src/de/book/foreword.xml
* src/de/book/ch00-preface.xml
* src/de/book/ch01-fundamental-concepts.xml
* src/de/book/ch02-basic-usage.xml
* src/de/book/ch03-advanced-topics.xml
* src/de/book/ch04-branching-and-merging.xml
* src/de/book/ch05-repository-admin.xml
* src/de/book/ch06-server-configuration.xml
* src/de/book/ch07-customizing-svn.xml
* src/de/book/ch08-embedding-svn.xml
* src/de/book/ch09-reference.xml
* src/de/book/appa-quickstart.xml
* src/de/book/appb-svn-for-cvs-users.xml
* src/de/book/appc-webdav.xml

  - merged the changes from the original english book
    (R:3056:3180).
  - forword.xml
    - added the english original text, which had been removed
      as preparation for final proof reading.
  - ch00-preface.xml, ch01-fundamental-concepts.xml, ch02-basic-usage.xml,
    ch09-reference.xml
    - Fixed the conflicts.


Modified:
   trunk/src/de/book/appa-quickstart.xml
   trunk/src/de/book/appb-svn-for-cvs-users.xml
   trunk/src/de/book/appc-webdav.xml
   trunk/src/de/book/ch00-preface.xml
   trunk/src/de/book/ch01-fundamental-concepts.xml
   trunk/src/de/book/ch02-basic-usage.xml
   trunk/src/de/book/ch03-advanced-topics.xml
   trunk/src/de/book/ch04-branching-and-merging.xml
   trunk/src/de/book/ch05-repository-admin.xml
   trunk/src/de/book/ch06-server-configuration.xml
   trunk/src/de/book/ch07-customizing-svn.xml
   trunk/src/de/book/ch08-embedding-svn.xml
   trunk/src/de/book/ch09-reference.xml
   trunk/src/de/book/foreword.xml

Modified: trunk/src/de/book/appa-quickstart.xml
==============================================================================
--- trunk/src/de/book/appa-quickstart.xml	(original)
+++ trunk/src/de/book/appa-quickstart.xml	Sun Jun 29 14:23:17 2008
@@ -38,7 +38,7 @@
       BSD, Mac OS X, Netware, and others.</para>
 
     <para>The easiest way to get Subversion is to download a binary
-      package built for your operating system.  Subversion's website
+      package built for your operating system.  Subversion's web site
       (<ulink url="http://subversion.tigris.org"/>) often has these
       packages available for download, posted by volunteers.  The site
       usually contains graphical installer packages for users of
@@ -51,7 +51,7 @@
       code, though it's not always an easy task. (If you're not
       experienced at building open source software packages, you're
       probably better off downloading a binary distribution instead!)
-      From the Subversion website, download the latest source-code
+      From the Subversion web site, download the latest source-code
       release.  After unpacking it, follow the instructions in
       the <filename>INSTALL</filename> file to build it.  Note that a
       released source package may not contain everything you need to
@@ -76,11 +76,11 @@
       once you do, you can check out a working copy of the Subversion source
       repository from <ulink url="http://svn.collab.net/repos/svn/trunk/"/>:
       <footnote>
-        <para>Note that the URL checked out in the example above
-          ends not with <literal>svn</literal>, but with a
-          subdirectory thereof called <literal>trunk</literal>.  See
-          our discussion of Subversion's branching and tagging model
-          for the reasoning behind this.</para>
+        <para>Note that the URL checked out in the example ends not
+          with <literal>svn</literal>, but with a subdirectory thereof
+          called <literal>trunk</literal>.  See our discussion of
+          Subversion's branching and tagging model for the reasoning
+          behind this.</para>
       </footnote>
     </para>
 
@@ -94,15 +94,15 @@
 …
 </screen>
 
-    <para>The above command will create a working copy of the latest
-      (unreleased) Subversion source code into a subdirectory
+    <para>The preceding command will create a working copy of the
+      latest (unreleased) Subversion source code into a subdirectory
       named <filename>subversion</filename> in your current working
       directory.  You can adjust that last argument as you see fit.
       Regardless of what you call the new working copy directory,
       though, after this operation completes, you will now have the
       Subversion source code.  Of course, you will still need to fetch
-      a few helper libraries (apr, apr-util, etc.)—see
-      the <filename>INSTALL</filename> file in the top level of the
+      a few helper libraries (apr, apr-util, etc.)—see the
+      <filename>INSTALL</filename> file in the top level of the
       working copy for details.</para>
 
   </sect1>
@@ -116,9 +116,9 @@
 
     <blockquote>
       <para><quote>Please make sure your seat backs are in their full,
-        upright position, and that your tray tables are stored.
-        Flight attendants, prepare for take-off….</quote></para>
-    </blockquote>
+        upright position and that your tray tables are stored.  Flight
+        attendants, prepare for take-off….</quote></para>
+        </blockquote>
 
     <para>What follows is a quick tutorial that walks you through some
       basic Subversion configuration and operation.  When you finish
@@ -145,42 +145,40 @@
 conf/  dav/  db/  format  hooks/  locks/  README.txt
 </screen>
 
-    <para>This command creates a new directory
-      <filename>/var/svn/repos</filename> which contains a Subversion
+    <para>This command creates a new directory,
+      <filename>/var/svn/repos</filename>, which contains a Subversion
       repository.  This new directory contains (among other things) a
       collection of database files.  You won't see your versioned
       files if you peek inside.  For more information about repository
-      creation and maintenance, see
-      <xref linkend="svn.reposadmin"/>.</para>
+      creation and maintenance, see <xref
+      linkend="svn.reposadmin"/>.</para>
 
-    <para>Subversion has no concept of a <quote>project</quote>.  The
+    <para>Subversion has no concept of a <quote>project.</quote> The
       repository is just a virtual versioned filesystem, a large tree
       that can hold anything you wish.  Some administrators prefer to
       store only one project in a repository, and others prefer to
       store multiple projects in a repository by placing them into
       separate directories.  The merits of each approach are discussed
       in <xref linkend="svn.reposadmin.projects.chooselayout"/>.
-      Either way, the repository only manages files and directories,
-      so it's up to humans to interpret particular directories
-      as <quote>projects</quote>.  So while you might see references
-      to projects throughout this book, keep in mind that we're only
-      ever talking about some directory (or collection of directories)
-      in the repository.</para>
+      Either way, the repository manages only files and directories,
+      so it's up to humans to interpret particular directories as
+      <quote>projects</quote>.  So while you might see references to
+      projects throughout this book, keep in mind that we're only ever
+      talking about some directory (or collection of directories) in
+      the repository.</para>
 
     <para>In this example, we assume that you already have some sort
       of project (a collection of files and directories) that you wish
       to import into your newly created Subversion repository.  Begin
-      by organizing your data into a single directory
-      called <filename>myproject</filename> (or whatever you wish).
-      For reasons that will be clear later (see
-      <xref linkend="svn.branchmerge"/>), your project's tree
-      structure should contain three top-level directories
-      named <filename>branches</filename>,
-      <filename>tags</filename>, and
-      <filename>trunk</filename>.  The <filename>trunk</filename>
-      directory should contain all of your data,
-      while <filename>branches</filename>
-      and <filename>tags</filename> directories are empty:</para>
+      by organizing your data into a single directory called
+      <filename>myproject</filename> (or whatever you wish).  For
+      reasons explained in <xref linkend="svn.branchmerge"/>, your
+      project's tree structure should contain three top-level
+      directories named <filename>branches</filename>,
+      <filename>tags</filename>, and <filename>trunk</filename>.  The
+      <filename>trunk</filename> directory should contain all of your
+      data, while the <filename>branches</filename> and
+      <filename>tags</filename> directories are empty:</para>
 
     <screen>
 /tmp/myproject/branches/
@@ -259,7 +257,7 @@
       </listitem>
       <listitem>
         <para>Run <command>svn update</command> to bring your working
-          copy <quote>up-to-date</quote> with the repository.</para>
+          copy <quote>up to date</quote> with the repository.</para>
       </listitem>
     </itemizedlist>
 

Modified: trunk/src/de/book/appb-svn-for-cvs-users.xml
==============================================================================
--- trunk/src/de/book/appb-svn-for-cvs-users.xml	(original)
+++ trunk/src/de/book/appb-svn-for-cvs-users.xml	Sun Jun 29 14:23:17 2008
@@ -3,7 +3,7 @@
 
   <para>This appendix is a guide for CVS users new to Subversion.
     It's essentially a list of differences between the two systems
-    as <quote>viewed from 10,000 feet</quote>.  For each section, we
+    as <quote>viewed from 10,000 feet.</quote>  For each section, we
     provide backreferences to relevant chapters when
     possible.</para>
 
@@ -21,7 +21,7 @@
   <sect1 id="svn.forcvs.revnums">
     <title>Revision Numbers Are Different Now</title>
 
-    <para>In CVS, revision numbers are per-file.  This is because CVS
+    <para>In CVS, revision numbers are per file.  This is because CVS
       stores its data in RCS files; each file has a corresponding RCS
       file in the repository, and the repository is roughly laid out
       according to the structure of your project tree.</para>
@@ -35,18 +35,18 @@
       looked after the 54th commit).</para>
 
     <para>Technically, it's not valid to talk about <quote>revision 5
-      of <filename>foo.c</filename></quote>.  Instead, one would say
+      of <filename>foo.c</filename>.</quote>  Instead, one would say
       <quote><filename>foo.c</filename> as it appears in revision
-      5</quote>.  Also, be careful when making assumptions about the
+      5.</quote>  Also, be careful when making assumptions about the
       evolution of a file.  In CVS, revisions 5 and 6 of
       <filename>foo.c</filename> are always different.  In Subversion,
       it's most likely that <filename>foo.c</filename> did
       <emphasis>not</emphasis> change between revisions 5 and
       6.</para>
 
-    <para>Similarly, in CVS a tag or branch is an annotation on the
-      file, or on the version information for that individual file,
-      whereas in Subversion a tag or branch is a copy of an entire
+    <para>Similarly, in CVS, a tag or branch is an annotation on the
+      file or on the version information for that individual file,
+      whereas in Subversion, a tag or branch is a copy of an entire
       tree (by convention, into the <filename>/branches</filename>
       or <filename>/tags</filename> directories that appear at the top
       level of the repository, beside <filename>/trunk</filename>). In
@@ -91,7 +91,7 @@
         <para>Directories aren't dumb containers anymore; they have
           revision numbers like files.  (Or more properly, it's
           correct to talk about <quote>directory
-          <filename>foo/</filename> in revision 5</quote>.)</para>
+          <filename>foo/</filename> in revision 5.</quote>)</para>
       </listitem>
     </itemizedlist>
 
@@ -102,7 +102,7 @@
 
     <para>From a theoretical point of view, we define <quote>revision
       5 of directory <filename>foo</filename></quote> to mean a
-      specific collection of directory-entries and properties.  Now
+      specific collection of directory entries and properties.  Now
       suppose we start adding and removing files from
       <filename>foo</filename>, and then commit.  It would be a lie
       to say that we still have revision 5 of
@@ -125,11 +125,11 @@
     <para>Similarly, a problem arises if you attempt to commit
       property changes on a directory.  Normally, the commit would
       bump the working directory's local revision number.  But again,
-      that would be a lie, because there may be adds or deletes that
+      that would be a lie, as there may be adds or deletes that
       the directory doesn't yet have, because no update has happened.
       <emphasis>Therefore, you are not allowed to commit
-      property-changes on a directory unless the directory is
-      up-to-date.</emphasis></para>
+      property changes on a directory unless the directory is
+      up to date.</emphasis></para>
 
     <para>For more discussion about the limitations of directory
       versioning, see <xref linkend="svn.basic.in-action.mixedrevs"/>.</para>
@@ -152,7 +152,7 @@
       serves the same purpose as the <filename>CVS</filename>
       directory, except that it also stores read-only,
       <quote>pristine</quote> copies of your files.  This allows you
-      to do many things off-line:</para>
+      to do much things offline:</para>
     
     <variablelist>
       
@@ -185,12 +185,12 @@
     <para>Also, the cached pristine files allow the Subversion client
       to send differences when committing, which CVS cannot do.</para>
 
-    <para>The last subcommand in the list is new; it will not only
-      remove local changes, but it will un-schedule operations such as
-      adds and deletes.  It's the preferred way to revert a file;
-      running <command>rm file; svn update</command> will still work, but
-      it blurs the purpose of updating.  And, while we're on this
-      subject…
+    <para>The last subcommand in the list—<command>svn
+      revert</command>—is new.  It will not only remove local
+      changes, but it will also unschedule operations such as adds and
+      deletes.  While deleting the file and then running <command>svn
+      update</command> will still work, doing so distorts the true
+      purpose of updating.  And, while we're on this subject…
 
     </para>
 
@@ -202,13 +202,13 @@
   <sect1 id="svn.forcvs.status-vs-update">
     <title>Distinction Between Status and Update</title>
 
-    <para>In Subversion, we've tried to erase a lot of the confusion
+    <para>Subversion attempts to erase a lot of the confusion
       between the <command>cvs status</command> and
       <command>cvs update</command> commands.</para>
 
     <para>The <command>cvs status</command> command has two purposes:
       first, to show the user any local modifications in the working
-      copy, and second, to show the user which files are out-of-date.
+      copy, and second, to show the user which files are out of date.
       Unfortunately, because of CVS's hard-to-read status output, many
       CVS users don't take advantage of this command at all.  Instead,
       they've developed a habit of running <command>cvs
@@ -218,10 +218,10 @@
       merging repository changes they may not be ready to deal
       with.</para>
 
-    <para>With Subversion, we've tried to remove this muddle by making
-      the output of <command>svn status</command> easy to read for
-      both humans and parsers.  Also, <command>svn update</command>
-      only prints information about files that are updated,
+    <para>Subversion removes this muddle by making the output of
+      <command>svn status</command> easy to read for both humans and
+      parsers.  Also, <command>svn update</command> prints only
+      information about files that are updated,
       <emphasis>not</emphasis> local modifications.</para>
 
     <sect2 id="svn.forcvs.status-vs-update.status">
@@ -252,7 +252,7 @@
         <varlistentry>
           <term><option>-N</option></term>
           <listitem>
-            <para>Run non-recursively (do not descend into
+            <para>Run nonrecursively (do not descend into
               subdirectories).</para>
           </listitem>
         </varlistentry>
@@ -282,9 +282,9 @@
 </screen>
 
       <para>In this case, two new columns appear.  The second column
-        contains an asterisk if the file or directory is out-of-date.
-        The third column shows the working-copy's revision number of the
-        item.  In the example above, the asterisk indicates that
+        contains an asterisk if the file or directory is out of date.
+        The third column shows the working copy's revision number of the
+        item.  In the previous example, the asterisk indicates that
         <filename>faces.html</filename> would be patched if we updated,
         and that <filename>bloo.png</filename> is a newly added file in
         the repository.  (The absence of any revision number next to
@@ -326,9 +326,9 @@
       <title>Update</title>
 
       <para><command>svn update</command> updates your working copy,
-        and only prints information about files that it updates.</para>
+        and prints only information about files that it updates.</para>
 
-      <para>Subversion has combined the CVS <literal>P</literal> and
+      <para>Subversion has combined CVS's <literal>P</literal> and
         <literal>U</literal> codes into just <literal>U</literal>.  When
         a merge or conflict occurs, Subversion simply prints
         <literal>G</literal> or <literal>C</literal>, rather than a
@@ -350,20 +350,20 @@
     <para>Subversion doesn't distinguish between filesystem space and
       <quote>branch</quote> space; branches and tags are ordinary
       directories within the filesystem.  This is probably the single
-      biggest mental hurdle a CVS user will need to climb.  Read all
-      about it in <xref linkend="svn.branchmerge"/>.</para>
-
+      biggest mental hurdle that a CVS user will need to cross.  Read
+      all about it in <xref linkend="svn.branchmerge"/>.</para>
 
     <warning>
+
       <para>Since Subversion treats branches and tags as ordinary
-        directories, always remember to check out the
-        <literal>trunk</literal>
-        (<literal>http://svn.example.com/repos/calc/trunk/</literal>)
-        of your project, and not the project itself
-        (<literal>http://svn.example.com/repos/calc/</literal>).  If
-        you make the mistake of checking out the project itself,
-        you'll wind up with a working copy that contains a copy of
-        your project for every branch and tag you have.
+        directories, your project's various lines of development
+        probably live in subdirectories of the main project directory.
+        So remember to check out using the URL of the subdirectory
+        that contains the particular line of development you want, not
+        the project's root URL.  If you make the mistake of checking
+        out the root of the project, you may very well wind up with a
+        working copy that contains a complete copy of your project's
+        content for each and every one of its branches and tags.
         <footnote>
           <para>That is, providing you don't run out of disk space
             before your checkout finishes.</para>
@@ -401,20 +401,26 @@
   <sect1 id="svn.forcvs.conflicts">
     <title>Conflict Resolution</title>
 
-    <para>CVS marks conflicts with in-line <quote>conflict
-      markers</quote>, and prints a <literal>C</literal> during an
-      update.  Historically, this has caused problems, because CVS
-      isn't doing enough.  Many users forget about (or don't see) the
-      <literal>C</literal> after it whizzes by on their terminal.
-      They often forget that the conflict-markers are even present,
-      and then accidentally commit files containing
-      conflict-markers.</para>
-
-    <para>Subversion solves this problem by making conflicts more
-      tangible.  It remembers that a file is in a state of conflict,
-      and won't allow you to commit your changes until you run
-      <command>svn resolved</command>.  See <xref
-      linkend="svn.tour.cycle.resolve"/> for more details.</para>
+    <para>CVS marks conflicts with inline <quote>conflict
+      markers</quote>, and then prints a <literal>C</literal> during
+      an update or merge operation.  Historically, this has caused
+      problems, because CVS isn't doing enough.  Many users forget
+      about (or don't see) the <literal>C</literal> after it whizzes
+      by on their terminal.  They often forget that the conflict
+      markers are even present, and then accidentally commit files
+      containing those conflict markers.</para>
+
+    <para>Subversion solves this problem in a pair of ways.  First,
+      when a conflict occurs in a file, Subversion records the fact
+      that the file is in a state of conflict, and won't allow you to
+      commit changes to that file until you explicitly resolve the
+      conflict.  Secondly, Subversion 1.5 provides interactive
+      conflict resolution, which allows you to resolve conflicts as
+      they happen instead of having to go back and do so after the
+      update or merge operation completes.  See <xref
+      linkend="svn.tour.cycle.resolve" /> for more about conflict
+      resolution in Subversion.</para>
+
   </sect1>
 
   <!-- ================================================================= -->
@@ -427,14 +433,14 @@
       more gracefully than CVS does.  Because CVS uses RCS, it can
       only store successive full copies of a changing binary file.
       Subversion, however, expresses differences between files using a
-      binary-differencing algorithm, regardless of whether they
+      binary differencing algorithm, regardless of whether they
       contain textual or binary data.  That means that all files are
       stored differentially (compressed) in the repository.</para>
     
     <para>CVS users have to mark binary files with
-      <option>-kb</option> flags, to prevent data from being garbled
-      (due to keyword expansion and line-ending translations).  They
-      sometimes forget to do this.</para>
+      <option>-kb</option> flags in order to prevent data from being
+      garbled (due to keyword expansion and line-ending translations).
+      They sometimes forget to do this.</para>
 
     <para>Subversion takes the more paranoid route—first, it never
       performs any kind of keyword or line-ending translation unless
@@ -455,7 +461,7 @@
     <para>To determine whether a contextual merge is possible,
       Subversion examines the <literal>svn:mime-type</literal>
       property.  If the file has no <literal>svn:mime-type</literal>
-      property, or has a mime-type that is textual (e.g.
+      property, or has a mime-type that is textual (e.g.,
       <literal>text/*</literal>),
       Subversion assumes it is text.  Otherwise, Subversion assumes
       the file is binary.  Subversion also helps users by running a
@@ -477,12 +483,12 @@
 
     <para>Unlike CVS, a Subversion working copy is aware that it has
       checked out a module.  That means that if somebody changes the
-      definition of a module (e.g. adds or removes components), then a
+      definition of a module (e.g., adds or removes components), then a
       call to <command>svn update</command> will update the working
       copy appropriately, adding and removing components.</para>
 
     <para>Subversion defines modules as a list of directories within a
-      directory property:  see <xref linkend="svn.advanced.externals"/>.</para>
+      directory property; see <xref linkend="svn.advanced.externals"/>.</para>
 
   </sect1>
 
@@ -493,18 +499,18 @@
 
     <title>Authentication</title>
 
-    <para>With CVS's pserver, you are required to <quote>login</quote>
-      to the server before any read or write operation—you
-      sometimes even have to login for anonymous operations.  With a
-      Subversion repository using Apache <command>httpd</command> or
-      <command>svnserve</command> as the server, you don't provide
-      any authentication credentials at the outset—if an
-      operation that you perform requires authentication, the server
-      will challenge you for your credentials (whether those
-      credentials are username and password, a client certificate, or
-      even both).  So if your repository is world-readable, you will
-      not be required to authenticate at all for read
-      operations.</para>
+    <para>With CVS's pserver, you are required to log in to the server
+      (using the <command>cvs login</command> command) before
+      performing any read or write operation—you sometimes even
+      have to log in for anonymous operations.  With a Subversion
+      repository using Apache <command>httpd</command> or
+      <command>svnserve</command> as the server, you don't provide any
+      authentication credentials at the outset—if an operation
+      that you perform requires authentication, the server will
+      challenge you for your credentials (whether those credentials
+      are username and password, a client certificate, or even both).
+      So if your repository is world-readable, you will not be
+      required to authenticate at all for read operations.</para>
 
     <para>As with CVS, Subversion still caches your credentials on
       disk (in your <filename>~/.subversion/auth/</filename>
@@ -533,22 +539,22 @@
       an exported CVS repository, the more thorough solution involves
       transferring not just the latest snapshot of their data, but all
       the history behind it as well, from one system to another.  This
-      is an extremely difficult problem to solve that involves
-      deducing changesets in the absence of atomicity, and translating
+      is an extremely difficult problem to solve; it involves
+      deducing changesets in the absence of atomicity and translating
       between the systems' completely orthogonal branching policies,
       among other complications.  Still, there are a handful of tools
       claiming to at least partially support the ability to convert
       existing CVS repositories into Subversion ones.</para>
 
-    <para>The most popular (and likely the most mature) conversion
-      tool is cvs2svn (<ulink url="http://cvs2svn.tigris.org/"/>), a
-      Python script originally created by members of Subversion's own
-      development community.  This tool is meant to run exactly
-      once:  it scans your CVS repository multiple times and attempts
-      to deduce commits, branches, and tags as best it can.  When it
+    <para>The most popular (and most mature) conversion tool is
+      cvs2svn (<ulink url="http://cvs2svn.tigris.org/"/>), a Python
+      script originally created by members of Subversion's own
+      development community.  This tool is meant to run exactly once:
+      it scans your CVS repository multiple times and attempts to
+      deduce commits, branches, and tags as best it can.  When it
       finishes, the result is a either a Subversion repository or a
       portable Subversion dumpfile representing your code's history.
-      See the website for detailed instructions and caveats.</para>
+      See the web site for detailed instructions and caveats.</para>
 
   </sect1>
 

Modified: trunk/src/de/book/appc-webdav.xml
==============================================================================
--- trunk/src/de/book/appc-webdav.xml	(original)
+++ trunk/src/de/book/appc-webdav.xml	Sun Jun 29 14:23:17 2008
@@ -1,8 +1,8 @@
 <appendix id="svn.webdav">
   <title>WebDAV and Autoversioning</title>
 
-  <para>WebDAV is an extension to HTTP, and is growing more and more
-    popular as a standard for file-sharing.  Today's operating systems
+  <para>WebDAV is an extension to HTTP, and it is growing more and more
+    popular as a standard for file sharing.  Today's operating systems
     are becoming extremely Web-aware, and many now have built-in
     support for mounting <quote>shares</quote> exported by WebDAV
     servers.</para>
@@ -18,53 +18,54 @@
   <!-- ================================================================= -->
   <!-- ================================================================= -->
   <sect1 id="svn.webdav.basic">
-    <title>What is WebDAV?</title>
+    <title>What Is WebDAV?</title>
 
     <para><firstterm>DAV</firstterm> stands for <quote>Distributed
-      Authoring and Versioning</quote>.  RFC 2518 defines a set of
+      Authoring and Versioning.</quote>  RFC 2518 defines a set of
       concepts and accompanying extension methods to HTTP 1.1 that
-      make the web into a more universal read/write medium.  The basic
+      make the Web into a more universal read/write medium.  The basic
       idea is that a WebDAV-compliant web server can act like a
       generic file server; clients can <quote>mount</quote> shared
       folders over HTTP that behave much like other network
-      filesystems (such as NFS or SMB.)</para>
+      filesystems (such as NFS or SMB).</para>
 
     <para>The tragedy, though, is that despite the acronym, the RFC
       specification doesn't actually describe any sort of version
-      control.  Basic WebDAV clients and servers assume only one
-      version of each file or directory exists, and can be repeatedly
-      overwritten.</para>
+      control.  Basic WebDAV clients and servers assume that only one
+      version of each file or directory exists, and that it can be
+      repeatedly overwritten.</para>
 
     <para>Because RFC 2518 left out versioning concepts, another
       committee was left with the responsibility of writing RFC 3253 a
       few years later.  The new RFC adds versioning concepts to
-      WebDAV, placing the <quote>V</quote> back in <quote>DAV</quote>
-      — hence the term <quote>DeltaV</quote>.  WebDAV/DeltaV
-      clients and servers are often called just <quote>DeltaV</quote>
-      programs, since DeltaV implies the existence of basic
-      WebDAV.</para>
+      WebDAV, placing the <quote>V</quote> back in
+      <quote>DAV</quote>—hence the term <quote>DeltaV.</quote>
+      WebDAV/DeltaV clients and servers are often called just
+      <quote>DeltaV</quote> programs, since DeltaV implies the
+      existence of basic WebDAV.</para>
 
     <para>The original WebDAV standard has been widely successful.
       Every modern computer operating system has a general WebDAV
-      client built-in (details to follow), and a number of popular
-      standalone applications are also able to speak WebDAV—
-      Microsoft Office, Dreamweaver, and Photoshop to name a few.  On
-      the server end, the Apache webserver has been able to provide
-      WebDAV services since 1998 and is considered the de-facto
-      open-source standard.  There are several other commercial WebDAV
-      servers available, including Microsoft's own IIS.</para>
+      client built in (details to follow), and a number of popular
+      standalone applications are also able to speak
+      WebDAV—Microsoft Office, Dreamweaver, and Photoshop to
+      name a few.  On the server end, Apache HTTP Server has been
+      able to provide WebDAV services since 1998 and is considered the
+      de-facto open source standard.  There are several other
+      commercial WebDAV servers available, including Microsoft's own
+      IIS.</para>
 
     <para>DeltaV, unfortunately, has not been so successful.  It's
       very difficult to find any DeltaV clients or servers.  The few
       that do exist are relatively unknown commercial products, and
       thus it's very difficult to test interoperability.  It's not
       entirely clear as to why DeltaV has remained stagnant.  Some
-      argue that the specification is just too complex, others argue
+      opine that the specification is just too complex.  Others argue
       that while WebDAV's features have mass appeal (even the least
-      technical users appreciate network file-sharing), version
-      control features aren't interesting or necessary for most users.
-      Finally, some have argued that DeltaV remains unpopular because
-      there's still no open-source server product which
+      technical users appreciate network file sharing), version
+      control features just aren't interesting or necessary for most
+      users.  Finally, some believe that DeltaV remains unpopular
+      because there's still no open source server product that
       implements it well.</para>
 
     <para>When Subversion was still in its design phase, it seemed
@@ -72,14 +73,14 @@
       had a module to provide WebDAV services.  DeltaV was a
       relatively new specification.  The hope was that the Subversion
       server module (<command>mod_dav_svn</command>) would eventually
-      evolve into an open-source DeltaV reference implementation.
+      evolve into an open source DeltaV reference implementation.
       Unfortunately, DeltaV has a very specific versioning model that
       doesn't quite line up with Subversion's model.  Some concepts
-      were mappable, others were not.</para>
+      were mappable; others were not.</para>
 
     <para>What does this mean, then?</para>
 
-    <para>First, the Subversion client is not a fully-implemented
+    <para>First, the Subversion client is not a fully implemented
       DeltaV client.  It needs certain types of things from the server
       that DeltaV itself cannot provide, and thus is largely dependent
       on a number of Subversion-specific
@@ -87,7 +88,7 @@
       only <command>mod_dav_svn</command> understands.</para>
 
     <para>Second, <command>mod_dav_svn</command> is not a
-      fully-realized DeltaV server.  Many portions of the DeltaV
+      fully realized DeltaV server.  Many portions of the DeltaV
       specification were irrelevant to Subversion, and thus left
       unimplemented.</para>
 
@@ -112,8 +113,8 @@
 
     <para>While the Subversion client is not a full DeltaV client, nor
       the Subversion server a full DeltaV server, there's still a
-      glimmer of WebDAV interoperability to be happy about:  it's
-      called autoversioning.</para>
+      glimmer of WebDAV interoperability to be happy about:
+      <firstterm>autoversioning</firstterm>.</para>
 
     <para>Autoversioning is an optional feature defined in the DeltaV
       standard.  A typical DeltaV server will reject an ignorant
@@ -123,7 +124,7 @@
       versioning requests: something like
       <literal>MKACTIVITY</literal>, <literal>CHECKOUT</literal>,
       <literal>PUT</literal>, <literal>CHECKIN</literal>.  But if the
-      DeltaV server supports autoversioning, then write-requests from
+      DeltaV server supports autoversioning, then write requests from
       basic WebDAV clients are accepted.  The server behaves as if the
       client <emphasis>had</emphasis> issued the proper series of
       versioning requests, performing a commit under the hood.  In
@@ -132,8 +133,8 @@
 
     <para>Because so many operating systems already have integrated
       WebDAV clients, the use case for this feature can be incredibly
-      appealing to administrators working with non-technical users:
-      imagine an office of ordinary users running Microsoft Windows or
+      appealing to administrators working with non-technical users.
+      Imagine an office of ordinary users running Microsoft Windows or
       Mac OS.  Each user <quote>mounts</quote> the Subversion
       repository, which appears to be an ordinary network folder.
       They use the shared folder as they always do: open files, edit
@@ -142,12 +143,12 @@
       user) can still use a Subversion client to search history and
       retrieve older versions of data.</para>
 
-    <para>This scenario isn't fiction: it's real and it works, as of
-      Subversion 1.2 and later.  To activate autoversioning in
-      <command>mod_dav_svn</command>, use
-      the <literal>SVNAutoversioning</literal> directive within
-      the <filename>httpd.conf</filename> Location block, like
-      so:</para>
+    <para>This scenario isn't fiction—it's real and it works, as
+      of Subversion 1.2 and later.  To activate autoversioning in
+      <command>mod_dav_svn</command>, use the
+      <literal>SVNAutoversioning</literal> directive within the
+      <filename>httpd.conf</filename> <literal>Location</literal>
+      block, like so:</para>
 
     <screen>
 <Location /repos>
@@ -157,9 +158,10 @@
 </Location>
 </screen>
 
-    <para>When SVNAutoversioning is active, write requests from WebDAV
-      clients result in automatic commits.  A generic log message is
-      auto-generated and attached to each revision.</para>
+    <para>When Subversion autoversioning is active, write requests
+      from WebDAV clients result in automatic commits.  A generic log
+      message is automatically generated and attached to each
+      revision.</para>
 
     <para>Before activating this feature, however, understand what
       you're getting into.  WebDAV clients tend to do
@@ -169,11 +171,11 @@
       0-byte file (as a way of reserving a name) followed by another
       <literal>PUT</literal> with the real file data.  The single
       file-write results in two separate commits.  Also consider that
-      many applications auto-save every few minutes, resulting in even
+      many applications autosave every few minutes, resulting in even
       more commits.</para>
 
     <para>If you have a post-commit hook program that sends email, you
-      may want to disable email generation either altogether, or on
+      may want to disable email generation either altogether or on
       certain sections of the repository; it depends on whether you
       think the influx of emails will still prove to be valuable
       notifications or not.  Also, a smart post-commit hook program
@@ -183,21 +185,20 @@
       named <literal>svn:autoversioned</literal>.  If present, the
       commit was made by a generic WebDAV client.</para>
 
-    <para>Another feature that may be a useful complement
-      for <literal>SVNAutoversioning</literal> comes from
-      Apache's <literal>mod_mime</literal> module.  If a WebDAV client
-      adds a new file to the repository, there's no opportunity for
-      the user to set the the <literal>svn:mime-type</literal>
-      property.  This might cause the file to appear as generic icon
-      when viewed within a WebDAV shared folder, not having an
-      association with any application.  One remedy is to have a
-      sysadmin (or other Subversion-knowledgeable person) check out a
-      working copy and manually set
-      the <literal>svn:mime-type</literal> property on necessary
-      files. But there's potentially no end to such cleanup tasks.
-      Instead, you can use the <literal>ModMimeUsePathInfo</literal>
-      directive in your Subversion <literal><Location></literal>
-      block:</para>
+    <para>Another feature that may be a useful complement for
+      Subversion's autoversioning comes from Apache's
+      <literal>mod_mime</literal> module.  If a WebDAV client adds a
+      new file to the repository, there's no opportunity for the user
+      to set the the <literal>svn:mime-type</literal> property.  This
+      might cause the file to appear as generic icon when viewed
+      within a WebDAV shared folder, not having an association with
+      any application.  One remedy is to have a sysadmin (or other
+      Subversion-knowledgeable person) check out a working copy and
+      manually set the <literal>svn:mime-type</literal> property on
+      necessary files. But there's potentially no end to such cleanup
+      tasks.  Instead, you can use the
+      <literal>ModMimeUsePathInfo</literal> directive in your
+      Subversion <literal><Location></literal> block:</para>
 
     <screen>
 <Location /repos>
@@ -231,13 +232,13 @@
       extensions, or filesystem implementations.  These categories
       broadly define the types of WebDAV functionality available to
       users.  <xref linkend="svn.webdav.clients.tbl-1"/> gives our
-      categorization and a quick description of some common pieces of
+      categorization as well as a quick description of some common pieces of
       WebDAV-enabled software.  More details about these software
       offerings, as well as their general category, can be found in
       the sections that follow.</para>
 
     <table id="svn.webdav.clients.tbl-1">
-      <title>Common WebDAV Clients</title>
+      <title>Common WebDAV clients</title>
       <tgroup cols="6">
         <thead>
           <row>
@@ -257,7 +258,7 @@
             <entry></entry>
             <entry></entry>
             <entry>Image editing software, allowing direct opening
-              from, and writing to, WebDAV URLs</entry>
+              from, and writing to, WebDAV URLs.</entry>
           </row>
           <row>
             <entry>Cadaver</entry>
@@ -266,7 +267,7 @@
             <entry>X</entry>
             <entry>X</entry>
             <entry>Command-line WebDAV client supporting file
-              transfer, tree, and locking operations</entry>
+              transfer, tree, and locking operations.</entry>
           </row>
           <row>
             <entry>DAV Explorer</entry>
@@ -274,7 +275,7 @@
             <entry>X</entry>
             <entry>X</entry>
             <entry>X</entry>
-            <entry>Java GUI tool for exploring WebDAV shares</entry>
+            <entry>Java GUI tool for exploring WebDAV shares.</entry>
           </row>
           <row>
             <entry>Macromedia Dreamweaver</entry>
@@ -283,7 +284,7 @@
             <entry></entry>
             <entry></entry>
             <entry>Web production software able to directly read from
-              and write to WebDAV URLs</entry>
+              and write to WebDAV URLs.</entry>
           </row>
           <row>
             <entry>Microsoft Office</entry>
@@ -293,7 +294,7 @@
             <entry></entry>
             <entry>Office productivity suite with several components
               able to directly read from and write to WebDAV
-              URLs</entry>
+              URLs.</entry>
           </row>
           <row>
             <entry>Microsoft Web Folders</entry>
@@ -302,7 +303,7 @@
             <entry></entry>
             <entry></entry>
             <entry>GUI file explorer program able to perform tree
-              operations on a WebDAV share</entry>
+              operations on a WebDAV share.</entry>
           </row>
           <row>
             <entry>GNOME Nautilus</entry>
@@ -311,7 +312,7 @@
             <entry></entry>
             <entry>X</entry>
             <entry>GUI file explorer able to perform tree
-              operations on a WebDAV share</entry>
+              operations on a WebDAV share.</entry>
           </row>
           <row>
             <entry>KDE Konqueror</entry>
@@ -320,7 +321,7 @@
             <entry></entry>
             <entry>X</entry>
             <entry>GUI file explorer able to perform tree
-              operations on a WebDAV share</entry>
+              operations on a WebDAV share.</entry>
           </row>
           <row>
             <entry>Mac OS X</entry>
@@ -329,7 +330,7 @@
             <entry>X</entry>
             <entry></entry>
             <entry>Operating system has built-in support for mounting
-              WebDAV shares.</entry>
+              WebDAV shares..</entry>
           </row>
           <row>
             <entry>Novell NetDrive</entry>
@@ -338,7 +339,7 @@
             <entry></entry>
             <entry></entry>
             <entry>Drive-mapping program for assigning Windows drive
-              letters to a mounted remote WebDAV share</entry>
+              letters to a mounted remote WebDAV share.</entry>
           </row>
           <row>
             <entry>SRT WebDrive</entry>
@@ -346,9 +347,9 @@
             <entry>X</entry>
             <entry></entry>
             <entry></entry>
-            <entry>File transfer software which, among other things,
+            <entry>File transfer software, which, among other things,
               allows the assignment of Windows drive letters to a
-              mounted remote WebDAV share</entry>
+              mounted remote WebDAV share.</entry>
           </row>
           <row>
             <entry>davfs2</entry>
@@ -357,7 +358,7 @@
             <entry></entry>
             <entry>X</entry>
             <entry>Linux file system driver that allows you to mount a
-              WebDAV share</entry>
+              WebDAV share.</entry>
           </row>
 
         </tbody>
@@ -366,9 +367,9 @@
 
     <!-- =============================================================== -->
     <sect2 id="svn.webdav.clients.standalone">
-      <title>Standalone WebDAV applications</title>
+      <title>Standalone WebDAV Applications</title>
 
-      <para>A WebDAV application is a program which speakes WebDAV
+      <para>A WebDAV application is a program that speaks WebDAV
         protocols with a WebDAV server.  We'll cover some of the most
         popular programs with this kind of WebDAV support.</para>
 
@@ -391,7 +392,7 @@
         <para>Note that while many of these programs also exist for
           the Mac OS X, they do not appear to support WebDAV directly
           on that platform.  In fact, on Mac OS X, the
-          <guimenu>File->Open</guimenu> dialog box doesn't allow
+          <guimenu>File→Open</guimenu> dialog box doesn't allow
           one to type a path or URL at all.  It's likely that the
           WebDAV features were deliberately left out of Macintosh
           versions of these programs, since OS X already provides such
@@ -401,17 +402,17 @@
 
       <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       <sect3 id="svn.webdav.clients.standalone.free">
-        <title>Cadaver, DAV Explorer</title>
+        <title>cadaver, DAV Explorer</title>
 
-        <para>Cadaver is a bare-bones Unix commandline program for
+        <para>cadaver is a bare-bones Unix command-line program for
           browsing and changing WebDAV shares.  Like the Subversion
           client, it uses the neon HTTP library—not
           surprisingly, since both neon and cadaver are written by the
-          same author.  Cadaver is free software (GPL license) and is
+          same author.  cadaver is free software (GPL license) and is
           available at
           <ulink url="http://www.webdav.org/cadaver/"/>.</para>
 
-        <para>Using cadaver is similar to using a commandline FTP
+        <para>Using cadaver is similar to using a command-line FTP
           program, and thus it's extremely useful for basic WebDAV
           debugging.  It can be used to upload or download files in a
           pinch, and also to examine properties, and to copy, move,
@@ -438,14 +439,14 @@
         <para>DAV Explorer is another standalone WebDAV client, written
           in Java.  It's under a free Apache-like license and is
           available at <ulink url="http://www.ics.uci.edu/~webdav/"/>.
-          DAV Explorer does everything cadaver does, but has the
+          It does everything cadaver does, but has the
           advantages of being portable and being a more user-friendly GUI
           application.  It's also one of the first clients to support
           the new WebDAV Access Control Protocol (RFC 3744).</para>
 
         <para>Of course, DAV Explorer's ACL support is useless in this
           case, since <command>mod_dav_svn</command> doesn't support
-          it.  The fact that both Cadaver and DAV Explorer support
+          it.  The fact that both cadaver and DAV Explorer support
           some limited DeltaV commands isn't particularly useful
           either, since they don't allow <literal>MKACTIVITY</literal>
           requests.  But it's not relevant anyway; we're assuming all
@@ -457,14 +458,14 @@
 
     <!-- =============================================================== -->
     <sect2 id="svn.webdav.clients.file-explorer-extensions">
-      <title>File-explorer WebDAV extensions</title>
+      <title>File-Explorer WebDAV Extensions</title>
 
       <para>Some popular file explorer GUI programs support WebDAV
-        extensions which allow a user to browse a DAV share as if it
+        extensions that allow a user to browse a DAV share as if it
         was just another directory on the local computer, and to
         perform basic tree editing operations on the items in that
         share.  For example, Windows Explorer is able to browse a
-        WebDAV server as a <quote>network place</quote>.  Users can
+        WebDAV server as a <quote>network place.</quote>  Users can
         drag files to and from the desktop, or can rename, copy, or
         delete files in the usual way.  But because it's only a
         feature of the file-explorer, the DAV share isn't visible to
@@ -476,21 +477,21 @@
         <title>Microsoft Web Folders</title>
 
         <para>Microsoft was one of the original backers of the WebDAV
-          specification, and first started shipping a client in Windows
-          98, known as <quote>Web Folders</quote>.  This client was also
-          shipped in Windows NT4 and 2000.</para>
+          specification, and first started shipping a client in
+          Windows 98, which was known as Web Folders.  This client was
+          also shipped in Windows NT4 and 2000.</para>
 
         <para>The original Web Folders client was an extension to
           Explorer, the main GUI program used to browse filesystems.  It
           works well enough.  In Windows 98, the feature might need to
           be explicitly installed if Web Folders aren't already visible
-          inside <quote>My Computer</quote>.  In Windows 2000, simply
+          inside My Computer.  In Windows 2000, simply
           add a new <quote>network place</quote>, enter the URL, and the
           WebDAV share will pop up for browsing.</para>
 
         <para>With the release of Windows XP, Microsoft started shipping
-          a new implementation of Web Folders, known as the <quote>WebDAV
-          mini-redirector</quote>.  The new implementation is a
+          a new implementation of Web Folders, known as the WebDAV
+          Mini-Redirector.  The new implementation is a
           filesystem-level client, allowing WebDAV shares to be mounted
           as drive letters.  Unfortunately, this implementation is
           incredibly buggy.  The client usually tries to convert http
@@ -500,13 +501,13 @@
           basic-auth HTTP challenges, sending usernames as
           <literal>HOST\username</literal>.  These interoperability
           problems are severe and documented in numerous places around
-          the web, to the frustration of many users.  Even Greg Stein,
+          the Web, to the frustration of many users.  Even Greg Stein,
           the original author of Apache's WebDAV module, bluntly
-          states XP Web Folders simply can't operate against an Apache
+          states that XP Web Folders simply can't operate against an Apache
           server.</para>
 
         <para>Windows Vista's implementation of Web Folders seems to
-          be almost the same as XP's, and so it has the same sort of
+          be almost the same as XP's, so it has the same sort of
           problems (at the time of writing).</para>
 
         <para>However, there seem to be workarounds for both XP and
@@ -515,38 +516,38 @@
           relay them here.</para>
 
         <para>On Windows XP, you have two options.  First, search
-          Microsoft's website for patch KB90730, <quote>Software
-          Update for Web Folders</quote>.  This may fix all your
+          Microsoft's web site for update KB90730, <quote>Software
+          Update for Web Folders.</quote>  This may fix all your
           problems.  If it doesn't, it seems that the original pre-XP
           Web Folders implementation is still buried within the
-          system.  You can unearth it by going to <quote>Network
-          Places</quote> and add a new network place.  When prompted,
+          system.  You can unearth it by going to Network
+          Places and adding a new network place.  When prompted,
           enter the URL of the repository, but <emphasis>include a
           port number</emphasis> in the URL.  For
-          example, <literal>http://host/repos</literal> would be
-          entered as <literal>http://host:80/repos</literal> instead.
+          example, <uri>http://host/repos</uri> should be
+          entered as <uri>http://host:80/repos</uri> instead.
           Respond to any authentication prompts with your Subversion
           credentials.</para>
 
-        <para>On Windows Vista, the same patch KB90730 may clear
-          everything up.  But there may still be other issue.  Some
+        <para>On Windows Vista, the same KB90730 update may clear
+          everything up.  But there may still be other issues.  Some
           users have reported that Vista considers
-          all <literal>http:</literal> connections insecure, and thus
+          all <literal>http://</literal> connections insecure, and thus
           will always fail any authentication challenges from Apache
           unless the connection happens
-          over <literal>https:</literal>.  If you're unable to connect
+          over <literal>https://</literal>.  If you're unable to connect
           to the Subversion repository via SSL, you can tweak the
           system registry to turn off this behavior.  Just set the
           key <literal>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel</literal>
           from 1 to 2.  A final warning: be sure to set up the Web
           Folder to point to the repository's root directory
           (<filename>/</filename>), rather than some subdirectory
-          like <filename>/trunk</filename>.  Vista Web Folders only
-          seems to work against repository roots.</para>
+          such as <filename>/trunk</filename>.  Vista Web Folders
+          seems to work only against repository roots.</para>
 
         <para>In general, while these workarounds may function for
           you, you might get a better overall experience using a
-          third-party WebDAV client like WebDrive or NetDrive.</para>
+          third-party WebDAV client such as WebDrive or NetDrive.</para>
 
       </sect3>
 
@@ -557,14 +558,14 @@
         <para>Nautilus is the official file manager/browser for the
           GNOME desktop (<ulink url="http://www.gnome.org"/>), and
           Konqueror is the manager/browser for the KDE desktop (<ulink
-          url="http://www.kde.org"/>).  Both of these applications have
-          an explorer-level WebDAV client built-in, and operate just
-          fine against an autoversioning repository.</para>
-
-        <para>In GNOME's Nautilus, from the <guimenu>File
-          menu</guimenu>, select <guimenuitem>Open
-          location</guimenuitem> and enter the URL.  The repository
-          should then be displayed like any other filesystem.</para>
+          url="http://www.kde.org"/>).  Both of these applications
+          have an explorer-level WebDAV client built in, and they
+          operate just fine against an autoversioning repository.</para>
+
+        <para>In GNOME's Nautilus, select the <guimenuitem>File→Open
+          location</guimenuitem> menu item and enter the URL in the
+          dialog box presented.  The repository should then be
+          displayed like any other filesystem.</para>
 
         <para>In KDE's Konqueror, you need to use the
           <literal>webdav://</literal> scheme when entering the URL in
@@ -582,14 +583,14 @@
     </sect2>
 
     <sect2 id="svn.webdav.clients.fs-impl">
-      <title>WebDAV filesystem implementation</title>
+      <title>WebDAV Filesystem Implementation</title>
 
       <para>The WebDAV filesystem implementation is arguably the best
         sort of WebDAV client.  It's implemented as a low-level
         filesystem module, typically within the operating system's
         kernel.  This means that the DAV share is mounted like any
         other network filesystem, similar to mounting an NFS share on
-        Unix, or attaching an SMB share as drive letter in Windows.
+        Unix or attaching an SMB share as drive letter in Windows.
         As a result, this sort of client provides completely
         transparent read/write WebDAV access to all programs.
         Applications aren't even aware that WebDAV requests are
@@ -600,17 +601,14 @@
         <title>WebDrive, NetDrive</title>
 
         <para>Both WebDrive and NetDrive are excellent commercial
-          products which allow a WebDAV share to be attached as drive
-          letters in Windows.  We've had nothing but success with
-          these products.  At the time of writing, WebDrive can be
-          purchased from South River Technologies (<ulink
-          url="http://www.southrivertech.com"/>).  NetDrive ships with
-          Netware, is free of charge, and can be found by searching
-          the web for <quote>netdrive.exe</quote>.  Though it is
-          freely available online, users are required to have a
-          Netware license.  (If any of that sounds odd to you, you're
-          not alone.  See this page on Novell's website: <ulink
-          url="http://www.novell.com/coolsolutions/qna/999.html"/>)</para>
+          products that allow a WebDAV share to be attached as drive
+          letters in Windows.  As a result, you can operate on the
+          contents of these WebDAV-backed pseudo-drives as easily as
+          you can against real local hard drives, and in the same
+          ways.  WebDrive can be purchased from South River
+          Technologies (<ulink url="http://www.southrivertech.com"/>).
+          Novell's NetDrive is freely available online, but requires
+          users to have a Netware license.</para>
 
       </sect3>
 
@@ -620,12 +618,12 @@
 
         <para>Apple's OS X operating system has an integrated
           filesystem-level WebDAV client.  From the Finder, select the
-          <guimenuitem>Connect to Server</guimenuitem> item from the
-          <guimenu>Go menu</guimenu>.  Enter a WebDAV URL, and it
-          appears as a disk on the desktop, just like any other
-          mounted volume.  You can also mount a WebDAV share from the
-          Darwin terminal by using the <literal>webdav</literal>
-          filesystem type with the <command>mount</command> command:</para>
+          <guimenuitem>Go→Connect to Server</guimenuitem> menu
+          item.  Enter a WebDAV URL, and it appears as a disk on the
+          desktop, just like any other mounted volume.  You can also
+          mount a WebDAV share from the Darwin terminal by using the
+          <literal>webdav</literal> filesystem type with the
+          <command>mount</command> command:</para>
 
         <screen>
 $ mount -t webdav http://svn.example.com/repos/project /some/mountpoint
@@ -639,10 +637,10 @@
           the ability to lock files first appeared in Subversion
           1.2.</para>
 
-        <para>One more word of warning: OS X's WebDAV client can
-          sometimes be overly sensitive to HTTP redirects.  If OS X is
-          unable to mount the repository at all, you may need to enable
-          the BrowserMatch directive in the Apache server's
+        <para>Also, OS X's WebDAV client can sometimes be overly
+          sensitive to HTTP redirects.  If OS X is unable to mount the
+          repository at all, you may need to enable the BrowserMatch
+          directive in the Apache server's
           <filename>httpd.conf</filename>:</para>
 
         <screen>

Modified: trunk/src/de/book/ch00-preface.xml
==============================================================================
--- trunk/src/de/book/ch00-preface.xml	(original)
+++ trunk/src/de/book/ch00-preface.xml	Sun Jun 29 14:23:17 2008
@@ -10,6 +10,7 @@
 -->
     <attribution>Greg Hudson, Subversion Entwickler</attribution>
 <!--
+    <attribution>Greg Hudson, Subversion developer</attribution>
     <para><quote>It is important not to let the perfect become the
       enemy of the good, even when you can agree on what perfect is.
       Doubly so when you can't.  As unpleasant as it is to be trapped by
@@ -31,14 +32,14 @@
       <primary>Concurrent Versions System (CVS)</primary>
     </indexterm>
 
-    In the world of open-source software, the Concurrent Versions
+    In the world of open source software, the Concurrent Versions
     System (CVS) was the tool of choice for version control for many
-    years.  And rightly so.  CVS was open-source software itself, and
-    its non-restrictive modus operandi and support for networked
+    years.  And rightly so.  CVS was open source software itself, and
+    its nonrestrictive modus operandi and support for networked
     operation allowed dozens of geographically dispersed programmers
     to share their work.  It fit the collaborative nature of the
-    open-source world very well.  CVS and its semi-chaotic development
-    model have since become cornerstones of open-source
+    opensource world very well.  CVS and its semi-chaotic development
+    model have since become cornerstones of open source
     culture.</para>
 -->
   <para>
@@ -60,13 +61,13 @@
     flaws promised to be an enormous effort.  Enter Subversion.
     Designed to be a successor to CVS, Subversion's originators set
     out to win the hearts of CVS users in two ways—by creating
-    an open-source system with a design (and <quote>look and
+    an open source system with a design (and <quote>look and
     feel</quote>) similar to CVS, and by attempting to avoid most of
     CVS's noticeable flaws.  While the result isn't necessarily the
     next great evolution in version control design, Subversion
     <emphasis>is</emphasis> very powerful, very usable, and very
-    flexible.  And for the most part, almost all newly-started
-    open-source projects now choose Subversion instead of CVS.</para>
+    flexible.  And for the most part, almost all newly started
+    open source projects now choose Subversion instead of CVS.</para>
 -->
 
   <para>Jedoch war CVS nicht makellos, und diese Makel einfach zu
@@ -86,9 +87,9 @@
     Subversion version control system.  We have made every attempt to
     be thorough in our coverage.  However, Subversion has a thriving
     and energetic development community, so there are already a number
-    of features and improvements planned for future versions of
-    Subversion that may change some of the commands and specific notes
-    in this book.</para>
+    of features and improvements planned for future versions that may
+    change some of the commands and specific notes in this
+    book.</para>
 -->
   <para>Dieses Buch ist geschrieben worden, um die Serie 1.5 des
     Subversion Versionskontrollsystems zu dokumentieren. Wir haben
@@ -114,10 +115,9 @@
     <para>This book is written for computer-literate folk who want to
       use Subversion to manage their data.  While Subversion runs on a
       number of different operating systems, its primary user
-      interface is command-line based.  That command-line tool
+      interface is command-line-based.  That command-line tool
       (<command>svn</command>), and some auxiliary programs, are the
       focus of this book.</para>
-
 -->
     
     <para>Dieses Buch ist für computerkundige Leute geschrieben, die
@@ -127,16 +127,15 @@
       Kommandozeilenwerkzeug (<command>svn</command>) und einige
       Hilfsprogramme stehen im Mittelpunkt dieses Buches.</para>
 <!--
-    <para>For consistency, the examples in this book assume the reader
+    <para>For consistency, the examples in this book assume that the reader
       is using a Unix-like operating system and is relatively comfortable
       with Unix and command-line interfaces.  That said, the
       <command>svn</command> program also runs on non-Unix platforms
-      like Microsoft Windows.  With a few minor exceptions, such as
+      such as Microsoft Windows.  With a few minor exceptions, such as
       the use of backward slashes (<literal>\</literal>) instead of
       forward slashes (<literal>/</literal>) for path separators, the
       input to and output from this tool when run on Windows are
       identical to its Unix counterpart.</para>
-
 -->
     <para>Aus Gründen der Vereinheitlichung gehen die Beispiele in
       diesem Buch davon aus, dass der Leser ein unixähnliches
@@ -171,8 +170,8 @@
       reader has never used a version control system, we've also tried
       to make it easy for users of CVS (and other systems) to make a
       painless leap into Subversion.  Special sidebars may mention
-      other version control systems from time to time, and a special
-      appendix summarizes many of the differences between CVS and
+      other version control systems from time to time, and Appendix B
+      summarizes many of the differences between CVS and
       Subversion.</para>
 
 -->
@@ -188,7 +187,7 @@
     <para>Note also that the source code examples used throughout the
       book are only examples.  While they will compile with the proper
       compiler incantations, they are intended to illustrate a
-      particular scenario, not necessarily serve as examples of good
+      particular scenario and not necessarily serve as examples of good
       programming style or practices.</para>
 -->
     <para>Es sei angemerkt, dass es sich bei den Quelltexten in diesem
@@ -204,18 +203,18 @@
   <!-- ================================================================= -->
   <sect1 id="svn.preface.howread">
 <!--
-    <title>How to Read this Book</title>
+    <title>How to Read This Book</title>
 -->
     <title>Wie dieses Buch zu lesen ist</title>
 
 <!--
     <para>Technical books always face a certain dilemma: whether to
       cater to <firstterm>top-down</firstterm>
-      or <firstterm>bottom-up</firstterm> learners.  A top-down
+      or to <firstterm>bottom-up</firstterm> learners.  A top-down
       learner prefers to read or skim documentation, getting a large
       overview of how the system works; only then does she actually
       start using the software.  A bottom-learner is a <quote>learn by
-      doing</quote> person, someone who just wants to dive into the
+      doing</quote> person—someone who just wants to dive into the
       software and figure it out as she goes, referring to book
       sections when necessary.  Most books tend to be written for one
       type of person or the other, and this book is undoubtedly biased
@@ -223,7 +222,7 @@
       section, you're probably already a top-down learner yourself!)
       However, if you're a bottom-up person, don't despair.  While the
       book may be laid out as a broad survey of Subversion topics, the
-      contents of each section tends to be heavy with specific
+      content of each section tends to be heavy with specific
       examples that you can try-by-doing.  For the impatient folks who
       just want to get going, you can jump right to
       <xref linkend="svn.intro"/>.</para>
@@ -252,7 +251,7 @@
 <!--
     <para>Regardless of your learning style, this book aims to be
       useful to people of widely different backgrounds—from
-      people with no previous experience in version control to
+      those with no previous experience in version control to
       experienced system administrators.  Depending on your own
       background, certain chapters may be more or less important to
       you.  The following can be considered a
@@ -274,7 +273,7 @@
         <term>Experienced System Administrators</term>
         <listitem>
           <para>The assumption here is that you've probably used
-            version control before before, and are dying to get a
+            version control before and are dying to get a
             Subversion server up and running ASAP.
             <xref linkend="svn.reposadmin"/> and
             <xref linkend="svn.serverconfig"/> will show you how to
@@ -331,13 +330,13 @@
           <para>Whether you're a user or administrator, eventually
             your project will grow larger.  You're going to want to
             learn how to do more advanced things with Subversion, such
-            as how to use branches and perform merges (<xref
-            linkend="svn.branchmerge"/>), how to use Subversion's
-            property support (<xref linkend="svn.advanced"/>), how to
-            configure runtime options (<xref
-            linkend="svn.customization"/>), and other things.  These
-            chapters aren't critical at first, but be sure to read
-            them once you're comfortable with the basics.</para>
+            as how to use Subversion's property support
+            (<xref linkend="svn.advanced"/>), how to use branches and
+            perform merges (<xref linkend="svn.branchmerge"/>), how to
+            configure runtime options
+            (<xref linkend="svn.customization"/>), and other things.
+            These chapters aren't critical at first, but be sure to
+            read them once you're comfortable with the basics.</para>
         </listitem>
 -->
         <term>Fortgeschrittene</term>
@@ -416,6 +415,10 @@
       <title>Typographic Conventions</title>
 -->
       <title>Typografische Konventionen</title>
+
+      <para>The following typographic conventions are used in this
+        book:</para>
+>>>>>>> .merge-rechts.r3180
       
       <variablelist>
         
@@ -455,9 +458,10 @@
           <term><filename>Kursivschrift</filename></term>
           <listitem>
 <!--
-            <para>Used for file and directory names</para>
+            <para>Used for file and directory names as well as for new
+              terms</para>
 -->
-            <para>Verwendet für Datei- und Verzeichnisnamen</para>
+            <para>Verwendet für Datei- und Verzeichnisnamen und neue Begriffe</para>
           </listitem>
         </varlistentry>
         
@@ -468,7 +472,7 @@
     <!-- =============================================================== -->
     <sect2 id="svn.preface.conventions.icons">
 <!--
-      <title>Icons</title>
+      <title>Tips and Warnings</title>
 -->
       <title>Bilder</title>
 
@@ -618,7 +622,7 @@
           <listitem>
 <!--
             <para>Explains how to configure your Subversion server and
-              different ways to access your repository:
+              offers different ways to access your repository:
               <literal>HTTP</literal>, the <literal>svn</literal>
               protocol, and local disk access.  It also covers the details
               of authentication, authorization and anonymous
@@ -710,7 +714,7 @@
               using CVS.  Included are descriptions of Subversion
               revision numbers, versioned directories, offline
               operations, <command>update</command>
-              vs. <command>status</command>, branches, tags, metadata,
+              versus <command>status</command>, branches, tags, metadata,
               conflict resolution, and authentication.</para>
 -->
             <para>Behandelt die Ähnlichkeiten und Unterschiede
@@ -729,7 +733,7 @@
           <term><xref linkend="svn.webdav"/></term>
           <listitem>
 <!--
-            <para>Describes the details of WebDAV and DeltaV, and how
+            <para>Describes the details of WebDAV and DeltaV and how
               you can configure your Subversion repository to be
               mounted read/write as a DAV share.</para>
 -->
@@ -740,6 +744,14 @@
           </listitem>
         </varlistentry>
 
+        <varlistentry>
+          <term><xref linkend="svn.copyright"/></term>
+          <listitem>
+            <para>A copy of the Creative Commons Attribution License.,
+              under which this book is licensed.</para>
+          </listitem>
+        </varlistentry>
+
     </variablelist>
 
   </sect1>
@@ -750,7 +762,7 @@
   <!-- ================================================================= -->
   <sect1 id="svn.preface.free">
 <!--
-    <title>This Book is Free</title>
+    <title>This Book Is Free</title>
 -->
     <title>Dieses Buch ist Frei</title>
 
@@ -758,7 +770,7 @@
     <para>This book started out as bits of documentation written by
       Subversion project developers, which were then coalesced into a
       single work and rewritten.  As such, it has always been under a
-      free license.  (See <xref linkend="svn.copyright"/>.)  In fact,
+      free license (see <xref linkend="svn.copyright"/>).  In fact,
       the book was written in the public eye, originally as a part of
       Subversion project itself.  This means two things:</para>
 -->
@@ -838,10 +850,10 @@
     <para>This book would not be possible (nor very useful) if
       Subversion did not exist.  For that, the authors would like to
       thank Brian Behlendorf and CollabNet for the vision to fund such
-      a risky and ambitious new Open Source project; Jim Blandy for
+      a risky and ambitious new open source project; Jim Blandy for
       the original Subversion name and design—we love you, Jim;
-      Karl Fogel for being such a good friend and a great community
-      leader, in that order.
+      and Karl Fogel for being such a good friend and a great
+      community leader, in that order.
       <footnote>
         <para>Oh, and thanks, Karl, for being too overworked to write
           this book yourself.</para>
@@ -861,64 +873,111 @@
       selbst zu schreiben.</para></footnote></para>
 
 <!--
-    <para>Thanks to O'Reilly and our editors, Linda Mui and Tatiana
-      Diaz for their patience and support.</para>
+    <para>Thanks to O'Reilly and our editors: Linda Mui, Tatiana
+      Apandi, and Mary Brady.  Their patience and support has been
+      tremendous.</para>
 -->
     <para>Dank an O'Reilly und unsere Redakteurinnen, Linda Mui and Tatiana
       Diaz für ihre Geduld und Unterstützung.</para>
 
 <!--
     <para>Finally, we thank the countless people who contributed to
-      this book with informal reviews, suggestions, and fixes: While
-      this is undoubtedly not a complete list, this book would be
-      incomplete and incorrect without the help of: David Anderson,
-      Jani Averbach, Ryan Barrett, Francois Beausoleil, Jennifer
-      Bevan, Matt Blais, Zack Brown, Martin Buchholz, Brane Cibej,
-      John R. Daily, Peter Davis, Olivier Davy, Robert P. J. Day, Mo
-      DeJong, Brian Denny, Joe Drew, Nick Duffek, Ben Elliston, Justin
-      Erenkrantz, Shlomi Fish, Julian Foad, Chris Foote, Martin
-      Furter, Vlad Georgescu, Dave Gilbert, Eric Gillespie, David
-      Glasser, Matthew Gregan, Art Haas, Eric Hanchrow, Greg Hudson,
-      Alexis Huxley, Jens B. Jorgensen, Tez Kamihira, David Kimdon,
-      Mark Benedetto King, Andreas J. Koenig, Nuutti Kotivuori, Matt
-      Kraai, Scott Lamb, Vincent Lefevre, Morten Ludvigsen, Paul
-      Lussier, Bruce A. Mah, Philip Martin, Feliciano Matias, Patrick
-      Mayweg, Gareth McCaughan, Jon Middleton, Tim Moloney,
-      Christopher Ness, Mats Nilsson, Joe Orton, Amy Lyn Pilato, Kevin
-      Pilch-Bisson, Dmitriy Popkov, Michael Price, Mark Proctor,
-      Steffen Prohaska, Daniel Rall, Jack Repenning, Tobias Ringstrom,
-      Garrett Rooney, Joel Rosdahl, Christian Sauer, Larry Shatzer,
-      Russell Steicke, Sander Striker, Erik Sjoelund, Johan
-      Sundstroem, John Szakmeister, Mason Thomas, Eric Wadsworth,
-      Colin Watson, Alex Waugh, Chad Whitacre, Josef Wolf, Blair
-      Zajac, and the entire Subversion community.</para>
+      this book with informal reviews, suggestions, and patches.
+      While this is undoubtedly not a complete list, this book would
+      be incomplete and incorrect without their help: Bhuvaneswaran A,
+      Arfrever Frehtes Taifersar Arahesis, David Alber, C. Scott
+      Ananian, David Anderson, Ariel Arjona, Seth Arnold, Jani
+      Averbach, Jens B. Jorgensen, Charles Bailey, Ryan Barrett,
+      Francois Beausoleil, Brian R. Becker, Mark Benedetto King, Yves
+      Bergeron, Karl Berry, Jennifer Bevan, Matt Blais, Jim Blandy,
+      Phil Bordelon, Sietse Brouwer, Tom Brown, Zack Brown, Martin
+      Buchholz, Paul Burba, Sean Callan-Hinsvark, Branko Cibej, Archie
+      Cobbs, Jason Cohen, Ryan Cresawn, John R. Daily, Peter Davis,
+      Olivier Davy, Robert P. J. Day, Mo DeJong, Brian Denny, Joe
+      Drew, Markus Dreyer, Nick Duffek, Boris Dusek, Ben Elliston,
+      Justin Erenkrantz, Kyle Ferrio, Shlomi Fish, Julian Foad, Chris
+      Foote, Martin Furter, Vlad Georgescu, Peter Gervai, Dave
+      Gilbert, Eric Gillespie, David Glasser, Marcel Gosselin, Lieven
+      Govaerts, Steve Greenland, Matthew Gregan, Tom Gregory, Maverick
+      Grey, Art Haas, Mark E. Hamilton, Eric Hanchrow, Liam Healy,
+      Karl Heinz Marbaise, Malte Helmert, Michael Henderson, Greg
+      Hudson, Alexis Huxley, Auke Jilderda, Toby Johnson, Tez
+      Kamihira, David Kimdon, Robert Kleemann, Erik Kline, Josh
+      Knowles, Andreas J. Koenig, Axel Kollmorgen, Nuutti Kotivuori,
+      Kalin Kozhuharov, Matt Kraai, Regis Kuckaertz, Stefan Kueng,
+      Steve Kunkee, Scott Lamb, Wesley J. Landaker, Benjamin
+      Landsteiner, Vincent Lefevre, Morten Ludvigsen, Dennis Lundberg,
+      Paul Lussier, Jens M. Felderhoff, Bruce A. Mah, Jonathon Mah,
+      Philip Martin, Feliciano Matias, Neil Mayhew, Patrick Mayweg,
+      Gareth McCaughan, Craig McElroy, Simon McKenna, Christophe
+      Meresse, Jonathan Metillon, Jean-Francois Michaud, Jon
+      Middleton, Robert Moerland, Marcel Molina Jr., Tim Moloney,
+      Alexander Mueller, Tabish Mustufa, Christopher Ness, Roman
+      Neuhauser, Mats Nilsson, Greg Noel, Joe Orton, Eric Paire,
+      Dimitri Papadopoulos-Orfanos, Jerry Peek, Chris Pepper, Amy Lyn
+      Pilato, Kevin Pilch-Bisson, Hans Polak, Dmitriy Popkov, Michael
+      Price, Mark Proctor, Steffen Prohaska, Daniel Rall, Jack
+      Repenning, Tobias Ringstrom, Jason Robbins, Garrett Rooney, Joel
+      Rosdahl, M. S. Sriram, Christian Sauer, Ryan Schmidt, Jochem
+      Schulenklopper, Jens Seidel, Daniel Shahaf, Larry Shatzer, Danil
+      Shopyrin, Erik Sjoelund, Joey Smith, W. Snyder, Stefan Sperling,
+      Robert Spier, Russell Steicke, David Steinbrunner, Sander
+      Striker, David Summers, Johan Sundstroem, Ed Swierk, John
+      Szakmeister, Robert Tasarz, Michael W Thelen, Mason Thomas, Erik
+      van der Kolk, Joshua Varner, Eric Wadsworth, Chris Wagner, Colin
+      Watson, Alex Waugh, Chad Whitacre, Andy Whitcroft, Josef Wolf,
+      Luke Worth, Hyrum Wright, Blair Zajac, Florian Zumbiehl, and the
+      entire Subversion community.</para>
 -->
 
     <para>Schließlich danken wir den zahllosen Menschen, die zu
       diesem Buch durch informelle Rezensionen, Vorschläge, und
       Fehlerbehebungen beigetragen haben: Obwohl diese Liste
       zweifellos nicht vollständig ist, wäre dieses Buch unfertig und
-      fehlerhaft ohne die Hilfe von: David Anderson,
-      Jani Averbach, Ryan Barrett, Francois Beausoleil, Jennifer
-      Bevan, Matt Blais, Zack Brown, Martin Buchholz, Brane Cibej,
-      John R. Daily, Peter Davis, Olivier Davy, Robert P. J. Day, Mo
-      DeJong, Brian Denny, Joe Drew, Nick Duffek, Ben Elliston, Justin
-      Erenkrantz, Shlomi Fish, Julian Foad, Chris Foote, Martin
-      Furter, Vlad Georgescu, Dave Gilbert, Eric Gillespie, David
-      Glasser, Matthew Gregan, Art Haas, Eric Hanchrow, Greg Hudson,
-      Alexis Huxley, Jens B. Jorgensen, Tez Kamihira, David Kimdon,
-      Mark Benedetto King, Andreas J. Koenig, Nuutti Kotivuori, Matt
-      Kraai, Scott Lamb, Vincent Lefevre, Morten Ludvigsen, Paul
-      Lussier, Bruce A. Mah, Philip Martin, Feliciano Matias, Patrick
-      Mayweg, Gareth McCaughan, Jon Middleton, Tim Moloney,
-      Christopher Ness, Mats Nilsson, Joe Orton, Amy Lyn Pilato, Kevin
-      Pilch-Bisson, Dmitriy Popkov, Michael Price, Mark Proctor,
-      Steffen Prohaska, Daniel Rall, Jack Repenning, Tobias Ringstrom,
-      Garrett Rooney, Joel Rosdahl, Christian Sauer, Larry Shatzer,
-      Russell Steicke, Sander Striker, Erik Sjoelund, Johan
-      Sundstroem, John Szakmeister, Mason Thomas, Eric Wadsworth,
-      Colin Watson, Alex Waugh, Chad Whitacre, Josef Wolf, Blair
-      Zajac und die gesamte Subversion Gemeinde.</para>
+      fehlerhaft ohne die Hilfe von: Bhuvaneswaran A,
+      Arfrever Frehtes Taifersar Arahesis, David Alber, C. Scott
+      Ananian, David Anderson, Ariel Arjona, Seth Arnold, Jani
+      Averbach, Jens B. Jorgensen, Charles Bailey, Ryan Barrett,
+      Francois Beausoleil, Brian R. Becker, Mark Benedetto King, Yves
+      Bergeron, Karl Berry, Jennifer Bevan, Matt Blais, Jim Blandy,
+      Phil Bordelon, Sietse Brouwer, Tom Brown, Zack Brown, Martin
+      Buchholz, Paul Burba, Sean Callan-Hinsvark, Branko Cibej, Archie
+      Cobbs, Jason Cohen, Ryan Cresawn, John R. Daily, Peter Davis,
+      Olivier Davy, Robert P. J. Day, Mo DeJong, Brian Denny, Joe
+      Drew, Markus Dreyer, Nick Duffek, Boris Dusek, Ben Elliston,
+      Justin Erenkrantz, Kyle Ferrio, Shlomi Fish, Julian Foad, Chris
+      Foote, Martin Furter, Vlad Georgescu, Peter Gervai, Dave
+      Gilbert, Eric Gillespie, David Glasser, Marcel Gosselin, Lieven
+      Govaerts, Steve Greenland, Matthew Gregan, Tom Gregory, Maverick
+      Grey, Art Haas, Mark E. Hamilton, Eric Hanchrow, Liam Healy,
+      Karl Heinz Marbaise, Malte Helmert, Michael Henderson, Greg
+      Hudson, Alexis Huxley, Auke Jilderda, Toby Johnson, Tez
+      Kamihira, David Kimdon, Robert Kleemann, Erik Kline, Josh
+      Knowles, Andreas J. Koenig, Axel Kollmorgen, Nuutti Kotivuori,
+      Kalin Kozhuharov, Matt Kraai, Regis Kuckaertz, Stefan Kueng,
+      Steve Kunkee, Scott Lamb, Wesley J. Landaker, Benjamin
+      Landsteiner, Vincent Lefevre, Morten Ludvigsen, Dennis Lundberg,
+      Paul Lussier, Jens M. Felderhoff, Bruce A. Mah, Jonathon Mah,
+      Philip Martin, Feliciano Matias, Neil Mayhew, Patrick Mayweg,
+      Gareth McCaughan, Craig McElroy, Simon McKenna, Christophe
+      Meresse, Jonathan Metillon, Jean-Francois Michaud, Jon
+      Middleton, Robert Moerland, Marcel Molina Jr., Tim Moloney,
+      Alexander Mueller, Tabish Mustufa, Christopher Ness, Roman
+      Neuhauser, Mats Nilsson, Greg Noel, Joe Orton, Eric Paire,
+      Dimitri Papadopoulos-Orfanos, Jerry Peek, Chris Pepper, Amy Lyn
+      Pilato, Kevin Pilch-Bisson, Hans Polak, Dmitriy Popkov, Michael
+      Price, Mark Proctor, Steffen Prohaska, Daniel Rall, Jack
+      Repenning, Tobias Ringstrom, Jason Robbins, Garrett Rooney, Joel
+      Rosdahl, M. S. Sriram, Christian Sauer, Ryan Schmidt, Jochem
+      Schulenklopper, Jens Seidel, Daniel Shahaf, Larry Shatzer, Danil
+      Shopyrin, Erik Sjoelund, Joey Smith, W. Snyder, Stefan Sperling,
+      Robert Spier, Russell Steicke, David Steinbrunner, Sander
+      Striker, David Summers, Johan Sundstroem, Ed Swierk, John
+      Szakmeister, Robert Tasarz, Michael W Thelen, Mason Thomas, Erik
+      van der Kolk, Joshua Varner, Eric Wadsworth, Chris Wagner, Colin
+      Watson, Alex Waugh, Chad Whitacre, Andy Whitcroft, Josef Wolf,
+      Luke Worth, Hyrum Wright, Blair Zajac, Florian Zumbiehl
+      und die gesamte Subversion Gemeinde.</para>
 
     <!-- =============================================================== -->
     <sect2 id="svn.preface.acks.sussman">
@@ -929,7 +988,7 @@
 
 <!--
       <para>Thanks to my wife Frances, who, for many months, got to
-        hear, <quote>But honey, I'm still working on the book</quote>,
+        hear, <quote>But honey, I'm still working on the book,</quote>
         rather than the usual, <quote>But honey, I'm still doing
         email.</quote>  I don't know where she gets all that patience!
         She's my perfect counterbalance.</para>
@@ -966,7 +1025,7 @@
         wisst, wer ihr seid.</para>
 
 <!--
-      <para>Thanks to my parents for the perfect low-level formatting,
+      <para>Thanks to my parents for the perfect low-level formatting
         and being unbelievable role models.  Thanks to my kids for the
         opportunity to pass that on.</para>
 -->
@@ -988,7 +1047,7 @@
 <!--
       <para>Huge thanks to my wife Marie for being incredibly
         understanding, supportive, and most of all, patient.  Thank
-        you to my brother Eric who first introduced me to UNIX
+        you to my brother Eric who first introduced me to Unix
         programming way back when.  Thanks to my Mom and Grandmother
         for all their support, not to mention enduring a Christmas
         holiday where I came home and promptly buried my head in my
@@ -1094,10 +1153,10 @@
 <!--
       <para>Hats off to Shep Kendall, through whom the world of
         computers was first opened to me; Ben Collins-Sussman, my
-        tour-guide through the open-source world; Karl Fogel—you
+        tour-guide through the open source world; Karl Fogel, you
         <emphasis>are</emphasis> my <filename>.emacs</filename>; Greg
         Stein, for oozing practical programming know-how; Brian
-        Fitzpatrick—for sharing this writing experience with me.
+        Fitzpatrick, for sharing this writing experience with me.
         To the many folks from whom I am constantly picking up new
         knowledge—keep dropping it!</para>
 -->
@@ -1127,17 +1186,17 @@
   <sect1 id="svn.intro.whatis">
 
 <!--
-    <title>What is Subversion?</title>
+    <title>What Is Subversion?</title>
 -->
     <title>Was ist Subversion?</title>
       
 <!--
-    <para>Subversion is a free/open-source version control system.
+    <para>Subversion is a free/open source version control system.
       That is, Subversion manages files and directories, and the
       changes made to them, over time.  This allows you to recover
-      older versions of your data, or examine the history of how your
+      older versions of your data or examine the history of how your
       data changed.  In this regard, many people think of a version
-      control system as a sort of <quote>time machine</quote>.</para>
+      control system as a sort of <quote>time machine.</quote></para>
 -->
     <para>Subversion ist ein freies/Open-Source
       Versionskontrollsystem.  Das bedeutet, Subversion verwaltet
@@ -1174,7 +1233,7 @@
 <!--
     <para>Some version control systems are also software configuration
       management (SCM) systems.  These systems are specifically
-      tailored to manage trees of source code, and have many features
+      tailored to manage trees of source code and have many features
       that are specific to software development—such as natively
       understanding programming languages, or supplying tools for
       building software.  Subversion, however, is not one of these
@@ -1210,7 +1269,7 @@
 <!--
       <para>If you're a user or system administrator pondering the use
         of Subversion, the first question you should ask yourself is:
-        "is this the right tool for the job?"  Subversion is a
+        "Is this the right tool for the job?"  Subversion is a
         fantastic hammer, but be careful not to view every problem as
         a nail.</para>
 -->
@@ -1229,11 +1288,11 @@
         documents (usually over a network) and keep track of who made
         which changes, then Subversion is also appropriate.  This is
         why Subversion is so often used in software development
-        environments — programming is an inherently social
+        environments— programming is an inherently social
         activity, and Subversion makes it easy to collaborate with
         other programmers.  Of course, there's a cost to using
         Subversion as well: administrative overhead.  You'll need to
-        manage a data-repository to store the information and all its
+        manage a data repository to store the information and all its
         history, and be diligent about backing it up.  When working
         with the data on a daily basis, you won't be able to copy,
         move, rename, or delete files the way you usually do.
@@ -1268,10 +1327,11 @@
         a common misuse is to treat it as a generic distribution
         system.  People will sometimes use Subversion to distribute
         huge collections of photos, digital music, or software
-        packages.  The problem is, this sort of data usually isn't
+        packages.  The problem is that this sort of data usually isn't
         changing at all.  The collection itself grows over time, but
         the individual files within the collection aren't being
-        changed.  In this case, using Subversion is "overkill".
+        changed.  In this case, using Subversion
+        is <quote>overkill.</quote>
         <footnote>
           <para>Or as a friend puts it, <quote>swatting a fly with a
             Buick.</quote></para>
@@ -1324,7 +1384,7 @@
         In early 2000, CollabNet, Inc. (<ulink
         url="http://www.collab.net"/>) began seeking developers to
         write a replacement for CVS.  CollabNet offers a collaboration
-        software suite called CollabNet Enterprise Edition (CEE) of
+        software suite called CollabNet Enterprise Edition (CEE), of
         which one component is version control.  Although CEE used CVS
         as its initial version control system, CVS's limitations were
         obvious from the beginning, and CollabNet knew it would
@@ -1365,19 +1425,20 @@
         day at their jobs.  Their frustration with CVS had led Jim to
         think carefully about better ways to manage versioned data, and
         he'd already come up with not only the name
-        <quote>Subversion</quote>, but also with the basic design of the
-        Subversion data store.  When CollabNet called, Karl immediately
-        agreed to work on the project, and Jim got his employer, Red Hat
-        Software, to essentially donate him to the project for an
-        indefinite period of time.  CollabNet hired Karl and Ben
-        Collins-Sussman, and detailed design work began in May.  With
-        the help of some well-placed prods from Brian Behlendorf and
-        Jason Robbins of CollabNet, and Greg Stein (at the time an
-        independent developer active in the WebDAV/DeltaV specification
-        process), Subversion quickly attracted a community of active
-        developers.  It turned out that many people had had the same
-        frustrating experiences with CVS, and welcomed the chance to
-        finally do something about it.</para>
+        <quote>Subversion,</quote> but also with the basic design of
+        the Subversion data store.  When CollabNet called, Karl
+        immediately agreed to work on the project, and Jim got his
+        employer, Red Hat Software, to essentially donate him to the
+        project for an indefinite period of time.  CollabNet hired
+        Karl and Ben Collins-Sussman, and detailed design work began
+        in May 2000.  With the help of some well-placed prods from
+        Brian Behlendorf and Jason Robbins of CollabNet, and from Greg
+        Stein (at the time an independent developer active in the
+        WebDAV/DeltaV specification process), Subversion quickly
+        attracted a community of active developers.  It turned out
+        that many people had encountered the same frustrating
+        experiences with CVS and welcomed the chance to finally do
+        something about it.</para>
 -->
       <para>Im Februar 2000 nahmen sie Verbindung mit Karl Fogel auf,
         dem Autor von
@@ -1411,7 +1472,7 @@
       <para>The original design team settled on some simple goals.  They
         didn't want to break new ground in version control methodology,
         they just wanted to fix CVS.  They decided that Subversion would
-        match CVS's features, and preserve the same development model,
+        match CVS's features and preserve the same development model,
         but not duplicate CVS's most obvious flaws.  And although it did
         not need to be a drop-in replacement for CVS, it should be
         similar enough that any CVS user could make the switch with
@@ -1429,10 +1490,10 @@
         wäre.</para>
   
 <!--
-      <para>After fourteen months of coding, Subversion became
+      <para>After 14 months of coding, Subversion became
         <quote>self-hosting</quote> on August 31, 2001.  That is,
         Subversion developers stopped using CVS to manage Subversion's
-        own source code, and started using Subversion instead.</para>
+        own source code and started using Subversion instead.</para>
 -->
       <para>Nach vierzehn Monaten Programmierung wurde Subversion am
         31. August 2001 <quote>selbstbewirtend</quote>, d.h., die
@@ -1443,7 +1504,7 @@
 <!--
       <para>While CollabNet started the project, and still funds a large
         chunk of the work (it pays the salaries of a few full-time
-        Subversion developers), Subversion is run like most open-source
+        Subversion developers), Subversion is run like most open source
         projects, governed by a loose, transparent set of rules that
         encourage meritocracy.  CollabNet's copyright license is fully
         compliant with the Debian Free Software Guidelines.  In other
@@ -1714,6 +1775,8 @@
     </sect2>
 
     <!-- =============================================================== -->
+=======
+>>>>>>> .merge-rechts.r3180
     <sect2 id="svn.intro.architecture">
   
 <!--
@@ -1732,7 +1795,7 @@
       
       <figure id="svn.intro.architecture.dia-1">
 <!--
-        <title>Subversion's Architecture</title>
+        <title>Subversion's architecture</title>
 -->
         <title>Die Architektur von Subversion</title>
         <graphic fileref="images/ch01dia1.png"/>
@@ -1825,7 +1888,7 @@
           <term>svnadmin</term>
           <listitem>
 <!--
-            <para>A tool for creating, tweaking or repairing a Subversion
+            <para>A tool for creating, tweaking, or repairing a Subversion
               repository.</para>
 -->
             <para>Ein Werkzeug zum Erstellen, Verändern oder
@@ -1875,6 +1938,14 @@
         </varlistentry>
 
         <varlistentry>
+          <term>svndumpfilter</term>
+          <listitem>
+            <para>A program for filtering Subversion repository dump
+              streams.</para>
+          </listitem>
+        </varlistentry>
+  
+        <varlistentry>
           <term>svnsync</term>
           <listitem>
 <!--
@@ -2089,6 +2160,109 @@
 
     </sect2>
 
+=======
+  <!-- =============================================================== -->
+    <sect2 id="svn.intro.whatsnew">
+
+      <title>What's New in Subversion</title>
+
+      <para>The first edition of this book was released in 2004,
+        shortly after Subversion had reached 1.0.  Over the following
+        four years Subversion released five major new versions, fixing
+        bugs and adding major new features.  While we've managed to
+        keep the online version of this book up to date, we're
+        thrilled that the second edition from O'Reilly now covers
+        Subversion up through release 1.5, a major milestone for the
+        project.  Here's a quick summary of major new changes since
+        Subversion 1.0.  Note that this is not a complete list; for
+        full details, please visit Subversion's web site at
+        <ulink url="http://subversion.tigris.org"/>.</para>
+
+      <variablelist>
+
+        <varlistentry>
+          <term>Subversion 1.1 (September 2004)</term>
+          <listitem>
+            <para>Release 1.1 introduced FSFS, a flat-file repository
+              storage option for the repository.  While the Berkeley DB
+              back-end is still widely used and supported, FSFS has
+              since become the default choice for
+              newly-created repositories due to its low barrier to
+              entry and minimal maintenance requirements.  Also in
+              this release came the ability to put symbolic links
+              under version control, auto-escaping of URLs, and a
+              localized user interface.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>Subversion 1.2 (May 2005)</term>
+          <listitem>
+            <para>Release 1.2 introduced the ability to create
+              server-side locks on files, thus serializing commit
+              access to certain resources.  While Subversion is still
+              a fundamentally concurrent version control system,
+              certain types of binary files (art assets, for example)
+              cannot be merged together.  The locking feature fulfills
+              the need to version and protect such resources.  With
+              locking also came a complete WebDAV auto-versioning
+              implementation, allowing Subversion repositories to be
+              mounted as network folders.  Finally, Subversion 1.2
+              began using a new, faster binary-differencing algorithm
+              to compress and retrieve old versions of files.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>Subversion 1.3 (December 2005)</term>
+          <listitem>
+            <para>Release 1.3 brought path-based authorization
+              controls to the <command>svnserve</command> server,
+              matching a feature formerly found only in the Apache
+              server.  The Apache server, however, gained some new
+              logging features of its own, and Subversion's API
+              bindings to other languages also made great leaps
+              forward.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>Subversion 1.4 (September 2006)</term>
+          <listitem>
+            <para>Release 1.4 introduced a whole new
+              tool—<command>svnsync</command>—for doing
+              one-way repository replication over a network.  Major
+              parts of the working copy metadata were revamped to no
+              longer use XML (resulting in client side speed gains),
+              while the Berkeley DB repository back-end gained the
+              ability to automatically recover itself after a server
+              crash.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>Subversion 1.5 (June 2008)</term>
+          <listitem>
+            <para>Release 1.5 took much longer to finish than prior
+              releases, but the headliner feature was gigantic:
+              semi-automated tracking of branching and merging.  This
+              was a huge boon for users, and pushed Subversion far
+              beyond the abilities of CVS and into the ranks of
+              commercial competitors such as Perforce and Clearcase.
+              Subversion 1.5 also introduced a bevy of other
+              user-focused features, such as interactive resolution of
+              file conflicts, partial checkouts, client side
+              management of changelists, powerful new syntax for
+              externals definitions, and SASL authentication support for
+              the <command>svnserve</command> server.</para>
+          </listitem>
+        </varlistentry>
+
+      </variablelist>
+
+    </sect2>
+
+>>>>>>> .merge-rechts.r3180
   </sect1>
 
 </preface>

Modified: trunk/src/de/book/ch01-fundamental-concepts.xml
==============================================================================
--- trunk/src/de/book/ch01-fundamental-concepts.xml	(original)
+++ trunk/src/de/book/ch01-fundamental-concepts.xml	Sun Jun 29 14:23:17 2008
@@ -541,6 +541,64 @@
         die Shell alles als ein Argument für das
         <command>svn</command> Programm behandelt.</para>
 
+      <sidebar id="svn.basic.in-action.wc.sb-1">
+        <title>Repository URLs</title>
+
+        <para>Subversion repositories can be accessed through many
+          different methods—on local disk or through various
+          network protocols, depending on how your administrator has
+          set things up for you.  A repository location, however, is
+          always a URL.
+          <xref linkend="svn.basic.in-action.wc.tbl-1"/> describes how
+          different URL schemes map to the available access
+          methods.</para>
+
+        <table id="svn.basic.in-action.wc.tbl-1">
+          <title>Repository access URLs</title>
+          <tgroup cols="2">
+            <thead>
+              <row>
+                <entry>Schema</entry>
+                <entry>Access method</entry>
+              </row>
+            </thead>
+            <tbody>
+              <row>
+                <entry><literal>file:///</literal></entry>
+                <entry>Direct repository access (on local disk)</entry>
+              </row>
+              <row>
+                <entry><literal>http://</literal></entry>
+                <entry>Access via WebDAV protocol to Subversion-aware
+                  Apache server</entry>
+              </row>
+              <row>
+                <entry><literal>https://</literal></entry>
+                <entry>Same as <literal>http://</literal>, but with
+                  SSL encryption.</entry>
+              </row>
+              <row>
+                <entry><literal>svn://</literal></entry>
+                <entry>Access via custom protocol to an
+                  <literal>svnserve</literal> server</entry>
+              </row>
+              <row>
+                <entry><literal>svn+ssh://</literal></entry>
+                <entry>Same as <literal>svn://</literal>, but through
+                  an SSH tunnel.</entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </table>
+
+        <para>For more information on how Subversion parses URLs, see
+        <xref linkend="svn.advanced.reposurls"/>.  For more
+        information on the different types of network servers
+        available for Subversion, see
+        <xref linkend="svn.serverconfig"/>.</para>
+
+      </sidebar>
+
     </sect2>
 
     <!-- =============================================================== -->
@@ -588,7 +646,7 @@
         changes to the other people working with you on your project
         (by writing to the repository).  If other people publish their
         own changes, Subversion provides you with commands to merge
-        those changes into your working directory (by reading from the
+        those changes into your working copy (by reading from the
         repository).</para>
 -->
       <para>Nachdem Sie einige Änderungen an den Dateien Ihrer
@@ -684,13 +742,13 @@
 Checked out revision 56.
 
 $ ls -A calc
-Makefile  integer.c  button.c  .svn/
+Makefile  button.c integer.c .svn/
 </screen>
 
 <!--
-      <para>The list of letter As in the left margin indicates that
-        Subversion is adding a number of items to your working copy.
-        You now have a personal copy of the
+      <para>The list of letter <literal>A</literal>s in the left
+        margin indicates that Subversion is adding a number of items
+        to your working copy.  You now have a personal copy of the
         repository's <filename>/calc</filename> directory, with one
         additional entry—<filename>.svn</filename>—which
         holds the extra information needed by Subversion, as mentioned
@@ -791,7 +849,7 @@
 /home/sally/calc
 
 $ ls -A
-.svn/ Makefile integer.c button.c
+Makefile button.c integer.c .svn/
 
 $ svn update
 U    button.c

Modified: trunk/src/de/book/ch02-basic-usage.xml
==============================================================================
--- trunk/src/de/book/ch02-basic-usage.xml	(original)
+++ trunk/src/de/book/ch02-basic-usage.xml	Sun Jun 29 14:23:17 2008
@@ -100,7 +100,7 @@
 <!--
         <para>The Subversion command-line client has numerous command
           modifiers (which we call options), but there are two
-          distinct kinds of options: short options>
+          distinct kinds of options:  short options
           are a single hyphen followed by a single letter, and
           long options consist of two hyphens
           followed by a number of letters (e.g. <literal>-s</literal>
@@ -369,14 +369,15 @@
         Kodierungen heutzutage der Fall ist).</para>
 
 <!--
-      <para>In addition, path names are used as XML attribute values
-        in WebDAV exchanges, as well in as some of Subversion's
-        housekeeping files.  This means that path names can contain
-        only legal XML (1.0) characters.  Subversion also prohibits
-        TAB, CR, and LF characters in path names to prevent paths from
-        being broken up in diffs or in the output of commands such as
-        <command>svn log</command> or <command>svn
-        status</command>.</para>
+      <para>In WebDAV exchanges and older versions of some of
+        Subversion's administrative files, paths are used as XML
+        attribute values, and property names in XML tag names.  This
+        means that path names can contain only legal XML (1.0)
+        characters, and properties are further limited to ASCII
+        characters.  Subversion also prohibits TAB, CR, and LF
+        characters in path names to prevent paths from being broken up
+        in diffs or in the output of commands such as <command>svn
+        log</command> or <command>svn status</command>.</para>
 -->
       <para>Darüberhinaus werden Pfadnamen sowohl bei
         WebDAV-Übertragungen als auch in einigen der Steuerdateien von
@@ -770,7 +771,7 @@
             <para><command>svn update</command></para>
           </listitem>
           <listitem>
-            <para><command>svn resolved</command></para>
+            <para><command>svn resolve</command></para>
           </listitem>
         </itemizedlist>
       </listitem>
@@ -834,7 +835,7 @@
         <command>svn update</command>, a letter code is displayed next
         to each item to let you know what actions Subversion performed
         to bring your working copy up-to-date.  To find out what these
-        letters mean, see <command>svn help update</command>.</para>
+        letters mean, run <command>svn help update</command>.</para>
 -->
       <para>Wenn der Server über <command>svn update</command>
         Änderungen an Ihre Arbeitskopie schickt, wird ein
@@ -842,7 +843,6 @@
         anzuzeigen, was Subversion gemacht hat, um die Arbeitskopie
         auf den neuesten Stand zu bringen. Zur Bedeutung der
         Buchstaben, siehe <command>svn help update</command>.</para>
-
     </sect2>
 
     <!-- =============================================================== -->
@@ -989,7 +989,7 @@
               underneath <filename>foo</filename> will be scheduled
               for addition.  If you want only to add
               <filename>foo</filename> itself, pass the
-              <option>- -depth empty</option> option.</para>
+              <option>--depth empty</option> option.</para>
 -->
             <para>Die Datei, das Verzeichnis oder den symbolischen
               Link <filename>foo</filename> zum Hinzufügen in das
@@ -1024,7 +1024,7 @@
                   get back anything you delete by checking out (or
                   updating your working copy to) a revision earlier
                   than the one in which you deleted it. Also see <xref
-                  linkend="svn.branchmerge.advanced.resurrect"
+                  linkend="svn.branchmerge.basicmerging.resurrect"
                   />.</para>
               </footnote>
             </para>
@@ -1066,7 +1066,7 @@
               originally come from <filename>foo</filename>).
               <command>svn copy</command> does not create intermediate
               directories unless you pass the
-              <option>- -parents</option>.</para>
+              <option>--parents</option> option.</para>
 -->
             <para>Erzeuge ein neues Objekt <filename>bar</filename>
               als Duplikat von <filename>foo</filename> und merke
@@ -1092,7 +1092,7 @@
               <filename>foo</filename> is scheduled for removal.
               <command>svn move</command> does not create intermediate
               directories unless you pass the
-              <option>- -parents</option>.</para>
+              <option>--parents</option> option.</para>
 -->
             <para>Dieser Befehl macht genau das gleiche wie
               <command>svn copy foo bar; svn delete foo</command>.
@@ -1225,7 +1225,7 @@
           connection, such as travelling on an airplane, riding a
           commuter train, or hacking on the beach.
           <footnote>
-            <para>And also that you don't have a WAN card.  Thought
+            <para>And also that you don't have a WLAN card.  Thought
               you got us, huh?</para>
           </footnote>
         </para>
@@ -1857,7 +1857,8 @@
 U  INSTALL
 G  README
 Conflict discovered in 'bar.c'.
-Select: (p) postpone, (df) diff-full, (e) edit, (h) help for more options: 
+Select: (p) postpone, (df) diff-full, (e) edit,
+        (h) help for more options:
 </screen>
 
       <para>The <computeroutput>U</computeroutput> and
@@ -1872,8 +1873,8 @@
         changes coming from the repository didn't overlap with the local
         changes.</para>
 
-      <para>But the next line is part of a feature new in Subversion
-        1.5 called <firstterm>interactive conflict
+      <para>But the next two lines are part of a feature (new in
+        Subversion 1.5) called <firstterm>interactive conflict
         resolution</firstterm>.  This means that the changes from the
         server overlapped with your own, and you have the opportunity
         to resolve this conflict.  The most commonly used options are
@@ -1881,7 +1882,7 @@
         typing <replaceable>h</replaceable>:</para>
 
       <screen>
-...
+…
   (p)  postpone    - mark the conflict to be resolved later
   (df) diff-full   - show all changes made to merged file
   (e)  edit        - change merged file in an editor
@@ -1945,7 +1946,7 @@
         </varlistentry>
 
         <varlistentry>
-          <term><computeroutput>(m)ine</computeroutput></term>
+          <term><computeroutput>(m)ine-(f)ull</computeroutput></term>
           <listitem>
 
             <para>Discard the newly received changes from the server
@@ -1955,7 +1956,7 @@
         </varlistentry>
 
         <varlistentry>
-          <term><computeroutput>(t)heirs</computeroutput></term>
+          <term><computeroutput>(t)heirs-(f)ull</computeroutput></term>
           <listitem>
 
             <para>Discard your local changes to the file under review
@@ -2003,8 +2004,9 @@
           (<command>d</command>) is what you'll use for this:</para>
 
         <screen>
-...
-Select: (p) postpone, (df) diff-full, (e) edit, (h)elp for more options : d
+…
+Select: (p) postpone, (df) diff-full, (e) edit,
+        (h)elp for more options : d
 --- .svn/text-base/sandwich.txt.svn-base      Tue Dec 11 21:33:57 2007
 +++ .svn/tmp/tempfile.32.tmp     Tue Dec 11 21:34:33 2007
 @@ -1 +1,5 @@
@@ -2014,7 +2016,7 @@
 +=======
 +Bring me a taco!
 +>>>>>>> .r32
-...
+…
 </screen>
 
         <para>The first line of the diff content shows the previous
@@ -2063,7 +2065,7 @@
           script for Subversion to invoke.  After you've edited the
           file, if you're satisfied with the changes you've made, you
           can tell Subversion that the edited file is no longer in
-          conflict by using the <quote>resolved</quote> command
+          conflict by using the <quote>resolve</quote> command
           (<literal>r</literal>).</para>
 
           <!-- TODO(fitz): I think the above detail on the merge tool -->
@@ -2072,9 +2074,10 @@
         <para>If you decide that you don't need to merge any changes,
           but just want to accept one version of the file or the
           other, you can either choose your changes (aka
-          <quote>mine</quote>) by using the <quote>mine</quote>
-          command (<command>m</command>) or choose theirs by using the
-          <quote>theirs</quote> command (<command>t</command>).</para>
+          <quote>mine</quote>) by using the <quote>mine-full</quote>
+          command (<command>mf</command>) or choose theirs by using the
+          <quote>theirs-full</quote> command
+          (<command>tf</command>).</para>
 
       </sect3>
 
@@ -2146,7 +2149,8 @@
               </varlistentry>
 
               <varlistentry>
-                <term><filename>filename.rOLDREV</filename></term>
+                <term><filename>filename.r<replaceable>OLDREV</replaceable>
+                      </filename></term>
                 <listitem>
                   <para>This is the file that was the
                     <literal>BASE</literal> revision before you updated
@@ -2157,7 +2161,8 @@
               </varlistentry>
 
               <varlistentry>
-                <term><filename>filename.rNEWREV</filename></term>
+                <term><filename>filename.r<replaceable>NEWREV</replaceable>
+                      </filename></term>
                 <listitem>
                   <para>This is the file that your Subversion client
                     just received from the server when you updated your
@@ -2169,9 +2174,9 @@
 
             </variablelist>
 
-            <para>Here <literal>OLDREV</literal> is the revision number
+            <para>Here <replaceable>OLDREV</replaceable> is the revision number
               of the file in your <filename>.svn</filename> directory,
-              and <literal>NEWREV</literal> is the revision number of
+              and <replaceable>NEWREV</replaceable> is the revision number of
               the repository <literal>HEAD</literal>.</para>
           </listitem>
 
@@ -2186,7 +2191,8 @@
         <screen>
 $ svn update
 Conflict discovered in 'sandwich.txt'.
-Select: (p) postpone, (df) diff-full, (e) edit, (h)elp for more options : p
+Select: (p) postpone, (df) diff-full, (e) edit,
+        (h)elp for more options : p
 C  sandwich.txt
 Updated to revision 2.
 $ ls -1
@@ -2207,42 +2213,40 @@
 svn: Aborting commit: '/home/sally/svn-work/sandwich.txt' remains in conflict
 </screen>
 
-        <para>If you've postponed a conflict, you need to do one of three
-          things:</para>
-
-          <itemizedlist>
-
-            <listitem>
-              <para>Merge the conflicted text <quote>by hand</quote> (by
-                examining and editing the conflict markers within the
-                file).</para>
-            </listitem>
-
-            <listitem>
-              <para>Copy one of the temporary files on top of your
-                working file.</para>
-            </listitem>
-
-            <listitem>
-              <para>Run <command>svn revert <FILENAME></command>
-                to throw away all of your local changes.</para>
-            </listitem>
-
-          </itemizedlist>
-
-        <para>Once you've resolved the conflict, you need to let
-          Subversion know by running <command>svn resolved</command>.
-          This removes the three temporary files, and Subversion no
-          longer considers the file to be in a state of conflict.
-          <footnote>
-            <para>You can always remove the temporary files yourself,
-              but would you really want to do that when Subversion can
-              do it for you?  We didn't think so.</para>
-          </footnote>
-        </para>
+        <para>If you've postponed a conflict, you need to resolve the
+          conflict before Subversion will allow you to commit your
+          changes.  You'll do this with the <command>svn
+          resolve</command> command and one of several arguments to
+          the <option>--accept</option> option.</para>
+
+        <para>If you want to choose the version of the file that you
+          last checked out before making your edits, choose
+          the <replaceable>base</replaceable> argument.</para>
+
+        <para>If you want to choose the version that contains only
+          your edits, choose the <replaceable>mine-full</replaceable>
+          argument.</para>
+
+        <para>If you want to choose the version that your most recent
+          update pulled from the server (and thus discarding your
+          edits entirely), choose
+          the <replaceable>theirs-full</replaceable> argument.</para>
+
+        <para>However, if you want to pick and choose from your
+          changes and the changes that your update fetched from the
+          server, merge the conflicted text <quote>by hand</quote> (by
+          examining and editing the conflict markers within the file)
+          and then choose the <replaceable>working</replaceable>
+          argument.</para>
+
+        <para><command>svn resolve</command> removes the three
+          temporary files, accepts the version of the file that you
+          specified with the <option>--accept</option> option, and
+          Subversion no longer considers the file to be in a state of
+          conflict.</para>
 
         <screen>
-$ svn resolved sandwich.txt
+$ svn resolve --accept working sandwich.txt
 Resolved conflicted state of 'sandwich.txt'
 </screen>
 
@@ -2335,18 +2339,20 @@
 Bottom piece of bread
 </screen>
 
-        <para>Now run <command>svn resolved</command>, and you're
+        <para>Now run <command>svn resolve</command>, and you're
           ready to commit your changes:</para>
 
         <screen>
-$ svn resolved sandwich.txt
+$ svn resolve --accept working sandwich.txt
+Resolved conflicted state of 'sandwich.txt'
 $ svn commit -m "Go ahead and use my sandwich, discarding Sally's edits."
 </screen>
 
-        <para>Note that <command>svn resolved</command>, unlike most
-          of the other commands we deal with in this chapter, requires
-          an argument.  In any case, you want to be careful and run
-          <command>svn resolved</command> only when you're certain that
+        <para>Note that <command>svn resolve</command>, unlike most of
+          the other commands we deal with in this chapter, requires
+          that you explicitly list any filenames that you wish to
+          resolve.  In any case, you want to be careful and run
+          <command>svn resolve</command> only when you're certain that
           you've fixed the conflict in your file—once the
           temporary files are removed, Subversion will let you commit
           the file even if it still contains conflict markers.</para>
@@ -2361,22 +2367,25 @@
       </sect3>
 
       <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-      <sect3 id="svn.tour.cycle.resolve.copyover">
-        <title>Copying a file onto your working file</title>
-
+      <sect3 id="svn.tour.cycle.resolve.theirsfull">
+        <title>Discarding your changes in favor of a newly fetched revision</title>
+  
         <para>If you get a conflict and decide that you want to throw
-          out your changes, you can merely copy one of the temporary
-          files created by Subversion over the file in your working
-          copy:</para>
+          out your changes, you can run <command>svn resolve --accept
+          theirs-full</command> and Subversion will discard your edits
+          and remove the temporary files:</para>
 
-        <screen>
+       <screen>
 $ svn update
-C  sandwich.txt
+Conflict discovered in 'sandwich.txt'.
+Select: (p) postpone, (df) diff-full, (e) edit,
+        (h) help for more options: p
+C    sandwich.txt
 Updated to revision 2.
 $ ls sandwich.*
 sandwich.txt  sandwich.txt.mine  sandwich.txt.r2  sandwich.txt.r1
-$ cp sandwich.txt.r2 sandwich.txt
-$ svn resolved sandwich.txt
+$ svn resolve --accept theirs-full sandwich.txt
+Resolved conflicted state of 'sandwich.txt'
 </screen>
 
       </sect3>
@@ -2385,9 +2394,9 @@
       <sect3 id="svn.tour.cycle.resolve.revert">
         <title>Punting: using <command>svn revert</command></title>
 
-        <para>If you get a conflict and upon examination decide that
-          you want to throw out your changes and start your edits
-          again, just revert your changes:</para>
+        <para>If you decide that you want to throw out your changes
+          and start your edits again (Whether this occurs after a
+          conflict or anytime), just revert your changes:</para>
 
         <screen>
 $ svn revert sandwich.txt
@@ -2397,7 +2406,7 @@
 </screen>
 
         <para>Note that when you revert a conflicted file, you don't
-          have to run <command>svn resolved</command>.</para>
+          have to run <command>svn resolve</command>.</para>
 
       </sect3>
 
@@ -2458,7 +2467,7 @@
 Waiting for Emacs...Done
 
 Log message unchanged or not specified
-a)bort, c)ontinue, e)dit
+(a)bort, (c)ontinue, (e)dit
 a
 $
 </screen>
@@ -2475,7 +2484,7 @@
 $ svn commit -m "Add another rule"
 Sending        rules.txt
 svn: Commit failed (details follow):
-svn: Your file or directory 'sandwich.txt' is probably out of date
+svn: File '/sandwich.txt' is out of date
 …
 </screen>
 
@@ -2570,15 +2579,15 @@
       <screen>
 $ svn log
 ------------------------------------------------------------------------
-r3 | sally | Mon, 15 Jul 2002 18:03:46 -0500 | 1 line
+r3 | sally | 2008-05-15 23:09:28 -0500 (Thu, 15 May 2008) | 1 line
 
 Added include lines and corrected # of cheese slices.
 ------------------------------------------------------------------------
-r2 | harry | Mon, 15 Jul 2002 17:47:57 -0500 | 1 line
+r2 | harry | 2008-05-14 18:43:15 -0500 (Wed, 14 May 2008) | 1 line
 
 Added main() methods.
 ------------------------------------------------------------------------
-r1 | sally | Mon, 15 Jul 2002 17:40:08 -0500 | 1 line
+r1 | sally | 2008-05-10 19:50:31 -0500 (Sat, 10 May 2008) | 1 line
 
 Initial import
 ------------------------------------------------------------------------
@@ -2651,7 +2660,7 @@
       <screen>
 $ svn log -r 8 -v
 ------------------------------------------------------------------------
-r8 | sally | 2002-07-14 08:15:29 -0500 | 1 line
+r8 | sally | 2008-05-21 13:19:25 -0500 (Wed, 21 May 2008) | 1 line
 Changed paths:
    M /trunk/code/foo.c
    M /trunk/code/bar.h
@@ -2951,7 +2960,7 @@
           committed changes, but this won't work as you can't commit
           changes that you obtain from backdating a working copy if
           the changed files have newer revisions.  See <xref
-          linkend="svn.branchmerge.advanced.resurrect"/> for a
+          linkend="svn.branchmerge.basicmerging.resurrect"/> for a
           description of how to <quote>undo</quote> a commit.</para>
       </tip>
 

Modified: trunk/src/de/book/ch03-advanced-topics.xml
==============================================================================
--- trunk/src/de/book/ch03-advanced-topics.xml	(original)
+++ trunk/src/de/book/ch03-advanced-topics.xml	Sun Jun 29 14:23:17 2008
@@ -298,14 +298,14 @@
       two-column tables that map property names to arbitrary values
       attached to each item in your working copy.  Generally speaking,
       the names and values of the properties can be whatever you want
-      them to be, with the constraint that the names must be
-      human-readable text.  And the best part about these properties
-      is that they, too, are versioned, just like the textual contents
-      of your files.  You can modify, commit, and revert property
-      changes as easily as you can file content changes.  And the
-      sending and receiving of property changes occurs as part of your
-      typical commit and update operations—you don't have to
-      change your basic processes to accommodate them.</para>
+      them to be, with the constraint that the names must contain only
+      ASCII characters.  And the best part about these properties is
+      that they, too, are versioned, just like the textual contents of
+      your files.  You can modify, commit, and revert property changes
+      as easily as you can file content changes.  And the sending and
+      receiving of property changes occurs as part of your typical
+      commit and update operations—you don't have to change your
+      basic processes to accommodate them.</para>
 
     <note>
       <para>Subversion has reserved the set of properties whose names
@@ -714,9 +714,10 @@
       <para>Notice how the <command>status</command> subcommand
         displays <literal>M</literal> in the second column instead of
         the first.  That is because we have modified the properties on
-        <filename>calc/button.c</filename>, but not its
-        textual contents.  Had we changed both, we would have seen
-        <literal>M</literal> in the first column, too (see <xref
+        <filename>calc/button.c</filename>, but not its textual
+        contents.  Had we changed both, we would have seen
+        <literal>M</literal> in the first column, too.  (We cover
+        <command>svn status</command> in <xref
         linkend="svn.tour.cycle.examine.status" />).</para>
 
       <sidebar>
@@ -730,8 +731,11 @@
           state.</para>
  
         <screen>
-% svn update calc
+$ svn update calc
 M  calc/Makefile.in
+Conflict for property 'linecount' discovered on 'calc/button.c'.
+Select: (p) postpone, (df) diff-full, (e) edit,
+        (s) show all options: p
  C calc/button.c
 Updated to revision 143.
 $ 
@@ -752,7 +756,8 @@
  C     calc/button.c
 ?      calc/button.c.prej
 $ cat calc/button.c.prej 
-prop 'linecount': user set to '1256', but update set to '1301'.
+Trying to change property 'linecount' from '1267' to '1301',
+but property has been locally changed from '1267' to '1256'.
 $
 </screen>
  
@@ -1161,9 +1166,7 @@
             <para>This causes the file to contain
               <literal>CR</literal> characters for EOL markers,
               regardless of the operating system in use.  This
-              line-ending style is not very common.  It was used on
-              older Macintosh platforms (on which Subversion doesn't
-              even run).</para>
+              line-ending style is not very common.</para>
           </listitem>
         </varlistentry>
       </variablelist>
@@ -1469,6 +1472,32 @@
       its ignores list and operate on all the files and directories
       present.</para>
 
+    <tip>
+      <para>Even if <literal>svn:ignore</literal> is set, you may run
+        into problems if you use shell wildcards in a command.  Shell
+        wildcards are expanded into an explicit list of targets before
+        Subversion operates on them, so running <command>svn
+        <replaceable>SUBCOMMAND</replaceable> *</command> is just like
+        running <command>svn <replaceable>SUBCOMMAND</replaceable>
+        file1 file2 file3 …</command>.  In the case of the
+        <command>svn add</command> command, this has an effect similar
+        to passing the <option>--no-ignore</option> option.  So
+        instead of using a wildcard, use <command>svn add --force
+        .</command> to do a bulk scheduling of unversioned things for
+        addition.  The explicit target will ensure that the current
+        directory isn't overlooked because of being already under
+        version control, and the <option>--force</option> option will
+        cause Subversion to crawl through that directory, adding
+        unversioned files while still honoring the
+        <literal>svn:ignore</literal> property and
+        <literal>global-ignores</literal> runtime configuration
+        variable.  Be sure to also provide the <option>--depth
+        files</option> option to the <command>svn add</command>
+        command if you don't want a fully recursive crawl for things
+        to add.</para>
+
+      </tip>
+
   </sect1>
 
   <!-- ================================================================= -->
@@ -1870,7 +1899,7 @@
         <term><literal>--depth files</literal></term>
         <listitem>
           <para>Include the immediate target of the operation and any
-            of its immediate file chidren.</para>
+            of its immediate file children.</para>
         </listitem>
       </varlistentry>
 
@@ -1878,7 +1907,7 @@
         <term><literal>--depth immediates</literal></term>
         <listitem>
           <para>Include the immediate target of the operation and any
-            of its immediate file or directory chidren.  The directory
+            of its immediate file or directory children.  The directory
             children will themselves be empty.</para>
         </listitem>
       </varlistentry>
@@ -2007,7 +2036,7 @@
 
     <screen>
 $ rm -rf mom-empty
-$ svn checkout file://`pwd`/repos/mom mom-empty --depth empty
+$ svn checkout file:///var/svn/repos mom-empty --depth empty
 Checked out revision 1.
 $ svn update --set-depth empty mom-empty/son
 A    mom-empty/son
@@ -2203,11 +2232,11 @@
       <para>In this section, and almost everywhere in this book, the
         words <quote>lock</quote> and <quote>locking</quote> describe
         a mechanism for mutual exclusion between users to avoid
-        clashing commits. Unfortunately, there are two other sorts
+        clashing commits.  Unfortunately, there are two other sorts
         of <quote>lock</quote> with which Subversion, and therefore
         this book, sometimes needs to be concerned.</para>
 
-      <para>The first is <firstterm>working copy locks</firstterm>,
+      <para>The second is <firstterm>working copy locks</firstterm>,
         used internally by Subversion to prevent clashes between
         multiple Subversion clients operating on the same working
         copy.  This is the sort of lock indicated by an
@@ -2216,7 +2245,7 @@
         <command>svn cleanup</command> command, as described in <xref
         linkend="svn.tour.cleanup"/>.</para>
 
-      <para>Secondly, there are <firstterm>database locks</firstterm>,
+      <para>Thirdly, there are <firstterm>database locks</firstterm>,
         used internally by the Berkeley DB backend to prevent clashes
         between multiple programs trying to access the database.  This
         is the sort of lock whose unwanted persistence after an error
@@ -2367,9 +2396,9 @@
 $ svn commit -m "Delete useless file."
 Deleting       banana.jpg
 svn: Commit failed (details follow):
-svn: DELETE of
-'/repos/project/!svn/wrk/64bad3a9-96f9-0310-818a-df4224ddc35d/banana.jpg':
-423 Locked (http://svn.example.com)
+svn: Server sent unexpected return value (423 Locked) in response to DELETE\
+ request for '/repos/project/!svn/wrk/64bad3a9-96f9-0310-818a-df4224ddc35d/\
+banana.jpg'
 $
 </screen>
 
@@ -2764,24 +2793,15 @@
     <para>Fortunately, Subversion provides support for
       <firstterm>externals definitions</firstterm>.  An externals
       definition is a mapping of a local directory to the
-      URL—and ideally a particular revision—of a
-      versioned directory.  In Subversion, you declare externals
-      definitions in groups using the <literal>svn:externals</literal>
-      property.  You can create or modify this property using
-      <command>svn propset</command> or <command>svn
-      propedit</command> (see <xref linkend="svn.advanced.props.manip"
-      />).  It can be set on any versioned directory, and its value is
-      a multiline table of subdirectories (relative to the versioned
-      directory on which the property is set), optional revision
-      flags, and fully qualified, absolute Subversion repository
-      URLs.</para>
-
-    <screen>
-$ svn propget svn:externals calc
-third-party/sounds             http://sounds.red-bean.com/repos
-third-party/skins              http://skins.red-bean.com/repositories/skinproj
-third-party/skins/toolkit -r21 http://svn.red-bean.com/repos/skin-maker
-</screen>
+      URL—and ideally a particular revision—of a versioned
+      directory.  In Subversion, you declare externals definitions in
+      groups using the <literal>svn:externals</literal> property.  You
+      can create or modify this property using <command>svn
+      propset</command> or <command>svn propedit</command> (see <xref
+      linkend="svn.advanced.props.manip" />).  It can be set on any
+      versioned directory, and its value describes both the external
+      repository location and the client-side directory to which that
+      location should be checked out.</para>
 
     <para>The convenience of the <literal>svn:externals</literal>
       property is that once it is set on a versioned directory,
@@ -2799,10 +2819,42 @@
         when it checks out the external working copy.</para>
     </warning>
 
-    <para>Note the previous externals definition example.  When
-      someone checks out a working copy of the
-      <filename>calc</filename> directory, Subversion also continues
-      to check out the items found in its externals definition.</para>
+    <para>You also get in the externals definition design all the
+      regular benefits of Subversion properties.  The definitions are
+      versioned.  If you need to change an externals definition, you
+      can do so using the regular property modification subcommands.
+      When you commit a change to the <literal>svn:externals</literal>
+      property, Subversion will synchronize the checked-out items
+      against the changed externals definition when you next run
+      <command>svn update</command>.  The same thing will happen when
+      others update their working copies and receive your changes to
+      the externals definition.</para>
+
+    <tip>
+      <para>Because the <literal>svn:externals</literal> property has
+        a multiline value, we strongly recommend that you use
+        <command>svn propedit</command> instead of <command>svn
+        propset</command>.</para>
+    </tip>
+
+    <para>Subversion releases prior to 1.5 honor an externals
+      definition format that is a multiline table of subdirectories
+      (relative to the versioned directory on which the property is
+      set), optional revision flags, and fully qualified, absolute
+      Subversion repository URLs.  An example of this might looks as
+      follows:</para>
+
+    <screen>
+$ svn propget svn:externals calc
+third-party/sounds             http://svn.example.com/repos/sounds
+third-party/skins -r148        http://svn.example.com/skinproj
+third-party/skins/toolkit -r21 http://svn.example.com/skin-maker
+</screen>
+
+    <para>When someone checks out a working copy of the
+      <filename>calc</filename> directory referred to in the previous
+      example, Subversion also continues to check out the items found
+      in its externals definition.</para>
 
     <screen>
 $ svn checkout http://svn.example.com/repos/calc
@@ -2825,47 +2877,60 @@
 …
 </screen>
 
-    <para>If you need to change the externals definition, you can do
-      so using the regular property modification subcommands.  When
-      you commit a change to the <literal>svn:externals</literal>
-      property, Subversion will synchronize the checked-out items
-      against the changed externals definition when you next run
-      <command>svn update</command>.  The same thing will happen when
-      others update their working copies and receive your changes to
-      the externals definition.</para>
+    <para>As of Subversion 1.5, though, a new format of the
+      <literal>svn:externals</literal> property is supported.
+      Externals definitions are still multiline, but the order and
+      format of the various pieces of information has changed.  The
+      new syntax more closely mimics the order of arguments you might
+      pass to <command>svn checkout</command>: the optional revision
+      flags come first, then the external Subversion repository URL,
+      and finally the relative local subdirectory.  Notice, though,
+      that this time we didn't say <quote>fully qualified, absolute
+      Subversion repository URLs.</quote> That's because the new
+      format supports relative URLs and URLs that carry peg revisions.
+      The previous example of an externals definition might, in
+      Subversion 1.5, look like the following:</para>
 
-    <tip>
-      <para>Because the <literal>svn:externals</literal> property has
-        a multiline value, we strongly recommend that you use
-        <command>svn propedit</command> instead of <command>svn
-        propset</command>.</para>
-    </tip>
+    <screen>
+$ svn propget svn:externals calc
+      http://svn.example.com/repos/sounds third-party/sounds
+-r148 http://svn.example.com/skinproj third-party/skins
+-r21  http://svn.example.com/skin-maker third-party/skins/toolkit
+</screen>
 
-    <para>The <command>svn status</command> command also recognizes
-      externals definitions, displaying a status code of
-      <literal>X</literal> for the <firstterm>disjoint</firstterm> (or
-      disconnected) subdirectories into which
-      externals are checked out, and then recursing into those
-      subdirectories to display the status of the external items
-      themselves.</para>
+    <para>Or, making use of the peg revision syntax (which we describe
+      in detail in <xref linkend="svn.advanced.pegrevs" />), it might
+      appear as:</para>
 
-    <para>The support that exists for externals definitions in
-      Subversion is less than ideal, though.  First, an
-      externals definition can only point to directories, not files.
-      Second, the externals definition cannot point to relative paths
-      (such as <filename>../../skins/myskin</filename>).  Third, the
-      working copies created via the externals definition support are
-      still disconnected from the primary working copy (on whose
-      versioned directories the <literal>svn:externals</literal>
-      property was actually set).  And Subversion still only truly
-      operates on nondisjoint working copies.  So, for example, if
-      you want to commit changes that you've made in one or more of
-      those external working copies, you must run <command>svn
-      commit</command> explicitly on those working
-      copies—committing on the primary working copy will not
-      recurse into any external ones.</para>
+    <screen>
+$ svn propget svn:externals calc
+http://svn.example.com/repos/sounds third-party/sounds
+http://svn.example.com/skinproj@148 third-party/skins
+http://svn.example.com/skin-maker@21 third-party/skins/toolkit
+</screen>
 
-    <para>Also, since the definitions themselves use absolute URLs,
+    <tip>
+      <para>You should seriously consider using explicit revision
+        numbers in all of your externals definitions.  Doing so means
+        that you get to decide when to pull down a different snapshot
+        of external information, and exactly which snapshot to pull.
+        Besides avoiding the surprise of getting changes to
+        third-party repositories that you might not have any control
+        over, using explicit revision numbers also means that as you
+        backdate your working copy to a previous revision, your
+        externals definitions will also revert to the way they looked
+        in that previous revision, which in turn means that the
+        external working copies will be updated to match the way
+        <emphasis>they</emphasis> looked back when your repository was
+        at that previous revision.  For software projects, this could
+        be the difference between a successful and a failed build of
+        an older snapshot of your complex codebase.</para> 
+    </tip>
+
+    <para>For most repositories, these three ways of formatting the
+      external definitions have the same ultimate effect.  They all
+      bring the same benefits.  Unfortunately, they all bring the same
+      annoyances, too.  Since the definitions shown use absolute URLs,
       moving or copying a directory to which they are attached will
       not affect what gets checked out as an external (though the
       relative local target subdirectory will, of course, move with
@@ -2914,48 +2979,108 @@
 $
 </screen>
 
-    <para>Also, the absolute URLs that externals definitions use
-      can cause problems with repositories that are available via
-      multiple URL schemes.  For example, if your Subversion server is
-      configured to allow everyone to check out the repository over
-      <literal>http://</literal> or <literal>https://</literal>, but
-      only allow commits to come in via <literal>https://</literal>,
-      you have an interesting problem on your hands.  If your
-      externals definitions use the <literal>http://</literal> form
-      of the repository URLs, you won't be able to commit anything
-      from the working copies created by those externals.  On the
-      other hand, if they use the <literal>https://</literal> form of
-      the URLs, anyone who might be checking out via
-      <literal>http://</literal> because their client doesn't support
-      <literal>https://</literal> will be unable to fetch the external
-      items.  Be aware, too, that if you need to re-parent your
-      working copy (using <command>svn switch --relocate</command>),
-      externals definitions will <emphasis>not</emphasis> also be
-      re-parented.</para>
+    <para>Also, absolute URLs can cause problems with repositories
+      that are available via multiple URL schemes.  For example, if
+      your Subversion server is configured to allow everyone to check
+      out the repository over <literal>http://</literal> or
+      <literal>https://</literal>, but only allow commits to come in
+      via <literal>https://</literal>, you have an interesting problem
+      on your hands.  If your externals definitions use the
+      <literal>http://</literal> form of the repository URLs, you
+      won't be able to commit anything from the working copies created
+      by those externals.  On the other hand, if they use the
+      <literal>https://</literal> form of the URLs, anyone who might
+      be checking out via <literal>http://</literal> because their
+      client doesn't support <literal>https://</literal> will be
+      unable to fetch the external items.  Be aware, too, that if you
+      need to re-parent your working copy (using <command>svn switch
+      --relocate</command>), externals definitions will
+      <emphasis>not</emphasis> also be re-parented.</para>
+
+   <para>Subversion 1.5 takes a huge step in relieving these
+     frustrations.  As mentioned earlier, the URLs used in the new
+     externals definition format can be relative, and Subversion
+     provides syntax magic for specifying multiple flavors of URL
+     relativity.</para>
 
-    <tip>
-      <para>You should seriously consider using explicit revision
-        numbers in all of your externals definitions.  Doing so means
-        that you get to decide when to pull down a different snapshot
-        of external information, and exactly which snapshot to pull.
-        Besides avoiding the surprise of getting changes to
-        third-party repositories that you might not have any control
-        over, using explicit revision numbers also means that as you
-        backdate your working copy to a previous revision, your
-        externals definitions will also revert to the way they looked
-        in that previous revision, which in turn means that the
-        external working copies will be updated to match the way
-        <emphasis>they</emphasis> looked back when your repository was
-        at that previous revision.  For software projects, this could
-        be the difference between a successful and a failed build of
-        an older snapshot of your complex codebase.</para> 
-    </tip>
+    <variablelist>
+      <varlistentry>
+        <term>../</term> 
+        <listitem><para>Relative to the URL of the directory on which
+          the <literal>svn:externals</literal> property is
+          set.</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>^/</term> 
+        <listitem><para>Relative to the root of the repository in
+          which the <literal>svn:externals</literal> property is
+          versioned.</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>//</term> 
+        <listitem><para>Relative to the scheme of the URL of the
+          directory on which the <literal>svn:externals</literal>
+          property is set.</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>/</term>
+        <listitem><para>Relative to the root URL of the server on
+          which the <literal>svn:externals</literal> property is
+          versioned.</para></listitem>
+      </varlistentry>
+    </variablelist>
+
+    <para>So, looking a fourth time at our previous externals
+      definition example, and making use of the new absolute URL
+      syntax in various ways, we might now see:</para>
+
+    <screen>
+$ svn propget svn:externals calc
+^/sounds third-party/sounds
+/skinproj at 148 third-party/skins
+//svn.example.com/skin-maker at 21 third-party/skins/toolkit
+</screen>
+
+    <para>The support that exists for externals definitions in
+      Subversion remains less than ideal, though.  An externals
+      definition can only point to directories, not files.  Also, the
+      local subdirectory part of the definition cannot contain
+      <literal>..</literal> parent directory indicators (such as
+      <filename>../../skins/myskin</filename>).  Perhap most
+      disappointinly, the working copies created via the externals
+      definition support are still disconnected from the primary
+      working copy (on whose versioned directories the
+      <literal>svn:externals</literal> property was actually set).
+      And Subversion still only truly operates on nondisjoint working
+      copies.  So, for example, if you want to commit changes that
+      you've made in one or more of those external working copies, you
+      must run <command>svn commit</command> explicitly on those
+      working copies—committing on the primary working copy will
+      not recurse into any external ones.</para>
+
+    <para>We've already mentioned some of the additional shortcomings
+      of the old <literal>svn:externals</literal> format and how the
+      new Subversion 1.5 format improves upon it.  But be careful when
+      making use of the new format that you don't inadvertantly cause
+      problems for other folks accessing your repository who are using
+      older Subversion clients.  While Subversion 1.5 clients will
+      continue to recognize and support the original externals
+      definition format, older clients will <emphasis>not</emphasis>
+      be able to correctly parse the new format.</para>
+
+    <para>Besides the <command>svn checkout</command>, <command>svn
+      update</command>, <command>svn switch</command>, and
+      <command>svn export</command> commands which actually manage the
+      <firstterm>disjoint</firstterm> (or disconnected) subdirectories
+      into which externals are checked out, the <command>svn
+      status</command> command also recognizes externals definitions.
+      It displays a status code of <literal>X</literal> for the
+      disjoint external subdirectories, and then recurses into those
+      subdirectories to display the status of the external items
+      themselves.  You can pass the
+      <option>--ignore-externals</option> option to any of these
+      subcommands to disable externals definition processing.</para>
 
-    <para>Finally, there might be times when you would prefer that
-      <command>svn</command> subcommands would not recognize, or
-      otherwise operate upon, the external working copies.   In those instances,
-      you can pass the <option>--ignore-externals</option> option to
-      the subcommand.</para>
   </sect1>
 
   <!-- ================================================================= -->
@@ -3604,12 +3729,12 @@
         quickly and easily rename or remove a changelist:</para>
 
       <screen>
-$ svn changelist math-bugs --changelist math-fixes --depth infinity
+$ svn changelist math-bugs --changelist math-fixes --depth infinity .
 svn: warning: Removing 'integer.c' from changelist 'math-fixes'.
 Path 'integer.c' is now a member of changelist 'math-bugs'.
 svn: warning: Removing 'mathops.c' from changelist 'math-fixes'.
 Path 'mathops.c' is now a member of changelist 'math-bugs'.
-$ svn changelist --remove --changelist math-bugs --depth infinity
+$ svn changelist --remove --changelist math-bugs --depth infinity .
 Path 'integer.c' is no longer a member of a changelist.
 Path 'mathops.c' is no longer a member of a changelist.
 $

Modified: trunk/src/de/book/ch04-branching-and-merging.xml
==============================================================================
--- trunk/src/de/book/ch04-branching-and-merging.xml	(original)
+++ trunk/src/de/book/ch04-branching-and-merging.xml	Sun Jun 29 14:23:17 2008
@@ -548,33 +548,50 @@
 U    integer.c
 </screen>
 
-      <para>Your branch working copy now contains new local
-        modifications, and these edits are duplications of all of the
-        changes that have happened on the trunk since you first
+      <para>This basic syntax—<command>svn merge
+        URL</command>—tells Subversion to merge all recent
+        changes from the URL to the current working directory (which
+        is typically the root of your working copy.)  After running
+        the prior example, your branch working copy now contains new
+        local modifications, and these edits are duplications of all
+        of the changes that have happened on the trunk since you first
         created your branch:</para>
 
       <screen>
 $ svn status
+ M     .
 M      button.c
 M      integer.c
 </screen>
 
       <para>At this point, the wise thing to do is look at the changes
         carefully with <command>svn diff</command>, and then build and
-        test your branch.  You might need to resolve some conflicts
-        (just as you do with <command>svn update</command>) or
-        possibly make some small edits to get things working properly.
-        (Remember, just because there are
+        test your branch.  Notice that the current working directory
+        (<quote><filename>.</filename></quote>) has also been
+        modified; the <command>svn diff</command> will show that
+        its <literal>svn:mergeinfo</literal> property has been either
+        created or modified.  This is important merge-related metadata
+        that you should <emphasis>not</emphasis> touch, since it will
+        be needed by future <command>svn merge</command> commands.
+        (We'll learn more about this metadata later in the
+        chapter.)</para>
+
+      <para>After performing the merge, you might also need to resolve
+        some conflicts (just as you do with <command>svn
+        update</command>) or possibly make some small edits to get
+        things working properly.  (Remember, just because there are
         no <emphasis>syntactic</emphasis> conflicts doesn't mean there
         aren't any <emphasis>semantic</emphasis> conflicts!)  If you
         encounter serious problems, you can always abort the local
-        changes by running <command>svn revert</command> and start a
+        changes by running <command>svn revert . -R</command> (which
+        will undo all local modifications) and start a
         long <quote>what's going on?</quote> discussion with your
         collaborators.  If things look good, however, then you can
         submit these changes into the repository:</para>
 
       <screen>
 $ svn commit -m "Merged latest trunk changes to my-calc-branch."
+Sending        .
 Sending        button.c
 Sending        integer.c
 Transmitting file data ..
@@ -674,6 +691,7 @@
 $ # build, test, ...
 
 $ svn commit -m "Final merge of trunk changes to my-calc-branch."
+Sending        .
 Sending        button.c
 Sending        README
 Transmitting file data ..
@@ -691,9 +709,11 @@
         trunk working copy, remember that it's a best practice to do
         your merge into a working copy that
         has <emphasis>no</emphasis> local edits and has been recently
-        updated.  If your working copy isn't <quote>clean</quote> in
-        these ways, you can run into some unnecessary conflict-related
-        headaches.</para>
+        updated (i.e., is not a mixture of local revisions.)  If your
+        working copy isn't <quote>clean</quote> in these ways, you can
+        run into some unnecessary conflict-related headaches
+        and <command>svn merge</command> will likely return an
+        error.</para>
 
       <para>Once you have a clean working copy of the trunk, you're
         ready merge your branch back into it:</para>
@@ -706,14 +726,16 @@
 At revision 390.
 
 $ svn merge --reintegrate http://svn.example.com/repos/calc/branches/my-calc-branch
---- Merging r341 through r390 into '.':
+--- Merging differences between repository URLs into '.':
 U    button.c
 U    integer.c
 U    Makefile
+ U   .
 
 $ # build, test, verify, ...
 
 $ svn commit -m "Merge my-calc-branch back into trunk!"
+Sending        .
 Sending        button.c
 Sending        integer.c
 Sending        Makefile
@@ -724,18 +746,20 @@
       <para>Congratulations, your branch has now been re-merged back
         into the main line of development.  Notice our use of
         the <option>--reintegrate</option> option this time around.
-        The option is needed because this sort of <quote>merge
+        The option is critical for reintegrating changes from a branch
+        back into its original line of development—don't forget
+        it!  It's needed because this sort of <quote>merge
         back</quote> is a different sort of work than what you've been
         doing up until now.  Previously, we had been
         asking <command>svn merge</command> to grab the <quote>next
         set</quote> of changes from one line of development (the
         trunk) and duplicate them to another (your branch).  This is
-        fairly straightforward, and each time
-        Subversion knows how to pick up where it left off.  In our
-        prior examples, you can see that first it merges the ranges
-        345:356 from trunk to branch; later on, it continues by
-        merging the next contiguously available range, 356:380.  When
-        doing the final sync, it merges the range 380:385.</para>
+        fairly straightforward, and each time Subversion knows how to
+        pick up where it left off.  In our prior examples, you can see
+        that first it merges the ranges 345:356 from trunk to branch;
+        later on, it continues by merging the next contiguously
+        available range, 356:380.  When doing the final sync, it
+        merges the range 380:385.</para>
 
       <para>When merging your branch back to the trunk, however, the
         underlying mathematics is quite different.  Your feature
@@ -749,12 +773,17 @@
         tree:  the resulting difference is exactly your branch
         changes!)</para>
 
-      <para>Now that your branch is merged to trunk, you'll no longer
-        need your branch.  You can destroy your working copy of the
-        branch, and also remove it from the repository:</para>
+      <para>Now that your branch is merged to trunk, you have a couple
+        of options.  You can keep working on your branch, repeating
+        the whole process of occasionally syncing with the trunk and
+        eventually using <option>--reintegrate</option> to merge it
+        back again.  Or, if you're really done with the branch, you
+        can destroy your working copy of it and then remove it from
+        the repository:</para>
 
       <screen>
-$ svn delete http://svn.example.com/repos/calc/branches/my-calc-branch
+$ svn delete http://svn.example.com/repos/calc/branches/my-calc-branch \
+      -m "Remove my-calc-branch."
 Committed revision 392.
 </screen>
 
@@ -768,7 +797,7 @@
         the <filename>/branches</filename> URL will show the entire
         history of your branch.  Your branch can even be resurrected
         at some point, should you desire (see
-        <xref linkend="svn.branchmerge.advanced.resurrect"/>).</para>
+        <xref linkend="svn.branchmerge.basicmerging.resurrect"/>).</para>
 
     </sect2>
 
@@ -796,12 +825,13 @@
 
       <para>It is <emphasis>not</emphasis> recommended that you change
         the value of this property yourself, unless you really know
-        what you're doing.  (An example of this comes up in
-        <xref linkend="svn.branchmerge.advanced.blockchanges"/>.)  In
-        general, this property is automatically maintained by
-        Subversion whenever you run <command>svn merge</command>, and
-        its value indicates which changes have already been replicated
-        into a particular directory.</para>
+        what you're doing.  This property is automatically maintained
+        by Subversion whenever you run <command>svn merge</command>.
+        Its value indicates which changes (at a given path) have been
+        replicated into the directory in question.  In this case, the
+        path is <filename>/trunk</filename> and the directory which
+        has received the specific changes
+        is <filename>/branches/my-calc-branch</filename>.</para>
 
       <para>There's also a subcommand <command>svn
         mergeinfo</command>, which can be helpful in seeing not only
@@ -811,35 +841,36 @@
         merge</command> will replicate to your branch.</para>
 
       <screen>
-$ svn mergeinfo .
-Path: .
-  Source path: /trunk
-    Merged ranges: r341:390
-    Eligible ranges: r391:395
-
-</screen>
-
-      <para>The <command>svn mergeinfo</command> command, by default,
-        looks back at the history of the thing you're querying and
-        tries to make a sane guess about the <quote>source</quote>
-        from which you want to be copying changes.  In our prior
-        example, because we're querying our branch working copy, the
-        command assumes we're interested in receiving changes
-        from <filename>/trunk</filename> (since that's where our
-        branch was originally copied from).  However, if another
-        coworker had a different branch going on that we wanted to
-        merge changes from, we could have this command tell us about
-        eligible changesets from that source too:</para>
-
-      <screen>
-$ svn mergeinfo --from-source \
-http://svn.example.com/repos/calc/branches/other-branch  .
-Path: .
-  Source path: /branches/other-branch
-    Merged ranges:
-    Eligible ranges: r360:364
+$ cd my-calc-branch
 
-</screen>
+# Which changes have already been merged from trunk to branch?
+$ svn mergeinfo http://svn.example.com/repos/calc/trunk
+r341
+r342
+r343
+…
+r388
+r389
+r390
+
+# Which changes are still eligible to merge from trunk to branch?
+$ svn mergeinfo http://svn.example.com/repos/calc/trunk --show-revs eligible
+r391
+r392
+r393
+r394
+r395
+</screen>
+
+      <para>The <command>svn mergeinfo</command> command requires
+        a <quote>source</quote> URL (where the changes would be coming
+        from), and takes an optional <quote>target</quote> URL (where
+        the changes would be merged to).  If no target URL is given,
+        then it assumes that the current working directory is the
+        target.  In the prior example, because we're querying our
+        branch working copy, the command assumes we're interested in
+        receiving changes to <filename>/branches/mybranch</filename>
+        from the specified trunk URL.</para>
 
       <para>Another way to get a more precise preview of a merge
         operation is to use the <option>--dry-run</option>
@@ -868,15 +899,19 @@
           the changes to the immediate target of your merge.  If your
           merge target was a directory, only property differences will
           be displayed.  This is a handy way to see the changes to the
-          svn:mergeinfo property recorded by the merge operation,
-          which will remind you about what you've just merged.</para>
+          <literal>svn:mergeinfo</literal> property recorded by the
+          merge operation, which will remind you about what you've
+          just merged.</para>
       </tip>
 
       <para>Of course, the best way to preview a merge operation is to
         just do it!  Remember, running <command>svn merge</command>
-        isn't an inherently risky thing; if you don't like the
-        results, simply <command>svn revert -R</command> the changes
-        from your working copy and retry the command with different
+        isn't an inherently risky thing (unless you've made local
+        modifications to your working copy—but we've already
+        stressed that you shouldn't be merging into such an
+        environment.)  If you don't like the results of the merge,
+        simply <command>svn revert . -R</command> the changes from
+        your working copy and retry the command with different
         options.  The merge isn't final until you
         actually <command>svn commit</command> the results.</para>
 
@@ -894,11 +929,245 @@
           After performing a revert, be sure to clean up the working
           copy and remove unversioned files and directories.  The
           output of <command>svn status</command> should be as clean
-          (read: empty) as possible!</para>
+          as possible, ideally showing no output.</para>
       </tip>
 
     </sect2>
 
+    <!-- =============================================================== -->
+    <sect2 id="svn.branchmerge.basicmerging.undo">
+      <title>Undoing Changes</title>
+
+      <para>An extremely common use for <command>svn merge</command>
+        is to roll back a change that has already been committed.
+        Suppose you're working away happily on a working copy of
+        <filename>/calc/trunk</filename>, and you discover that the
+        change made way back in revision 303, which changed
+        <filename>integer.c</filename>, is completely wrong.  It never
+        should have been committed.  You can use <command>svn
+        merge</command> to <quote>undo</quote> the change in your
+        working copy, and then commit the local modification to the
+        repository.  All you need to do is to specify a
+        <emphasis>reverse</emphasis> difference.  (You can do this by
+        specifying <option>--revision 303:302</option>, or by an
+        equivalent <option>--change -303</option>.)</para>
+
+
+      <screen>
+$ svn merge -c -303 http://svn.example.com/repos/calc/trunk
+--- Reverse-merging r303 into 'integer.c':
+U    integer.c
+
+$ svn status
+ M     .
+M      integer.c
+
+$ svn diff
+…
+# verify that the change is removed
+…
+
+$ svn commit -m "Undoing change committed in r303."
+Sending        integer.c
+Transmitting file data .
+Committed revision 350.
+</screen>
+
+      <para>As we mentioned earlier, one way to think about a
+        repository revision is as a specific changeset.  By using the
+        <option>-r</option> option, you can ask <command>svn
+        merge</command> to apply a changeset, or a whole range of
+        changesets, to your working copy.  In our case of undoing a
+        change, we're asking <command>svn merge</command> to apply
+        changeset #303 to our working copy
+        <emphasis>backwards</emphasis>.</para>
+
+      <para>Keep in mind that rolling back a change like this is just
+        like any other <command>svn merge</command> operation, so you
+        should use <command>svn status</command> and <command>svn
+        diff</command> to confirm that your work is in the state you
+        want it to be in, and then use <command>svn commit</command>
+        to send the final version to the repository.  After
+        committing, this particular changeset is no longer reflected
+        in the <literal>HEAD</literal> revision.</para>
+
+      <para>Again, you may be thinking: well, that really didn't undo
+        the commit, did it?  The change still exists in revision 303.
+        If somebody checks out a version of the
+        <filename>calc</filename> project between revisions 303 and
+        349, they'll still see the bad change, right?</para>
+
+      <para>Yes, that's true.  When we talk about
+        <quote>removing</quote> a change, we're really talking about
+        removing it from the <literal>HEAD</literal> revision.  The
+        original change still exists in the repository's history.  For
+        most situations, this is good enough.  Most people are only
+        interested in tracking the <literal>HEAD</literal> of a
+        project anyway.  There are special cases, however, where you
+        really might want to destroy all evidence of the commit.
+        (Perhaps somebody accidentally committed a confidential
+        document.)  This isn't so easy, it turns out, because
+        Subversion was deliberately designed to never lose
+        information.  Revisions are immutable trees that build upon
+        one another.  Removing a revision from history would cause a
+        domino effect, creating chaos in all subsequent revisions and
+        possibly invalidating all working copies.
+        <footnote>
+          <para>The Subversion project has plans, however, to someday
+            implement a command that would accomplish the task of
+            permanently deleting information.  In the meantime, see
+            <xref linkend="svn.reposadmin.maint.tk.svndumpfilter"/>
+            for a possible workaround.</para>
+        </footnote>
+      </para>
+
+    </sect2>
+
+    <!-- =============================================================== -->
+    <sect2 id="svn.branchmerge.basicmerging.resurrect">
+      <title>Resurrecting Deleted Items</title>
+
+      <para>The great thing about version control systems is that
+        information is never lost.  Even when you delete a file or
+        directory, it may be gone from the <literal>HEAD</literal>
+        revision, but the object still exists in earlier revisions.
+        One of the most common questions new users ask is, <quote>How
+        do I get my old file or directory back?</quote></para>
+
+      <para>The first step is to define
+        exactly <emphasis role="bold">which</emphasis> item you're
+        trying to resurrect.  Here's a useful metaphor: you can think
+        of every object in the repository as existing in a sort of
+        two-dimensional coordinate system.  The first coordinate is a
+        particular revision tree, and the second coordinate is a path
+        within that tree.  So every version of your file or directory
+        can be defined by a specific coordinate pair.  (Remember the
+        <quote>peg revision</quote>
+        syntax—foo.c at 224—mentioned back in
+        <xref linkend="svn.advanced.pegrevs"/>.) </para>
+
+      <para>First, you might need to use <command>svn log</command> to
+        discover the exact coordinate pair you wish to resurrect.  A
+        good strategy is to run <command>svn log --verbose</command>
+        in a directory that used to contain your deleted item.  The
+        <option>--verbose</option> (<option>-v</option>) option shows
+        a list of all changed items in each revision; all you need to
+        do is find the revision in which you deleted the file or
+        directory.  You can do this visually, or by using another tool
+        to examine the log output (via <command>grep</command>, or
+        perhaps via an incremental search in an editor).</para>
+
+      <screen>
+$ cd parent-dir
+$ svn log -v
+…
+------------------------------------------------------------------------
+r808 | joe | 2003-12-26 14:29:40 -0600 (Fri, 26 Dec 2003) | 3 lines
+Changed paths:
+   D /calc/trunk/real.c
+   M /calc/trunk/integer.c
+
+Added fast fourier transform functions to integer.c.
+Removed real.c because code now in double.c.
+…
+</screen>
+
+      <para>In the example, we're assuming that you're looking for a
+        deleted file <filename>real.c</filename>.  By looking through
+        the logs of a parent directory, you've spotted that this file
+        was deleted in revision 808.  Therefore, the last version of
+        the file to exist was in the revision right before that.
+        Conclusion: you want to resurrect the path
+        <filename>/calc/trunk/real.c</filename> from revision
+        807.</para>
+
+      <para>That was the hard part—the research.  Now that you
+        know what you want to restore, you have two different
+        choices.</para>
+
+      <para>One option is to use <command>svn merge</command> to apply
+        revision 808 <quote>in reverse.</quote> (We've already
+        discussed how to undo changes in
+        <xref linkend="svn.branchmerge.basicmerging.undo"/>.)  This
+        would have the effect of re-adding <filename>real.c</filename>
+        as a local modification.  The file would be scheduled for
+        addition, and after a commit, the file would again exist
+        in <literal>HEAD</literal>.</para>
+
+      <para>In this particular example, however, this is probably not
+        the best strategy.  Reverse-applying revision 808 would not
+        only schedule <filename>real.c</filename> for addition, but
+        the log message indicates that it would also undo certain
+        changes to <filename>integer.c</filename>, which you don't
+        want.  Certainly, you could reverse-merge revision 808 and
+        then <command>svn revert</command> the local modifications to
+        <filename>integer.c</filename>, but this technique doesn't
+        scale well.  What if there were 90 files changed in revision
+        808?</para>
+
+      <para>A second, more targeted strategy is not to use
+        <command>svn merge</command> at all, but rather the
+        <command>svn copy</command> command.  Simply copy the exact
+        revision and path <quote>coordinate pair</quote> from the
+        repository to your working copy:</para>
+
+      <screen>
+$ svn copy http://svn.example.com/repos/calc/trunk/real.c@807 ./real.c
+
+$ svn status
+A  +   real.c
+
+$ svn commit -m "Resurrected real.c from revision 807, /calc/trunk/real.c."
+Adding         real.c
+Transmitting file data .
+Committed revision 1390.
+</screen>
+
+      <para>The plus sign in the status output indicates that the item
+        isn't merely scheduled for addition, but scheduled for
+        addition <quote>with history.</quote>  Subversion remembers
+        where it was copied from.  In the future, running <command>svn
+        log</command> on this file will traverse back through the
+        file's resurrection and through all the history it had prior
+        to revision 807.  In other words, this new
+        <filename>real.c</filename> isn't really new; it's a direct
+        descendant of the original, deleted file.  This is usually
+        considered a good and useful thing.  If, however, you wanted
+        to resurrect the file <emphasis>without</emphasis>
+        maintaining a historical link to the old file, this technique
+        works just as well:</para>
+
+      <screen>
+$ svn cat http://svn.example.com/repos/calc/trunk/real.c@807 > ./real.c
+
+$ svn add real.c
+A         real.c
+
+$ svn commit -m "Recreated real.c from revision 807."
+Adding         real.c
+Transmitting file data .
+Committed revision 1390.
+</screen>
+
+      <para>Although our example shows us resurrecting a file, note
+        that these same techniques work just as well for resurrecting
+        deleted directories.  Also note that a resurrection doesn't
+        have to happen in your working copy—it can happen
+        entirely in the repository:</para>
+
+      <screen>
+$ svn copy http://svn.example.com/repos/calc/trunk/real.c@807 \
+           http://svn.example.com/repos/calc/trunk/ \
+      -m "Resurrect real.c from revision 807."
+Committed revision 1390.
+
+$ svn update
+A    real.c
+Updated to revision 1390.
+</screen>
+
+    </sect2>
+
   </sect1>
 
   <!-- ================================================================= -->
@@ -990,17 +1259,27 @@
 $ svn propget svn:mergeinfo .
 /trunk:341-349,355
 
-$ svn mergeinfo .
-Path: .
-  Source path: /trunk
-    Merged ranges: r341:349,r355
-    Eligible ranges: r350:354,r356:360
+# Notice that r355 isn't listed as "eligible" to merge, because
+# it's already been merged.
+$ svn mergeinfo http://svn.example.com/repos/calc/trunk --show-revs eligible
+r350
+r351
+r352
+r353
+r354
+r356
+r357
+r358
+r359
+r360
 
 $ svn merge http://svn.example.com/repos/calc/trunk
 --- Merging r350 through r354 into '.':
+ U   .
 U    integer.c
 U    Makefile
 --- Merging r356 through r360 into '.':
+ U   .
 U    integer.c
 U    button.c
 </screen>
@@ -1164,237 +1443,79 @@
         how the working-copy argument is optional; if omitted, it
         defaults to the current directory.</para>
 
-    </sect2>
-
-    <!-- =============================================================== -->
-    <sect2 id="svn.branchmerge.advanced.undo">
-      <title>Undoing Changes</title>
-
-      <para>Another common use for <command>svn merge</command> is to
-        roll back a change that has already been committed.  Suppose
-        you're working away happily on a working copy of
-        <filename>/calc/trunk</filename>, and you discover that the
-        change made way back in revision 303, which changed
-        <filename>integer.c</filename>, is completely wrong.  It never
-        should have been committed.  You can use <command>svn
-        merge</command> to <quote>undo</quote> the change in your
-        working copy, and then commit the local modification to the
-        repository.  All you need to do is to specify a
-        <emphasis>reverse</emphasis> difference.  (You can do this by
-        specifying <option>--revision 303:302</option>, or by an
-        equivalent <option>--change -303</option>.)</para>
-
-
-      <screen>
-$ svn merge -c -303 http://svn.example.com/repos/calc/trunk
---- Reverse-merging r303 into 'integer.c':
-U    integer.c
-
-$ svn status
-M      integer.c
-
-$ svn diff
-…
-# verify that the change is removed
-…
-
-$ svn commit -m "Undoing change committed in r303."
-Sending        integer.c
-Transmitting file data .
-Committed revision 350.
-</screen>
-
-      <para>As we mentioned earlier, one way to think about a
-        repository revision is as a specific changeset.  By using the
-        <option>-r</option> option, you can ask <command>svn
-        merge</command> to apply a changeset, or a whole range of
-        changesets, to your working copy.  In our case of undoing a
-        change, we're asking <command>svn merge</command> to apply
-        changeset #303 to our working copy
-        <emphasis>backwards</emphasis>.</para>
-
-      <para>Keep in mind that rolling back a change like this is just
-        like any other <command>svn merge</command> operation, so you
-        should use <command>svn status</command> and <command>svn
-        diff</command> to confirm that your work is in the state you
-        want it to be in, and then use <command>svn commit</command>
-        to send the final version to the repository.  After
-        committing, this particular changeset is no longer reflected
-        in the <literal>HEAD</literal> revision.</para>
-
-      <para>Again, you may be thinking: well, that really didn't undo
-        the commit, did it?  The change still exists in revision 303.
-        If somebody checks out a version of the
-        <filename>calc</filename> project between revisions 303 and
-        349, they'll still see the bad change, right?</para>
-
-      <para>Yes, that's true.  When we talk about
-        <quote>removing</quote> a change, we're really talking about
-        removing it from the <literal>HEAD</literal> revision.  The
-        original change still exists in the repository's history.  For
-        most situations, this is good enough.  Most people are only
-        interested in tracking the <literal>HEAD</literal> of a
-        project anyway.  There are special cases, however, where you
-        really might want to destroy all evidence of the commit.
-        (Perhaps somebody accidentally committed a confidential
-        document.)  This isn't so easy, it turns out, because
-        Subversion was deliberately designed to never lose
-        information.  Revisions are immutable trees that build upon
-        one another.  Removing a revision from history would cause a
-        domino effect, creating chaos in all subsequent revisions and
-        possibly invalidating all working copies.
-        <footnote>
-          <para>The Subversion project has plans, however, to someday
-            implement a command that would accomplish the task of
-            permanently deleting information.  In the meantime, see
-            <xref linkend="svn.reposadmin.maint.tk.svndumpfilter"/>
-            for a possible workaround.</para>
-        </footnote>
-      </para>
+      <para>While the first example shows the <quote>full</quote>
+        syntax of <command>svn merge</command>, it needs to be used
+        very carefully;  it can result in merges which do not record
+        any <literal>svn:mergeinfo</literal> metadata at all.  The
+        next section talks a bit more about this.</para>
 
     </sect2>
 
     <!-- =============================================================== -->
-    <sect2 id="svn.branchmerge.advanced.resurrect">
-      <title>Resurrecting Deleted Items</title>
-
-      <para>The great thing about version control systems is that
-        information is never lost.  Even when you delete a file or
-        directory, it may be gone from the <literal>HEAD</literal>
-        revision, but the object still exists in earlier revisions.
-        One of the most common questions new users ask is, <quote>How
-        do I get my old file or directory back?</quote></para>
-
-      <para>The first step is to define
-        exactly <emphasis role="bold">which</emphasis> item you're
-        trying to resurrect.  Here's a useful metaphor: you can think
-        of every object in the repository as existing in a sort of
-        two-dimensional coordinate system.  The first coordinate is a
-        particular revision tree, and the second coordinate is a path
-        within that tree.  So every version of your file or directory
-        can be defined by a specific coordinate pair.  (Remember the
-        <quote>peg revision</quote> syntax—foo.c at 224
-        —mentioned back in
-        <xref linkend="svn.advanced.pegrevs"/>.) </para>
-
-      <para>First, you might need to use <command>svn log</command> to
-        discover the exact coordinate pair you wish to resurrect.  A
-        good strategy is to run <command>svn log --verbose</command>
-        in a directory that used to contain your deleted item.  The
-        <option>--verbose</option> (<option>-v</option>) option shows
-        a list of all changed items in each revision; all you need to
-        do is find the revision in which you deleted the file or
-        directory.  You can do this visually, or by using another tool
-        to examine the log output (via <command>grep</command>, or
-        perhaps via an incremental search in an editor).</para>
-
-      <screen>
-$ cd parent-dir
-$ svn log -v
-…
-------------------------------------------------------------------------
-r808 | joe | 2003-12-26 14:29:40 -0600 (Fri, 26 Dec 2003) | 3 lines
-Changed paths:
-   D /calc/trunk/real.c
-   M /calc/trunk/integer.c
-
-Added fast fourier transform functions to integer.c.
-Removed real.c because code now in double.c.
-…
-</screen>
-
-      <para>In the example, we're assuming that you're looking for a
-        deleted file <filename>real.c</filename>.  By looking through
-        the logs of a parent directory, you've spotted that this file
-        was deleted in revision 808.  Therefore, the last version of
-        the file to exist was in the revision right before that.
-        Conclusion: you want to resurrect the path
-        <filename>/calc/trunk/real.c</filename> from revision
-        807.</para>
-
-      <para>That was the hard part—the research.  Now that you
-        know what you want to restore, you have two different
-        choices.</para>
-
-      <para>One option is to use <command>svn merge</command> to apply
-        revision 808 <quote>in reverse.</quote> (We've already
-        discussed how to undo changes in
-        <xref linkend="svn.branchmerge.advanced.undo"/>.)  This would
-        have the effect of re-adding <filename>real.c</filename> as a
-        local modification.  The file would be scheduled for addition,
-        and after a commit, the file would again exist
-        in <literal>HEAD</literal>.</para>
-
-      <para>In this particular example, however, this is probably not
-        the best strategy.  Reverse-applying revision 808 would not
-        only schedule <filename>real.c</filename> for addition, but
-        the log message indicates that it would also undo certain
-        changes to <filename>integer.c</filename>, which you don't
-        want.  Certainly, you could reverse-merge revision 808 and
-        then <command>svn revert</command> the local modifications to
-        <filename>integer.c</filename>, but this technique doesn't
-        scale well.  What if there were 90 files changed in revision
-        808?</para>
-
-      <para>A second, more targeted strategy is not to use
-        <command>svn merge</command> at all, but rather the
-        <command>svn copy</command> command.  Simply copy the exact
-        revision and path <quote>coordinate pair</quote> from the
-        repository to your working copy:</para>
+    <sect2 id="svn.branchmerge.nomergedata">
+      <title>Merges Without Mergeinfo</title>
 
-      <screen>
-$ svn copy http://svn.example.com/repos/calc/trunk/real.c@807 ./real.c
-
-$ svn status
-A  +   real.c
-
-$ svn commit -m "Resurrected real.c from revision 807, /calc/trunk/real.c."
-Adding         real.c
-Transmitting file data .
-Committed revision 1390.
-</screen>
-
-      <para>The plus sign in the status output indicates that the item
-        isn't merely scheduled for addition, but scheduled for
-        addition <quote>with history.</quote>  Subversion remembers
-        where it was copied from.  In the future, running <command>svn
-        log</command> on this file will traverse back through the
-        file's resurrection and through all the history it had prior
-        to revision 807.  In other words, this new
-        <filename>real.c</filename> isn't really new; it's a direct
-        descendant of the original, deleted file.  This is usually
-        considered a good and useful thing.  If, however, you wanted
-        to resurrect the file <emphasis>without</emphasis>
-        maintaining a historical link to the old file, this technique
-        works just as well:</para>
-
-      <screen>
-$ svn cat http://svn.example.com/repos/calc/trunk/real.c@807 > ./real.c
-
-$ svn add real.c
-A         real.c
+      <para>Subversion tries to generate merge metadata whenever it
+        can, to make future invocations of <command>svn
+        merge</command> smarter.  There are still situations, however,
+        where <literal>svn:mergeinfo</literal> data is not created or
+        changed.  Remember to be a bit wary of these scenarios:</para>
 
-$ svn commit -m "Recreated real.c from revision 807."
-Adding         real.c
-Transmitting file data .
-Committed revision 1390.
-</screen>
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>Merging unrelated sources</emphasis>.  If you
+            ask <command>svn merge</command> to compare two URLs that
+            aren't related to each other, a patch will still be
+            generated and applied to your working copy, but no merging
+            metadata will be created.  There's no common history
+            between the two sources, and future <quote>smart</quote>
+            merges depend on that common history.</para>
+        </listitem>
 
-      <para>Although our example shows us resurrecting a file, note
-        that these same techniques work just as well for resurrecting
-        deleted directories.  Also note that a resurrection doesn't
-        have to happen in your working copy—it can happen
-        entirely in the repository:</para>
+        <listitem>
+          <para><emphasis>Merging from foreign
+            repositories</emphasis>.  While it's possible to run a
+            command such as <command>svn merge -r 100:200
+            http://svn.foreignproject.com/repos/trunk</command>, the
+            resulting patch will also lack any historical merge
+            metadata.  At time of writing, Subversion has no way of
+            representing different repository URLs within
+            the <literal>svn:mergeinfo</literal> property.</para>
+          </listitem>
 
-      <screen>
-$ svn copy http://svn.example.com/repos/calc/trunk/real.c@807 \
-           http://svn.example.com/repos/calc/trunk/
-Committed revision 1390.
+        <listitem>
+          <para><emphasis>Using <option>--ignore-ancestry</option></emphasis>.
+          If this option is passed to <command>svn merge</command>, it
+          causes the merging logic to mindlessly generate differences
+          the same way that <command>svn diff</command> does, ignoring
+          any historical relationships.  We discuss this later in the
+          chapter in
+          <xref linkend="svn.branchmerge.advanced.ancestry"/>.</para>
+        </listitem>
 
-$ svn update
-A    real.c
-Updated to revision 1390.
-</screen>
+        <listitem>
+          <para><emphasis>Applying reverse merges to a target's
+          natural history</emphasis>.  In a prior section
+          (<xref linkend="svn.branchmerge.basicmerging.undo"/>) we
+          discussed how to use <command>svn merge</command> to apply
+          a <quote>reverse patch</quote> as a way of rolling back
+          changes.  If this technique is used to undo a change to a
+          object's personal history (e.g., commit r5 to the trunk,
+          then immediately roll back r5 using <command>svn merge -c
+          -5</command>), this sort of merge doesn't affect the
+          recorded mergeinfo.
+            <footnote><para>Interestingly, after rolling back a
+                revision like this, we wouldn't be able to re-apply
+                the revision using <command>svn merge -c 5</command>,
+                since the mergeinfo would already list r5 as being
+                applied.  We would have to use
+                the <option>--ignore-ancestry</option> option to make
+                the merge command ignore the existing
+                mergeinfo!</para>
+            </footnote>
+          </para>
+        </listitem>
+      </itemizedlist>
 
     </sect2>
 
@@ -1441,8 +1562,10 @@
 Skipped missing target: 'baz.c'
 U    glub.c
 U    sputter.h
+
 Conflict discovered in 'glorb.h'.
-Select: (p)ostpone, (d)iff, (e)dit, (h)elp for more options : 
+Select: (p) postpone, (df) diff-full, (e) edit,
+        (h) help for more options:
 </screen>
 
       <para>In the previous example it might be the case that
@@ -1510,10 +1633,9 @@
 
       <para>In Subversion 1.5, the only way to block a changeset is to
         make the system believe that the change has
-        <emphasis>already</emphasis> been merged.  You'll need to
-        manually edit the <literal>svn:mergeinfo</literal> property on
-        the branch and add the blocked revision(s) to the
-        list:</para>
+        <emphasis>already</emphasis> been merged.  To do this, one can
+        invoke a merge command with the <option>--record-only</option>
+        option:</para>
 
       <screen>
 $ cd my-calc-branch
@@ -1521,8 +1643,17 @@
 $ svn propget svn:mergeinfo .
 /trunk:1680-3305
 
-$ svn propset svn:mergeinfo "/trunk:1680-3305,3328" .
-property 'svn:mergeinfo' set on '.'
+# Let's make the metadata list r3328 as already merged.
+$ svn merge -c 3328 --record-only http://svn.example.com/repos/calc/trunk
+
+$ svn status
+M     .
+
+$ svn propget svn:mergeinfo .
+/trunk:1680-3305,3328
+
+$ svn commit -m "Block r3328 from being merged to the branch."
+…
 </screen>
 
       <para>This technique works, but it's also a little bit
@@ -1623,14 +1754,14 @@
 r383 | sally | 2002-11-21 03:19:00 -0600 (Thu, 21 Nov 2002) | 2 lines
 Changed paths:
    M /branches/my-calc-branch/button.c
-Result of a merge from: r390
+Merged via: r390
 
 Fix inverse graphic error on button.
 ------------------------------------------------------------------------
 r382 | sally | 2002-11-20 16:57:06 -0600 (Wed, 20 Nov 2002) | 2 lines
 Changed paths:
    M /branches/my-calc-branch/README
-Result of a merge from: r390
+Merged via: r390
 
 Document my last fix in README.
 </screen>
@@ -1650,24 +1781,24 @@
 
       <screen>
 $ svn blame button.c
-...
+…
    390    user    retval = inverse_func(button, path);
    390    user    return retval;
    390    user    }
-...
+…
 </screen>
 
       <para>And while it's true that you did actually commit those
-        three lines in revision 390, two of them were actually writen
+        three lines in revision 390, two of them were actually written
         by Sally back in revision 383:</para>
 
       <screen>
 $ svn blame button.c -g
-...
+…
 G    383    sally   retval = inverse_func(button, path);
 G    383    sally   return retval;
      390    user    }
-...
+…
 </screen>
 
       <para>Now we know who to <emphasis>really</emphasis> blame for
@@ -1784,8 +1915,10 @@
 $ cd calc/trunk
 
 $ svn merge --reintegrate http://svn.example.com/repos/calc/branches/my-calc-branch
+--- Merging differences between repository URLs into '.':
 D   integer.c
 A   whole.c
+U   .
       </screen>
 
       <para>This doesn't look so bad at first glance, but it's also
@@ -1842,6 +1975,84 @@
 
     </sect2>
 
+    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+    <sect2 id="svn.branchmerge.advanced.finalword">
+      <title>The Final Word on Merge Tracking</title>
+
+      <para>The bottom line is that Subversion's merge-tracking
+        feature has an extremely complex internal implementation, and
+        the <literal>svn:mergeinfo</literal> property is the only
+        window the user has into the machinery.  Because the feature
+        is relatively new, there are numbers of edge cases and
+        possible unexpected behaviors that may pop up.</para>
+
+      <para>For example, sometimes mergeinfo will be generated when
+        running a simple <command>svn copy</command> or <command>svn
+        move</command> command.  Sometimes mergeinfo will appear on
+        files that you didn't expect to be touched by an operation.
+        Sometimes mergeinfo won't be generated at all, when you expect
+        it to.  Furthermore, the management of mergeinfo metadata has
+        a whole set of taxonomies and behaviors around it, such
+        as <quote>explicit</quote> versus <quote>implicit</quote>
+        mergeinfo, <quote>operative</quote>
+        versus <quote>inoperative</quote> revisions, specific
+        mechanisms of mergeinfo <quote>elision</quote>, and
+        even <quote>inheritance</quote> from parent to child
+        directories.</para>
+
+      <para>We've chosen not to cover these detailed topics in this
+        book for a couple of reasons.  First, the level of detail is
+        absolutely overwhelming for a typical user.  Second, as
+        Subversion continues to improve, we feel that a typical user
+        <emphasis>shouldn't</emphasis> have to understand these
+        concepts; they'll eventually fade into the background as pesky
+        implementation details.  All that said, if you enjoy this sort
+        of thing, you can get a fantastic overview in a paper posted
+        at Collabnet's website: <ulink
+        url="http://www.collab.net/community/subversion/articles/merge-info.html"
+        >http://www.collab.net/community/subversion/articles/merge-info.html</ulink>.</para>
+
+      <para>For now, if you want to steer clear of bugs and odd
+        behaviors in automatic merging, the Collabnet article
+        recommends you stick to these simple best practices:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>For short-term feature branches, follow the simple
+            procedure described throughout
+            <xref linkend="svn.branchmerge.basicmerging"/>.</para>
+        </listitem>
+        <listitem>
+          <para>For long-lived release branches (as described in
+            <xref linkend="svn.branchmerge.commonpatterns"/>), only
+            perform merges on the root of the branch, not on
+            subdirectories.</para>
+        </listitem>
+        <listitem>
+          <para>Never merge into working copies with a mixture of
+            working revision numbers, or with
+            <quote>switched</quote> subdirectories (as described 
+            in <xref linkend="svn.branchmerge.switchwc"/>).  A merge
+            target should be a working copy which represents
+            a <emphasis>single</emphasis> location in the repository
+            at a single point in time.</para>
+        </listitem>
+        <listitem>
+          <para>Don't ever edit the <literal>svn:mergeinfo</literal>
+            property directly; use <command>svn
+            merge --record-only</command> to effect a desired change
+            to the metadata (as demonstrated in
+            <xref linkend="svn.branchmerge.advanced.blockchanges"/>).</para>
+        </listitem>
+        <listitem>
+          <para>Always make sure you have complete read access to
+            all of your merge sources, and that your target working
+            copy has no sparse directories.</para>
+        </listitem>
+      </itemizedlist>
+
+    </sect2>
+
   </sect1>
 
   <!-- ================================================================= -->
@@ -1988,8 +2199,8 @@
 
           <screen>
 $ svn copy http://svn.example.com/repos/calc/trunk \
-           http://svn.example.com/repos/calc/branches/newbranch
-
+           http://svn.example.com/repos/calc/branches/newbranch \
+      -m "Create branch 'newbranch'."
 Committed revision 353.
 $ svn switch http://svn.example.com/repos/calc/branches/newbranch
 At revision 353.
@@ -2021,7 +2232,7 @@
     <para>However, people often want to give more human-friendly names
       to tags, such as <literal>release-1.0</literal>.  And they want
       to make snapshots of smaller subdirectories of the filesystem.
-      After all, it's not so easy to remember that release-1.0 of a
+      After all, it's not so easy to remember that release 1.0 of a
       piece of software is a particular subdirectory of revision
       4822.</para>
 
@@ -2047,11 +2258,11 @@
         it doesn't, you can create it using <command>svn
         mkdir</command>.)  After the copy completes, the new
         <filename>release-1.0</filename> directory is forever a
-        snapshot of how the project looked in the
-        <literal>HEAD</literal> revision at the time you made the
-        copy.  Of course you might want to be more precise about
-        exactly which revision you copy, in case somebody else may
-        have committed changes to the project when you weren't
+        snapshot of how the <filename>/trunk</filename> directory
+        looked in the <literal>HEAD</literal> revision at the time you
+        made the copy.  Of course you might want to be more precise
+        about exactly which revision you copy, in case somebody else
+        may have committed changes to the project when you weren't
         looking.  So if you know that revision 901 of
         <filename>/calc/trunk</filename> is exactly the snapshot you
         want, you can specify it by passing <option>-r 901</option> to
@@ -2100,12 +2311,13 @@
         copy that is designed to have specific features and bug fixes.
         You can accomplish this by selectively backdating files or
         directories to particular revisions (using <command>svn update
-        -r</command> liberally) or by switching files and directories
-        to particular branches (making use of <command>svn
-        switch</command>).  When you're done, your working copy is a
-        hodgepodge of repository locations from different revisions.
-        But after testing, you know it's the precise combination of
-        data you need.</para>
+        -r</command> liberally), by switching files and directories to
+        particular branches (making use of <command>svn
+        switch</command>), or even just by making a bunch of local
+        changes.  When you're done, your working copy is a hodgepodge
+        of repository locations from different revisions.  But after
+        testing, you know it's the precise combination of data you
+        need to tag.</para>
 
       <para>Time to make a snapshot.  Copying one URL to another won't
         work here.  In this case, you want to make a snapshot of your
@@ -2119,7 +2331,9 @@
 $ ls
 my-working-copy/
 
-$ svn copy my-working-copy http://svn.example.com/repos/calc/tags/mytag
+$ svn copy my-working-copy \
+           http://svn.example.com/repos/calc/tags/mytag \
+           -m "Tag my existing working copy state."
 
 Committed revision 940.
 </screen>
@@ -2127,16 +2341,16 @@
       <para>Now there is a new directory in the repository,
         <filename>/calc/tags/mytag</filename>, which is an exact
         snapshot of your working copy—mixed revisions, URLs,
-        and all.</para>
+        local changes and all.</para>
 
       <para>Other users have found interesting uses for this feature.
         Sometimes there are situations where you have a bunch of local
         changes made to your working copy, and you'd like a
         collaborator to see them.  Instead of running <command>svn
         diff</command> and sending a patch file (which won't capture
-        tree changes, symlink changes, or changes in properties), you can
-        instead use <command>svn copy</command> to <quote>upload</quote>
-        your working copy to a private area of the repository.  Your
+        directory, symlink, or property changes), you can instead
+        use <command>svn copy</command> to <quote>upload</quote> your
+        working copy to a private area of the repository.  Your
         collaborator can then either check out a verbatim copy of your
         working copy or use <command>svn merge</command> to receive
         your exact changes.</para>
@@ -2261,7 +2475,8 @@
 
       <screen>
 $ svn copy http://svn.example.com/repos/calc/branches/my-calc-branch@374 \
-           http://svn.example.com/repos/calc/branches/my-calc-branch
+           http://svn.example.com/repos/calc/branches/my-calc-branch \
+           -m "Restore my-calc-branch."
 
 Committed revision 376.
 </screen>
@@ -2282,8 +2497,8 @@
 
       <screen>
 $ svn copy http://svn.example.com/repos/calc/trunk \
-         http://svn.example.com/repos/calc/branches/stable-1.0 \
-         -m "Creating stable branch of calc project."
+           http://svn.example.com/repos/calc/branches/stable-1.0 \
+          -m "Creating stable branch of calc project."
 
 Committed revision 377.
 </screen>
@@ -2473,8 +2688,8 @@
         To do this, begin by doing a final merge of the latest trunk
         changes to the branch.  When that's done, the latest versions
         of branch and trunk will be absolutely identical except for
-        your branch changes.  So in this special case, you would merge
-        back with the <option>--reintegrate</option> option:</para>
+        your branch changes.  You would then merge back with
+        the <option>--reintegrate</option> option:</para>
 
       <screen>
 $ cd trunk-working-copy
@@ -2482,13 +2697,15 @@
 $ svn update
 At revision 1910.
 
-$ svn merge --reintegrate http://svn.example.com/repos/calc/branches/mybranch@1910
+$ svn merge --reintegrate http://svn.example.com/repos/calc/branches/mybranch
+--- Merging differences between repository URLs into '.':
 U    real.c
 U    integer.c
 A    newdirectory
 A    newdirectory/newfile
-        …
-      </screen>
+ U   .
+…
+</screen>
 
       <para>Another way of thinking about this pattern is that your
         weekly sync of trunk to branch is analogous to running
@@ -2883,7 +3100,7 @@
       repository.</para>
 
     <para>Remember the Subversion mantra: branches and tags are cheap.
-      So use them liberally!</para>
+      So don't be afraid to use them when needed!</para>
 
     <para>As a helpful reminder of all the operations we've discussed,
       the following table is a handy reference that you can consult as
@@ -2915,7 +3132,7 @@
           </row>
 
           <row>
-            <entry>See merge history or eligible changests</entry>
+            <entry>See merge history or eligible changesets</entry>
             <entry>svn mergeinfo target [--from-source=URL]</entry>
           </row>
 
@@ -2936,7 +3153,7 @@
 
           <row>
             <entry>Block a change from automatic merging</entry>
-            <entry>svn propset svn:mergeinfo newvalue;  svn commit</entry>
+            <entry>svn merge -c REV --record-only URL;  svn commit</entry>
           </row>
 
           <row>

Modified: trunk/src/de/book/ch05-repository-admin.xml
==============================================================================
--- trunk/src/de/book/ch05-repository-admin.xml	(original)
+++ trunk/src/de/book/ch05-repository-admin.xml	Sun Jun 29 14:23:17 2008
@@ -73,7 +73,7 @@
       <varlistentry>
         <term>conf</term>
         <listitem>
-          <para>A directory containing repository configuration files.</para>
+          <para>A directory containing configuration files.</para>
         </listitem>
       </varlistentry>
       <varlistentry>
@@ -1298,7 +1298,7 @@
           revisions are committed to the repository, Subversion drops
           more files into these two directories—over time, the
           number of these files in each directory can grow to be quite
-          large.  This has been observed to cause perfomance problems
+          large.  This has been observed to cause performance problems
           on certain network-based filesystems.</para>
 
         <para>Subversion 1.5 creates FSFS-backed repositories using a
@@ -2246,20 +2246,23 @@
 
       <para>All that remains now is to create your three new
         repositories, and load each dump file into the right
-        repository:</para>
+        repository, ignoring the UUID found in the dumpstream:</para>
 
       <screen>
-$ svnadmin create calc; svnadmin load calc < calc-dumpfile
+$ svnadmin create calc
+$ svnadmin load --ignore-uuid calc < calc-dumpfile
 <<< Started new transaction, based on original revision 1
      * adding path : Makefile ... done.
      * adding path : button.c ... done.
 …
-$ svnadmin create calendar; svnadmin load calendar < cal-dumpfile
+$ svnadmin create calendar
+$ svnadmin load --ignore-uuid calendar < cal-dumpfile
 <<< Started new transaction, based on original revision 1
      * adding path : Makefile ... done.
      * adding path : cal.c ... done.
 …
-$ svnadmin create spreadsheet; svnadmin load spreadsheet < ss-dumpfile
+$ svnadmin create spreadsheet
+$ svnadmin load --ignore-uuid spreadsheet < ss-dumpfile
 <<< Started new transaction, based on original revision 1
      * adding path : Makefile ... done.
      * adding path : ss.c ... done.
@@ -2446,16 +2449,14 @@
 
       <para>Another requirement of the target repository is that the
         <command>svnsync</command> process be allowed to modify
-        certain revision properties.  <command>svnsync</command>
-        stores its bookkeeping information in special revision
-        properties on revision 0 of the destination repository.
-        Because <command>svnsync</command> works within the framework
-        of that repository's hook system, the default state of the
-        repository (which is to disallow revision property changes;
-        see <xref linkend="svn.ref.reposhooks.pre-revprop-change" />)
-        is insufficient.  You'll need to explicitly implement the
+        revision properties.  Because <command>svnsync</command> works
+        within the framework of that repository's hook system, the
+        default state of the repository (which is to disallow revision
+        property changes; see <xref
+        linkend="svn.ref.reposhooks.pre-revprop-change" />) is
+        insufficient.  You'll need to explicitly implement the
         pre-revprop-change hook, and your script must allow
-        <command>svnsync</command> to set and change its special
+        <command>svnsync</command> to set and change revision
         properties.  With those provisions in place, you are ready to
         start mirroring repository revisions.</para>
 
@@ -2533,7 +2534,7 @@
 
 if [ "$USER" = "syncuser" ]; then exit 0; fi
 
-echo "Only the syncuser user may change revision properties" >&2
+echo "Only the syncuser user may change revision properties" >&2
 exit 1
 </programlisting>
       </example>
@@ -2556,7 +2557,7 @@
 
 if [ "$USER" = "syncuser" ]; then exit 0; fi
 
-echo "Only the syncuser user may commit new revisions" >&2
+echo "Only the syncuser user may commit new revisions" >&2
 exit 1
 </programlisting>
       </example>
@@ -2700,6 +2701,94 @@
         the source repository, this is exactly what you to do
         in order to keep your mirror up to date.</para>
 
+      <sidebar>
+        <title>svnsync Bookkeeping</title>
+
+        <para><command>svnsync</command> needs to be able to set and
+          modify revision properties on the mirror repository because
+          those properties are part of the data it is tasked with
+          mirroring.  As those properties change in the source
+          repository, those changes need to be reflected in the mirror
+          repository, too.  But <command>svnsync</command> also uses a
+          set of custom revision properties—stored in revision 0
+          of the mirror repository—for its own internal
+          bookkeeping.  These properties contain information such as
+          the URL and UUID of the source repository, plus some
+          additional state-tracking information.</para>
+
+        <para>One of those pieces of state-tracking information is a
+          flag that essentially just means <quote>there's a
+          synchronization in progress right now.</quote>  This is used
+          to prevent multiple <command>svnsync</command> processes
+          from colliding with each other while trying to mirror data
+          to the same destination repository.  Now, generally you
+          won't need to pay any attention whatsoever to
+          <emphasis>any</emphasis> of these special properties (all of
+          which begin with the prefix <literal>svn:sync-</literal>).
+          Occasionally, though, if a synchronization fails
+          unexpectedly, Subversion never has a chance to remove this
+          particular state flag.  This causes all future
+          synchronization attempts to fail because it appears that a
+          synchronization is still in progress when, in fact, none is.
+          Fortunately, recovering from this situation is as simple as
+          removing the <literal>svn:sync-lock</literal> property which
+          serves as this flag from revision 0 of the mirror
+          repository:</para>
+
+        <screen>
+$ svn propdel --revprop -r0 svn:sync-lock http://svn.example.com/svn-mirror
+property 'svn:sync-lock' deleted from repository revision 0
+$
+</screen>
+
+        <para>That <command>svnsync</command> stores the source
+          repository URL in a bookkeeping property on the mirror
+          repository is the reason why you only have to specify that
+          URL once, during <command>svnsync init</command>.  Future
+          synchronization operations against that mirror simply
+          consult the special <literal>svn:sync-from-url</literal>
+          property stored on the mirror itself in order to know where
+          to synchronize from.  This value is used literally by the
+          synchronization process, though.  So while from within
+          CollabNet's network you can perhaps access our example
+          source URL as <literal>http://svn/repos/svn</literal>
+          (because that first <literal>svn</literal> magically gets
+          <literal>.collab.net</literal> appended to it by DNS
+          voodoo), if you later need to update that mirror from
+          another machine outside CollabNet's network, the
+          synchronization might fail (because the hostname
+          <literal>svn</literal> is ambiguous).  For this reason, it's
+          best to use fully qualified source repository URLs when
+          initializing a mirror repository rather than those that
+          refer to only hostnames or IP addresses (which can change
+          over time).  But here again, if you need an existing mirror
+          to start referring to a different URL for the same source
+          repository, you can change the bookkeeping property which
+          houses that information:</para>
+
+        <screen>
+$ svn propset --revprop -r0 svn:sync-from-url <replaceable>NEW-SOURCE-URL</replaceable> \
+      http://svn.example.com/svn-mirror
+property 'svn:sync-from-url' set on repository revision 0
+$
+</screen>
+
+        <para>Another interesting thing about these special
+          bookkeeping properties is that <command>svnsync</command>
+          will not attempt to mirror any of those properties when they
+          are found in the source repository.  The reason is probably
+          obvious, but basically boils down to
+          <command>svnsync</command> not being able to distinguish the
+          special properties it has merely copied from the source
+          repository from those it needs to consult and maintain for
+          its own bookkeeping needs.  This situation could occur if,
+          for example, you were maintaining a mirror of a mirror of a
+          third repository.  When <command>svnsync</command> sees its
+          own special properties in revision 0 of the source
+          repository, it simple ignores them.</para>
+
+      </sidebar>
+
       <para>There is, however, one bit of inelegance in the process.
         Because Subversion revision properties can be changed at any
         time throughout the lifetime of the repository, and because
@@ -2742,6 +2831,28 @@
         that it is permitted to see.  Obviously such a mirror is not
         useful as a backup solution.</para>
 
+      <para>In Subversion 1.5, <command>svnsync</command> grew the
+        ability to also mirror a subset of a repository rather than
+        the whole thing.  The process of setting up and maintaining
+        such a mirror is exactly the same as when mirroring a whole
+        repository, except that instead of specifying the source
+        repository's root URL when running <command>svnsync
+        init</command>, you specify the URL of some subdirectory
+        within that repository.  Synchronization to that mirror will
+        now only copy the bits that changed under that source
+        repository subdirectory.  There are some limitations to this
+        support though.  First, you can't mirror multiple disjoint
+        subdirectories of the source repository into a single mirror
+        repository—you'd need to instead mirror some parent
+        directory that is common to both.  Secondly, the filtering
+        logic is entirely path-based, so if the subdirectory you are
+        mirroring was renamed at some point in the past, your mirror
+        would only contain the revisions since the directory appeared
+        at the URL you specified.  And likewise, if the source
+        subdirectory is renamed in the future, your synchronization
+        processes will stop mirroring data at the point that the
+        source URL you specified is no longer valid.</para>
+
       <para>As far as user interaction with repositories and mirrors
         goes, it <emphasis>is</emphasis> possible to have a single
         working copy that interacts with both, but you'll have to jump
@@ -3013,19 +3124,19 @@
 </screen>
 
       <para>For folks using versions of Subversion earlier than 1.5,
-        these tasks are a little more complicated.  You can set an
-        explicit UUID on a repository by creating a stub repository
-        dump file that carries that UUID specification, and then
-        loading that into your repository with the
-        <option>--force-uuid</option> option to <command>svnadmin
-        load</command>.</para>
+        these tasks are a little more complicated.  You can explicitly
+        set a repository's UUID by piping a repository dump file stub
+        that carries the new UUID specification through
+        <command>svnadmin load --force-uuid</command>.</para>
 
       <screen>
-$ cat - <<EOF | svnadmin load --force-uuid /var/snv/repos
+$ svnadmin load --force-uuid /var/svn/repos <<EOF
 SVN-fs-dump-format-version: 2
 
 UUID: cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec
 EOF
+$ svnlook uuid /var/svn/repos
+cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec
 $
 </screen>
 
@@ -3063,7 +3174,7 @@
       configuration bits for a now-deleted repository.  If you have
       automated processes that publish information from or about your
       repositories, they may need to be updated.  Hook scripts might
-      need to be reconfigured.  Users need to be notified.  The list
+      need to be reconfigured.  Users may need to be notified.  The list
       can go on indefinitely, or at least to the extent that you've
       built processes and procedures around your Subversion
       repository.</para>

Modified: trunk/src/de/book/ch06-server-configuration.xml
==============================================================================
--- trunk/src/de/book/ch06-server-configuration.xml	(original)
+++ trunk/src/de/book/ch06-server-configuration.xml	Sun Jun 29 14:23:17 2008
@@ -27,7 +27,7 @@
     <para>Subversion was designed with an abstract network layer.
       This means that a repository can be programmatically accessed by
       any sort of server process, and the client <quote>repository
-      access</quote> API allows programmers to write plugins that
+      access</quote> API allows programmers to write plug-ins that
       speak relevant network protocols.  In theory, Subversion can use
       an infinite number of network implementations.  In practice,
       there are only two servers at the time of this writing.</para>
@@ -944,50 +944,52 @@
         a challenge that lists the authentication mechanisms
         available; the client responds by choosing one of the
         mechanisms, and then authentication is carried out in some
-        number of roundtrip messages.  Even when SASL capabilities
+        number of round-trip messages.  Even when SASL capabilities
         aren't present, the client and server inherently know how to
-        use the CRAM-MD5 and ANONYMOUS mechanisms (see the earlier
-        section <xref linkend="svn.serverconfig.svnserve.auth"/>).  If
-        server and client were linked against SASL, then a number of
-        other authentication mechanisms may also be available.
-        However, you'll need to explicitly configure SASL on the
-        server side to advertise them.</para>
+        use the CRAM-MD5 and ANONYMOUS mechanisms (see
+        <xref linkend="svn.serverconfig.svnserve.auth"/>).  If server
+        and client were linked against SASL, then a number of other
+        authentication mechanisms may also be available.  However,
+        you'll need to explicitly configure SASL on the server side to
+        advertise them.</para>
 
       <sect3 id="svn.serverconfig.svnserve.sasl.authn">
         <title>Authenticating with SASL</title>
 
-        <para>To activate specific SASL mechanisms on the server, you'll
-          need to do two things.  First, create
+        <para>To activate specific SASL mechanisms on the server,
+          you'll need to do two things.  First, create
           a <literal>[sasl]</literal> section in your
-          repository's <filename>svnserve.conf</filename> file, with
-          this key-value pair:</para>
+          repository's <filename>svnserve.conf</filename> file with an
+          initial key-value pair:</para>
 
         <programlisting>
+          [sasl]
           use-sasl = true
 </programlisting>
 
-        <para>Second, create a file
-          called <filename>subversion.conf</filename> in a place where
-          the SASL library can find it—typically in the
-          directory where SASL plug-ins are located.  You'll have to
-          locate the plug-in directory on your particular system, such
+        <para>Second, create a main SASL configuration file
+          called <filename>svn.conf</filename> in a place where the
+          SASL library can find it—typically in the directory
+          where SASL plug-ins are located.  You'll have to locate the
+          plug-in directory on your particular system, such
           as <filename>/usr/lib/sasl2/</filename>
           or <filename>/etc/sasl2/</filename>.  (Note that this
           is <emphasis>not</emphasis>
           the <filename>svnserve.conf</filename> file that lives
           within a repository!)</para>
 
-        <para>On a Windows server, you'll have to also edit the
+        <para>On a Windows server, you'll also have to edit the system
           registry (using a tool such as <command>regedit</command>)
           to tell SASL where to find things.  Create a registry key
           named <literal>[HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie
           Mellon\Project Cyrus\SASL Library]</literal>, and place two
           keys inside it: a key called <literal>SearchPath</literal>
-          (whose value is a path containing the SASL
-          <filename>.dll</filename> plug-ins), and a key called
-          <literal>ConfFile</literal> (whose value is a path
-          containing the <filename>subversion.conf</filename>
-          file).</para>
+          (whose value is a path to the directory containing the SASL
+          <filename>sasl*.dll</filename> plug-in libraries), and a key
+          called
+          <literal>ConfFile</literal> (whose value is a path to the
+          parent directory containing
+          the <filename>svn.conf</filename> file you created).</para>
 
         <para>Because SASL provides so many different kinds of
           authentication mechanisms, it would be foolish (and far
@@ -1000,29 +1002,32 @@
           purposes of this discussion, we'll just demonstrate a simple
           example of configuring the DIGEST-MD5 mechanism.  For
           example, if your <filename>subversion.conf</filename>
-          contains the following:</para>
+          (or <filename>svn.conf</filename>) file contains the
+          following:</para>
 
         <screen>
 pwcheck_method: auxprop
 auxprop_plugin: sasldb
+sasldb_path: /etc/my_sasldb
 mech_list: DIGEST-MD5
 </screen>
 
         <para>then you've told SASL to advertise the DIGEST-MD5
           mechanism to clients and to check user passwords against a
-          private password database (typically stored in
-          <filename>/etc/sasldb2</filename>).  A system administrator
-          can then use the <command>saslpasswd2</command> program to
-          add or modify usernames and passwords in the
-          database:</para>
+          private password database located
+          at <filename>/etc/my_sasldb</filename>.  A system
+          administrator can then use
+          the <command>saslpasswd2</command> program to add or modify
+          usernames and passwords in the database:</para>
 
         <screen>
-$ saslpasswd2 -c -u realm username
+$ saslpasswd2 -c -f /etc/my_sasldb -u realm username
 </screen>
 
         <para>A few words of warning: first, make sure that the
-          "realm" argument to <command>saslpasswd2</command> matches
-          the same "realm" you've defined in your
+          <quote>realm</quote> argument
+          to <command>saslpasswd2</command> matches the same realm
+          you've defined in your
           repository's <filename>svnserve.conf</filename> file; if
           they don't match, authentication will fail.  Also, due to a
           shortcoming in SASL, the common realm must be a string with
@@ -1039,16 +1044,16 @@
           details.</para>
 
         <para>Remember that if you configure your server to only allow
-          certain SASL authentication mechanisms, this can have the
-          effect of forcing all of connecting clients to have SASL
-          support as well.  Any Subversion client built without SASL
-          support (which includes all pre-1.5 clients) will be unable
-          to authenticate.  On the one hand, this sort of restriction
-          may be exactly what you want (<quote>my clients must all use
-          Kerberos!</quote>).  However, if you still want non-SASL
-          clients to be able to authenticate, be sure to advertise the
-          CRAM-MD5 mechanism as an option.  All clients are able to
-          use CRAM-MD5, whether they have SASL support or not.</para>
+          certain SASL authentication mechanisms, this forces all
+          connecting clients to have SASL support as well.  Any
+          Subversion client built without SASL support (which includes
+          all pre-1.5 clients) will be unable to authenticate.  On the
+          one hand, this sort of restriction may be exactly what you
+          want (<quote>my clients must all use Kerberos!</quote>).
+          However, if you still want non-SASL clients to be able to
+          authenticate, be sure to advertise the CRAM-MD5 mechanism as
+          an option.  All clients are able to use CRAM-MD5, whether
+          they have SASL capabilities or not.</para>
 
         </sect3>
 
@@ -1356,12 +1361,15 @@
 
         <para>(Note that this all must be on one line—truly on
         one line, since SSH <filename>authorized_keys</filename> files
-        do not even allow the conventional "<literal>\</literal>" for
-        line continuation.  Thus, there should be no line break and no
-        space between "<literal>no-port-forwarding,</literal>" and
-        "<literal>no-agent-forwarding,</literal>" in the example
-        above; the only reason we've formatted it with a line break is
-        to fit it on the physical page of a book.)</para>
+        do not even allow the
+        conventional <quote><literal>\</literal></quote> for line
+        continuation.  Thus, there should be no line break and no
+        space
+        between <quote><literal>no-port-forwarding,</literal></quote>
+        and
+        <quote><literal>no-agent-forwarding,</literal></quote> in the
+        example above; the only reason we've formatted it with a line
+        break is to fit it on the physical page of a book.)</para>
 
       </sect3>
 
@@ -1550,16 +1558,16 @@
 
       <para>If you plan to support multiple Subversion repositories
         that will reside in the same parent directory on your local
-        disk, you can use an alternative directive
-        —<literal>SVNParentPath</literal>— to indicate
-        that common parent directory.  For example, if you know you
-        will be creating multiple Subversion repositories in a
-        directory
-        <filename>/var/svn</filename> that would be accessed via
-        URLs such as <uri>http://my.server.com/svn/repos1</uri>,
-        <uri>http://my.server.com/svn/repos2</uri>, and
-        so on, you could use the <filename>httpd.conf</filename>
-        configuration syntax in the following example:</para>
+        disk, you can use an alternative
+        directive—<literal>SVNParentPath</literal>—to
+        indicate that common parent directory.  For example, if you
+        know you will be creating multiple Subversion repositories in
+        a directory <filename>/var/svn</filename> that would be
+        accessed via URLs such as
+        <uri>http://my.server.com/svn/repos1</uri>,
+        <uri>http://my.server.com/svn/repos2</uri>, and so on, you
+        could use the <filename>httpd.conf</filename> configuration
+        syntax in the following example:</para>
 
         <screen>
 <Location /svn>
@@ -2563,10 +2571,10 @@
           this:</para>
 
         <screen>
-[26/Jan/2007:22:24:20 -0600] - list-dir '/'
-[26/Jan/2007:22:24:27 -0600] - update '/'
-[26/Jan/2007:22:25:29 -0600] - remote-status '/'
-[26/Jan/2007:22:25:31 -0600] sally commit r60
+[26/Jan/2007:22:24:20 -0600] - get-dir /tags r1729 props
+[26/Jan/2007:22:24:27 -0600] - update /trunk r1729 depth=infinity send-copyfrom-args
+[26/Jan/2007:22:25:29 -0600] - status /trunk/foo r1729 depth=infinity
+[26/Jan/2007:22:25:31 -0600] sally commit r1730
 </screen>
 
         <para>For an exhaustive list of all actions logged, see <xref
@@ -3039,12 +3047,14 @@
       access at all to the <filename>secret</filename> subdirectory
       within it.</para>
 
-    <para>The thing to remember is that the most specific path always
-      matches first.  The server tries to match the path itself, and
-      then the parent of the path, then the parent of that, and so on.
-      The net effect is that mentioning a specific path in the
-      accessfile will always override any permissions inherited from
-      parent directories.</para>
+    <tip>
+      <para>The thing to remember is that the most specific path
+        always matches first.  The server tries to match the path
+        itself, and then the parent of the path, then the parent of
+        that, and so on.  The net effect is that mentioning a specific
+        path in the accessfile will always override any permissions
+        inherited from parent directories.</para>
+    </tip>
 
     <para>By default, nobody has any access to the repository at all.
       That means that if you're starting with an empty file, you'll
@@ -3095,10 +3105,18 @@
 @calc-developers = rw
 
 [paint:/projects/paint]
- at paint-developers = rw
 jane = r
+ at paint-developers = rw
 </screen>
 
+    <para>Another important fact is that
+    the <emphasis>first</emphasis> matching rule is the one which gets
+    applied to a user.  In the prior example, even though Jane is a
+    member of the <literal>paint-developers</literal> group (which has
+    read-write access), the <literal>jane = r</literal> rule will be
+    discovered and matched before the group rule, thus denying Jane
+    write access.</para>
+
     <para>Groups can also be defined to contain other groups:</para>
 
     <screen>
@@ -3178,16 +3196,16 @@
       </listitem>
     </itemizedlist>
 
-    <para>The most common problem administrators run into is repository
-      ownership and permissions.  Does every process (or user) in the
-      previous list have the rights to read and write the Berkeley DB
-      files?  Assuming you have a Unix-like operating system, a
-      straightforward approach might be to place every potential
-      repository user into a new <literal>svn</literal> group, and
-      make the repository wholly owned by that group.  But even that's
-      not enough, because a process may write to the database files
-      using an unfriendly umask—one that prevents access by
-      other users.</para>
+    <para>The most common problem administrators run into is
+      repository ownership and permissions.  Does every process (or
+      user) in the previous list have the rights to read and write the
+      repository's underlying data files?  Assuming you have a
+      Unix-like operating system, a straightforward approach might be
+      to place every potential repository user into a
+      new <literal>svn</literal> group, and make the repository wholly
+      owned by that group.  But even that's not enough, because a
+      process may write to the database files using an unfriendly
+      umask—one that prevents access by other users.</para>
 
     <para>So the next step beyond setting up a common group for
       repository users is to force every repository-accessing process
@@ -3211,14 +3229,15 @@
 </screen>
 
     <para>Another common problem is often encountered on Unix-like
-      systems.  As a repository is used, Berkeley DB occasionally
-      creates new log files to journal its actions.  Even if the
-      repository is wholly owned by the <command>svn</command> group,
-      these newly created files won't necessarily be owned by that
-      same group, which then creates more permissions problems for
-      your users.  A good workaround is to set the group SUID bit on
-      the repository's <filename>db</filename> directory. This causes
-      all newly created log files to have the same group owner as the
+      systems.  If your repository is backed by Berkeley DB, for
+      example, it occasionally creates new log files to journal its
+      actions.  Even if the Berkeley DB repository is wholly owned by
+      the <command>svn</command> group, these newly created log files
+      won't necessarily be owned by that same group, which then
+      creates more permissions problems for your users.  A good
+      workaround is to set the group SUID bit on the
+      repository's <filename>db</filename> directory. This causes all
+      newly created log files to have the same group owner as the
       parent directory.</para>
 
     <para>Once you've jumped through these hoops, your repository
@@ -3237,8 +3256,8 @@
       <literal>http://</literal> or <literal>svn://</literal> URLs.
       And maintaining multiple server processes for your Subversion
       repositories is likely to be more of a headache than necessary.
-      We recommend you choose the server that best meets your needs
-      and stick with it!</para>
+      We recommend you choose a single server that best meets your
+      needs and stick with it!</para>
 
     <sidebar>
       <title>The svn+ssh:// Server Checklist</title>

Modified: trunk/src/de/book/ch07-customizing-svn.xml
==============================================================================
--- trunk/src/de/book/ch07-customizing-svn.xml	(original)
+++ trunk/src/de/book/ch07-customizing-svn.xml	Sun Jun 29 14:23:17 2008
@@ -713,7 +713,7 @@
                 <filename>.pdf</filename>, there probably isn't an
                 application configured on your system to open all
                 files whose extensions are
-                <filename>.r4321</filename>.</para>
+                <filename>.r4231</filename>.</para>
 
               <para>You can fix this annoyance by using this
                 configuration option, though.  For files with one of
@@ -1161,26 +1161,27 @@
 
       <para><xref linkend="svn.advanced.externaldifftools.diff.ex-1"/>
         and <xref linkend="svn.advanced.externaldifftools.diff.ex-2"/>
-        are templates for external diff tool wrappers in the Bourne
-        shell and Windows batch scripting languages,
-        respectively.</para>
+        are templates for external diff tool wrappers in the Python
+        and Windows batch scripting languages, respectively.</para>
 
       <example id="svn.advanced.externaldifftools.diff.ex-1">
-        <title>diffwrap.sh</title>
+        <title>diffwrap.py</title>
         <programlisting>
-#!/bin/sh
+#!/usr/bin/env python
+import sys
+import os
 
 # Configure your favorite diff program here.
-DIFF="/usr/local/bin/my-diff-tool"
+DIFF = "/usr/local/bin/my-diff-tool"
 
-# Subversion provides the paths we need as the sixth and seventh 
-# parameters.
-LEFT=${6}
-RIGHT=${7}
+# Subversion provides the paths we need as last two parameters.
+LEFT  = sys.argv[-2]
+RIGHT = sys.argv[-1]
 
 # Call the diff command (change the following line to make sense for
-# your merge program).
-$DIFF --left $LEFT --right $RIGHT
+# your diff program).
+cmd = [DIFF, '--left', LEFT, '--right', RIGHT]
+os.execv(cmd[0], cmd)
 
 # Return an errorcode of 0 if no differences were detected, 1 if some were.
 # Any other errorcode will be treated as fatal.
@@ -1195,13 +1196,14 @@
 REM Configure your favorite diff program here.
 SET DIFF="C:\Program Files\Funky Stuff\My Diff Tool.exe"
 
-REM Subversion provides the paths we need as the sixth and seventh 
-REM parameters.
+REM Subversion provides the paths we need as last two parameters.
+REM These are parameters 6 and 7 (unless you use svn diff -x, in
+REM which case, all bets are off).
 SET LEFT=%6
 SET RIGHT=%7
 
 REM Call the diff command (change the following line to make sense for
-REM your merge program).
+REM your diff program).
 %DIFF% --left %LEFT% --right %RIGHT%
 
 REM Return an errorcode of 0 if no differences were detected, 1 if some were.
@@ -1234,26 +1236,28 @@
 
       <para><xref linkend="svn.advanced.externaldifftools.diff3.ex-1"/> 
         and <xref linkend="svn.advanced.externaldifftools.diff3.ex-2"/> are
-        templates for external merge tool wrappers in the Bourne shell
+        templates for external merge tool wrappers in the Python
         and Windows batch scripting languages, respectively.</para>
 
       <example id="svn.advanced.externaldifftools.diff3.ex-1">
-        <title>diff3wrap.sh</title>
+        <title>diff3wrap.py</title>
         <programlisting>
-#!/bin/sh
+#!/usr/bin/env python
+import sys
+import os
 
-# Configure your favorite diff3/merge program here.
-DIFF3="/usr/local/bin/my-merge-tool"
+# Configure your favorite diff program here.
+DIFF3 = "/usr/local/bin/my-merge-tool"
 
-# Subversion provides the paths we need as the ninth, tenth, and eleventh 
-# parameters.
-MINE=${9}
-OLDER=${10}
-YOURS=${11}
+# Subversion provides the paths we need as last three parameters.
+MINE  = sys.argv[-3]
+OLDER = sys.argv[-2]
+YOURS = sys.argv[-1]
 
 # Call the merge command (change the following line to make sense for
 # your merge program).
-$DIFF3 --older $OLDER --mine $MINE --yours $YOURS
+cmd = [DIFF3, '--older', OLDER, '--mine', MINE, '--yours', YOURS]
+os.execv(cmd[0], cmd)
 
 # After performing the merge, this script needs to print the contents
 # of the merged file to stdout.  Do that in whatever way you see fit.
@@ -1270,9 +1274,10 @@
 REM Configure your favorite diff3/merge program here.
 SET DIFF3="C:\Program Files\Funky Stuff\My Merge Tool.exe"
 
-REM Subversion provides the paths we need as the ninth, tenth, and eleventh 
-REM parameters.  But we only have access to nine parameters at a time, so we
-REM shift our nine-parameter window twice to let us get to what we need.
+REM Subversion provides the paths we need as last three parameters.
+REM These are parameters 9, 10, and 11.  But we only have access to
+REM nine parameters at a time, so we shift our nine-parameter window
+REM twice to let us get to what we need.
 SHIFT
 SHIFT
 SET MINE=%7

Modified: trunk/src/de/book/ch08-embedding-svn.xml
==============================================================================
--- trunk/src/de/book/ch08-embedding-svn.xml	(original)
+++ trunk/src/de/book/ch08-embedding-svn.xml	Sun Jun 29 14:23:17 2008
@@ -139,14 +139,14 @@
       <filename>libsvn_ra_local</filename>,
       <filename>libsvn_ra_serf</filename>, and
       <filename>libsvn_ra_svn</filename> libraries each implement the
-      same interface, all working as plugins to
+      same interface, all working as plug-ins to
       <filename>libsvn_ra</filename>.  And all four communicate with
       the Repository Layer—libsvn_ra_local connects to the
       repository directly; the other three do so over a network.  The
       <filename>libsvn_fs_base</filename> and
       <filename>libsvn_fs_fs</filename> libraries are another pair of
       libraries that implement the same functionality in different
-      ways—both are plugins to the common
+      ways—both are plug-ins to the common
       <filename>libsvn_fs</filename> library.</para>
 
     <para>The client itself also highlights the benefits of modularity
@@ -173,7 +173,7 @@
         filesystem implementation (accessed via
         <filename>libsvn_fs</filename>, and supported by its
         <filename>libsvn_fs_base</filename> and
-        <filename>libsvn_fs_fs</filename> plugins), and the repository
+        <filename>libsvn_fs_fs</filename> plug-ins), and the repository
         logic that wraps it (as implemented in
         <filename>libsvn_repos</filename>).  These libraries provide
         the storage and reporting mechanisms for the various revisions
@@ -200,7 +200,7 @@
         something similar to this before launching the Google Code
         Project Hosting service:  they announced in mid-2006 that
         members of its open source team had written a new proprietary
-        Subversion filesystem plugin that used their ultra-scalable
+        Subversion filesystem plug-in that used their ultra-scalable
         Bigtable database for its storage.</para>
 
       <para>The filesystem API exported by
@@ -434,8 +434,8 @@
      
       <screen>
 $ svn --version
-svn, version 1.5.0 (Beta 1)
-   compiled Mar 19 2008, 14:19:42
+svn, version 1.5.0 (r31699)
+   compiled Jun 18 2008, 09:57:36
 
 Copyright (C) 2000-2008 CollabNet.
 Subversion is open source software, see http://subversion.tigris.org/
@@ -460,7 +460,7 @@
       <para>The public API exported by the RA Layer contains
         functionality necessary for sending and receiving versioned
         data to and from the repository.  And each of the available RA
-        plugins is able to perform that task using a specific
+        plug-ins is able to perform that task using a specific
         protocol—<filename>libsvn_ra_dav</filename> speaks
         HTTP/WebDAV (optionally using SSL encryption) with an Apache
         HTTP Server that is running the
@@ -1034,7 +1034,7 @@
  * repository located at REPOS_PATH.  Perform all memory allocation in
  * POOL.  This function will create a new revision for the addition of
  * NEW_DIRECTORY.  Return zero if the operation completes
- * successfully, non-zero otherwise.
+ * successfully, nonzero otherwise.
  */
 static int
 make_new_directory(const char *repos_path,

Modified: trunk/src/de/book/ch09-reference.xml
==============================================================================
--- trunk/src/de/book/ch09-reference.xml	(original)
+++ trunk/src/de/book/ch09-reference.xml	Sun Jun 29 14:23:17 2008
@@ -42,13 +42,87 @@
       <title><command>svn</command> Options</title> 
       
       <para>While Subversion has different options for its
-        subcommands, all options are global—that is, each
-        option is guaranteed to mean the same thing regardless of
-        the subcommand you use it with.  For example,
-        <option>--verbose</option> (<option>-v</option>) always
-        means <quote>verbose output,</quote> regardless of the
+        subcommands, all options exist in a single
+        namespace—that is, each option is guaranteed to mean the
+        same thing regardless of the subcommand you use it with.  For
+        example, <option>--verbose</option> (<option>-v</option>)
+        always means <quote>verbose output,</quote> regardless of the
         subcommand you use it with.</para>
 
+      <para>The <command>svn</command> command-line client usually
+        exits quickly with an error if you pass it an option which
+        does not apply to the specified subcommand.  But as of
+        Subversion 1.5, several of the options which apply to
+        all—or nearly all—of the subcommands have been
+        deemed acceptable by all subcommands, even if they have no
+        effect upon some of them.  They appear grouped together in the
+        command-line client's usage messages as global options.  This
+        was done to assist folks who write scripts which wrap the
+        command-line client.  These global options are as
+        follows:</para>
+        
+      <variablelist>
+
+        <varlistentry>
+          <term><option>--config-dir</option>
+            <replaceable>DIR</replaceable></term>
+          <listitem>
+            <para>Instructs Subversion to read configuration
+              information from the specified directory instead of the
+              default location (<filename>.subversion</filename> in
+              the user's home directory).</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--no-auth-cache</option></term>
+          <listitem>
+            <para>Prevents caching of authentication information
+              (e.g., username and password) in the Subversion
+              runtime configuration directories.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--non-interactive</option></term>
+          <listitem>
+            <para>Disables all interactive prompting.  Some examples
+              of interactive prompting include requests for
+              authentication credentials and conflict resolution
+              decisions.  This is useful if you're running Subversion
+              inside of an automated script and it's more appropriate
+              to have Subversion fail than to prompt for more
+              information.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--password</option>
+            <replaceable>PASSWD</replaceable></term>
+          <listitem>
+            <para>Specifies the password to use when authenticating
+              against a Subversion server.  If not provided, or if
+              incorrect, Subversion will prompt you for this
+              information as needed.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--username</option>
+            <replaceable>NAME</replaceable></term>
+          <listitem>
+            <para>Specifies the username to use when authenticating
+              against a Subversion server.  If not provided, or if
+              incorrect, Subversion will prompt you for this
+              information as needed.</para>
+          </listitem>
+        </varlistentry>
+        
+      </variablelist>
+
+      <para>The rest of the options apply and are accepted by only a
+        subset of the subcommand.  They are as follows:</para>
+
       <variablelist>
         
         <varlistentry>
@@ -56,7 +130,7 @@
             <replaceable>ACTION</replaceable></term>
           <listitem>
             <para>Specify action for automatic conflict resolution.
-              Possible actions are (<literal>postpone</literal>,
+              Possible actions are <literal>postpone</literal>,
               <literal>base</literal>, <literal>mine</literal>,
               <literal>theirs</literal>, <literal>edit</literal>, and
               <literal>launch.</literal></para>
@@ -93,13 +167,11 @@
         </varlistentry>
 
         <varlistentry>
-          <term><option>--config-dir</option>
-            <replaceable>DIR</replaceable></term>
+          <term><option>--cl</option>
+            <replaceable>ARG</replaceable></term>
           <listitem>
-            <para>Instructs Subversion to read configuration
-              information from the specified directory instead of the
-              default location (<filename>.subversion</filename> in
-              the user's home directory).</para>
+            <para>This is an alias for the
+              <option>--changelist</option> option.</para>
           </listitem>
         </varlistentry>
 
@@ -276,9 +348,9 @@
         </varlistentry>
       
         <varlistentry>
-          <term><option>--keep-changelist</option></term>
+          <term><option>--keep-changelists</option></term>
           <listitem>
-            <para>Don't delete the changelist after commit.</para>
+            <para>Don't delete changelists after committing.</para>
           </listitem>
         </varlistentry>
       
@@ -291,7 +363,7 @@
         </varlistentry>
       
         <varlistentry>
-          <term><option>--limit</option>
+          <term><option>--limit</option> (<option>-l</option>)
             <replaceable>NUM</replaceable></term>
           <listitem>
             <para>Show only the first <replaceable>NUM</replaceable>
@@ -323,15 +395,6 @@
         </varlistentry>
       
         <varlistentry>
-          <term><option>--no-auth-cache</option></term>
-          <listitem>
-            <para>Prevents caching of authentication information
-              (e.g., username and password) in the Subversion
-              administrative directories.</para>
-          </listitem>
-        </varlistentry>
-      
-        <varlistentry>
           <term><option>--no-auto-props</option></term>
           <listitem>
             <para>Disables auto-props, overriding the
@@ -375,18 +438,6 @@
         </varlistentry>
 
         <varlistentry>
-          <term><option>--non-interactive</option></term>
-          <listitem>
-            <para>In the case of an authentication failure or
-              insufficient credentials, prevents prompting for
-              credentials (e.g., username or password).  This is useful
-              if you're running Subversion inside of an automated
-              script, and it's more appropriate to have Subversion fail
-              than to prompt for more information.</para>
-          </listitem>
-        </varlistentry>
-      
-        <varlistentry>
           <term><option>--non-recursive</option> (<option>-N</option>)</term>
           <listitem>
             <para><emphasis>Deprecated</emphasis>.  Stops a subcommand
@@ -426,17 +477,6 @@
         </varlistentry>
 
         <varlistentry>
-          <term><option>--password</option>
-            <replaceable>PASS</replaceable></term>
-          <listitem>
-            <para>Indicates that you are providing your password for
-              authentication on the command line—otherwise, if
-              it is needed, Subversion will prompt you for
-              it.</para>
-          </listitem>
-        </varlistentry>
-      
-        <varlistentry>
           <term><option>--quiet</option> (<option>-q</option>)</term>
           <listitem>
             <para>Requests that the client print only essential
@@ -448,16 +488,26 @@
           <term><option>--record-only</option></term>
           <listitem>
             <para>Mark revisions as merged (for use with
-              <option>--revision</option> (<option>-r</option>)</para>
+              <option>--revision</option>)</para>
           </listitem>
         </varlistentry>
         
         <varlistentry>
           <term><option>--recursive</option> (<option>-R</option>)</term>
           <listitem>
-            <para><emphasis>Deprecated</emphasis>.  Makes a subcommand
-              recurse into subdirectories.  Most subcommands recurse
-              by default.</para>
+            <para>Makes a subcommand recurse into subdirectories.
+              Most subcommands recurse by default.</para>
+          </listitem>
+        </varlistentry>
+        
+        <varlistentry>
+          <term><option>--reintegrate</option></term>
+          <listitem>
+            <para>Used with the <command>svn merge</command>
+              subcommand, merges all of the source URL's changes into
+              the working copy.  See
+              <xref linkend="svn.branchemerge.basicmerging.stayinsync"/>
+              for details.</para>
           </listitem>
         </varlistentry>
         
@@ -533,6 +583,15 @@
         </varlistentry>
 
         <varlistentry>
+          <term><option>--show-revs</option> <replaceable>ARG</replaceable></term>
+          <listitem>
+            <para>Used to make <command>svn mergeinfo</command>
+              display either <literal>merged</literal>
+              or <literal>eligible</literal> revisions.</para>
+          </listitem>
+        </varlistentry>
+        
+        <varlistentry>
           <term><option>--show-updates</option> (<option>-u</option>)</term>
           <listitem>
             <para>Causes the client to display information about
@@ -577,26 +636,11 @@
         </varlistentry>
         
         <varlistentry>
-          <term><option>--username</option>
-            <replaceable>NAME</replaceable></term>
-          <listitem>
-            <para>Indicates that you are providing your username for
-              authentication on the command line—otherwise, if
-              it is needed, Subversion will prompt you for
-              it.</para>
-          </listitem>
-        </varlistentry>
-        
-        <varlistentry>
           <term><option>--use-merge-history</option>
             (<option>-g</option>)</term>
           <listitem>
             <para>Use or display additional information from merge
-              history.  When used with <command>svn copy</command> or
-              <command>svn move</command>, the client will contact the
-              server in order to propagate merge history information.
-              When used with other commands, the client will display
-              merge history information.</para>
+              history.</para>
           </listitem>
         </varlistentry>
         
@@ -674,7 +718,10 @@
     <sect2 id="svn.ref.svn.c">
       <title><command>svn</command> Subcommands</title>
 
-      <para>Here are the various subcommands.</para>
+      <para>Here are the various subcommands.  For the sake of
+        brevity, we omit the global options (described in <xref
+        linkend="svn.ref.svn.sw" />) from the subcommand descriptions
+        which follow.</para>
 
       <refentry id="svn.ref.svn.c.add">
 
@@ -724,15 +771,14 @@
           <title>Options</title>
 
           <screen>
---targets FILENAME
---quiet (-q)
---config-dir DIR
---no-ignore
 --auto-props
---no-auto-props
---force
 --depth ARG
+--force
+--no-auto-props
+--no-ignore
 --parents
+--quiet (-q)
+--targets FILENAME
 </screen>
         </refsect1>
         
@@ -779,7 +825,7 @@
 $ svn add * --force
 A         foo.c
 A         somedir/bar.c
-A         otherdir/docs/baz.doc
+A  (bin)  otherdir/docs/baz.doc
 …
 </screen>
 
@@ -831,18 +877,13 @@
           <title>Options</title>
 
           <screen>
+--extensions (-x) ARG
+--force
+--incremental
 --revision (-r) ARG
+--use-merge-history (-g)
 --verbose (-v)
---incremental
 --xml
---extensions (-x) ARG
---force
---use-merge-history(-g)
---username ARG
---password ARG
---no-auth-cache
---non-interactive
---config-dir ARG
 </screen>
 
 <!--
@@ -875,7 +916,7 @@
         </refsect1>
 
         <refsect1>
-          <title>Example</title>
+          <title>Examples</title>
 
           <para>If you want to see blame annotated source for
             <filename>readme.txt</filename> in your test
@@ -893,6 +934,37 @@
             the <emphasis>context</emphasis> of the line—he may
             have just adjusted the whitespace.
           </para>
+
+          <para>If you use the <option>--xml</option> option, you can
+            get xml output describing the blame annotations, but not
+            the contents of the lines themselves:</para>
+
+          <screen>
+$ svn blame --xml http://svn.red-bean.com/repos/test/readme.txt
+<?xml version="1.0"?>
+<blame>
+<target
+   path="sandwich.txt">
+<entry
+   line-number="1">
+<commit
+   revision="3">
+<author>sally</author>
+<date>2008-05-25T19:12:31.428953Z</date>
+</commit>
+</entry>
+<entry
+   line-number="2">
+<commit
+   revision="5">
+<author>harry</author>
+<date>2008-05-29T03:26:12.293121Z</date>
+</commit>
+</entry>
+</target>
+</blame>
+</screen>
+
         </refsect1>
       </refentry>
 
@@ -941,11 +1013,6 @@
 
           <screen>
 --revision (-r) REV
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
 </screen>
         </refsect1>
 
@@ -1028,11 +1095,12 @@
           <title>Options</title>
 
           <screen>
---remove
+--changelist ARG
 --depth ARG
+--quiet (-q)
+--recursive (-R)
+--remove
 --targets ARG
---changelist ARG
---config-dir ARG
 </screen>
         </refsect1>
 
@@ -1124,17 +1192,11 @@
           <title>Options</title>
           
           <screen>
---revision (-r) REV
---quiet (-q)
 --depth ARG
 --force
---accept ARG
---username USER
---password PASS
---no-auth-cache
---non-interactive
 --ignore-externals
---config-dir DIR
+--quiet (-q)
+--revision (-r) REV
 </screen>
         </refsect1>
         
@@ -1271,7 +1333,6 @@
 
           <screen>
 --diff3-cmd CMD
---config-dir DIR
 </screen>
 
         </refsect1>
@@ -1361,22 +1422,18 @@
           <title>Options</title>
 
           <screen>
---message (-m) TEXT
+--changelist ARG
+--depth ARG
+--editor-cmd ARG
+--encoding ENC
 --file (-F) FILE
---quiet (-q)
+--force-log
+--keep-changelists
+--message (-m) TEXT
 --no-unlock
+--quiet (-q)
 --targets FILENAME
---force-log
---depth ARG
 --with-revprop ARG
---username USER
---password PASS
---no-auth-cache
---non-interactive
---encoding ENC
---config-dir DIR
---changelist ARG
---keep-changelist
 </screen>
         </refsect1>
 
@@ -1467,7 +1524,7 @@
             <variablelist>
 
               <varlistentry>
-                <term>WC  -> WC</term>
+                <term>WC → WC</term>
                 <listitem>
                   <para>Copy and schedule an item for
                     addition (with history).</para>
@@ -1475,14 +1532,14 @@
               </varlistentry>
 
               <varlistentry>
-                <term>WC  -> URL</term>
+                <term>WC → URL</term>
                 <listitem>
                   <para>Immediately commit a copy of WC to URL.</para>
                 </listitem>
               </varlistentry>
 
               <varlistentry>
-                <term>URL -> WC</term>
+                <term>URL → WC</term>
                 <listitem>
                   <para>Check out URL into WC and schedule it for
                     addition.</para>
@@ -1490,7 +1547,7 @@
               </varlistentry>
 
               <varlistentry>
-                <term>URL -> URL</term>
+                <term>URL → URL</term>
                 <listitem>
                   <para>Complete server-side copy.  This is
                     usually used to branch and tag.</para>
@@ -1538,20 +1595,15 @@
           <title>Options</title>
 
           <screen>
---message (-m) TEXT
+--editor-cmd EDITOR
+--encoding ENC
 --file (-F) FILE
---revision (-r) REV
---quiet (-q)
+--force-log
+--message (-m) TEXT
 --parents
+--quiet (-q)
+--revision (-r) REV
 --with-revprop ARG
---username USER
---password PASS
---no-auth-cache
---non-interactive
---force-log
---editor-cmd EDITOR
---encoding ENC
---config-dir DIR
 </screen>
         </refsect1>
 
@@ -1583,7 +1635,7 @@
             working copy under a different name:</para>
 
           <screen>
-$ svn cp bat.c ya-old-bat.c
+$ svn cp -r 8 bat.c ya-old-bat.c
 A         ya-old-bat.c
 </screen>
 
@@ -1602,7 +1654,7 @@
             repository until you commit):</para>
  
           <screen>
-$ svn copy file:///var/svn/repos/test/far-away near-here
+$ svn copy file:///var/svn/repos/test/far-away -r 6 near-here
 A         near-here
 </screen>
 
@@ -1614,14 +1666,15 @@
           <para>And finally, copy between two URLs:</para>
 
           <screen>
-$ svn copy file:///var/svn/repos/test/far-away file:///var/svn/repos/test/over-there -m "remote copy."
+$ svn copy file:///var/svn/repos/test/far-away \
+           file:///var/svn/repos/test/over-there -m "remote copy."
 
 Committed revision 9.
 </screen>
 
           <screen>
 $ svn copy file:///var/svn/repos/test/trunk \
-    file:///var/svn/repos/test/tags/0.6.32-prerelease -m "tag tree"
+           file:///var/svn/repos/test/tags/0.6.32-prerelease -m "tag tree"
 
 Committed revision 12.
 </screen>
@@ -1638,7 +1691,8 @@
 
           <screen>
 $ svn copy -r 11 file:///var/svn/repos/test/trunk \
-     file:///var/svn/repos/test/tags/0.6.32-prerelease -m "Forgot to tag at rev 11"
+           file:///var/svn/repos/test/tags/0.6.32-prerelease \
+           -m "Forgot to tag at rev 11"
 
 Committed revision 13.
 </screen>
@@ -1700,21 +1754,16 @@
           <title>Options</title>
 
           <screen>
+--editor-cmd EDITOR
+--encoding ENC
+--file (-F) FILE
 --force
 --force-log
+--keep-local
 --message (-m) TEXT
---file (-F) FILE
 --quiet (-q)
 --targets FILENAME
 --with-revprop ARG
---keep-local
---username USER
---password PASS
---no-auth-cache
---non-interactive
---editor-cmd EDITOR
---encoding ENC
---config-dir DIR
 </screen>
         </refsect1>
         
@@ -1741,7 +1790,8 @@
             to supply a log message:</para>
 
           <screen>
-$ svn delete -m "Deleting file 'yourfile'" file:///var/svn/repos/test/yourfile
+$ svn delete -m "Deleting file 'yourfile'" \
+             file:///var/svn/repos/test/yourfile
 
 Committed revision 15.
 </screen>
@@ -1935,23 +1985,18 @@
           <title>Options</title>
 
           <screen>
---revision (-r) ARG
 --change (-c) ARG
---old ARG
---new ARG
+--changelist ARG
 --depth ARG
 --diff-cmd CMD
 --extensions (-x) "ARGS"
+--force
+--new ARG
 --no-diff-deleted
 --notice-ancestry
+--old ARG
+--revision (-r) ARG
 --summarize
---force
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
---changelist ARG
 --xml
 </screen>
         </refsect1>
@@ -2033,7 +2078,8 @@
             notation:</para>
 
           <screen>
-$ svn diff -r 3000:3500 --old http://svn.collab.net/repos/svn/trunk COMMITTERS README HACKING
+$ svn diff -r 3000:3500 --old http://svn.collab.net/repos/svn/trunk \
+           COMMITTERS README HACKING
           </screen>
 
           <para>If you have a working copy, you can obtain the
@@ -2060,7 +2106,34 @@
 > This is a test
 > 
 </screen>
-          
+
+          <para>Lastly, you can use the <option>--xml</option> option
+            along with the <option>--summarize</option> option to view
+            xml describing the changes that occurred between
+            revisions, but not the contents of the diff itself:</para>
+          
+          <screen>
+$ svn diff --summarize --xml http://svn.red-bean.com/repos/test@r2 \
+           http://svn.red-bean.com/repos/test
+<?xml version="1.0"?>
+<diff>
+<paths>
+<path
+   props="none"
+   kind="file"
+   item="modified"&gt;http://svn.red-bean.com/repos/test/sandwich.txt&lt;/path&gt;
+<path
+   props="none"
+   kind="file"
+   item="deleted"&gt;http://svn.red-bean.com/repos/test/burrito.txt&lt;/path&gt;
+<path
+   props="none"
+   kind="dir"
+   item="added"&gt;http://svn.red-bean.com/repos/test/snacks&lt;/path&gt;
+</paths>
+</diff>
+</screen>
+
         </refsect1>
       </refentry>
 
@@ -2120,17 +2193,12 @@
           <title>Options</title>
 
           <screen>
---revision (-r) REV
---quiet (-q)
---force
---username USER
---password PASS
---no-auth-cache
---non-interactive
 --depth ARG
---config-dir DIR
---native-eol EOL
+--force
 --ignore-externals
+--native-eol EOL
+--quiet (-q)
+--revision (-r) REV
 </screen>
         </refsect1>
 
@@ -2229,7 +2297,6 @@
           <title>Options</title>
 
           <screen>
---config-dir DIR
 </screen>
         </refsect1>
       </refentry>
@@ -2284,23 +2351,18 @@
           <title>Options</title>
 
           <screen>
---message (-m) TEXT
---file (-F) FILE
---quiet (-q)
+--auto-props
 --depth ARG
---force
---with-revprop ARG
---username USER
---password PASS
---no-auth-cache
---non-interactive
---force-log
 --editor-cmd EDITOR
 --encoding ENC
---config-dir DIR
---auto-props
+--file (-F) FILE
+--force
+--force-log
+--message (-m) TEXT
 --no-auto-props
---ignore-externals
+--no-ignore
+--quiet (-q)
+--with-revprop ARG
 </screen>
         </refsect1>
 
@@ -2316,7 +2378,8 @@
             you.</para>
 
           <screen>
-$ svn import -m "New import" myproj http://svn.red-bean.com/repos/trunk/misc
+$ svn import -m "New import" myproj \
+             http://svn.red-bean.com/repos/trunk/misc
 Adding         myproj/sample.txt
 …
 Transmitting file data .........
@@ -2329,7 +2392,8 @@
             <filename>myproj</filename> to the end of the URL:</para>
 
           <screen>
-$ svn import -m "New import" myproj http://svn.red-bean.com/repos/trunk/misc/myproj
+$ svn import -m "New import" myproj \
+            http://svn.red-bean.com/repos/trunk/misc/myproj
 Adding         myproj/sample.txt
 …
 Transmitting file data .........
@@ -2421,17 +2485,13 @@
           <title>Options</title>
 
           <screen>
---revision (-r) REV
+--changelist ARG
 --depth ARG
---targets FILENAME
 --incremental
+--recursive (-R)
+--revision (-r) REV
+--targets FILENAME
 --xml
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
---changelist ARG
 </screen>
         </refsect1>
 
@@ -2502,8 +2562,36 @@
 My test lock comment
 </screen>
 
+           <para>Lastly, <command>svn info</command> output is
+             available in xml format by passing
+             the<option>--xml</option> option:</para>
+
+           <screen>
+$ svn info --xml http://svn.red-bean.com/repos/test
+<?xml version="1.0"?>
+<info>
+<entry
+   kind="dir"
+   path="."
+   revision="1">
+<url>http://svn.red-bean.com/repos/test</url>
+<repository>
+<root>http://svn.red-bean.com/repos/test</root>
+<uuid>5e7d134a-54fb-0310-bd04-b611643e5c25</uuid>
+</repository>
+<wc-info>
+<schedule>normal</schedule>
+<depth>infinity</depth>
+</wc-info>
+<commit
+   revision="1">
+<author>sally</author>
+<date>2003-01-15T23:35:12.847647Z</date>
+</commit>
+</entry>
+</info>
+</screen>
 
-          
         </refsect1>
       </refentry>
 
@@ -2582,16 +2670,12 @@
           <title>Options</title>
 
           <screen>
---revision (-r) REV
---verbose (-v)
 --depth ARG
 --incremental
+--recursive (-R)
+--revision (-r) REV
+--verbose (-v)
 --xml
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
 </screen>
         </refsect1>
 
@@ -2621,6 +2705,30 @@
      24 harry               Jan 18 11:27 examples/
 </screen>
 
+          <para>You can also get <command>svn list</command> output in
+            xml format with the <option>--xml</option> option:</para>
+
+          <screen>
+$ svn list --xml http://svn.red-bean.com/repos/test
+<?xml version="1.0"?>
+<lists>
+<list
+   path="http://svn.red-bean.com/repos/test">
+<entry
+   kind="dir">
+<name>examples</name>
+<size>0</size>
+<commit
+   revision="24">
+<author>harry</author>
+<date>2008-01-18T06:35:53.048870Z</date>
+</commit>
+</entry>
+...
+</list>
+</lists>
+</screen>
+
           <para>For further details, see the earlier section <xref
             linkend="svn.tour.history.browsing.list"/>.</para>
 
@@ -2677,16 +2785,12 @@
           <title>Options</title>
 
           <screen>
---targets FILENAME
---message (-m) TEXT
+--encoding ENC
 --file (-F) FILE
+--force
 --force-log
---encoding ENC
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
+--message (-m) TEXT
+--targets FILENAME
 </screen>
         </refsect1>
 
@@ -2742,7 +2846,6 @@
         <refsect1>
           <title>Synopsis</title>
           <programlisting>svn log [PATH]</programlisting>
-          <programlisting>svn log URL [PATH...]</programlisting>
           <programlisting>svn log URL[@REV] [PATH...]</programlisting>
         </refsect1>
         <refsect1>
@@ -2796,23 +2899,18 @@
           <title>Options</title>
 
           <screen>
---revision (-r) REV
---quiet (-q)
---verbose (-v)
---targets FILENAME
---user-merge-history (-g)
---change (-c)
---stop-on-copy
+--change (-c) ARG
 --incremental
 --limit (-l) NUM
+--quiet (-q)
+--revision (-r) REV
+--stop-on-copy
+--targets FILENAME
+--use-merge-history (-g)
+--verbose (-v)
 --with-all-revprops
 --with-revprop ARG
 --xml
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
 </screen>
         </refsect1>
 
@@ -2881,6 +2979,65 @@
 …
 </screen>
 
+          <para>The <option>--verbose</option> option causes
+            <command>svn log</command> to include information about
+            the paths that were changed in each displayed revision.
+            These paths appear, one path per line of output, with
+            action codes that indicate what type of change was made to
+            the path.</para>
+
+          <screen>
+$ svn log -v http://svn.red-bean.com/repos/test/ foo.c bar.c
+------------------------------------------------------------------------
+r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line
+Changed paths:
+   M /foo.c
+
+Added defines.
+------------------------------------------------------------------------
+r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 line
+Changed paths:
+   A /bar.c
+
+Added new file bar.c
+------------------------------------------------------------------------
+r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
+…
+</screen>
+
+          <para>There are just a handful of action codes used by
+            <command>svn log</command>, and they are similar to the
+            ones used by the <command>svn update</command>
+            command:</para>
+
+          <variablelist>
+            <varlistentry>
+              <term><literal>A</literal></term>
+              <listitem><para>The item was added.</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><literal>D</literal></term>
+              <listitem><para>The item was deleted.</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><literal>M</literal></term>
+              <listitem><para>Properties or textual contents on the
+                item were changed.</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><literal>R</literal></term>
+              <listitem><para>The item was replaced by a different one
+                at the same location.</para></listitem>
+            </varlistentry>
+          </variablelist>
+
+          <para>In addition to the action codes which precede the
+            changed paths, <command>svn log --verbose</command> will
+            note a path was added or replaced as the result of a copy
+            operation.  It does so by printing <literal>(from
+            <replaceable>COPY-FROM-PATH</replaceable>:<replaceable>COPY-FROM-REV</replaceable>)</literal>
+            after such paths.</para>
+
           <para>When you're concatenating the results of multiple
             calls to the log command, you may want to use the
             <option>--incremental</option> option. <command>svn
@@ -2927,7 +3084,6 @@
             in your output by using the <option>--incremental</option>
             option:</para>
 
-
           <screen>
 $ svn log --incremental -r 14 > mylog
 $ svn log --incremental -r 19 >> mylog
@@ -2945,9 +3101,17 @@
 
           <para>The <option>--incremental</option> option provides
             similar output control when using the
-            <option>--xml</option> option.</para>
-
+            <option>--xml</option> option:</para>
 
+          <screen>
+$ svn log --xml --incremental -r 1 sandwich.txt
+<logentry
+   revision="1">
+<author>harry</author>
+<date>2008-06-03T06:35:53.048870Z</date>
+<msg>Initial Import.</msg>
+</logentry>
+</screen>
 
           <tip>
             <para>If you run <command>svn log</command> on a specific
@@ -3071,22 +3235,18 @@
           <title>Options</title>
 
           <screen>
---revision (-r) REV
+--accept ARG
 --change (-c) REV
 --depth ARG
---record-only
---accept ARG
---quiet (-q)
---force
---dry-run
 --diff3-cmd CMD
+--dry-run
 --extensions (-x) ARG
+--force
 --ignore-ancestry
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
+--quiet (-q)
+--record-only
+--reintegrate
+--revision (-r) REV
 </screen>
         </refsect1>
 
@@ -3094,25 +3254,26 @@
           <title>Examples</title>
 
           <para>Merge a branch back into the trunk (assuming that
-            you have a working copy of the trunk, and that the branch
-            was created in revision 250):</para>
-
-          <screen>
-$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch
-U  myproj/tiny.txt
-U  myproj/thhgttg.txt
-U  myproj/win.txt
-U  myproj/flo.txt
-</screen>
-
-          <para>If you branched at revision 23, and you want to
-            merge changes on trunk into your branch, you could do
-            this from inside the working copy of your branch:</para>
+            you have an up to date working copy of the trunk).</para>
 
           <screen>
-$ svn merge -r 23:30 file:///var/svn/repos/trunk/vendors
-U  myproj/thhgttg.txt
-…
+$ svn merge --reintegrate \
+            http://svn.example.com/repos/calc/branches/my-calc-branch
+--- Merging differences between repository URLs into '.':
+U    button.c
+U    integer.c
+U    Makefile
+ U   .
+
+$ # build, test, verify, ...
+
+$ svn commit -m "Merge my-calc-branch back into trunk!"
+Sending        .
+Sending        button.c
+Sending        integer.c
+Sending        Makefile
+Transmitting file data ..
+Committed revision 391.
 </screen>
           
         <para>To merge changes to a single file:</para>
@@ -3142,12 +3303,21 @@
         </refnamediv>
         <refsect1>
           <title>Synopsis</title>
-          <programlisting>svn mergeinfo [TARGET[@REV]...]</programlisting>
+          <programlisting>svn mergeinfo SOURCE_URL[@REV] [TARGET[@REV]...]</programlisting>
 
         </refsect1>
         <refsect1>
           <title>Description</title>
-          <para>Query merge-related information.</para>
+          <para>Query information related to merges (or potential
+            merges) between <replaceable>SOURCE-URL</replaceable> and
+            <replaceable>TARGET</replaceable>.  If
+            the <option>--show-revs</option> option is not provided,
+            display revisions which have been merged
+            from <replaceable>SOURCE-URL</replaceable>
+            to <replaceable>TARGET</replaceable>.  Otherwise, display
+            either <literal>merged</literal>
+            or <literal>eligible</literal> revisions as specified by
+            the <option>--show-revs</option> option.</para>
 
         </refsect1>
         <refsect1>
@@ -3170,11 +3340,6 @@
 
           <screen>
 --revision (-r) REV
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
 </screen>
         </refsect1>
 
@@ -3248,19 +3413,14 @@
           <title>Options</title>
 
           <screen>
---message (-m) TEXT
---file (-F) FILE
---quiet (-q)
---parents
---with-revprop ARG
---username USER
---password PASS
---no-auth-cache
---non-interactive
 --editor-cmd EDITOR
 --encoding ENC
+--file (-F) FILE
 --force-log
---config-dir DIR
+--message (-m) TEXT
+--parents
+--quiet (-q)
+--with-revprop ARG
 </screen>
         </refsect1>
 
@@ -3328,7 +3488,7 @@
           <variablelist>
 
             <varlistentry>
-              <term>WC  -> WC</term>
+              <term>WC → WC</term>
               <listitem>
                 <para>Move and schedule a file or directory for
                   addition (with history).</para>
@@ -3336,7 +3496,7 @@
             </varlistentry>
 
             <varlistentry>
-              <term>URL -> URL</term>
+              <term>URL → URL</term>
               <listitem>
                 <para>Complete server-side rename.</para>
               </listitem>
@@ -3364,21 +3524,16 @@
           <title>Options</title>
 
           <screen>
---message (-m) TEXT
+--editor-cmd EDITOR
+--encoding ENC
 --file (-F) FILE
---revision (-r) REV (<emphasis>Deprecated</emphasis>)
---quiet (-q)
 --force
+--force-log
+--message (-m) TEXT
 --parents
+--quiet (-q)
+--revision (-r) REV
 --with-revprop ARG
---username USER
---password PASS
---no-auth-cache
---non-interactive
---editor-cmd EDITOR
---encoding ENC
---force-log
---config-dir DIR
 </screen>
         </refsect1>
 
@@ -3393,7 +3548,8 @@
 D         foo.c
 </screen>
 
-          <para>Move several files in your working copy into a subdirectory:</para>
+          <para>Move several files in your working copy into a
+            subdirectory:</para>
 
           <screen>
 $ svn move baz.c bat.c qux.c src
@@ -3465,16 +3621,12 @@
           <title>Options</title>
 
           <screen>
---quiet (-q)
+--changelist ARG
 --depth ARG
+--quiet (-q)
+--recursive (-R)
 --revision (-r) REV
 --revprop
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
---changelist ARG
 </screen>
         </refsect1>
 
@@ -3548,19 +3700,15 @@
           <title>Options</title>
 
           <screen>
---revision (-r) REV
---revprop
---message (-m) ARG
+--editor-cmd EDITOR
+--encoding ENC
 --file (-F) ARG
+--force
 --force-log
+--message (-m) ARG
+--revision (-r) REV
+--revprop
 --with-revprop ARG
---username USER
---password PASS
---no-auth-cache
---non-interactive
---encoding ENC
---editor-cmd EDITOR
---config-dir DIR
 </screen>
         </refsect1>
 
@@ -3630,17 +3778,13 @@
           <title>Options</title>
 
           <screen>
+--changelist ARG
 --depth ARG
+--recursive (-R)
 --revision (-r) REV
 --revprop
 --strict
 --xml
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
---changelist ARG
 </screen>
         </refsect1>
 
@@ -3663,6 +3807,23 @@
 $ svn propget svn:log --revprop -r 20 
 Began journal.
 </screen>
+
+          <para>Lastly, you can get <command>svn propget</command>
+            output in xml format with the <option>--xml</option>
+            option:</para>
+
+          <screen>
+$ svn propget --xml svn:ignore .
+<?xml version="1.0"?>
+<properties>
+<target
+   path="">
+<property
+   name="svn:ignore">*.o
+</property>
+</target>
+</properties>
+</screen>
           
         </refsect1>
       </refentry>
@@ -3714,18 +3875,14 @@
           <title>Options</title>
 
           <screen>
---verbose (-v)
+--changelist ARG
 --depth ARG
---revision (-r) REV
 --quiet (-q)
+--recursive (-R)
+--revision (-r) REV
 --revprop
+--verbose (-v)
 --xml
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
---changelist ARG
 </screen>
         </refsect1>
         
@@ -3754,6 +3911,22 @@
   svn:keywords : Author Date Rev
   owner : sally
 </screen>
+
+          <para>Lastly, you can get <command>svn proplist</command>
+            output in xml format with the <option>--xml</option>
+            option:</para>
+
+          <screen>
+$ svn proplist --xml 
+<?xml version="1.0"?>
+<properties>
+<target
+   path=".">
+<property
+   name="svn:ignore"/>
+</target>
+</properties>
+</screen>
           
         </refsect1>
       </refentry>
@@ -3815,20 +3988,16 @@
           <title>Options</title>
 
           <screen>
+--changelist ARG
+--depth ARG
+--encoding ENC
 --file (-F) FILE
+--force
 --quiet (-q)
+--recursive (-R)
 --revision (-r) REV
---targets FILENAME
---depth ARG
 --revprop
---username USER
---password PASS
---no-auth-cache
---non-interactive
---encoding ENC
---force
---config-dir DIR
---changelist ARG
+--targets FILENAME
 </screen>
         </refsect1>
 
@@ -3872,7 +4041,8 @@
             provide a URL:</para>
           
           <screen>
-$ svn propset --revprop -r 26 svn:log "Document nap." http://svn.red-bean.com/repos
+$ svn propset --revprop -r 26 svn:log "Document nap." \
+              http://svn.red-bean.com/repos
 property 'svn:log' set on repository revision '25'
 </screen>
 
@@ -3898,6 +4068,137 @@
         </refsect1>
       </refentry>
 
+      <refentry id="svn.ref.svn.c.resolve">
+
+        <indexterm>
+          <primary>svn</primary>
+          <secondary>subcommands</secondary>
+          <tertiary>resolve</tertiary>
+        </indexterm>
+
+        <refnamediv>
+          <refname>svn resolve</refname>
+          <refpurpose>Resolve conflicts on working copy files or
+            directories.</refpurpose>
+        </refnamediv>
+        <refsect1>
+          <title>Synopsis</title>
+          <programlisting>svn resolve PATH...</programlisting>
+        </refsect1>
+        <refsect1>
+          <title>Description</title>
+
+          <para>Resolve <quote>conflicted</quote> state on working
+            copy files or directories.  This routine does not
+            semantically resolve conflict markers, however, it
+            replaces <replaceable>PATH</replaceable> with the version
+            specified by the <option>--accept</option> argument and
+            then removes conflict-related artifact files.  This allows
+            <replaceable>PATH</replaceable> to be committed
+            again—that is, it tells Subversion that the
+            conflicts have been
+            <quote>resolved.</quote>.  You can pass the following
+            arguments to the <option>--accept</option> command
+            depending on your desired resolution:</para>
+
+          <variablelist>
+
+            <varlistentry>
+              <term>base</term>
+              <listitem>
+                <para>Choose the file that was the
+                  <literal>BASE</literal> revision before you updated
+                  your working copy.  That is, the file that you
+                  checked out before you made your latest
+                  edits.</para>
+              </listitem>
+            </varlistentry>
+
+            <varlistentry>
+              <term>working</term>
+              <listitem>
+                <para>Assuming that you've manually handled the
+                conflict resolution, choose the version of the file as
+                it currently stands in your working copy.</para>
+              </listitem>
+            </varlistentry>
+
+            <varlistentry>
+              <term>mine-full</term>
+              <listitem>
+                <para>Resolve all conflicted files with copies of the
+                files as they stood immediately before you
+                ran <command>svn update</command>.</para>
+              </listitem>
+            </varlistentry>
+
+            <varlistentry>
+              <term>theirs-full</term>
+              <listitem>
+                <para>Resolve all conflicted files with copies of the
+                files that were fetched from the server when you
+                ran <command>svn update</command>.</para>
+              </listitem>
+            </varlistentry>
+
+          </variablelist>
+
+          <para>See <xref
+            linkend="svn.tour.cycle.resolve"/> for an in-depth look at
+            resolving conflicts.</para>
+
+        </refsect1>
+
+        <refsect1>
+          <title>Alternate Names</title>
+          <para>None</para>
+        </refsect1>
+
+        <refsect1>
+          <title>Changes</title>
+          <para>Working copy</para>
+        </refsect1>
+
+        <refsect1>
+          <title>Accesses Repository</title>
+          <para>No</para>
+        </refsect1>
+
+        <refsect1>
+          <title>Options</title>
+
+          <screen>
+--accept ARG
+--depth ARG
+--quiet (-q)
+--recursive (-R)
+--targets FILENAME
+</screen>
+        </refsect1>
+        
+        <refsect1>
+          <title>Example</title>
+          
+          <para>Here's an example where, after a postponed conflict
+            resolution during update, <command>svn resolve</command>
+            replaces the all conflicts in
+            file <literal>foo.c</literal> with your edits:</para>
+
+          <screen>
+$ svn up
+Conflict discovered in 'foo.c'.
+Select: (p) postpone, (df) diff-full, (e) edit,
+        (h) help for more options: p
+C    foo.c
+Updated to revision 5.
+
+$ svn resolve --accept mine-full foo.c
+Resolved conflicted state of 'foo.c'
+</screen>
+
+        </refsect1>
+      </refentry>
+
       <refentry id="svn.ref.svn.c.resolved">
 
         <indexterm>
@@ -3908,8 +4209,9 @@
 
         <refnamediv>
           <refname>svn resolved</refname>
-          <refpurpose>Remove <quote>conflicted</quote> state on
-            working copy files or directories.</refpurpose>
+          <refpurpose><emphasis>Deprecated</emphasis>.
+            Remove <quote>conflicted</quote> state on working copy
+            files or directories.</refpurpose>
         </refnamediv>
         <refsect1>
           <title>Synopsis</title>
@@ -3918,6 +4220,11 @@
         <refsect1>
           <title>Description</title>
 
+          <para>This command has been deprecated in favor of
+            running <command>svn resolve --accept working</command>.
+            See <xref linkend="svn.ref.svn.c.resolve"/> for
+            details.</para>
+
           <para>Remove <quote>conflicted</quote> state on working copy
             files or directories.  This routine does not semantically
             resolve conflict markers; it merely removes
@@ -3947,11 +4254,10 @@
           <title>Options</title>
 
           <screen>
---targets FILENAME
 --depth ARG
---accept ARG
 --quiet (-q)
---config-dir DIR
+--recursive (-R)
+--targets FILENAME
 </screen>
         </refsect1>
         
@@ -4037,11 +4343,11 @@
           <title>Options</title>
 
           <screen>
---targets FILENAME
+--changelist ARG
 --depth ARG
 --quiet (-q)
---config-dir DIR
---changelist ARG
+--recursive (-R)
+--targets FILENAME
 </screen>
         </refsect1>
 
@@ -4438,18 +4744,15 @@
           <title>Options</title>
 
           <screen>
---show-updates (-u)
---verbose (-v)
+--changelist ARG
 --depth ARG
---quiet (-q)
---no-ignore
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
 --ignore-externals
---changelist ARG
+--incremental
+--no-ignore
+--quiet (-q)
+--show-updates (-u)
+--verbose (-v)
+--xml
 </screen>
         </refsect1>
 
@@ -4506,6 +4809,41 @@
 Head revision:   981
 </screen>
 
+          <para>Lastly, you can get <command>svn status</command>
+            output in xml format with the <option>--xml</option>
+            option:</para>
+
+          <screen>
+$ svn status --xml wc
+<?xml version="1.0"?>
+<status>
+<target
+   path="wc">
+<entry
+   path="qax.c">
+<wc-status
+   props="none"
+   item="added"
+   revision="0">
+</wc-status>
+</entry>
+<entry
+   path="bar.c">
+<wc-status
+   props="normal"
+   item="modified"
+   revision="965">
+<commit
+   revision="965">
+<author>sally</author>
+<date>2008-05-28T06:35:53.048870Z</date>
+</commit>
+</wc-status>
+</entry>
+</target>
+</status>
+</screen>
+
           <para>For many more examples of <command>svn status</command>,
             see <xref linkend="svn.tour.cycle.examine.status"/>.</para>
 
@@ -4598,20 +4936,15 @@
           <title>Options</title>
 
           <screen>
---revision (-r) REV
+--accept ARG
 --depth ARG
---set-depth ARG
---ignore-externals
+--diff3-cmd CMD
 --force
---accept ARG
+--ignore-externals
 --quiet (-q)
---diff3-cmd CMD
---relocate FROM TO
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
+--relocate
+--revision (-r) REV
+--set-depth ARG
 </screen>
         </refsect1>
         
@@ -4762,13 +5095,8 @@
           <title>Options</title>
 
           <screen>
---targets FILENAME
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
 --force
+--targets FILENAME
 </screen>
         </refsect1>
 
@@ -4851,6 +5179,13 @@
             </varlistentry>
 
             <varlistentry>
+              <term><literal>B</literal></term>
+              <listitem>
+                <para>Broken Lock (third column only)</para>
+              </listitem>
+            </varlistentry>
+
+            <varlistentry>
               <term><literal>D</literal></term>
               <listitem>
                 <para>Deleted</para>
@@ -4887,9 +5222,10 @@
 
           </variablelist>
 
-          <para>A character in the first column signifies an update
-            to the actual file, while updates to the file's
-            properties are shown in the second column.</para>
+          <para>A character in the first column signifies an update to
+            the actual file, while updates to the file's properties
+            are shown in the second column.  Lock information is
+            printed in the third column.</para>
 
           <para>As with most subcommands, you can limit the scope of
             the update operation to a particular tree depth using the
@@ -4920,23 +5256,16 @@
           <title>Options</title>
 
           <screen>
---revision (-r) REV
+--accept ARG
+--changelist
 --depth ARG
---set-depth ARG
---force
---quiet (-q)
---no-ignore
---incremental
 --diff3-cmd CMD
 --editor-cmd ARG
---accept ARG
---username USER
---password PASS
---no-auth-cache
---non-interactive
---config-dir DIR
+--force
 --ignore-externals
---changelist
+--quiet (-q)
+--revision (-r) REV
+--set-depth ARG
 </screen>
         </refsect1>
 
@@ -5087,6 +5416,24 @@
         </varlistentry>
 
         <varlistentry>
+          <term><option>--pre-1.4-compatible</option></term>
+          <listitem>
+            <para>When creating a new repository, use a format that is
+            compatible with versions of Subversion earlier than
+            Subversion 1.4.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--pre-1.5-compatible</option></term>
+          <listitem>
+            <para>When creating a new repository, use a format that is
+            compatible with versions of Subversion earlier than
+            Subversion 1.5.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
           <term><option>--revision</option> (<option>-r</option>)
           <replaceable>ARG</replaceable></term>
           <listitem>
@@ -5113,6 +5460,15 @@
         </varlistentry>
 
         <varlistentry>
+          <term><option>--use-post-revprop-change-hook</option></term>
+          <listitem>
+            <para>When changing a revision property, run the
+              repository's post-revprop-change hook after changing the
+              revision property.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
           <term><option>--use-pre-commit-hook</option></term>
           <listitem>
             <para>When loading a dump file, run the repository's
@@ -5122,12 +5478,71 @@
           </listitem>
         </varlistentry>
 
+        <varlistentry>
+          <term><option>--use-pre-revprop-change-hook</option></term>
+          <listitem>
+            <para>When changing a revision property, run the
+              repository's pre-revprop-change hook before changing the
+              revision property.  If the hook fails, abort the
+              modification and terminate.</para>
+          </listitem>
+        </varlistentry>
+
       </variablelist>
     </sect2>
 
     <!-- =============================================================== -->
     <sect2 id="svn.ref.svnadmin.c">
       <title><command>svnadmin</command> Subcommands</title>
+
+      <refentry id="svn.ref.svnadmin.c.crashtest">
+
+        <indexterm>
+          <primary>svnadmin</primary>
+          <secondary>subcommands</secondary>
+          <tertiary>crashtest</tertiary>
+        </indexterm>
+
+        <refnamediv>
+          <refname>svnadmin crashtest</refname>
+          <refpurpose>Simulate a process that crashes.</refpurpose>
+        </refnamediv>
+        <refsect1>
+          <title>Synopsis</title>
+          <programlisting>svnadmin crashtest REPOS_PATH</programlisting>
+        </refsect1>
+        <refsect1>
+          <title>Description</title>
+
+            <para>Open the repository at REPOS_PATH, then abort, thus
+              simulating a process that crashes while holding an open
+              repository handle.  This is used for testing automatic
+              repository recovery (a new feature in Berkeley DB 4.4).
+              It's unlikely that you'll need to run this
+              command.</para>
+
+          </refsect1>
+
+        <refsect1>
+          <title>Options</title>
+
+          <para>None</para>
+
+        </refsect1>
+
+        <refsect1>
+          <title>Examples</title>
+
+          <screen>
+$ svnadmin crashtest /var/svn/repos
+Aborted
+</screen>
+
+          <para>Exciting, isn't it?</para>
+          
+        </refsect1>
+      </refentry>
+
       <refentry id="svn.ref.svnadmin.c.create">
 
         <indexterm>
@@ -5176,10 +5591,12 @@
           <title>Options</title>
 
           <screen>
---bdb-txn-nosync
 --bdb-log-keep
+--bdb-txn-nosync
 --config-dir DIR
 --fs-type TYPE
+--pre-1.4-compatible
+--pre-1.5-compatible
 </screen>
         </refsect1>
 
@@ -5239,8 +5656,8 @@
           <title>Options</title>
           
           <screen>
---revision (-r) REV
 --quiet (-q)
+--revision (-r) REV
 </screen>
         </refsect1>
       </refentry>
@@ -5316,10 +5733,10 @@
           <title>Options</title>
           
           <screen>
---revision (-r) REV
+--deltas
 --incremental
 --quiet (-q)
---deltas
+--revision (-r) REV
 </screen>
         </refsect1>
         
@@ -5329,12 +5746,10 @@
           <para>Dump your whole repository:</para>
 
           <screen>
-$ svnadmin dump /var/svn/repos
-SVN-fs-dump-format-version: 1
-Revision-number: 0
+$ svnadmin dump /var/svn/repos > full.dump
 * Dumped revision 0.
-Prop-content-length: 56
-Content-length: 56
+* Dumped revision 1.
+* Dumped revision 2.
 …
 </screen>
 
@@ -5342,13 +5757,8 @@
             repository:</para>
 
           <screen>
-$ svnadmin dump /var/svn/repos -r 21 --incremental 
+$ svnadmin dump /var/svn/repos -r 21 --incremental > incr.dump
 * Dumped revision 21.
-SVN-fs-dump-format-version: 1
-Revision-number: 21
-Prop-content-length: 101
-Content-length: 101
-…
 </screen>
 
         </refsect1>
@@ -5376,8 +5786,6 @@
           <para>This subcommand is useful when you're trapped on a
             desert island with neither a net connection nor a copy of
             this book.</para>
-          <!-- although marginally less useful than, say, a cooler
-            full of beer. -->
         </refsect1>
 
         <refsect1>
@@ -5550,12 +5958,12 @@
           <title>Options</title>
           
           <screen>
---quiet (-q)
---ignore-uuid
 --force-uuid
---use-pre-commit-hook
---use-post-commit-hook
+--ignore-uuid
 --parent-dir
+--quiet (-q)
+--use-post-commit-hook
+--use-pre-commit-hook
 </screen>
         </refsect1>
 
@@ -5577,7 +5985,8 @@
           <para>Or if you want to load into a subdirectory:</para>
 
           <screen>
-$ svnadmin load --parent-dir new/subdir/for/project /var/svn/restored < repos-backup
+$ svnadmin load --parent-dir new/subdir/for/project \
+                /var/svn/restored < repos-backup
 <<< Started new txn, based on original revision 1
      * adding path : test ... done.
      * adding path : test/a ... done.
@@ -5601,12 +6010,18 @@
         </refnamediv>
         <refsect1>
           <title>Synopsis</title>
-          <programlisting>svnadmin lslocks REPOS_PATH</programlisting>
+          <programlisting>svnadmin lslocks REPOS_PATH [PATH-IN-REPOS]</programlisting>
         </refsect1>
         <refsect1>
           <title>Description</title>
 
-          <para>Print descriptions of all locks in a repository.</para>
+          <para>Print descriptions of all locks in
+            repository <replaceable>REPOS_PATH</replaceable>
+            underneath the
+            path <replaceable>PATH-IN-REPOS</replaceable>.
+            If <replaceable>PATH-IN-REPOS</replaceable> is not
+            provided, it defaults to the root directory of the
+            repository.</para>
         </refsect1>
 
         <refsect1>
@@ -5901,8 +6316,8 @@
           <title>Options</title>
 
           <screen>
---revision (-r) REV
 --bypass-hooks
+--revision (-r) REV
 </screen>
         </refsect1>
 
@@ -5919,6 +6334,183 @@
         </refsect1>
       </refentry>
 
+      <refentry id="svn.ref.svnadmin.c.setrevprop">
+
+        <indexterm>
+          <primary>svnadmin</primary>
+          <secondary>subcommands</secondary>
+          <tertiary>setrevprop</tertiary>
+        </indexterm>
+
+        <refnamediv>
+          <refname>svnadmin setrevprop</refname>
+          <refpurpose>Set the property name on a revision.</refpurpose>
+        </refnamediv>
+        <refsect1>
+          <title>Synopsis</title>
+          <programlisting>svnadmin setrevprop REPOS_PATH -r REVISION NAME FILE</programlisting>
+        </refsect1>
+        <refsect1>
+          <title>Description</title>
+
+            <para>Set the property <replaceable>NAME</replaceable> on
+              revision <replaceable>REVISION</replaceable> to the
+              contents of <replaceable>FILE</replaceable>. Use
+              <option>--use-pre-revprop-change-hook</option>
+              or <option>--use-post-revprop-change-hook</option> to
+              trigger the revision property-related hooks (e.g., if
+              you want an email notification sent from your post
+              revprop change hook).</para>
+
+          </refsect1>
+
+        <refsect1>
+          <title>Options</title>
+
+          <screen>
+--revision (-r) ARG
+--use-post-revprop-change-hook
+--use-pre-revprop-change-hook
+</screen>
+        </refsect1>
+
+        <refsect1>
+          <title>Examples</title>
+
+          <para>The following sets the revision
+          property <literal>repository-photo</literal> to the contents
+          of the file <literal>sandwich.png</literal>:</para>
+
+          <screen>
+$svnadmin setrevprop /var/svn/repos -r 0 repository-photo sandwich.png
+</screen>
+
+          <para>As you can see, <command>svnadmin setrevprop</command>
+            has no output upon success.</para>
+
+        </refsect1>
+      </refentry>
+
+      <refentry id="svn.ref.svnadmin.c.setuuid">
+
+        <indexterm>
+          <primary>svnadmin</primary>
+          <secondary>subcommands</secondary>
+          <tertiary>setuuid</tertiary>
+        </indexterm>
+
+        <refnamediv>
+          <refname>svnadmin setuuid</refname>
+          <refpurpose>Reset the repository UUID.</refpurpose>
+        </refnamediv>
+        <refsect1>
+          <title>Synopsis</title>
+          <programlisting>svnadmin setuuid REPOS_PATH [NEW_UUID]</programlisting>
+        </refsect1>
+        <refsect1>
+          <title>Description</title>
+
+            <para>Reset the repository UUID for the repository located
+              at <replaceable>REPOS_PATH</replaceable>.
+              If <replaceable>NEW_UUID</replaceable> is provided, use
+              that as the new repository UUID; otherwise, generate a
+              brand new UUID for the repository.</para>
+
+          </refsect1>
+
+        <refsect1>
+          <title>Options</title>
+
+          <para>None</para>
+
+        </refsect1>
+
+        <refsect1>
+          <title>Examples</title>
+
+          <para>If you've <command>svnsync</command>ed /var/svn/repos
+            to /var/svn/repos-new and intend to use repos-new as your
+            canonical repository, you may want to change the UUID for
+            repos-new to the UUID of repos so that your users don't
+            have to check out a new working copy to accomodate the
+            change:</para>
+
+          <screen>
+$ svnadmin setuuid /var/svn/repos-new 2109a8dd-854f-0410-ad31-d604008985ab
+</screen>
+
+          <para>As you can see, <command>svnadmin setuuid</command>
+            has no output upon success.</para>
+
+        </refsect1>
+      </refentry>
+
+      <refentry id="svn.ref.svnadmin.c.upgrade">
+
+        <indexterm>
+          <primary>svnadmin</primary>
+          <secondary>subcommands</secondary>
+          <tertiary>upgrade</tertiary>
+        </indexterm>
+
+        <refnamediv>
+          <refname>svnadmin upgrade</refname>
+          <refpurpose>Upgrade a repository to the latest supported
+            schema version.</refpurpose>
+        </refnamediv>
+        <refsect1>
+          <title>Synopsis</title>
+          <programlisting>svnadmin upgrade REPOS_PATH</programlisting>
+        </refsect1>
+        <refsect1>
+          <title>Description</title>
+
+            <para>Upgrade the repository located
+              at <replaceable>REPOS_PATH</replaceable> to the latest
+              supported schema version.</para>
+
+            <para>This functionality is provided as a convenience for
+              repository administrators who wish to make use of new
+              Subversion functionality without having to undertake a
+              potentially costly full repository dump and load
+              operation.  As such, the upgrade performs only the
+              minimum amount of work needed to accomplish this while
+              still maintaining the integrity of the repository.
+              While a dump and subsequent load guarantees the most
+              optimized repository state, <command>svnadmin
+              upgrade</command> does not.</para>
+
+            <warning>
+              <para>You should <emphasis>always</emphasis> backup your
+                repository before upgrading.</para>
+            </warning>
+
+          </refsect1>
+
+        <refsect1>
+          <title>Options</title>
+
+          <para>None</para>
+
+        </refsect1>
+
+        <refsect1>
+          <title>Examples</title>
+
+          <para>Upgrade the repository at
+            path <filename>/var/repos/svn</filename></para>
+
+          <screen>
+$ svnadmin upgrade /var/repos/svn
+Repository lock acquired.
+Please wait; upgrading the repository may take some time...
+
+Upgrade completed.
+</screen>
+          
+        </refsect1>
+      </refentry>
+
       <!-- this could use a lot more explanation.  When should I use
       it?  What do I do if it fails? -->
       <refentry id="svn.ref.svnadmin.c.verify">
@@ -5953,6 +6545,15 @@
             didn't you?).</para>
 
         </refsect1>
+        
+        <refsect1>
+          <title>Options</title>
+
+          <screen>
+--quiet (-q)
+--revision (-r) ARG
+</screen>
+        </refsect1>
 
         <refsect1>
           <title>Example</title>
@@ -6101,7 +6702,7 @@
           
           <screen>
 --revision (-r) REV
---transaction (-t)
+--transaction (-t) TXN
 </screen>
         </refsect1>
 
@@ -6147,7 +6748,7 @@
 
           <screen>
 --revision (-r) REV
---transaction (-t)
+--transaction (-t) TXN
 </screen>
         </refsect1>
 
@@ -6225,9 +6826,9 @@
             </varlistentry>
 
             <varlistentry>
-              <term><literal>' U'</literal></term>
+              <term><literal>'_U'</literal></term>
               <listitem>
-                <para>Properties of item changed; note the leading space</para>
+                <para>Properties of item changed; note the leading underscore</para>
               </listitem>
             </varlistentry>
 
@@ -6251,8 +6852,9 @@
           <title>Options</title>
 
           <screen>
+--copy-info
 --revision (-r) REV
---transaction (-t)
+--transaction (-t) TXN
 </screen>
         </refsect1>
 
@@ -6271,18 +6873,39 @@
 A   trunk/vendors/deli/sandwich.txt
 A   trunk/vendors/deli/pickle.txt
 U   trunk/vendors/baker/bagel.txt
- U  trunk/vendors/baker/croissant.txt
+_U  trunk/vendors/baker/croissant.txt
 UU  trunk/vendors/baker/pretzel.txt
 D   trunk/vendors/baker/baguette.txt
 </screen>
-          
-        </refsect1>
-      </refentry>
 
-      <refentry id="svn.ref.svnlook.c.date">
+          <para>Here's an example that shows a revision in which a
+            file was renamed:</para>
 
-        <indexterm>
-          <primary>svnlook</primary>
+          <screen>
+$ svnlook changed -r 64 /var/svn/repos
+A   trunk/vendors/baker/toast.txt
+D   trunk/vendors/baker/bread.txt
+</screen>
+
+          <para>Unfortunately, nothing in the previous output reveals
+            the connection between the deleted and added files.  Use
+            the <option>--copy-info</option> option to make this
+            relationship more apparent:</para>
+
+          <screen>
+$ svnlook changed -r 64 --copy-info /var/svn/repos
+A + trunk/vendors/baker/toast.txt
+    (from trunk/vendors/baker/bread.txt:r63)
+D   trunk/vendors/baker/bread.txt
+</screen>
+
+        </refsect1>
+      </refentry>
+
+      <refentry id="svn.ref.svnlook.c.date">
+
+        <indexterm>
+          <primary>svnlook</primary>
           <secondary>subcommands</secondary>
           <tertiary>date</tertiary>
         </indexterm>
@@ -6307,7 +6930,7 @@
 
           <screen>
 --revision (-r) REV
---transaction (-t)
+--transaction (-t) TXN
 </screen>
         </refsect1>
         
@@ -6352,11 +6975,11 @@
           <title>Options</title>
           
           <screen>
---revision (-r) REV
---transaction (-t)
+--diff-copy-from
 --no-diff-added
 --no-diff-deleted
---diff-copy-from
+--revision (-r) REV
+--transaction (-t) TXN
 </screen>
         </refsect1>
 
@@ -6426,7 +7049,7 @@
 
           <screen>
 --revision (-r) REV
---transaction (-t)
+--transaction (-t) TXN
 </screen>
         </refsect1>
 
@@ -6511,6 +7134,7 @@
           <title>Options</title>
 
           <screen>
+--limit (-l) ARG
 --revision (-r) REV
 --show-ids
 </screen>
@@ -6520,27 +7144,25 @@
           <title>Example</title>
 
           <para>This shows the history output for the path
-            <filename>/tags/1.0</filename> as of revision 20 in our
+            <filename>/branches/bookstore</filename> as of revision 13 in our
             sample repository:</para>
 
           <screen>
-$ svnlook history -r 20 /var/svn/repos /tags/1.0 --show-ids
+$ svnlook history -r 13 /var/svn/repos /branches/bookstore --show-ids
 REVISION   PATH <ID>
 --------   ---------
-      19   /tags/1.0 <1.2.12>
-      17   /branches/1.0-rc2 <1.1.10>
-      16   /branches/1.0-rc2 <1.1.x>
-      14   /trunk <1.0.q>
-      13   /trunk <1.0.o>
-      11   /trunk <1.0.k>
-       9   /trunk <1.0.g>
-       8   /trunk <1.0.e>
-       7   /trunk <1.0.b>
-       6   /trunk <1.0.9>
-       5   /trunk <1.0.7>
-       4   /trunk <1.0.6>
-       2   /trunk <1.0.3>
-       1   /trunk <1.0.2>
+      13   /branches/bookstore <1.1.r13/390>
+      12   /branches/bookstore <1.1.r12/413>
+      11   /branches/bookstore <1.1.r11/0>
+       9   /trunk <1.0.r9/551>
+       8   /trunk <1.0.r8/131357096>
+       7   /trunk <1.0.r7/294>
+       6   /trunk <1.0.r6/353>
+       5   /trunk <1.0.r5/349>
+       4   /trunk <1.0.r4/332>
+       3   /trunk <1.0.r3/335>
+       2   /trunk <1.0.r2/295>
+       1   /trunk <1.0.r1/532>
 </screen>
           
         </refsect1>
@@ -6575,7 +7197,7 @@
 
           <screen>
 --revision (-r) REV
---transaction (-t)
+--transaction (-t) TXN
 </screen>
         </refsect1>
 
@@ -6677,7 +7299,7 @@
           
           <screen>
 --revision (-r) REV
---transaction (-t)
+--transaction (-t) TXN
 </screen>
         </refsect1>
         
@@ -6730,8 +7352,8 @@
 
           <screen>
 --revision (-r) REV
---transaction (-t)
 --revprop
+--transaction (-t) TXN
 </screen>
         </refsect1>
 
@@ -6785,9 +7407,9 @@
 
           <screen>
 --revision (-r) REV
---transaction (-t)
---verbose (-v)
 --revprop
+--transaction (-t) TXN
+--verbose (-v)
 </screen>
         </refsect1>
 
@@ -6809,7 +7431,7 @@
 
           <screen>
 $ svnlook --verbose proplist /var/svn/repos /trunk/README
-  original-author : fitz
+  original-author : harry
   svn:mime-type : text/plain
 </screen>
           
@@ -6843,10 +7465,11 @@
           <title>Options</title>
 
           <screen>
+--full-paths
+--non-recursive (-N)
 --revision (-r) REV
---transaction (-t)
 --show-ids
---full-paths
+--transaction (-t) TXN
 </screen>
         </refsect1>
 
@@ -6854,17 +7477,20 @@
           <title>Example</title>
           
           <para>This shows the tree output (with nodeIDs) for revision
-            40 in our sample repository:</para>
+            13 in our sample repository:</para>
 
           <screen>
-$ svnlook tree -r 40 /var/svn/repos --show-ids
-/ <0.0.2j>
- trunk/ <p.0.2j>
-  vendors/ <q.0.2j>
-   deli/ <1g.0.2j>
-    egg.txt <1i.e.2j>
-    soda.txt <1k.0.2j>
-    sandwich.txt <1j.0.2j>
+$ svnlook tree -r 13 /var/svn/repos --show-ids
+/ <0.0.r13/811>
+ trunk/ <1.0.r9/551>
+  button.c <2.0.r9/238>
+  Makefile <3.0.r7/41>
+  integer.c <4.0.r6/98>
+ branches/ <5.0.r13/593>
+  bookstore/ <1.1.r13/390>
+   button.c <2.1.r12/85>
+   Makefile <3.0.r7/41>
+   integer.c <4.1.r13/109>
 </screen>
           
         </refsect1>
@@ -7012,7 +7638,7 @@
           <listitem>
             <para>Prevents caching of authentication information
               (e.g., username and password) in the Subversion
-              administrative directories.</para>
+              runtime configuration directories.</para>
           </listitem>
         </varlistentry>
 
@@ -7029,24 +7655,46 @@
         </varlistentry>
 
         <varlistentry>
-          <term><option>--password</option>
-            <replaceable>PASS</replaceable></term>
+          <term><option>--source-password</option>
+            <replaceable>PASSWD</replaceable></term>
           <listitem>
-            <para>Indicates that you are providing your password for
-              authentication on the command line—otherwise, if
-              it is needed, Subversion will prompt you for
-              it.</para>
+            <para>Specifies the password for the Subversion server
+              from which you are syncing.  If not provided, or if
+              incorrect, Subversion will prompt you for this
+              information as needed.</para>
           </listitem>
         </varlistentry>
 
         <varlistentry>
-          <term><option>--username</option>
+          <term><option>--source-username</option>
             <replaceable>NAME</replaceable></term>
           <listitem>
-            <para>Indicates that you are providing your username for
-              authentication on the command line—otherwise, if
-              it is needed, Subversion will prompt you for
-              it.</para>
+            <para>Specifies the username for the Subversion server
+              from which you are syncing.  If not provided, or if
+              incorrect, Subversion will prompt you for this
+              information as needed.</para>
+          </listitem>
+        </varlistentry>
+        
+        <varlistentry>
+          <term><option>--sync-password</option>
+            <replaceable>PASS</replaceable></term>
+          <listitem>
+            <para>Specifies the password for the Subversion server to
+              which you are syncing.  If not provided, or if
+              incorrect, Subversion will prompt you for this
+              information as needed.</para>
+          </listitem>
+        </varlistentry>
+        
+        <varlistentry>
+          <term><option>--sync-username</option>
+            <replaceable>NAME</replaceable></term>
+          <listitem>
+            <para>Specifies the username for the Subversion server to
+              which you are syncing.  If not provided, or if
+              incorrect, Subversion will prompt you for this
+              information as needed.</para>
           </listitem>
         </varlistentry>
 
@@ -7070,13 +7718,13 @@
 
         <refnamediv>
           <refname>svnsync copy-revprops</refname>
-          <refpurpose>Copy all revision properties for a given
-            revision from the source repository to the mirror
-            repository.</refpurpose>
+          <refpurpose>Copy all revision properties for a particular
+            revision (or range of revisions) from the source
+            repository to the mirror repository.</refpurpose>
         </refnamediv>
         <refsect1>
           <title>Synopsis</title>
-          <programlisting>svnsync copy-revprops DEST_URL REV</programlisting>
+          <programlisting>svnsync copy-revprops DEST_URL [REV[:REV2]</programlisting>
         </refsect1>
         <refsect1>
           <title>Description</title>
@@ -7093,18 +7741,22 @@
             source and mirror repositories.  <command>svnsync
             copy-revprops</command> is the answer to this problem.
             Use it to resynchronize the revision properties for a
-            particular revision.</para>
+            particular revision or range of revisions.</para>
         </refsect1>
 
         <refsect1>
           <title>Options</title>
 
           <screen>
---non-interactive
---no-auth-cache
---username NAME
---password PASS
+--config-dir ARG
 --config-dir DIR
+--no-auth-cache
+--non-interactive
+--quiet (-q)
+--source-password ARG
+--source-username ARG
+--sync-password ARG
+--sync-username ARG
 </screen>
         </refsect1>
 
@@ -7122,6 +7774,46 @@
         </refsect1>
       </refentry>
 
+      <refentry id="svn.ref.svnsync.c.help">
+
+        <indexterm>
+          <primary>svnsync</primary>
+          <secondary>subcommands</secondary>
+          <tertiary>help</tertiary>
+        </indexterm>
+
+        <refnamediv>
+          <refname>svnsync help</refname> <refpurpose>Help!</refpurpose>
+        </refnamediv>
+        <refsect1>
+
+          <title>Synopsis</title>
+          <programlisting>svnsync SUBCOMMAND</programlisting>
+        </refsect1>
+        <refsect1>
+          <title>Description</title>
+
+          <para>This subcommand is useful when you're trapped in a
+            foreign prison with neither a net connection nor a copy of
+            this book, but you do have a local wifi network running
+            and you'd like to sync a copy of your repository over to
+            the backup server that Ira The Knife is running over in
+            cell block D.</para>
+            
+        </refsect1>
+
+        <refsect1>
+          <title>Alternate Name</title>
+          <para>None</para>
+        </refsect1>
+
+        <refsect1>
+          <title>Options</title>
+          <para>None</para>
+        </refsect1>
+
+      </refentry>
+
       <refentry id="svn.ref.svnsync.c.init">
 
         <indexterm>
@@ -7162,11 +7854,13 @@
           <title>Options</title>
 
           <screen>
---non-interactive
---no-auth-cache
---username NAME
---password PASS
 --config-dir DIR
+--no-auth-cache
+--non-interactive
+--source-password ARG
+--source-username ARG
+--sync-password ARG
+--sync-username ARG
 </screen>
         </refsect1>
 
@@ -7236,11 +7930,13 @@
           <title>Options</title>
 
           <screen>
---non-interactive
---no-auth-cache
---username NAME
---password PASS
 --config-dir DIR
+--no-auth-cache
+--non-interactive
+--source-password ARG
+--source-username ARG
+--sync-password ARG
+--sync-username ARG
 </screen>
         </refsect1>
 
@@ -7327,25 +8023,6 @@
         </varlistentry>
 
         <varlistentry>
-          <term><option>--listen-port</option>=<replaceable>PORT</replaceable></term>
-          <listitem>
-            <para>Causes svnserve to listen on
-              <replaceable>PORT</replaceable> when run in daemon mode.
-              (FreeBSD daemons listen only on tcp6 by default—this
-              option tells them to also listen on tcp4.)</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term><option>--listen-host</option>=<replaceable>HOST</replaceable></term>
-          <listitem>
-            <para>Causes <command>svnserve</command> to listen on the
-              interface specified by <replaceable>HOST</replaceable>,
-              which may be either a hostname or an IP address.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
           <term><option>--foreground</option></term>
           <listitem>
             <para>When used together with <option>-d</option>, this
@@ -7371,10 +8048,41 @@
         </varlistentry>
 
         <varlistentry>
-          <term><option>--version</option></term>
+          <term><option>--listen-host</option>=<replaceable>HOST</replaceable></term>
           <listitem>
-            <para>Displays version information and a list of repository
-            backend modules available, and then exits.</para>
+            <para>Causes <command>svnserve</command> to listen on the
+              interface specified by <replaceable>HOST</replaceable>,
+              which may be either a hostname or an IP address.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--listen-once</option> (<option>-X</option>)</term>
+          <listitem>
+            <para>Causes <command>svnserve</command> to accept one
+              connection on the <literal>svn</literal> port, serve it,
+              and exit.  This option is mainly useful for
+              debugging.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--listen-port</option>=<replaceable>PORT</replaceable></term>
+          <listitem>
+            <para>Causes svnserve to listen on
+              <replaceable>PORT</replaceable> when run in daemon mode.
+              (FreeBSD daemons listen only on tcp6 by default—this
+              option tells them to also listen on tcp4.)</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--pid-file <replaceable>FILENAME</replaceable></option></term>
+          <listitem>
+            <para>Causes <command>svnserve</command> to write its
+              process ID to <replaceable>FILENAME</replaceable>, which
+              must be writeable by the user under
+              which <command>svnserve</command> is running.</para>
           </listitem>
         </varlistentry>
 
@@ -7391,6 +8099,17 @@
         </varlistentry>
 
         <varlistentry>
+          <term><option>--threads</option> (<option>-T</option>)</term>
+          <listitem>
+            <para>When running in daemon mode, causes
+              <command>svnserve</command> to spawn a thread instead of
+              a process for each connection (e.g., for when running on
+              Windows).  The <command>svnserve</command> process still
+              backgrounds itself at startup time.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
           <term><option>--tunnel</option> (<option>-t</option>)</term>
           <listitem>
             <para>Causes <command>svnserve</command> to run in tunnel
@@ -7425,23 +8144,88 @@
         </varlistentry>
 
         <varlistentry>
-          <term><option>--threads</option> (<option>-T</option>)</term>
+          <term><option>--version</option></term>
           <listitem>
-            <para>When running in daemon mode, causes
-              <command>svnserve</command> to spawn a thread instead of
-              a process for each connection (e.g., for when running on
-              Windows).  The <command>svnserve</command> process still
-              backgrounds itself at startup time.</para>
+            <para>Displays version information and a list of repository
+            backend modules available, and then exits.</para>
+          </listitem>
+        </varlistentry>
+
+      </variablelist>
+
+    </sect2>
+
+  </sect1>
+
+  <!-- ================================================================= -->
+  <!-- ================================================================= -->
+  <!-- ================================================================= -->
+  <sect1 id="svn.ref.svndumpfilter">
+    <title><command>svndumpfilter</command></title>
+    
+    <para><command>svndumpfilter</command> is a command-line utility
+      for removing history from a Subversion dumpfile by either
+      excluding or including paths beginning with one or more named
+      prefixes.  For details, see
+      <xref linkend="svn.reposadmin.maint.tk.svndumpfilter"/>.</para>
+
+    <!-- =============================================================== -->
+    <sect2 id="svn.ref.svndumpfilter.options">
+      <title><command>svndumpfilter</command> Options</title>
+      
+      <para>Options in <command>svndumpfilter</command> are global, just
+        like in <command>svn</command> and
+        <command>svnadmin</command>.</para>
+
+      <variablelist>
+
+        <varlistentry>
+          <term><option>--drop-empty-revs</option></term>
+          <listitem>
+            <para>If filtering causes any revision to be empty (i.e.,
+              cause no change to the repository), remove these
+              revisions from the final dumpfile.</para>
           </listitem>
         </varlistentry>
 
         <varlistentry>
-          <term><option>--listen-once</option> (<option>-X</option>)</term>
+          <term><option>--renumber-revs</option></term>
           <listitem>
-            <para>Causes <command>svnserve</command> to accept one
-              connection on the <literal>svn</literal> port, serve it,
-              and exit.  This option is mainly useful for
-              debugging.</para>
+            <para>Renumbering revisions that remain after
+              filtering.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--skip-missing-merge-sources</option></term>
+          <listitem>
+            <para>Skip merge sources that have been removed as part of
+              the filtering.  Without this
+              option, <command>svndumpfilter</command> will exit with
+              an error if the merge source for a retained path is
+              removed by filtering.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--preserve-revprops</option></term>
+          <listitem>
+            <para>If all nodes in a revision are removed by filtering
+              and <option>--drop-empty-revs</option> is not passed,
+              the default behavior of <command>svndumpfilter</command>
+              is to remove all revision properties except for the date
+              and the log message (which will merely indicate that the
+              revision is empty).  Passing ths option will preserve
+              existing revision properties (which may or may not make
+              sense since the related content is no longer present in
+              the dump file).</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--quiet</option></term>
+          <listitem>
+            <para>Do not display filtering statistics.</para>
           </listitem>
         </varlistentry>
 
@@ -7449,6 +8233,184 @@
 
     </sect2>
 
+    <!-- =============================================================== -->
+    <sect2 id="svn.ref.svndumpfilter.c">
+      <title><command>svndumpfilter</command> Subcommands</title>
+
+      <refentry id="svn.ref.svndumpfilter.commands.c.exclude">
+
+        <indexterm>
+          <primary>svndumpfilter</primary>
+          <secondary>subcommands</secondary>
+          <tertiary>exclude</tertiary>
+        </indexterm>
+
+        <refnamediv>
+          <refname>svndumpfilter exclude</refname>
+          <refpurpose>Filter out nodes with given prefixes from dumpstream.</refpurpose>
+        </refnamediv>
+        <refsect1>
+          <title>Synopsis</title>
+          <programlisting>svndumpfilter exclude PATH_PREFIX...</programlisting>
+        </refsect1>
+        <refsect1>
+          <title>Description</title>
+
+          <para>Can be used to exclude nodes that begin with one or
+            more <replaceable>PATH_PREFIX</replaceable>es from a
+            filtered dumpfile.</para>
+        </refsect1>
+
+        <refsect1>
+          <title>Options</title>
+          
+          <screen>
+--drop-empty-revs
+--preserve-revprops
+--quiet
+--renumber-revs
+--skip-missing-merge-sources
+</screen>
+        </refsect1>
+
+        <refsect1>
+          <title>Example</title>
+
+        <para>If we have a dumpfile from a repository with a number of
+          different picnic-related directories in it, but want to keep
+          everything <emphasis>except</emphasis>
+          the <filename>sandwiches</filename> part of the repository,
+          we'll exclude only that path:</para>
+
+          <screen>
+$ svndumpfilter exclude sandwiches < dumpfile > filtered-dumpfile
+Excluding prefixes:
+   '/sandwiches'
+
+Revision 0 committed as 0.
+Revision 1 committed as 1.
+Revision 2 committed as 2.
+Revision 3 committed as 3.
+Revision 4 committed as 4.
+
+Dropped 1 node(s):
+   '/sandwiches'
+</screen>            
+
+        </refsect1>
+      </refentry>
+
+    </sect2>
+
+    <!-- =============================================================== -->
+    <sect2 id="svn.ref.svndumpfilter.c.include">
+      <title><command>svndumpfilter</command> Subcommands</title>
+
+      <refentry id="svn.ref.svndumpfilter.commands.c.include">
+
+        <indexterm>
+          <primary>svndumpfilter</primary>
+          <secondary>subcommands</secondary>
+          <tertiary>include</tertiary>
+        </indexterm>
+
+        <refnamediv>
+          <refname>svndumpfilter include</refname>
+          <refpurpose>Filter out nodes without given prefixes from
+            dumpstream.</refpurpose>
+        </refnamediv>
+        <refsect1>
+          <title>Synopsis</title>
+          <programlisting>svndumpfilter include PATH_PREFIX...</programlisting>
+        </refsect1>
+        <refsect1>
+          <title>Description</title>
+
+          <para>Can be used to include nodes that begin with one or
+            more <replaceable>PATH_PREFIX</replaceable>es in a
+            filtered dumpfile (thus excluding all other paths).</para>
+        </refsect1>
+
+        <refsect1>
+          <title>Options</title>
+          
+          <screen>
+--drop-empty-revs
+--preserve-revprops
+--quiet
+--renumber-revs
+--skip-missing-merge-sources
+</screen>
+        </refsect1>
+
+        <refsect1>
+          <title>Example</title>
+
+        <para>If we have a dumpfile from a repository with a number of
+          different picnic-related directories in it, but only want to
+          keep the <filename>sandwiches</filename> part of the
+          repository, we'll include only that path:</para>
+
+          <screen>
+$ svndumpfilter include sandwiches < dumpfile > filtered-dumpfile
+Including prefixes:
+   '/sandwiches'
+
+Revision 0 committed as 0.
+Revision 1 committed as 1.
+Revision 2 committed as 2.
+Revision 3 committed as 3.
+Revision 4 committed as 4.
+
+Dropped 3 node(s):
+   '/drinks'
+   '/snacks'
+   '/supplies'
+</screen>            
+
+        </refsect1>
+      </refentry>
+
+    </sect2>
+
+    <!-- =============================================================== -->
+    <sect2 id="svn.ref.svndumpfilter.c.help">
+      <title><command>svndumpfilter</command> Subcommands</title>
+
+      <refentry id="svn.ref.svndumpfilter.commands.c.help">
+
+        <indexterm>
+          <primary>svndumpfilter</primary>
+          <secondary>subcommands</secondary>
+          <tertiary>help</tertiary>
+        </indexterm>
+
+        <refnamediv>
+          <refname>svndumpfilter help</refname>
+          <refpurpose>Help!.</refpurpose>
+        </refnamediv>
+        <refsect1>
+          <title>Synopsis</title>
+          <programlisting>svndumpfilter help [SUBCOMMAND...]</programlisting>
+        </refsect1>
+        <refsect1>
+          <title>Description</title>
+
+          <para>Displays the help message
+            for <command>svndumpfilter</command>.  Unlike other help
+            commands documented in this chapter, there is no witty
+            commentary for this help command.  The authors of this
+            book deeply regret the omission.</para>
+        </refsect1>
+
+        <refsect1>
+          <title>Options</title>
+          <para>None</para>
+        </refsect1>
+
+      </refentry>
+
+    </sect2>
   </sect1>
 
   <!-- ================================================================= -->
@@ -7658,26 +8620,65 @@
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNAutoversioning On</literal></term>
+            <term><literal>SVNAllowBulkUpdates On|Off</literal></term>
             <listitem>
 
-              <para>This directive allows write requests from WebDAV
-                clients to result in automatic commits.  A generic log
-                message is autogenerated and attached to each
-                revision.  If you enable Autoversioning, you'll likely
-                want to set <literal>ModMimeUsePathInfo On</literal>
-                so that <literal>mod_mime</literal> can set
-                <literal>svn:mime-type</literal> to the correct
+              <para>This directive toggles support for all-inclusive
+                responses to update-style <literal>REPORT</literal>
+                requests.  Subversion clients use
+                <literal>REPORT</literal> requests to get information
+                about directory tree checkouts and updates from
+                <literal>mod_dav_svn</literal>.  They can ask the
+                server to send that information in one of two ways:
+                with the entirety of the tree's information in one
+                massive response, or with a
+                <firstterm>skelta</firstterm> (a skeletal
+                representation of a tree delta) which contains just
+                enough information for the client to know what
+                <emphasis>additional</emphasis> data to request from
+                the server.  When this directive is included with a
+                value of <literal>off</literal>,
+                <literal>mod_dav_svn</literal> will only ever respond
+                to these <literal>REPORT</literal> requests with
+                skelta responses, regardless of the type of responses
+                requested by the client.</para>
+
+              <para>Most folks won't need to use this directive at
+                all.  It primarily exists for administrators who
+                wish—for security or auditing reasons—to
+                force Subversion clients to fetch individually all the
+                files and directories needed for updates and
+                checkouts, thus leaving an audit trail of
+                <literal>GET</literal> and <literal>PROPFIND</literal>
+                requests in Apache's logs.  The default value of this
+                directive is <literal>on</literal>.</para>
+
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term><literal>SVNAutoversioning On|Off</literal></term>
+            <listitem>
+
+              <para>This directive, when its value is
+                <literal>on</literal>, allows write requests from
+                WebDAV clients to result in automatic commits.  A
+                generic log message is autogenerated and attached to
+                each revision.  If you enable Autoversioning, you'll
+                likely want to set <literal>ModMimeUsePathInfo
+                On</literal> so that <literal>mod_mime</literal> can
+                set <literal>svn:mime-type</literal> to the correct
                 mime-type automatically (as best as
                 <literal>mod_mime</literal> is able to, of course).
                 For more information, see <xref
-                linkend="svn.webdav"/>.</para>
+                linkend="svn.webdav"/>.  The default value of this
+                directive is <literal>off</literal>.</para>
 
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNPath</literal></term>
+            <term><literal>SVNPath
+              <replaceable>directory-path</replaceable></literal></term>
             <listitem>
 
               <para>This directive specifies the location in the
@@ -7691,7 +8692,8 @@
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNSpecialURI</literal></term>
+            <term><literal>SVNSpecialURI
+              <replaceable>component</replaceable></literal></term>
             <listitem>
 
               <para>Specifies the URI component (namespace) for
@@ -7709,7 +8711,8 @@
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNReposName</literal></term>
+            <term><literal>SVNReposName
+              <replaceable>name</replaceable></literal></term>
             <listitem>
 
               <para>Specifies the name of a Subversion repository for
@@ -7723,7 +8726,8 @@
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNIndexXSLT</literal></term>
+            <term><literal>SVNIndexXSLT
+              <replaceable>directory-path</replaceable></literal></term>
             <listitem>
 
               <para>Specifies the URI of an XSL transformation for
@@ -7733,7 +8737,8 @@
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNParentPath</literal></term>
+            <term><literal>SVNParentPath
+              <replaceable>directory-path</replaceable></literal></term>
             <listitem>
 
               <para>Specifies the location in the filesystem of a
@@ -7747,7 +8752,8 @@
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNPathAuthz</literal></term>
+            <term><literal>SVNPathAuthz
+              <replaceable>file-path</replaceable></literal></term>
             <listitem>
 
               <para>Control path-based authorization by enabling or
@@ -7759,7 +8765,7 @@
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNListParentPath</literal></term>
+            <term><literal>SVNListParentPath On|Off</literal></term>
             <listitem>
 
               <para>When set to <literal>On</literal>, allows
@@ -7773,7 +8779,8 @@
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNMasterURI</literal></term>
+            <term><literal>SVNMasterURI
+              <replaceable>url</replaceable></literal></term>
             <listitem>
 
               <para>Specifies a URI to the master Subversion
@@ -7783,7 +8790,8 @@
           </varlistentry>
 
           <varlistentry>
-            <term><literal>SVNActivitiesDB</literal></term>
+            <term><literal>SVNActivitiesDB
+              <replaceable>directory-path</replaceable></literal></term>
             <listitem>
 
               <para>Specifies the location in the filesystem where the
@@ -7803,9 +8811,12 @@
 <Location /svn>
   DAV svn
 
-  # any "/svn/foo" URL will map to a repository in /net/svn.nfs/repositories/foo
+  # any "/svn/foo" URL will map to a repository in 
+  # /net/svn.nfs/repositories/foo
   SVNParentPath         "/net/svn.nfs/repositories"
-  # any "/svn/foo" URL will map to an activities db in /var/db/svn/activities/foo
+
+  # any "/svn/foo" URL will map to an activities db in
+  #  /var/db/svn/activities/foo
   SVNActivitiesDB       "/var/db/svn/activities"
 </Location>
 </screen>
@@ -7831,101 +8842,116 @@
             <term>Checkout or export</term>
             <listitem>
               <para><literal>checkout-or-export /path r62
-            depth-infinity</literal></para>
+            depth=infinity</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Status</term>
+            <term>Commit</term>
             <listitem>
-              <para><literal>remote-status /path r62
-            depth-infinity</literal></para>
+              <para><literal>commit harry r100</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Commit</term>
+            <term>Diffs</term>
             <listitem>
-              <para><literal>commit /path r100</literal></para>
+              <para><literal>diff /path r15:20 depth=infinity ignore-ancestry</literal></para>
+              <para><literal>diff /path1 at 15 /path2 at 20 depth=infinity ignore-ancestry</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Diff or merge</term>
+            <term>Fetching a directory</term>
             <listitem>
-              <para><literal>diff-or-merge /path r20:90</literal></para>
+              <para><literal>get-dir /trunk r17 text</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Switch</term>
+            <term>Fetch a file</term>
             <listitem>
-              <para><literal>switch /pathA at 20 /pathB at 50</literal></para>
+              <para><literal>get-file /path r20 props</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>List</term>
+            <term>Fetch file revision</term>
             <listitem>
-              <para><literal>list-dir /path r85</literal></para>
+              <para><literal>get-file-revs /path r12:15 include-merged-revisions</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Log</term>
+            <term>Fetching of merge information</term>
             <listitem>
-              <para><literal>log /path1,/path2,/path3 r20:90
-            svn:log,svn:author</literal> or</para>
-              <para><literal>log-merge-sensitive /path1,/path2,/path3
-            r20:90 svn:log,svn:author</literal></para>
-
+              <para><literal>get-mergeinfo (/path1 /path2)</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
             <term>Lock</term>
             <listitem>
-              <para><literal>lock /path</literal></para>
+              <para><literal>lock /path steal</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Unlock</term>
+            <term>Log</term>
             <listitem>
-              <para><literal>unlock /path</literal></para>
+              <para><literal>log (/path1,/path2,/path3) r20:90
+            discover-changed-paths revprops=()</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Blame</term>
+            <term>Replaying of revisions (svnsync)</term>
             <listitem>
-              <para><literal>blame /path r20:90</literal> or
-            <literal>blame-merge-sensitive /path
-            r20:90</literal></para>
+              <para><literal>replay /path r19</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Revision-property change</term>
+            <term>Revision property change</term>
             <listitem>
-              <para><literal>revprop-change r50
+              <para><literal>change-rev-prop r50
             propertyname</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Fetching of merge information</term>
+            <term>Revision property list</term>
             <listitem>
-              <para><literal>get-mergeinfo /path</literal> or
-            <literal>get-mergeinfo-partial
-            /path</literal></para>
+              <para><literal>rev-proplist r34</literal></para>
             </listitem>
           </varlistentry>
 
           <varlistentry>
-            <term>Replaying of revisions (svnsync)</term>
+            <term>Status</term>
             <listitem>
-              <para><literal>replay /path r19</literal></para>
+              <para><literal>status /path r62
+                depth=infinity</literal></para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>Switch</term>
+            <listitem>
+              <para><literal>switch /pathA /pathB at 50 depth=infinity</literal></para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>Unlock</term>
+            <listitem>
+              <para><literal>unlock /path break</literal></para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>Update</term>
+            <listitem>
+              <para><literal>update /path r17 send-copyfrom-args</literal></para>
             </listitem>
           </varlistentry>
 
@@ -8066,6 +9092,19 @@
           </listitem>
         </varlistentry>
 
+        <varlistentry>
+          <term><literal>svn:mergeinfo</literal></term>
+          <listitem>
+
+            <para>Used by Subversion to track merge data.  See
+              <xref linkend="svn.branchmerge.basicmerging.mergeinfo"/>
+              for details, but you should never edit this property
+              unless you <emphasis>really</emphasis> know what you're
+              doing.</para>
+
+          </listitem>
+        </varlistentry>
+
       </variablelist>
     </sect2>
 
@@ -8275,7 +9314,7 @@
         <para>If the <literal>post-commit</literal> hook returns a
           nonzero exit status, the commit <emphasis>will
           not</emphasis> be aborted since it has already
-          completed. However, anything that the hook printed
+          completed.  However, anything that the hook printed
           to <literal>STDERR</literal> will be marshalled back to the
           client, making it easier to diagnose hook failures.</para>
               
@@ -8363,8 +9402,9 @@
           </listitem>
         </orderedlist>
 
-        <para>Additionally, Subversion passes to the hook program via
-          standard input the proposed value of the property.</para>
+        <para>Additionally, Subversion passes the intended new value
+           of the property to the hook program via standard
+           input.</para>
 
       </refsect1>
       
@@ -8406,7 +9446,7 @@
         <para>If the <literal>post-revprop-change</literal> hook returns a
           nonzero exit status, the change <emphasis>will
           not</emphasis> be aborted since it has already
-          completed. However, anything that the hook printed
+          completed.  However, anything that the hook printed
           to <literal>STDERR</literal> will be marshalled back to the
           client, making it easier to diagnose hook failures.</para>
 
@@ -8533,7 +9573,7 @@
         <para>If the <literal>post-lock</literal> hook returns a
           nonzero exit status, the lock <emphasis>will
           not</emphasis> be aborted since it has already
-          completed. However, anything that the hook printed
+          completed.  However, anything that the hook printed
           to <literal>STDERR</literal> will be marshalled back to the
           client, making it easier to diagnose hook failures.</para>
 
@@ -8651,7 +9691,7 @@
         <para>If the <literal>post-unlock</literal> hook returns a
           nonzero exit status, the unlock <emphasis>will
           not</emphasis> be aborted since it has already
-          completed. However, anything that the hook printed
+          completed.  However, anything that the hook printed
           to <literal>STDERR</literal> will be marshalled back to the
           client, making it easier to diagnose hook failures.</para>
 

Modified: trunk/src/de/book/foreword.xml
==============================================================================
--- trunk/src/de/book/foreword.xml	(original)
+++ trunk/src/de/book/foreword.xml	Sun Jun 29 14:23:17 2008
@@ -29,18 +29,37 @@
     
   <title>Vorwort</title>
     
+<!--
+  <para>A bad Frequently Asked Questions (FAQ) sheet is one that is
+    composed not of the questions people actually ask, but of the
+    questions the FAQ's author <emphasis>wishes</emphasis> people
+    would ask.  Perhaps you've seen the type before:</para>
+-->
   <para>Eine schlechte FAQ (Frequently Asked Questions) ist eine, die
     nicht aus den Fragen besteht, die wirklich gefragt wurden, sondern
     aus denen, die der Autor sich von den Fragenden
     <emphasis>gewünscht</emphasis> hätte.  Vielleicht haben Sie solche
     schon gesehen:</para>
 
+
   <blockquote>
+<!--
+    <para>Q: How can I use Glorbosoft XYZ to maximize team
+      productivity?</para>
+-->
     <para>F: Wie kann ich Glorbosoft XYZ einsetzen, um die
     Team-Produktivität zu maximieren?</para>
   </blockquote>
  
   <blockquote>
+<!--
+    <para>A: Many of our customers want to know how they can
+      maximize productivity through our patented office groupware
+      innovations.  The answer is simple.  First, click on the
+      <literal>File</literal> menu, scroll down to
+      <literal>Increase Productivity</literal>,
+      then…</para>
+-->
     <para>A: Viele unserer Kunden wollen wissen, wie sie Ihre Produktivität mit
       unseren patentierten Office Groupware Innovationen maximieren können.
       Die Antwort ist einfach: zuerst klicken Sie auf das Menü
@@ -49,6 +68,24 @@
       …</para>
   </blockquote>
 
+<!--
+  <para>The problem with such FAQs is that they are not, in a
+    literal sense, FAQs at all.  No one ever called the tech support
+    line and asked, <quote>How can we maximize
+    productivity?</quote>.  Rather, people asked highly specific
+    questions, such as <quote>How can we change the calendaring system
+    to send reminders two days in advance instead of one?</quote>
+    and so on.  But it's a lot easier to make up imaginary
+    Frequently Asked Questions than it is to discover the real ones.
+    Compiling a true FAQ sheet requires a sustained, organized
+    effort: over the lifetime of the software, incoming questions
+    must be tracked, responses monitored, and all gathered into a
+    coherent, searchable whole that reflects the collective
+    experience of users in the wild.  It calls for the patient,
+    observant attitude of a field naturalist.  No grand
+    hypothesizing, no visionary pronouncements here—open eyes
+    and accurate note-taking are what's needed most.</para>
+-->
   <para>Das Problem mit solchen FAQs ist, dass sie keine FAQs im
     eigentlichen Sinne sind.  Niemand fragt den technischen Support:
     <quote>Wie können wir unsere Produktivität steigern?</quote>
@@ -68,6 +105,16 @@
     Vorhersagen, sondern hauptsächlich offene Augen und genaue
     Aufzeichnungen sind gefragt.</para>
 
+<!--
+  <para>What I love about this book is that it grew out of just such
+    a process, and shows it on every page.  It is the direct result
+    of the authors' encounters with users.  It began with Ben
+    Collins-Sussman's observation that people were asking the same
+    basic questions over and over on the Subversion mailing lists:
+    What are the standard workflows to use with Subversion?  Do
+    branches and tags work the same way as in other version control
+    systems?  How can I find out who made a particular change?</para>
+-->
   <para>Was ich an diesem Buch liebe, ist dass es genau aus einem
     solchen Prozess gewachsen ist und dies auf jeder Seite sichtbar
     ist.  Es ist das direkte Ergebnis der Begegnungen der Autoren mit
@@ -79,6 +126,18 @@
     finde ich heraus, wer eine bestimmte Änderung durchgeführt
     hat?</para>
 
+<!--
+  <para>Frustrated at seeing the same questions day after day, Ben
+    worked intensely over a month in the summer of 2002 to write
+    <citetitle>The Subversion Handbook</citetitle>, a 60 page
+    manual that covered all the basics of using Subversion.  The
+    manual made no pretense of being complete, but it was
+    distributed with Subversion and got users over that initial hump
+    in the learning curve.  When O'Reilly decided to
+    publish a full-length Subversion book, the path of least
+    resistance was obvious: just expand the Subversion
+    handbook.</para>
+-->
   <para>Frustriert davon, Tag für Tag immer wieder die gleichen Fragen
     zu sehen, arbeitete Ben im Sommer 2002 über einen Monat intensiv
     daran, <citetitle>The Subversion Handbook</citetitle> zu
@@ -91,6 +150,17 @@
     Widerstandes offensichtlich: Das Subversion Handbook muss
     erweitert werden.</para>
 
+<!--
+  <para>The three coauthors of the new book were thus presented
+    with an unusual opportunity.  Officially, their task was to
+    write a book top-down, starting from a table of contents and an
+    initial draft.  But they also had access to a steady
+    stream—indeed, an uncontrollable geyser—of bottom-up
+    source material.  Subversion was already in the hands of
+    thousands of early adopters, and those users were giving tons of
+    feedback, not only about Subversion, but about its existing
+    documentation.</para>
+-->
   <para>Die drei Co-Autoren des neuen Buches erhielten somit eine
     seltene Gelegenheit.  Eigentlich war es ihre Aufgabe, ein Buch
     beginnend mit dem Inhaltsverzeichnis und einem Rohkonzept zu
@@ -101,6 +171,28 @@
     an Rückmeldungen — nicht nur über Subversion, sondern auch
     über die bestehende Dokumentation.</para>
 
+<!--
+  <para>During the entire time they wrote this book, Ben, Mike, and
+    Brian haunted the Subversion mailing lists and chat rooms
+    incessantly, carefully noting the problems users were having in
+    real-life situations.  Monitoring such feedback was part of their
+    job descriptions at CollabNet anyway, and it gave them a huge
+    advantage when they set out to document Subversion.  The book
+    they produced is grounded firmly in the bedrock of experience,
+    not in the shifting sands of wishful thinking; it combines the
+    best aspects of user manual and FAQ sheet.  This duality might
+    not be noticeable on a first reading.  Taken in order, front to
+    back, the book is simply a straightforward description of a
+    piece of software.  There's the overview, the obligatory guided
+    tour, the chapter on administrative configuration, some advanced
+    topics, and of course a command reference and troubleshooting
+    guide.  Only when you come back to it later, seeking the
+    solution to some specific problem, does its authenticity shine
+    out: the telling details that can only result from encounters
+    with the unexpected, the examples honed from genuine use cases,
+    and most of all the sensitivity to the user's needs and the
+    user's point of view.</para>
+-->
   <para>Während der gesamten Zeit, in der sie dieses Buch schrieben,
     durchstöberten Ben, Mike und Brian unablässig die
     Subversion-Mailinglisten und Chaträume und notierten die Probleme,
@@ -124,6 +216,26 @@
     Gefühl für die Bedürfnisse und den Blickwinkel der
     Benutzer.</para>
 
+<!--
+  <para>Of course, no one can promise that this book will answer
+    every question you have about Subversion.  Sometimes, the
+    precision with which it anticipates your questions will seem
+    eerily telepathic; yet occasionally, you will stumble into a
+    hole in the community's knowledge and come away empty-handed.
+    When this happens, the best thing you can do is email
+    <email>users at subversion.tigris.org</email> and present your
+    problem.  The authors are still there and still watching, and the
+    authors include not just the three listed on the cover, but many others
+    who contributed corrections and original material.  From the
+    community's point of view, solving your problem is merely a
+    pleasant side effect of a much larger project—namely,
+    slowly adjusting this book, and ultimately Subversion itself, to
+    more closely match the way people actually use it.  They are
+    eager to hear from you, not only because they can help you, but
+    because you can help them.  With Subversion, as with all active
+    free software projects, <emphasis>you are not
+    alone</emphasis>.</para>
+-->
   <para>Natürlich kann niemand versprechen, dass dieses Buch alle
     Fragen beantwortet, die Sie über Subversion haben.  Manchmal wird
     die Genauigkeit, mit der es Ihre Fragen erwartet, unheimlich und
@@ -145,6 +257,9 @@
     Software-Projekte — gilt: <emphasis>Sie sind nicht
     allein</emphasis>.</para>
 
+<!--
+  <para>Let this book be your first companion.</para>
+-->
   <para>Lassen Sie dieses Buch Ihren ersten Begleiter sein.</para>
 
 </preface>




More information about the svnbook-dev mailing list