This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

运行时配置区域

Subversion 为用户提供了许多可配置的行为, 有很多选项, 用户希望它们 能被应用到所有的 Subversion 操作中. 为了方便用户, Subversion 提供了配置 文件, 这些配置文件被单独地放在了 Subversion 配置区域, 这就避免了用户每 次都要在命令行上指定参数.

Subversion 运行时配置区域 ( runtime configuration area) 是一个由选项名和 选项值组成的双层体系, 第一层是一个目录, 目录里包含了许多配置文件,每 个配置文件是 INI 格式的文本文件, 文件里的 “节” 是双层 体系的第二层. 用户可以使用任意一个文本编辑器 (例如 Emacs 或 vi) 编辑 这些配置文件, 文件里的配置指令将被客户端命令行工具读取, 用来指定客户 端命令行工具的行为.

配置区域的布局

客户端命令行工具 svn 首次运行时, 它将创建一个 每用户配置区域. 在类 Unix 系统上, 每用户配置区域是一个在用户家目录下 的 .subversion 目录. 在 Win32 系统上, 配置区域是 一个名为 Subversion 的文件夹, 通常放在用户配置 文件目录 (通常是一个隐藏目录) 的 Application Data 区域内, 而 Application Data 的确切位置在每 个 Win32 系统上可能都不太一样, 它的确切位置由系统注册表 (Windows Registry) 决定 [70]. 在后面的内容里, 我们将用 .subversion 指代 Subversion 的每用户 配置区域.

除了每用户配置区域, Subversion 还会考虑全局配置区域, 全局配置区域 允许管理员为所有用户设定一个默认配置. 注意, 每用户配置区域的设置会 覆盖全局配置区域的设置, 而 svn 的命令行参数则会 覆盖每用户配置区域的设置. 对于类 Unix 系统, 全局配置区域在 /etc/subversion; 对于 Windows 系统, 全局配置区域 在 Application Data (同样, 它的确切位置由系统注 册表决定) 的 Subversion 目录内. 与每用户配置区域不 同的是 svn 不会在启动时尝试创建全局配置区域.

每用户配置区域包含了三个文件—两个配置文件 (config 和 servers) 和 一个 README.txt, README.txt 介绍了 INI 格式的语法. 每用户配置区域被创建时, 配置文件包含了 Subversion 所支持的选项的默认值, 大多数内容都被分组注释, 注释描述了 选项值将会如何影响 Subversion 的行为. 为了修改配置, 用户只需要用文本 编辑器打开配置文件, 然后修改选项的值. 如果你想恢复每用户配置区域的 默认配置, 只需要删除 (或移动) 每用户配置区域的目录, 然后随便执行一 个无害的 svn 命令, 例如 svn --version, 此时就会重新生成包含了默认配置 的每用户配置区域.

Subversion 还允许用户通过命令行选项 --config-option 修改个别的配置选项, 如果用户想要临时修改配置, 那么这个选项就会很有用. 关于 --config-option 的详细用法, 见 svn 选项.

每用户配置区域还包含了认证数据的缓存. 目录 auth 内含有多个子目录, 这些子目录包含了 Subversion 支持的不同认证方式所需的缓存信息. 目录 auth 的权限配置是仅允许用户进行访问.

配置与 Windows 系统注册表

除了通常的基于 INI 格式的配置文件, 在 Windows 平台上, Subversion 还 可以使用系统注册表存放配置选项. 选项的名字和值与 INI 文件相同, “文件/节” 的层次结构仍然保留了下来, 不过是以另一种形式 呈现—文件与节变成了注册表键树的层次.

Subversion 在注册表的 HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion 里搜索全局配置, 例如选项 global-ignores 在文件 config 里的位置是在 [miscellany] 节内, 对应的注册表位置是 HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Config\Miscellany\global-ignores. 每用户的配置在 HKEY_CURRENT_USER\Software\Tigris.org\Subversion.

基于注册表的配置在基于文件的配置 之前 被读取, 因此配置文件将会覆盖注册表的配置. 换句话说, 在 Windows 系统中, Subversion 会在下面这些位置搜索配置信息, 编号小的位置的配置将会覆盖 编号大的配置:

  1. 命令行选项

  2. 每用户的 INI 文件

  3. 每用户的系统注册表

  4. 全局的 INI 文件

  5. 全局的系统注册表

Windows 系统注册表实际上不支持用于注释的记号, 但 Subversion 自己会忽略所有名字以井号 (#) 开始的键, 在效果上 等价于把选项注释掉, 这就避免了用户仅仅为了删除选项而把对应的键从注册 表中删除, 也简化了恢复选项的操作.

客户端命令行工具 svn 从来不会修改 Windows 系统注册表, 也不会在首次运行时在注册表内创建默认配置, 用户需要自己 使用 Windows 工具 REGEDIT 创建所需的键. 另外, 用户 也可以自己编写一个 .reg 文件 (例如 例 7.1 “系统注册表项文件 (.reg) 的一个示例” 所展示的 那样), 然后在文件浏览器内双击该文件的图标, 这将导致文件内的数据被合并 到系统注册表内.

例 7.1. 系统注册表项文件 (.reg) 的一个示例

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\groups]

[HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\global]
"#http-auth-types"="basic;digest;negotiate"
"#http-compression"="yes"
"#http-library"=""
"#http-proxy-exceptions"=""
"#http-proxy-host"=""
"#http-proxy-password"=""
"#http-proxy-port"=""
"#http-proxy-username"=""
"#http-timeout"="0"
"#neon-debug-mask"=""
"#ssl-authority-files"=""
"#ssl-client-cert-file"=""
"#ssl-client-cert-password"=""
"#ssl-pkcs11-provider"=""
"#ssl-trust-default-ca"=""
"#store-auth-creds"="yes"
"#store-passwords"="yes"
"#store-plaintext-passwords"="ask"
"#store-ssl-client-cert-pp"="yes"
"#store-ssl-client-cert-pp-plaintext"="ask"
"#username"=""

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auth]
"#password-stores"="windows-cryptoapi"

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\helpers]
"#diff-cmd"=""
"#diff-extensions"="-u"
"#diff3-cmd"=""
"#diff3-has-program-arg"=""
"#editor-cmd"="notepad"
"#merge-tool-cmd"=""

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\tunnels]

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
"#enable-auto-props"="no"
"#global-ignores"="*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store"
"#interactive-conflicts"="yes"
"#log-encoding"=""
"#mime-types-file"=""
"#no-unlock"="no"
"#preserved-conflict-file-exts"="doc ppt xls od?"
"#use-commit-times"="no"

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auto-props]

例 7.1 “系统注册表项文件 (.reg) 的一个示例” 展示了一个 .reg 文件, 文件内包含了最常用到的配置 选项以及它们的默认值. 注意, 文件同时包含了全局配置 (与网络代理相关的 选项) 与每用户配置 (例如编辑器和密码缓存等), 而且所有的选项都被注释了, 为了修改配置, 你只需要删除选项名前的井号 (#), 然后 再修改选项值.

运行时配置选项

本节我们将介绍 Subversion 目前支持的运行时配置选项.

通用配置选项

文件 config 包含了与网络无关的运行时配置 选项, 到目前为止用到的配置选项并不多, 为了方便今后扩展, 这些选项 被分组到了不同的节内.

[auth] 节包含了和仓库认证与授权有关的配置, 它包含的配置选项有:

password-stores

选项值是由逗号分隔的列表, 列表指出了当 Subversion 存放 和检索缓存的认证证书时, 应该使用操作系统提供的哪些方法, 以及 这些方法的优先级. 默认值是 gnome-keyring, kwallet, keychain, gpg-agent, windows-crypto-api, 分别表示 GNOME Keyring, KDE Wallet, Mac OS Keychain, GnuPG Agent 和 Microsoft Windows 密码 API. 如果列表中出现了操作系统不支持 的方法, 该方法将被忽略.

store-passwords

该选项已经被 config 弃用, 它现在 在文件 servers 内, 作为一个每服务器配置项, 见 “每服务器配置”一节.

store-auth-creds

该选项已经被 config 弃用, 它现在 在文件 servers 内, 作为一个每服务器配置项, 见 “每服务器配置”一节.

[helpers] 节控制 Subversion 所使用的外部 程序, 它包含的配置选项有:

diff-cmd

指定差异比较工具的绝对路径, Subversion 在生成 “差异” 输出时 (例如执行命令 svn diff) 将会用到该工具. 默认情况下, Subversion 使用的是自己内部的差异比较库函数来生成差异输出—设置该 选项将导致 Subversion 转而使用外部差异比较工具. 关于如何使用 外部差异比较工具的更多信息, 见 “使用外部差异比较与合并工具”一节.

diff-extensions

就像命令行选项 --extensions (-x), 该选项向差异比较引擎 (内部的或外部的) 传递额外的参数. 选项的有效值与 Subversion 所使用的差异比较 引擎有关, 更多的细节见 svn help diff 的输出. 该选项的默认值是 -u.

diff3-cmd

该选项指定三路差异比较工具的绝对路径. 当工作副本从服务器 接收更新时, Subversion 将使用该工具把服务器上的更新合并到本地. 默认情况下 Subversion 使用的是自己内部的差异比较库函数来合并 更新—设置该选项将导致 Subversion 转而使用外部工具来完成 合并. 关于如何使用三路差异比较工具的更多信息, 见 “使用外部差异比较与合并工具”一节.

diff3-has-program-arg

如果由选项 diff3-cmd 指定的程序支持 命令行参数 --diff-program, 那么就应该把 diff3-has-program-arg 设置成 true.

editor-cmd

指定文本编辑器程序. 当 Subversion 向用户请求输入文本, 或者交互式地解决冲突时将会用到该程序. 关于 Subversion 使用 外部编辑器的更多信息, 见 “使用外部编辑器”一节.

merge-tool-cmd

指定一个合并工具, 用于 Subversion 执行三路合并操作. 关于这种工具的更多信息, 见 “使用外部差异比较与合并工具”一节.

[tunnels] 节允许用户定义新的隧道方案, 用 于 svnserve 和 svn:// 的 客户端连接, 更多的细节见 “SSH 隧道”一节.

[miscellany] 节则包含了不属于其他地方的 所有选项, 在 [miscellany] 里, 你可以找到:

enable-auto-props

指示 Subversion 为新增和导入的文件自动设置属性. 选项的默认 值是 no, 将其设置成 yes 将开启自动属性设置. 配置文件内的 [auto-props] 节用于指定哪些文件应该设置什么 样的属性.

global-ignores

执行命令 svn status 时, 除了被版本控制 的文件外, Subversion 同时还会列出未被版本控制的文件, 但是这些 文件的名字前会出现一个 ? 字符 (见 “查看修改的整体概述”一节). 列出这些未被版本 控制的项目有时候会让人感到讨厌—例如编译过程中生成的目标 文件就没必要列出来. 选项 global-ignores 包含 了由空白字符分隔的文本表达式列表, 如果某个文件的名字与这些表达式 中的一个或多个相匹配, svn status 就不会显示 这个文件名, 除非它是被版本控制的文件. 选项的默认值是 *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store.

和 svn status 一样, 命令 svn add 和 svn import 也会忽略与 global-ignores 匹配的文件. 为了显式地表示 不想忽略某个文件, 可以在执行这三个命令时, 显式地指定文件名, 或使用命令行参数 --no-ignore.

关于如何更加精细地忽略文件, 见 “忽略未被版本控制的项”一节.

interactive-conflicts

指示 Subversion 是否应该尝试交互地解决冲突. 如果它的值是 yes (默认值), 在冲突发生时, Subversion 将按照 “解决冲突”一节 介绍的方式, 询问用户如何处理冲突; 否则的话, Subversion 只会给文件设置冲突 标记, 然后继续往下操作, 从而推迟解决冲突.

log-encoding

该选项用于设置日志消息的默认字符编码, 它是命令行参数 --encoding (见 svn 选项) 的等效选项. Subversion 仓库 使用 UTF-8 编码存放日志消息, 并且假设用户使用的是操作系统 的默认编码来编写日志消息, 如果你不是用的操作系统的默认编码 来编写日志消息的话, 那你就应该把字符编码的名字写到 log-encoding 里.

mime-types-file

该选项在 Subversion 1.5 引入, 用于指定一个 MIME 类型映射 文件, 例如由 Apache HTTP 服务器提供的 mime.types. Subversion 使用 MIME 类型映射 文件为新增或导入的文件设置 MIME 类型. 关于 Subversion 如何 检测和使用文件内容类型的更多信息, 见 “自动属性设置”一节 和 “文件内容类型”一节.

no-unlock

这个选项和 svn commit 命令行选项 --no-unlock 相对应, 命令行选项 --no-unlock 告诉 Subversion 在提交修改后不 要释放文件上的锁. 如果把 no-unlock 设置 成 yes, Subversion 就不会自动释放锁, 为 了解锁, 用户必须显式地执行 svn unlock. 默认值是 no.

preserved-conflict-file-exts

选项的值是由空格分隔的文件扩展名列表, 当 Subversion 生成 冲突文件名时必须保留这些扩展名. 该选项在 Subversion 1.5 引入, 默认值为空.

当 Subversion 检测到有冲突发生时, 会把冲突的解决交由用户 处理. 为了帮助解决冲突, Subversion 把互相冲突的两个版本的文件 保存到工作副本里, 默认情况下, 这些文件的名字是原来的文件名 再加上一个特定的扩展名, 例如 .mine 或 .REV (REV 表示一个版本号). 这种命名方式 可能产生的一个问题是在某些操作系统上, 文件扩展名决定了用于打开 它的默认应用程序, 为文件名添加一个特定的扩展名可能会导致无法 使用正确的应用程序轻易地打开文件. 比如说文件 ReleaseNotes.pdf 有冲突发生, 冲突文件可 能被命名成 ReleaseNotes.pdf.mine 和 ReleaseNotes.pdf.r4231, 操作系统使用 Adobe Acrobat Reader 打开扩展名为 .pdf 的文件, 但是很可能没有默认程序能够打开扩展名为 .r4231 的文件.

配置选项 preserved-conflict-file-exts 可以帮助用户解决这一问题. 对于扩展名和选项相匹配的文件, Subversion 像往常一样在冲突文件的名字末尾加上特定的扩展名后, 会再次添加文件原来的扩展名. 对于前面的例子, 假设 preserved-conflict-file-exts 的值含有 pdf, 那么为 ReleaseNotes.pdf 所生成的冲突文件将 被命名成 ReleaseNotes.pdf.mine.pdf 和 ReleaseNotes.pdf.r4231.pdf. 因为冲突文件 的扩展名仍然是 .pdf, 因此在打开它们时 会用到正确的默认应用程序.

use-commit-times

通常情况下, 工作副本里的文件包含了能够反映文件最后一次是 在什么时候被进程—例如文本编辑器或 svn 命令—修改了的时间戳. 这个时间戳对于软件开发非常有用, 因 为软件构建系统通过查看时间戳来决定是否需要重新编译某个文件.

然而在其他场景下, 如果这个时间戳反映的是工作副本里的文件 最后一次在仓库里被修改的时间—这在某些情况下会非常方便. 命令 svn export 总是把它所生成的目录树的时间 戳设置成 “最后一次提交的时间”. 如果把 use-commit-times 设置成 yes, 那么命令 svn checkout, svn update, svn switch 和 svn revert 也会把它们所修改的文件的时间戳设置成最后一次提交的时间.

[auto-props] 节控制着 Subversion 客户端如何 为新增和导入的文件自动设置属性. 它包含了任意数量的键值对, 键值对的 格式是 PATTERN = PROPNAME=VALUE[;PROPNAME=VALUE ...], 其中 PATTERN 是一个文件 名模式, 用于匹配一个或多个文件名, 剩下的部分是分号分隔的属性赋值语句. (如果在属性名或属性值中需要用到分号, 就连着写两次分号来转义.)

$ cat ~/.subversion/config
…
[auto-props]
*.c = svn:eol-style=native
*.html = svn:eol-style=native;svn:mime-type=text/html;; charset=UTF8
*.sh = svn:eol-style=native;svn:executable
…
$ cd projects/myproject
$ svn status
?       www/index.html
$ svn add www/index.html
A         www/index.html
$ svn diff www/index.html
…

Property changes on: www/index.html
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/html; charset=UTF8
Added: svn:eol-style
## -0,0 +1 ##
+native
$

如果一个文件匹配了多个模式, 它就会被设置上多个属性, 但 Subversion 无法保证属性会按照出现在配置文件里的顺序设置到文件上, 所以说用户不能 期望用一个属性设置去覆盖另一个属性设置. 用户可以在文件 config 里看到自动属性设置的几个示例. 如果你希望 开启自动属性设置, 别忘了把 [miscellany] 节的 enable-auto-props 选项设置成 yes.

Subversion 1.8 增加了一个新的 [working-copy] 节, 用于配置工作副本, 它包含的选项有:

exclusive-locking-clients

开启工作副本的 SQLite 互斥锁, 它可用于提升位于网络磁盘上 的工作副本的性能. 如果把该选项设置成 svn, Subversion 命令行客户端将使用互斥锁, 这会降低加锁的开销, 但 并不是说同一时刻只能允许一个客户端访问工作副本, 如果工作副本 已经被锁定了, 那么试图访问工作副本的其他客户端会阻塞 10 秒钟, 然后返回一个错误. 在大多数情况下, 人们更喜欢用共享锁, 但是如果 工作副本是在网络磁盘 (而不是本地磁盘) 上, 那么锁的开销就更值得 关注. 对于放在网络磁盘上的大型工作副本, 使用互斥锁会得到很大的 性能提升, 在某些情况下甚至能达到两三倍的提升. 该选项在 Subversion 1.8 引入.

exclusive-locking

如果把该选项设置成 true, 将为所有 Subversion 1.8 客户端开启工作副本的互斥锁, 而某些客户端可能 会无法正常工作. 选项的默认值是 false, 在 Subversion 1.8 引入.

每服务器配置

文件 server 包含了与网络层有关的配置选项. 文件内有两个特殊的节—[groups] 和 [global]. [groups] 节本质上 是一个交叉引用表. 节内选项的名字是文件内其他节的名字, 选项的值是 文本表达式 (globs) —可能包含通配符的文本. 向服务器发送请求时, Subversion 将会把 服务器的主机名和这些文本表达式进行匹配.

[groups]
beanie-babies = *.red-bean.com
collabnet = svn.collab.net

[beanie-babies]
…

[collabnet]
…

如果 Subversion 需要访问网络, 它将尝试把服务器的主机名和 [groups] 节中的选项进行匹配. 如果匹配成功, Subversion 就会在 servers 里查找以选项名命名的 节, 然后从该节读取与这个服务器有关的配置.

如果服务器的主机名不与 [groups] 内的任意一 个文本表达式相匹配, Subversion 就从 [global] 读取 服务器配置. [global] 所包含的选项与其他节完全 相同 (当然, 除了 [groups] 节), 这些选项有:

http-auth-types

选项包含了客户端支持的 HTTP 认证类型, 类型之间用分号分开. 有效的认证类型包括 basic, digest 和 negotiate, 默认行为是允许所有的认证类型. 举个例子, 如果客户端要求不能以 明文方式传输认证证书, 可以把该选项设置成 digest;negotiate—忽略 basic 类型. (注意, 这种设置只对基于 Neon 的 HTTP 模块才有效.)

http-compression

指定是否对发往 DAV 已就绪的服务器的网络数据进行压缩, 默认值是 yes (但只有在网络层支持压缩的 情况下才会真正对数据进行压缩). 把选项设置成 no 将禁止压缩, 例如当我们需要对网络传输 进行调试时.

http-library

该选项允许用户指定他们更愿意使用哪种 WebDAV 访问模块 (通常是每服务器配置). 在 1.8 版之前, Subversion 提供了两种 WebDAV 访问模块: 较老的 libsvn_ra_neon (对应的选项值是 neon) 和较新的 libsvn_ra_serf (对应的选项值是 serf). 从 1.8 开始, 虽然 Subversion 只支持 libsvn_ra_serf, 但这个配置选项还是保留了 下来, 因为运行时配置区域无法知晓 Subversion 的版本. 如果用户 的系统中安装了多种 Subversion 版本, 在使用旧版客户端访问服务 器时, 他们可能仍然希望为 http-library 设置上 libsvn_ra_neon.

http-proxy-exceptions

选项值是由逗号分隔的列表, 列表的元素是仓库服务器的主机 名模式, 符合模式的服务器将不会使用代理, 而是直接访问. 模式 的写法和 Unix Shell 的文件名模式写法相同.

http-proxy-host

指定基于 HTTP 的 Subversion 请求必须经过的代理服务器的 主机名. 默认值是空, 这意味着 Subversion 不会尝试把 HTTP 请 求路由给代理服务器, 而是直接发给目标服务器.

http-proxy-password

指定提供给代理服务器的密码, 默认值是空.

http-proxy-port

指定代理服务器的端口号, 默认值是空.

http-proxy-username

指定提供给代理服务器的用户名, 默认值是空.

http-timeout

指定服务器响应的等待时间, 以秒为单位. 如果用户发现低速 的网络常常导致 Subversion 命令超时, 那你应该把 http-timeout 调大. Subversion 1.8 (或更 老的, 基于 Serf 的版本) 用 0 表示不设置 超时.

neon-debug-mask

选项值是一个整数掩码, Neon HTTP 库函数将根据这个掩码来 决定打印哪些调试信息, 默认值是 0, 这会 禁止打印所有的调试信息. 在 1.8 之前的版本, 大多数 Subversion 客户端都使用 Neon (借助 libsvn_ra_neon 仓库访问模块) 完成客户端和服务器之间的 WebDAV/HTTP 通信. 但从 Subversion 1.8 开始不再支持 libsvn_ra_neon, 所以这个选项在新版 Subversion 里被淘汰了.

ssl-authority-files

选项值是分号分隔的路径列表, 其中每个路径都指向一个文件, 该文件包含了认证机构的证书, 当 Subversion 客户端使用 HTTPS 访问仓库时将信任这些证书.

ssl-client-cert-file

如果一个主机 (或多个主机) 要求提供一个 SSL 客户端证书, 用户通常会收到一个要求输入证书路径的提示信息. 把该选项设置 成证书的路径, Subversion 就可以自动搜索到证书, 而不会再提示 用户输入证书路径. 并不存在一个存在证书的标准位置, Subversion 会从用户指定的任意位置读取证书.

ssl-client-cert-password

如果用户的 SSL 客户端证书被一个密码加密, 每当 Subversion 使用证书都会提示用户输入密码. 如果你觉得这有点烦人, 而且你也 不介意把密码写到 servers 文件里, 那就 把该选项设置成证书的密码, 这样你就不会再收到要求输入证书密码的 提示.

ssl-pkcs11-provider

选项值是 PKCS#11 提供商的名字, 它刻画了 SSL 客户端的证书 (如果服务器要求提供证书的话). 这个设置只对 Subversion 基于 Neon 的 HTTP 模块才有效, 而这种模块在 Subversion 1.8 中已经被移除了.

ssl-trust-default-ca

如果用户希望 Subversion 自动信任 OpenSSL 附带的默认证书 的话, 就把它设置成 yes.

store-auth-creds

该选项基于上和 store-passwords 相同, 唯一的不同点是它用于开启或禁止 所有的 认证信息缓存, 包括用户名, 密码, 服务器证书, 以及其他能被缓存 的凭证.

store-passwords

指定 Subversion 是否应该缓存用户密码, 这个密码是服务器 要求认证时用户输入的. 默认值是 yes, 如果 设置成 no 将禁止缓存密码. 用户可以使用 svn 的命令行选项 --no-auth-cache 覆盖掉 store-passwords 的设置 (当然, 这种覆盖只 对支持 --no-auth-cache 的子命令才有意义). 关于密码缓存的更多信息, 见 “缓存证书”一节. 注意, 无论是否设置 store-passwords, Subversion 都不会以明文方式存放密码, 除非 store-plaintext-passwords 被设置成 yes.

store-plaintext-passwords

该选项只在类 Unix 系统上才需要注意. 如果密码只能以明文方式 缓存在磁盘上 (具体的位置是 ~/.subversion/auth/), 此时 Subversion 将 根据该选项决定接下来该怎么做. 如果把它设置成 yes 或 no, 将分别允许 或禁止以明文方式缓存密码. 默认值是 ask, 于是 Subversion 每当遇到一个 新的 密码时, 都会询问用户是否以明文方式把它缓存到 ~/.subversion/auth/.

store-ssl-client-cert-pp

该选项用于设置 Subversion 是否应该缓存用户输入的 SSL 客户端证书密码, 默认值是 yes, 设置成 no 将禁止缓存.

store-ssl-client-cert-pp-plaintext

当 Subversion 尝试缓存 SSL 客户端证书密码时, 该选项用于 控制是否允许以明文方式存放到磁盘上. 默认值是 ask, 使得 Subversion 每次遇到一个 新的 SSL 客户端证书密码时都会向用户询问 是否以明文方式缓存到 ~/.subversion/auth/, 把选项设置成 yes 或 no 将允许或禁止明文缓存, Subversion 也不会再询问用户.



[70] 环境变量 APPDATA 的 值指出了 Application Data 区域的路径, 所以说 用户总是可以用 %APPDATA%\Subversion 引用 Subversion 每用户配置区域的路径.