关于svn log,我之前的工作方式一般都是这样:

  1. 执行 commit 操作时,不限平台。一般提交代码,会在 Linux 工作环境下用 svn commit 命令,提交文档则是在 Windows 下用 TortoiseSVN 客户端提交。这主要是本着方便的原则,因为代码一般是在 Linux 下编辑和测试的,文档是在 Windows 下编辑的。
  2. 执行 log 操作时,在 Windows 下。使用 TortoiseSVN 查看版本日志以及各版本提交内容变化实在太方便了。

最近由于办公环境网络的变化,在 Windows 下无法用 TortoiseSVN 连接到仓库了,只能在 Linux 下进行。这样就无法在 Windows 下看版本日志了,好在也就只是一个 svn log 命令,简单明了。但使用中还是有一个要注意的地方。

在使用 TortoiseSVN 客户端查看日志时,即使当前工作目录版本是某个历史版本,也能看到最新的版本记录情况。

而直接使用 svn log 命令时,默认只显示当前工作目录的 log。

假设当前工作目录已经是最新了,在此基础上,对一个文件 A 提交了 commit,此时在当前目录下执行 svn log -l 1 无法看到这次提交的 log,如果想要看到,必须先执行 svn update,即使当前的工作目录下内容已经是最新的了;而执行svn log A -l 1则可以。

原因在于 svn 对于文件及其父目录是分开管理版本号的。更新了一个文件,该文件的版本号是更新了,但该文件所在的目录的版本号并没有更新。