[svnbook] r5437 committed - branches/1.8/zh/book/ch03-advanced-topics.xml

wuzhouhui at users.sourceforge.net wuzhouhui at users.sourceforge.net
Thu Sep 28 08:10:21 CDT 2017


Revision: 5437
          http://sourceforge.net/p/svnbook/source/5437
Author:   wuzhouhui
Date:     2017-09-28 13:10:21 +0000 (Thu, 28 Sep 2017)
Log Message:
-----------
1.8/zh: review of chapter 3 in progress

Modified Paths:
--------------
    branches/1.8/zh/book/ch03-advanced-topics.xml

Modified: branches/1.8/zh/book/ch03-advanced-topics.xml
===================================================================
--- branches/1.8/zh/book/ch03-advanced-topics.xml	2017-09-26 12:47:03 UTC (rev 5436)
+++ branches/1.8/zh/book/ch03-advanced-topics.xml	2017-09-28 13:10:21 UTC (rev 5437)
@@ -2300,7 +2300,7 @@
       <para>属性是 Subversion 最强大的特性之一, 它是本章和其他章节介绍的众多
         Subversion 特性—文本差异比较, 合并支持, 关键字替换和换行符转换
         等—的关键基础. 为了充分发挥属性的作用, 它们必须被设置到正确的
-        文件和目录上, 不幸的是, 这个步骤在在日常工作常常被人遗忘, 尤其是因为
+        文件和目录上, 不幸的是, 这个步骤在日常工作中常常被人遗忘, 尤其是因为
         即使属性设置不当通常也不会造成很明显的错误 (至少和文件添加失败比起
         来, 不是很明显). 为了帮助用户更好地使用属性, Subversion 提供了几个
         简单但很有用的特性.</para>
@@ -2387,7 +2387,7 @@
     -->
         <para>有很多文件使用的是 UTF-16 编码, 虽然在语义上文件的内容是纯文本
           的, 但是 UTF-16 使用的字节在 ASCII 字符的范围之外, 因此 Subversion
-          更倾向于把它们分类成二进制文件, 用户在给这些文件进行差异比较, 合并
+          更倾向于把它们归类为二进制文件, 用户在给这些文件进行差异比较, 合并
           和关键字替换时也会因此遇到一些小麻烦.</para>
       </note>
 
@@ -2423,11 +2423,11 @@
       <literal>image/jpeg</literal>. 又或者说匹配模式 <literal>*.cpp</literal>
       的文件都应该把 <literal>svn:eol-style</literal> 设置成 <literal>native
         </literal>, 把 <literal>svn:keywords</literal> 设置成 <literal>Id
-      </literal>. 关于运行时配置如果支持自动属性的更多细节, 见
+      </literal>. 关于运行时配置如何支持自动属性的更多细节, 见
       <xref linkend="svn.advanced.confarea.opts.config"/>.</para>
 
 
-    <!-- TODO -->
+      <!--
       <para>While automatic property support via the runtime
         configuration system is certainly handy, Subversion
         administrators might prefer a set of property definitions
@@ -2436,6 +2436,12 @@
         Subversion 1.8 and newer clients support such functionality
         through the <literal>svn:auto-props</literal> inheritable
         property.</para>
+      -->
+      <para>虽然借助运行时配置系统来支持自动属性设置非常方便, 但 Subversion
+        管理员可能更希望当客户端工具在一个从特定服务器检出的工作副本上工作
+        时, 可以考虑到那些自动连接到客户端的属性集合. Subversion 1.8 及其
+        之后的客户端版本通过可继承属性 <literal>svn:auto-props</literal>
+        实现这个功能.</para>
 
     <!--
       <para>The <literal>svn:auto-props</literal> property works like
@@ -2594,7 +2600,7 @@
       <para>Let's look at an example.  Suppose you have this runtime
         configuration:</para>
     -->
-      <para>现在来看一个例子. 假设你有一个如下所示的运行时配置:</para>
+      <para>举例来说, 假设你有一个如下所示的运行时配置:</para>
 
     <informalexample>
       <screen>
@@ -2754,7 +2760,7 @@
           <literal>svn:auto-props</literal> property is set on
           <filename>bar</filename> with the value:</para>
     -->
-        <para>自动属性的覆盖只发生在 <emphasis>相同地</emphasis> 模式上, 如果
+        <para>自动属性的覆盖只发生在 <emphasis>相同的</emphasis> 模式上, 如果
           新增的文件同时匹配多个模式, 那就无法确定最终应用的是哪一个自动属性.
           比如说用户想把文件 <filename>foo.cpp</filename> 添加到目录
           <filename>bar</filename>, 而 <filename>bar</filename> 的属性
@@ -2798,7 +2804,7 @@
         hook scripts.)</para>
     -->
       <para><literal>svn:auto-props</literal> 最后一个需要注意的地方是它 (以
-        以及类似的 <literal>svn:global-ignores</literal>, 见
+        及类似的 <literal>svn:global-ignores</literal>, 见
         <xref linkend="svn.advanced.props.special.ignore"/>) 只是向理解属性
         的客户端工具提供了一个建议, 较老的客户端会忽略这些属性, 选项
         <option>--no-auto-props</option> 会忽略它们, 用户可能会选择手动地修改
@@ -2866,7 +2872,7 @@
                 />.</para>
     -->
             <para>如果该属性被设置到一个文件上, 那客户端就会给 Unix 工作副本里
-              的文件设置上可执行执行, 见
+              的文件设置上可执行权限, 见
               <xref linkend="svn.advanced.props.special.executable"/>.</para>
             </listitem>
           </varlistentry>
@@ -2886,7 +2892,7 @@
             <para>如果属性出现在一个文件上, 那么属性值指出了文件的 MIME 类型,
               当更新时, 属性可以帮助客户端判断是否可以安全地对文件进行基于行
               的合并操作. 另外, 当用户通过网页浏览器获取文件时, 该属性还会影
-              文件的具体行为. 更多的信息参考
+              响文件的具体行为. 更多的信息参考
               <xref linkend="svn.advanced.props.special.mime-type"/>.</para>
             </listitem>
           </varlistentry>
@@ -2903,7 +2909,7 @@
                 />.</para>
     -->
             <para>如果该属性出现在一个目录上, 属性值是一个未被版本化的文件
-              模式列表, 条例模式的文件会被 <command>svn status</command> 和
+              模式列表, 符合模式的文件会被 <command>svn status</command> 和
               其他子命令忽略, 见
               <xref linkend="svn.advanced.props.special.ignore"/>.</para>
             </listitem>
@@ -3224,7 +3230,7 @@
               <para>为 <command>svnsync</command> 的镜像操作临时添加仓库访问
                 的互斥性, 通常只有在 <command>svnsync</command> 活动时—
                 或者在 <command>svnsync</command> 不能干净地与仓库断开连接时,
-                它才是有意义的).</para>
+                只有当这个属性出现在版本号 0 上时, 它才是有意义的).</para>
             </listitem>
           </varlistentry>
   
@@ -3394,7 +3400,7 @@
           de facto mechanism for clearing up the file content
           confusion.</para>
     -->
-        <para>最终, 终于有一个描述数据流内容的标准出现了. 1996 年, RFC 2045
+        <para>最终总算有一个描述数据流内容的标准出现了. 1996 年, RFC 2045
           发布, 它是描述 MIME 的 5 篇 RFC 文档的第一篇. 文档介绍的概念包括
           媒体类型及其子类型, 并推荐了一种表示这些类型的语法. 如今, MIME 媒体
           类型—或 <quote>MIME 类型</quote>—被广泛地应用在邮件程序,
@@ -3426,7 +3432,7 @@
       <para>比如说, Subversion 提供的一项特性是在更新工作副本时, 支持基于行
         的文件内容合并, 但是二进制文件没有 <quote>行</quote> 的概念, 于是,
         如果文件的 <literal>svn:mime-type</literal> 属性被设置成非文本 MIME
-        类型 (非文本的 MIME 类型通常以 <literal>text/</literal> 开始, 但是也有
+        类型 (非文本的 MIME 类型通常不以 <literal>text/</literal> 开始, 但是也有
         例外), Subversion 就不会对文件执行合并操作. 作为替代, 如果被更新的二
         进制文件含有本地修改, 那文件就不会被更新, Subversion 会另外创建两个
         新的文件, 其中一个的扩展名是 <filename>.oldrev</filename>, 对应文件的
@@ -3482,7 +3488,7 @@
             svn:eol-style</literal>. 如果命令的目标是单一的文件, 那么就很
           容易看出来—<command>svn propset</command> 会报错退出, 但是,
           如果用户递归地执行属性设置命令, 可能就没那么明显了: 如果 Subversion
-          觉得某个文件不适合设置给定的属性, 它就会悄无声息地跳过这个文件.
+          觉得某个文件不适合设置给定的属性, 它就会悄无声息地跳过该文件.
         </para>
       </warning>
 
@@ -3506,8 +3512,8 @@
     -->
       <para>另外, 如果文件设置了属性 <literal>svn:mime-type</literal>, 响应
         GET 请求时, Subversion Apache 模块将会使用属性的值填充 HTTP 头部的
-        <literal>Content-type</literal>. 如果用户使用浏览器查看仓库的内容, 这
-        可以提示浏览器应该如何显示文件.</para>
+        <literal>Content-type</literal> 字段. 如果用户使用浏览器查看仓库的内容,
+        这可以提示浏览器应该如何显示文件.</para>
 
     </sect2>
   
@@ -3532,7 +3538,7 @@
         property is set should be enabled, and Subversion honors that
         request when populating working copies with such files.</para>
     -->
-      <para>在很多操作系统里, 一个文件是否可以补执行取决于该文件是否被设置了
+      <para>在很多操作系统里, 一个文件是否可以执行取决于该文件是否设置了
         可执行权限位. 该位默认是不开启的, 如果用户需要可执行权限, 必须显式地
         开启它. 但是记住应该为哪些检出的文件设置可执行位是一件很麻烦的事情,
         所以 Subversion 提供了属性 <literal>svn:executable</literal>, 如果文件
@@ -3577,7 +3583,7 @@
     -->
       <para>除非属性 <literal>svn:mime-type</literal> 进行了额外说明, 否则
         Subversion 总是假设文件的内容是人类可读的. 一般来说, Subversion 会根据
-        自己的知识来判断是否可以对文件进行内容上的差异比较, 如果不能的话, 就
+        自己的知识来判断是否可以对文件进行基于上下文的差异比较, 如果不能的话, 就
         按字节比较差异.</para>
       
       <para>
@@ -3642,7 +3648,7 @@
     -->
       <para>如果用户要在不同的操作系统之间分享文件, 如此敏感的 EOL 标记可不
         是什么好事. 比如说有一个源代码文件, 开发人员可能会同时在 Unix 和
-        Windows 系统中编辑它, 如果所有开发人员所使用的工具都能保留文件原来的行
+        Windows 系统中编辑它, 如果所有开发人员使用的工具都能保留文件原来的行
         结束风格, 那就不会产生什么问题.</para>
 
     <!--
@@ -3823,7 +3829,7 @@
       用户产生一定的困扰. 比如说, 命令 <command>svn add</command> 和
       <command>svn import</command> 默认会递归地执行, 命令并不知道目录中的哪些
       文件是用户想要的, 哪些是不想要的. 命令 <command>svn status</command>
-      默认会报告工作副本里的每一个项目的状态—包括未被版本控制的文件与目
+      默认报告工作副本里的每一个项目的状态—包括未被版本控制的文件与目
       录—如果未被版本控制的项目很多, 命令的输出就比较扰人.</para>
 
     <para>
@@ -3838,7 +3844,7 @@
         <primary>shell wildcard patterns</primary>
         <see>file patterns</see>
       </indexterm>
-      于是, Subversion 提供几种方式用来告诉 Subversion 哪些文件是可以忽略的.
+      于是, Subversion 提供了几种方式告诉 Subversion 哪些文件是可以忽略的.
       其中一种要用到 Subversion 的运行时配置系统 (见
       <xref linkend="svn.advanced.confarea"/>), 会受到配置影响的通常是在特定
       计算机上执行的 Subversion 操作, 或计算机上的某些特定用户. 另外两种方式
@@ -3882,7 +3888,7 @@
       </literal>—选项的值是空白符分隔的文件名模式集. 如果文件的名字
       与集合中的某个模式匹配, 那这个文件对 Subversion 来说相当于是不存在的,
       命令 <command>svn add</command>, <command>svn import</command> 和
-      <command>svn status</command> 也就会忽略它. 如果工作副本里有永远不会
+      <command>svn status</command> 就会忽略它. 如果工作副本里有永远不会
       被版本控制的文件 (比如 Emacs 的备份文件 <literal>*~</literal> 和
       <literal>.*~</literal>), 这个特性就会非常有用.</para>
 
@@ -4095,7 +4101,7 @@
         文件和目录被版本控制了, 忽略文件名模式就不会对它们产生影响. 也就是说,
         不要以为某个被版本控制的文件名符合忽略模式, 在你提交时, Subversion 就
         会忽略它的修改—Subversion <emphasis>总是</emphasis> 会注意到所有
-        的被版本控制的对象.</para>
+        被版本控制的对象.</para>
     </note>
 
     <sidebar>
@@ -4117,7 +4123,7 @@
         像 CVS <filename>.cvsignore</filename> 文件. 实际上, 如果用户想从 CVS
         的工作副本迁移到 Subversion 的工作副本中, 为了迁移忽略模式, 可以把
         <filename>.cvsignore</filename> 作为命令 <command>svn propset</command>
-        的输出:</para>
+        的输入:</para>
    
       <informalexample>
         <screen>
@@ -4211,7 +4217,7 @@
     -->
     <para>在上面的例子里, 用户已经修改了 <filename>button.c</filename>, 但是
       工作副本里还有一些未被版本控制的项目: 刚从源代码编译出的 <filename>
-        calculator</filename> 程序, 一个名为 <filename>data.c</filename> 的
+        calculator</filename> 程序, 一个叫做 <filename>data.c</filename> 的
       源代码文件, 还有几个用于调试的日志文件. 假设用户已经知道编译系统总是会
       输出一个目标文件 <filename>calculator</filename><footnote><para>这是否就
           是编译系统的全部功能?</para></footnote>, 而且测试程序总是会留下一些
@@ -4237,7 +4243,7 @@
       <command>svn status</command> output:</para>
     -->
     <para>属性设置完毕后, 目录 <filename>calc</filename> 包含了未被提交的本地
-      修改. 注意 <command>svn status</command> 的输出发生了什么变化:</para>
+      修改. 注意看 <command>svn status</command> 的输出发生了什么变化:</para>
 
     <informalexample>
       <screen>
@@ -4346,14 +4352,14 @@
       present.</para>
     -->
     <para>之前提过, <command>svn add</command> 和 <command>svn import</command>
-      也会用到忽略模式列表, 这两个操作都会要求 Subversion 开始管理文件与目录
-      的集合. 在递归的添加操作或导入操作中, Subversion 不会要求用户去选择目录
+      也会用到忽略模式列表, 这两个操作都会要求 Subversion 开始管理文件与目录.
+      在递归的添加操作或导入操作中, Subversion 不会要求用户去选择目录
       中的哪些文件应该被版本控制, 而是使用忽略模式—包括全局的, 每个目录
       与继承的—来决定哪些文件应该被忽略. 同样, 用户也可以用选项
       <option>--no-ignore</option> 告诉 Subversion 不会忽略任意一个文件.</para>
 
     <tip>
-      <!-- TODO -->
+      <!--
       <para>Even if <literal>svn:ignore</literal> or
         <literal>svn:global-ignores</literal> is set, you may run
         into problems if you use shell wildcards in a command.  Shell
@@ -4363,21 +4369,22 @@
         running <userinput>svn <replaceable>SUBCOMMAND</replaceable>
         file1 file2 file3 …</userinput>.  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 <userinput>svn add --force
+        to passing the <option>- -no-ignore</option> option.  So
+        instead of using a wildcard, use <userinput>svn add - -force
         .</userinput> 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
+        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> and
         <literal>svn:global-ignores</literal> properties and the
         <literal>global-ignores</literal> runtime configuration
-        variable.  Be sure to also provide the <option>--depth
+        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>
+      -->
       <para>即使已经设置了属性 <literal>svn:ignore</literal> 和 <literal>
           svn:global-ignores</literal>, 使用 shell 的通配符可能还是会产生一些
         问题. 在 Subversion 接收到参数之前, shell 会把通配符扩展成显式的文件
@@ -4385,7 +4392,14 @@
             </userinput> 相当于执行 <userinput>svn <replaceable>SUBCOMMAND
           </replaceable> file1 file2 file3 …</userinput>. 如果是
           <command>svn add</command>, 效果就像是给命令带上选项 <option>
-            --no-ignore</option>.</para>
+            --no-ignore</option>, 所以最好使用 <userinput>svn add --force .
+          </userinput> 完成文件的批量添加. 显式地指定目标文件确保了当前目录不
+          会因为已经处于版本控制之下而被忽略, 选项 <option>--force</option>
+          使得 Subversion 在遍历目录, 添加未被版本控制的文件时, 仍然遵循属性
+          <literal>svn:ignore</literal>, <literal>svn:global-ignores</literal>
+          和运行时配置选项 <literal>global-ignores</literal> 的值. 如果你不想
+          递归地添加所有项目, 别忘了给命令 <command>svn add</command> 加上选项
+          <option>--depth files</option>.</para>
 
       </tip>
 




More information about the svnbook-dev mailing list