log: 显示一组版本和/或路径的日志消息。

用法:

  1. log [PATH][@REV]
  2. log URL[@REV] [PATH...]
  1. 输出与 PATH (默认值:“.”) 相对应 URL 的日志消息。如果指定了 REV 参数,则它将决定首先搜索 URL 的哪个版本,默认版本范围是 REV:1。如果没有指定 REV,则默认版本范围为 BASE:1,因为 HEAD 版本中可能不存在这个 URL

  2. 输出 URLPATH (默认值:“.”) 的日志消息。如果指定了 REV 参数,则它将决定首先搜索 URL 的哪个版本,默认的版本范围是 REV:1;否则,在 HEAD 版本中查找该 URL,默认版本范围是 HEAD:1

可以指定多个 “-c” 或 “-r” 选项 (但不能指定 “-c” 和 “-r” 选项的组合),并且可以混合使用正向和反向范围。

使用 -v 选项,还可以在每条日志消息中输出所有受影响的路径。每个修改的路径前面都有一个描述修改的符号:

如果一个添加或替换的路径是从其它地方复制的,则复制源路径和版本将显示在括号中。 如果一个文件或目录从一个路径移至另一个路径,则旧路径将被列为已删除, 而新路径将被列为从旧路径先前版本复制而来的。

使用 -q 选项,可不输出日志消息主体自身 (请注意,它与 -v 兼容)。

即使明确请求了该修订多个受影响的路径,每个日志消息也仅输出一次。默认情况下,日志沿着复制历史记录。使用 --stop-on-copy 选项可以禁用此行为,这对于确定分支点很有用。

选项 --depth 仅与选项 --diff 结合使用,将显示的差异范围限制为指定的深度。

如果使用了 --search 选项,则仅当提供的搜索模式与作者,日期,日志消息文本 (除非使用 --quiet 选项) 任一项匹配时,才会显示日志消息。或者如果还提供了 --verbose 选项,也显示修改的路径。

搜索模式可以包含 “GLOB 语法” 的通配符:

如果提供了多个搜索选项,只要匹配提供的任一搜索模式,就会显示日志消息。 如果使用了 --search-and 选项,该选项的参数将于其前面的 --search--search-and 相组合,只有匹配组合的搜索模式时,才会显示日志消息。如果将 --limit--search 结合使用,则 --limit 将限制所搜索日志消息的数量,而不是限制输出匹配日志消息的数量。

示例:

显示当前工作副本目录最新的 5 条日志消息,并显示每次提交中更改的路径:

svn log -l 5 -v

显示自版本 42bar.c 的日志:

svn log bar.c@42

显示对 foo.c 每次提交的日志消息和差异:

svn log --diff http://www.example.com/repo/project/foo.c

(由于上述命令使用完整的 URL,因此不需要工作副本。)

使用 URL 快捷方式 ^/ 显示目录 “/trunk” 的子项 foo.cbar.c 在版本 50 中的日志消息:

svn log ^/trunk@50 foo.c bar.c

显示在下一次执行 “svn update” 时对 foo.c 将传入的所有修改的日志消息:

svn log --r BASE:HEAD foo.c

显示创建 /branch/foo 的版本的日志消息:

svn log --stop-on-copy --limit 1 -r0:HEAD ^/branches/foo

如果在版本 22 中将 ^/trunk/foo.c 移至了 ^/trunk/bar.c,则 svn log -v 在其更改的路径列表中显示一个删除和复制,例如:

D /trunk/foo.c

A /trunk/bar.c (from /trunk/foo.c:21)

有效选项:  
-r [--revision] ARG : 指定版本 ARG (一些命令也接受 ARG1:ARG2 格式的版本范围),版本参数可以是如下之一:
  • NUMBER 版本号
  • '{' DATE '}' 在指定时间以后的版本
  • 'HEAD' 版本库中的最新版本
  • 'BASE' 工作副本的基准版本
  • 'COMMITTED' 最后提交的版本或基准版本之前的版本
  • 'PREV' 最后提交版本 COMMITTED 的前一版本
-c [--change] ARG : 版本 ARG (类似 -r ARG-1:ARG) 所作的修改:
  • 如果 ARG 是负数,类似于 -r ARG:ARG-1
  • 如果 ARG 的形式为 ARG1-ARG2,则类似于 -r ARG1:ARG2,其中包括 ARG1
-q [--quiet] : 不输出日志信息
-v [--verbose] : 也输出全部影响的路径项
-g [--use-merge-history] : 使用/显示合并历史记录中的其他信息
--targets ARG : 将文件 ARG 的内容作为附加参数
--stop-on-copy : 遍历历史时不要跨越复制
--incremental : 使用便于合并输出结果的方式进行输出
--xml : 输出为 XML 结果
-l [--limit] ARG : 输出日志项的最大数量
--with-all-revprops : 取回所有版本属性
--with-no-revprops : 不取回任何版本属性
--with-revprop ARG : 取回版本属性 ARG
--depth ARG : 限制输出深度为 ARG (empty, files, immediates, 或 infinity)
--diff : 生成差异格式
--diff-cmd ARG : 使用 ARG 作为比较命令
--internal-diff : 覆盖配置文件中指定的 diff-cmd 比较命令
-x [--extensions] ARG : 为外部比较、内部比较、或追溯命令指定比较选项,默认为 “-u”。 各个选项之间使用空白分隔。外部比较和追溯命令使用的选项:
  • -u, --unified: 显示 3 行一致的上下文
  • -b, --ignore-space-change: 忽略空白数量的改变
  • -w, --ignore-all-space: 忽略全部空白
  • --ignore-eol-style: 忽略行尾风格的改变
  • -U ARG, --context ARG: 显示 ARG 行上下文
  • -p, --show-c-function: 显示 C 函数名称
--search ARG : 使用 ARG 作为搜索模版 (Glob 语法,大小写和重音敏感,可能需要引号防止 shell 展开)
--search-and ARG : ARG 与先前的搜索模式相结合