本文档旨在描述 Subversion 1.6.x 系列。如果您运行的是不同版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/,并查阅与您的 Subversion 版本相匹配的文档版本。
Apache httpd 和 svnserve Subversion 服务器都支持对 Subversion 操作进行高级日志记录。当然,配置每个服务器选项以提供此级别的日志记录的方式不同,但来自每个选项的输出旨在符合统一的语法。
要在 svnserve 中启用高级日志记录,您只需在启动服务器时使用 --log-file
命令行选项,并将选项的值传递给 svnserve 应写入其日志输出的文件。
$ svnserve -d -r /path/to/repositories --log-file /var/log/svn.log
在 Apache 中启用相同的功能会更复杂一些,但本质上是 Apache 标准日志输出配置机制的扩展——有关详细信息,请参阅 名为“Apache 日志记录”的部分。
以下是 Subversion 的高级日志记录机制产生的 Subversion 操作日志消息的列表,后面列出了日志消息在日志输出中出现的示例。
checkout-or-export /path r62 depth=infinity
commit harry r100
diff /path r15:20 depth=infinity ignore-ancestry diff /path1@15 /path2@20 depth=infinity ignore-ancestry
get-dir /trunk r17 text
get-file /path r20 props
get-file-revs /path r12:15 include-merged-revisions
get-mergeinfo (/path1 /path2)
lock /path steal
log (/path1,/path2,/path3) r20:90 discover-changed-paths revprops=()
replay /path r19
change-rev-prop r50 propertyname
rev-proplist r34
status /path r62 depth=infinity
switch /pathA /pathB@50 depth=infinity
unlock /path break
update /path r17 send-copyfrom-args
为了方便希望对 Subversion 高级日志记录输出进行后处理的管理员(可能是出于报告或分析目的),Subversion 源代码分发提供了一个 Python 模块(位于 tools/server-side/svn_server_log_parse.py
),可用于解析 Subversion 的日志输出。