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 不会在启动时尝试创建全局配置区域.

每用户配置区域包含了三个文件—两个配置文件 (configservers) 和 一个 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] 节允许用户定义新的隧道方案, 用 于 svnservesvn:// 的 客户端连接, 更多的细节见 “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 addsvn 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.mineReleaseNotes.pdf.r4231, 操作系统使用 Adobe Acrobat Reader 打开扩展名为 .pdf 的文件, 但是很可能没有默认程序能够打开扩展名为 .r4231 的文件.

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

use-commit-times

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

然而在其他场景下, 如果这个时间戳反映的是工作副本里的文件 最后一次在仓库里被修改的时间—这在某些情况下会非常方便. 命令 svn export 总是把它所生成的目录树的时间 戳设置成 最后一次提交的时间. 如果把 use-commit-times 设置成 yes, 那么命令 svn checkout, svn update, svn switchsvn 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, digestnegotiate, 默认行为是允许所有的认证类型. 举个例子, 如果客户端要求不能以 明文方式传输认证证书, 可以把该选项设置成 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 将 根据该选项决定接下来该怎么做. 如果把它设置成 yesno, 将分别允许 或禁止以明文方式缓存密码. 默认值是 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/, 把选项设置成 yesno 将允许或禁止明文缓存, Subversion 也不会再询问用户.



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