<div dir="auto">I'm still seeing intermittent problems just trying to read from the repository. Today I ran 'svn update' three times and the first two times failed each with completely different errors. Color me unimpressed with SourceForge's reliability right now.<br><br><div data-smartmail="gmail_signature">-- <br>Sent via mobile. Please excuse brevity.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mar 3, 2018 10:46 PM, "wuzhouhui" <<a href="mailto:wuzhouhui250@gmail.com">wuzhouhui250@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Mail notification seems worked again, but mail of r5640 to r5648 maybe<br>
disappeared.<br>
<br>
在 2018年2月28日 上午7:40,C. Michael Pilato <<a href="mailto:cmpilato@red-bean.com">cmpilato@red-bean.com</a>>写道:<br>
><br>
> Could this be the first of several backed-up commit messages to come through?<br>
><br>
> 2018-02-16 5:31 GMT-05:00 <<a href="mailto:wuzhouhui@users.sourceforge.net">wuzhouhui@users.sourceforge.<wbr>net</a>>:<br>
>><br>
>> Revision: 5639<br>
>>           <a href="http://sourceforge.net/p/svnbook/source/5639" rel="noreferrer" target="_blank">http://sourceforge.net/p/<wbr>svnbook/source/5639</a><br>
>> Author:   wuzhouhui<br>
>> Date:     2018-02-16 10:31:17 +0000 (Fri, 16 Feb 2018)<br>
>> Log Message:<br>
>> -----------<br>
>> 1.8/zh: translation of chapter 5 in progress<br>
>><br>
>> Modified Paths:<br>
>> --------------<br>
>>     branches/1.8/zh/book/ch05-<wbr>repository-admin.xml<br>
>><br>
>> Modified: branches/1.8/zh/book/ch05-<wbr>repository-admin.xml<br>
>> ==============================<wbr>==============================<wbr>=======<br>
>> --- branches/1.8/zh/book/ch05-<wbr>repository-admin.xml      2018-02-13 12:15:26 UTC (rev 5638)<br>
>> +++ branches/1.8/zh/book/ch05-<wbr>repository-admin.xml      2018-02-16 10:31:17 UTC (rev 5639)<br>
>> @@ -28,7 +28,7 @@<br>
>>      the data in the repository.</para><br>
>>        --><br>
>>    <para>本章将介绍如何创建与配置 Subversion 仓库, 还将通过几个例子, 介绍<br>
>> -    应该在什么时候, 怎么用 Subversion 提供的工作维护仓库. 在这过程中, 我<br>
>> +    应该在什么时候, 怎么用 Subversion 提供的工具维护仓库. 在这过程中, 我<br>
>>      们将解决一些常见的问题和误区, 并对如何管理仓库的数据提出一些建议.</para><br>
>><br>
>>        <!--<br>
>> @@ -70,7 +70,7 @@<br>
>>        --><br>
>>      <para>在进入与仓库管理有关的主题之前, 先给出仓库的定义. 它是什么样的?<br>
>>        感觉怎么样? 它喜欢喝热茶还是冰茶, 加不加糖或柠檬? 作为一名管理员, 人们<br>
>> -      期望你能同时从字面和操作系统层面理解仓库的组成&mdash;<wbr>仓库看起来是什么<br>
>> +      期望你能同时从字面和系统层面理解仓库的组成&mdash;<wbr>仓库看起来是什么<br>
>>        样的, 被非 Subversion 工具操作时如何反应; 还要从逻辑层面理解&mdash;在<br>
>>        仓库 <emphasis>内部</emphasis>, 数据是如何表示的.</para><br>
>><br>
>> @@ -197,7 +197,7 @@<br>
>>            <secondary>activities</<wbr>secondary><br>
>>          </indexterm><br>
>>          在 Subversion 1.5 之前, 仓库还有一个子目录 <filename>dav</filename>,<br>
>> -        <filename>mod_dav_svn</<wbr>filename> 使用该目录存放与 WebDAV<br>
>> +        <filename>mod_dav_svn</<wbr>filename> 使用该目录存放与 WebDAV 有关的<br>
>>          <firstterm>活动</firstterm> (<firstterm>activities</<wbr>firstterm>)&mdash;<br>
>>          高层的 WebDAV 协议概念到 Subversion 提交事务的映射&mdash;有关的信息.<br>
>>          Subversion 1.5 修改了这一行为, 它把活动目录的所有权和配置目录位置的<br>
>> @@ -3391,6 +3391,7 @@<br>
>>  </screen><br>
>>        </informalexample><br>
>><br>
>> +      <!--<br>
>>        <para>At this point, you have to make a decision.  Each of your<br>
>>          dump files will create a valid repository, but will preserve<br>
>>          the paths exactly as they were in the original repository.<br>
>> @@ -3407,6 +3408,18 @@<br>
>>          component.  Also, you'll want to remove the section of dump<br>
>>          data that creates the <filename>calc</filename> directory.  It<br>
>>          will look something like the following:</para><br>
>> +      --><br>
>> +      <para>这时候, 你必须做出决定. 每一个转储文件都将创建一个有效的仓库,<br>
>> +        但保留的路径与原仓库中的路径一模一样, 也就是即使你想为项目<br>
>> +        <literal>calc</literal> 仓库一个单独的仓库, 根据转储文件创建出的<br>
>> +        仓库也会有顶层目录 <filename>calc</filename> 存在. 如果想把目录<br>
>> +        <filename>trunk</filename>, <filename>tags</filename> 和<br>
>> +        <filename>branches</filename> 放在仓库的根目录下, 你可能希望能够<br>
>> +        修改转储文件, 调整头部 <literal>Node-path</literal> 和<br>
>> +        <literal>Node-copyfrom-path</<wbr>literal>, 使得它们不再包含路径分量<br>
>> +        <filename>calc/</filename>. 并且, 你可能还想删除创建目录<br>
>> +        <filename>calc</filename> 的转储数据, 这部分的转储数据看起来就像下面<br>
>> +        这样:</para><br>
>><br>
>>        <informalexample><br>
>>          <programlisting><br>
>> @@ -3419,6 +3432,7 @@<br>
>>        </informalexample><br>
>><br>
>>        <warning><br>
>> +      <!--<br>
>>          <para>If you do plan on manually editing the dump file to<br>
>>            remove a top-level directory, make sure your editor is<br>
>>            not set to automatically convert end-of-line characters to<br>
>> @@ -3426,11 +3440,20 @@<br>
>>            <literal>\n</literal>), as the content will then not agree<br>
>>            with the metadata.  This will render the dump file<br>
>>            useless.</para><br>
>> +      --><br>
>> +        <para>如果你已经决定手工地修改转储文件, 以便删除顶层目录, 一定要确保<br>
>> +          你所用的编辑器不会自动地把行结束符转换成本地格式 (例如把<br>
>> +          <literal>\r\n</literal> 转换成 <literal>\n</literal>), 以免文件的<br>
>> +          内容与元数据不一致. 否则的话, 转储文件将变成一堆废纸.</para><br>
>>        </warning><br>
>><br>
>> +      <!--<br>
>>        <para>All that remains now is to create your three new<br>
>>          repositories, and load each dump file into the right<br>
>>          repository, ignoring the UUID found in the dump stream:</para><br>
>> +      --><br>
>> +      <para>剩下的工作就是创建三个新的仓库, 然后分别加载对应的转储文件, 并忽略<br>
>> +        在转储流中发现的 UUID:</para><br>
>><br>
>>        <informalexample><br>
>>          <screen><br>
>> @@ -3456,6 +3479,7 @@<br>
>>  </screen><br>
>>        </informalexample><br>
>><br>
>> +      <!--<br>
>>        <para>Both of <command>svndumpfilter</<wbr>command>'s subcommands<br>
>>          accept options for deciding how to deal with<br>
>>          <quote>empty</quote> revisions.  If a given revision<br>
>> @@ -3464,27 +3488,42 @@<br>
>>          unwanted.  So to give the user control over what to do with<br>
>>          those revisions, <command>svndumpfilter</<wbr>command> provides<br>
>>          the following command-line options:</para><br>
>> +      --><br>
>> +      <para><command>svndumpfilter</<wbr>command> 的两个子命令都支持用于决定如何<br>
>> +        处理 <quote>空</quote> 版本号的选项. 如果一个版本号只包含了被过滤掉的<br>
>> +        路径的修改, 就可以把这个空的版本号当成不需要的版本号. 为了允许用户<br>
>> +        决定如何处理这两种版本号, <command>svndumpfilter</<wbr>command> 提供了以<br>
>> +        下选项:</para><br>
>><br>
>>        <variablelist><br>
>>          <varlistentry><br>
>>            <term><option>--drop-empty-<wbr>revs</option></term><br>
>>            <listitem><br>
>> +      <!--<br>
>>              <para>Do not generate empty revisions at all&mdash;just<br>
>>                omit them.</para><br>
>> +      --><br>
>> +            <para>不要生成空版本号&mdash;直接忽略它们.</<wbr>para><br>
>>            </listitem><br>
>>          </varlistentry><br>
>>          <varlistentry><br>
>>            <term><option>--renumber-revs<<wbr>/option></term><br>
>>            <listitem><br>
>> +      <!--<br>
>>              <para>If empty revisions are dropped (using the<br>
>> -              <option>--drop-empty-revs</<wbr>option> option), change the<br>
>> +              <option>- -drop-empty-revs</option> option), change the<br>
>>                revision numbers of the remaining revisions so that<br>
>>                there are no gaps in the numeric sequence.</para><br>
>> +      --><br>
>> +            <para>如果空版本号被丢弃 (通过选项<br>
>> +              <option>--drop-empty-revs</<wbr>option>), 修改后面所有的版本号的号码,<br>
>> +              使得版本号号码是连续的.</para><br>
>>            </listitem><br>
>>          </varlistentry><br>
>>          <varlistentry><br>
>>            <term><option>--preserve-<wbr>revprops</option></term><br>
>>            <listitem><br>
>> +      <!--<br>
>>              <para>If empty revisions are not dropped, preserve the<br>
>>                revision properties (log message, author, date, custom<br>
>>                properties, etc.) for those empty revisions.<br>
>> @@ -3492,10 +3531,16 @@<br>
>>                original datestamp, and a generated log message that<br>
>>                indicates that this revision was emptied by<br>
>>                <command>svndumpfilter</<wbr>command>.</para><br>
>> +      --><br>
>> +            <para>如果空版本号未被丢弃, 则保留它们的版本号属性 (日志消息,<br>
>> +              作者, 日期, 和其他自定义的属性). 如果未指定该选项, 则该版本号<br>
>> +              将只会包含原始的提交日期和一条生成的日志消息, 该消息指出版本号<br>
>> +              是被 <command>svndumpfilter</<wbr>command> 清空的.</para><br>
>>            </listitem><br>
>>          </varlistentry><br>
>>        </variablelist><br>
>><br>
>> +      <!--<br>
>>        <para>While <command>svndumpfilter</<wbr>command> can be very<br>
>>          useful and a huge timesaver, there are unfortunately a<br>
>>          couple of gotchas.  First, this utility is overly sensitive<br>
>> @@ -3503,6 +3548,12 @@<br>
>>          dump file are specified with or without leading slashes.<br>
>>          You'll want to look at the <literal>Node-path</literal> and<br>
>>          <literal>Node-copyfrom-path</<wbr>literal> headers.</para><br>
>> +      --><br>
>> +      <para>虽然 <command>svndumpfilter</<wbr>command> 非常实用, 而且可以节省<br>
>> +        大量的时间, 但它仍然有几点需要特别注意的地方. 首先, 命令对路径语义<br>
>> +        非常敏感. 要特别注意转储文件中的路径是否以斜杠开始, 即使头部<br>
>> +        <literal>Node-path</literal> 和 <literal>Node-copyfrom-path</<wbr>literal>.<br>
>> +      </para><br>
>><br>
>>        <informalexample><br>
>>          <programlisting><br>
>> @@ -3512,6 +3563,7 @@<br>
>>  </programlisting><br>
>>        </informalexample><br>
>><br>
>> +      <!--<br>
>>        <para>If the paths have leading slashes, you should<br>
>>          include leading slashes in the paths you pass to<br>
>>          <command>svndumpfilter include</command> and<br>
>> @@ -3523,9 +3575,20 @@<br>
>>          other programs that generate dump data might not be so<br>
>>          consistent.</para></footnote> you should probably normalize<br>
>>          those paths so that they all have, or all lack, leading<br>
>> -        slashes.</para> <!-- ### FIXME: Is this still accurate?<br>
>> +        slashes.</para><br>
>> +      --><br>
>> +      <!-- ### FIXME: Is this still accurate?<br>
>>                               Surely we've fixed ### this by now! --><br>
>> +      <para>如果路径以斜杠开始 (也就是说路径含有前导斜杠), 那么<br>
>> +        <command>svndumpfilter include</command><br>
>> +        和 <command>svndumpfilter exclude</command> 的路径参数也应该以斜杠<br>
>> +        开始 (反之亦然). 更进一步, 如果转储文件对前导斜杠的使用不太一致,<br>
>> +        <footnote><para><command><wbr>svnadmin dump</command> 对前导斜杠的处理<br>
>> +            策略总是一致的 (不包含前导斜杠), 生成转储数据的其他程序就不一定<br>
>> +            了.</para></footnote> 那你应该对路径进行规范化处理, 使得它们全部<br>
>> +        都有 (或都没有) 前导斜杠.</para><br>
>><br>
>> +      <!--<br>
>>        <para>Also, copied paths can give you some trouble.<br>
>>          Subversion supports copy operations in the repository, where<br>
>>          a new path is created by copying some already existing path.<br>
>> @@ -3541,12 +3604,27 @@<br>
>>          filtered dump data stream.  But because the Subversion<br>
>>          repository dump format shows only what was changed in each<br>
>>          revision, the contents of the copy source might not be<br>
>> +        ### TODO<br>
>>          readily available.  If you suspect that you have any copies<br>
>>          of this sort in your repository, you might want to rethink<br>
>>          your set of included/excluded paths, perhaps including the<br>
>>          paths that served as sources of your troublesome copy<br>
>>          operations, too.</para><br>
>> +      --><br>
>> +      <para>另外, 被复制的路径也可能会带来一些麻烦. Subversion 支持在仓库中<br>
>> +        执行复制操作&mdash;<wbr>通过复制已存在的路径来创建新的路径. 在仓库的生命<br>
>> +        周期中, 有可能出现这种时刻: 你从一个被 <command>svndumpfilter</<wbr>command><br>
>> +        排除的位置复制了一个文件或目录, 放到另一个被<br>
>> +        <command>svndumpfilter</<wbr>command> 包含的位置上. 为了保证转储数据是自给<br>
>> +        自足的, <command>svndumpfilter</<wbr>command> 仍然需要显示新路径的添加<br>
>> +        &mdash;包含了通过复制创建的文件的所有内容&<wbr>mdash;但并不把新路径的添加<br>
>> +        表示成某个源路径的复制, 因为这个源路径在已过滤的转储数据中并不存在.<br>
>> +        但是因为 Subversion 的转储格式只会显示每个版本号中发生变化的内容,<br>
>> +        而源数据可能没那么容易做到随时可用. 如果管理员觉得在仓库中存在这种<br>
>> +        类型的复制, 那就要重新考虑被包含或排除的路径, 或许应该包含在复制操作<br>
>> +        中充当数据源的路径.</para><br>
>><br>
>> +      <!--<br>
>>        <para>Finally, <command>svndumpfilter</<wbr>command> takes path<br>
>>          filtering quite literally.  If you are trying to copy the<br>
>>          history of a project rooted at<br>
>> @@ -3566,13 +3644,29 @@<br>
>>          directories that the new dump stream expects to exist<br>
>>          actually do exist in the target repository before trying to<br>
>>          load the stream into that repository.</para><br>
>> +      --><br>
>> +      <para>最后, <command>svndumpfilter</<wbr>command> 在过滤路径时采取的是非常<br>
>> +        字面的理解. 如果你试图复制一个根目录为<br>
>> +        <filename>trunk/my-project</<wbr>filename> 的仓库的历史, 到它自己的仓库中,<br>
>> +        那你就要用 <command>svndumpfilter include</command> 保留<br>
>> +        <filename>trunk/my-project</<wbr>filename> 内的所有修改, 但是生成的转储<br>
>> +        文件对于将来加载它的仓库没有任何假定. 特别地, 转储文件可能以添加目录<br>
>> +        <filename>trunk/my-project</<wbr>filename> 的版本号作为开始, 但它<br>
>> +        <emphasis>不会</emphasis> 包含创建目录 <filename>trunk</filename> 的<br>
>> +        命令 (因为 <filename>trunk</filename> 不匹配包含过滤器). 管理员需要<br>
>> +        确保在加载转储文件前, 转储文件期望存在的目录在目标仓库中确实存在.<br>
>> +      </para><br>
>><br>
>>      </sect2><br>
>><br>
>>      <!-- ==============================<wbr>==============================<wbr>=== --><br>
>>      <sect2 id="svn.reposadmin.maint.<wbr>replication"><br>
>> +      <!--<br>
>>        <title>Repository Replication</title><br>
>> +      --><br>
>> +      <title>仓库复制</title><br>
>><br>
>> +      <!--<br>
>>        <para>There are several scenarios in which it is quite handy to<br>
>>          have a Subversion repository whose version history is exactly<br>
>>          the same as some other repository's.  Perhaps the most obvious<br>
>> @@ -3582,7 +3676,13 @@<br>
>>          Other scenarios include deploying mirror repositories to<br>
>>          distribute heavy Subversion load across multiple servers, use<br>
>>          as a soft-upgrade mechanism, and so on.</para><br>
>> +      --><br>
>> +      <para>有时候, 如果仓库的历史能和另一个仓库保持一模一样, 那么在完成很<br>
>> +        多事情时将会变得非常方便. 比如最明显的一个就是当主仓库无法访问时<br>
>> +        (可能是系统硬件故障, 网络故障等), 把服务切换到备份仓库. 其他场景<br>
>> +        还包括利用镜像仓库, 把访问负载分散到多台服务器上, 实现软升级等.</para><br>
>><br>
>> +      <!--<br>
>>        <para>Subversion provides a program for managing scenarios such<br>
>>          as these.  <command>svnsync</command> works by essentially<br>
>>          asking the Subversion server to <quote>replay</quote><br>
>> @@ -3595,17 +3695,34 @@<br>
>>          interfaces.  All it requires is read access to the source<br>
>>          repository and read/write access to the destination<br>
>>          repository.</para><br>
>> +      --><br>
>> +      <para>Subversion 提供了 <command>svnsync</command> 实现仓库的复制.<br>
>> +        <command>svnsync</command> 的工作本质上就是要求 Subversion 服务<br>
>> +        <quote>重放</quote> 版本号, 每次一个, 然后利用这个版本号的相关信息,<br>
>> +        在另一个仓库中模拟一个相同的提交. 仓库所在的主机和执行<br>
>> +        <command>svnsync</command> 的主机不必是同一台&mdash;如果命令的参数<br>
>> +        是仓库的 URL, <command>svnsync</command> 将通过 Subversion 的仓库访问<br>
>> +        (Repository Access, RA) 接口完成工作. <command>svnsync</command><br>
>> +        所要求的就是源仓库的读权限和目标仓库的读写权限.</<wbr>para><br>
>><br>
>>        <note><br>
>> +      <!--<br>
>>          <para>When using <command>svnsync</command> against a remote<br>
>>            source repository, the Subversion server for that repository<br>
>>            must be running Subversion version 1.4 or later.</para><br>
>> +      --><br>
>> +        <para><command>svnsync</<wbr>command> 要求远程的源仓库的 Subversion 版本<br>
>> +          必须至少是 1.4.</para><br>
>>        </note><br>
>><br>
>>        <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --><br>
>>        <sect3 id="svn.reposadmin.maint.<wbr>replication.svnsync"><br>
>> +      <!--<br>
>>          <title>Replication with svnsync</title><br>
>> +      --><br>
>> +        <title>使用 svnsync 复制仓库</title><br>
>><br>
>> +      <!--<br>
>>          <para>Assuming you already have a source repository that you'd<br>
>>            like to mirror, the next thing you need is a target repository<br>
>>            that will actually serve as that mirror.  This target<br>
>> @@ -3616,7 +3733,15 @@<br>
>>            details don't matter.  But by default, it must<br>
>>            not yet have any version history in it.  (We'll discuss an<br>
>>            exception to this later in this section.)</para><br>
>> +      --><br>
>> +        <para>假设你已经有了一个源仓库, 你想为它创建一个镜像, 下一件需要准备<br>
>> +          的东西就是充当镜像的目标仓库. 这个目标仓库可以使用与源仓库不同的<br>
>> +          后端存储机制 (见 <xref linkend="svn.reposadmin.<wbr>basics.backends" />)<br>
>> +          &mdash;Subversion 的抽象层保证了具体的后端存储不会对复制操作产生<br>
>> +          影响. 但是在默认情况下, 目标仓库此时不能包含任何版本历史 (我们将在<br>
>> +          本节的后面介绍一种例外情况).</para><br>
>><br>
>> +      <!--<br>
>>          <para>The protocol that <command>svnsync</command> uses to<br>
>>            communicate revision information is highly sensitive to<br>
>>            mismatches between the versioned histories contained in the<br>
>> @@ -3629,8 +3754,17 @@<br>
>>            allowing the revision history in the target repository to<br>
>>            change by any mechanism other than the mirroring process is a<br>
>>            recipe for disaster.</para><br>
>> +      --><br>
>> +        <para><command>svnsync</<wbr>command> 用于交流版本号信息的协议对源仓库与<br>
>> +          目标仓库不匹配的版本历史非常敏感, 因此, 虽然<br>
>> +          <command>svnsync</command> 并没有 <emphasis>要求</emphasis> 目标<br>
>> +          仓库是只读的,<footnote><para>实际上, 目标仓库不能是完全只读的, 否则<br>
>> +              的话, <command>svnsync</command> 就不能有效地复制历史.</para><br>
>> +          </footnote>除了 <command>svnsync</command>, 如果还允许其他进程或<br>
>> +          用户修改目标仓库的历史, 常常会导致灾难性的后果.</para><br>
>><br>
>>          <warning><br>
>> +      <!--<br>
>>            <para>Do <emphasis>not</emphasis> modify a mirror repository<br>
>>              in such a way as to cause its version history to deviate<br>
>>              from that of the repository it mirrors.  The only commits<br>
>> @@ -3637,8 +3771,13 @@<br>
>>              and revision property modifications that ever occur on that<br>
>>              mirror repository should be those performed by the<br>
>>              <command>svnsync</command> tool.</para><br>
>> +      --><br>
>> +          <para>不要用除了 <command>svnsync</command> 之外的其他方法修改镜像<br>
>> +            仓库, 使得镜像仓库偏离源仓库的历史. 发生在镜像仓库的提交和版本号<br>
>> +            属性修改只能由 <command>svnsync</command> 完成.</para><br>
>>          </warning><br>
>><br>
>> +      <!--<br>
>>          <para>Another requirement of the target repository is that the<br>
>>            <command>svnsync</command> process be allowed to modify<br>
>>            revision properties.  Because <command>svnsync</command> works<br>
>> @@ -3652,12 +3791,25 @@<br>
>>            to set and change revision properties.  With those<br>
>>            provisions in place, you are ready to start mirroring<br>
>>            repository revisions.</para><br>
>> +      --><br>
>> +        <para>对目标仓库的另一项要求是允许 <command>svnsync</command> 修改版<br>
>> +          本号属性. 因为 <command>svnsync</command> 仍然受到目标仓库的钩子的<br>
>> +          影响, 而仓库的默认配置还不全面 (见 <xref<br>
>> +            linkend="svn.ref.reposhooks"/> 的 <xref<br>
>> +            linkend="svn.ref.reposhooks.<wbr>pre-revprop-change" />). 管理员需要<br>
>> +          显式地实现钩子 pre-revprop-change, 在钩子脚本中允许设置和修改版本号<br>
>> +          属性. 如果这些条件都满足了, 那么创建镜像前的工作就已经准备就绪了.<br>
>> +        </para><br>
>><br>
>>          <tip><br>
>> +      <!--<br>
>>            <para>It's a good idea to implement authorization measures<br>
>>              that allow your repository replication process to perform<br>
>>              its tasks while preventing other users from modifying the<br>
>>              contents of your mirror repository at all.</para><br>
>> +      --><br>
>> +          <para>一种很好的做法是实现一种授权方式, 使得除了执行复制操作的<br>
>> +            进程外, 不允许任何其他用户或程序修改镜像仓库.</para><br>
>>          </tip><br>
>><br>
>>          <para>Let's walk through the use of <command>svnsync</command><br>
>><br>
>><br>
>> ______________________________<wbr>_________________<br>
>> svnbook-dev mailing list<br>
>> <a href="mailto:svnbook-dev@red-bean.com">svnbook-dev@red-bean.com</a><br>
>> <a href="http://www.red-bean.com/mailman/listinfo/svnbook-dev" rel="noreferrer" target="_blank">http://www.red-bean.com/<wbr>mailman/listinfo/svnbook-dev</a><br>
><br>
><br>
</blockquote></div></div>