版本日志对话框

对于每次进行修改和提交,你应该有针对性地留下日志信息。这样,你就可以在以后方便地看到你都做了什么,为什么这么做。当然这么做还是你拥有了开发过程的详细日志。

版本日志对话框可以获取所有的日志信息,并将其显示出来。对话框的视图分成3个面板。

当然,对话框的作用不止于此——它提供了右键菜单,通过它可以获取更多的项目历史信息。

调用版本日志对话框

图 5.14. 版本日志对话框

版本日志对话框

有几种途径可以调出日志对话框:

  • 从右键菜单的TortoiseSVN子菜单中调用

  • 从属性页中调用

  • 在更新结束后,从进度对话框中调用。在这里,日志对话框只显示你上一次更新以来的版本变化。

获得更多信息

图 5.15. 版本日志对话框的顶部面板的右键菜单

版本日志对话框的顶部面板的右键菜单

日志对话框的顶底面板右键菜单功能如下:

  • 将你的工作版本与选中的版本进行比较。默认的比较工具是与TortoiseSNV一同发布的TortoiseMerge,如果日志对话框是针对文件夹的,那么就会出现一个被修改的文件的列表,你可以单独地查看每个文件所做的修改。

  • 将选中的版本作为单一差异文件(GNU补丁格式)查看。相对于可视化的文件比较器,它更难阅读,但它将所有的变化显示在一个格式更为紧凑的文件中。

  • 比较选择的版本和以前版本。它与你比较工作副本类似。

  • 评审选中的版本,和你的工作基础文件,使用可视化差异工具显示结果。参阅 “追溯不同点”一节 以获得更多信息。

  • 追溯选中的版本和旧版本,用可视化差异工具比较结果。

  • 将选中的版本保存成文件,这样你就获得了该文件的一个旧的版本。这个选项只在你查看一个文件的日志时才可用,它只保存那一个文件的一个版本。

  • 用默认查看器,或用你指定的程序,打开选中文件。这个选项仅在存取文件日志是可用。

  • 打开版本库浏览器,可以查看选中的目录。这个选项只在你查看一个目录的日志时可用。

  • 从选中的版本建立一个分支/标记。这个选项很有用。比如: 如果你提交了某些你不想使其进入发行版的修改,却忘记了为此建立标记。

  • 将你的工作复本更新到选中的版本。如果你想要你的工作复本折返到过去的某个时间,那这个功能就很好用。你最好是更新工作复本的整个目录而不是单一某个文件,因为如果只更新某个文件,你的工作复本就可能不一致,从而导致你无法提交任何修改。

  • 还原选中版本中所做的变更。还原的内容只在你的工作复本中,这个操作完全不会影响版本库!要注意的是,这个操作仅仅恢复该版本中的修改(译注: 就是将你选中的那个版本中的修改还原,而在那之后的修改,包括你在工作复本中的新改动依然会被保留,如不正确请联系liuheqi@gmail.com)。不是将整个文件替换成选中的那个版本。(译注: 本段对菜单中的“复原自此版本以来的变更(Revert changes from this revision)”,按实际操作的结果来看,中文菜单应翻译成“复原此版本的变更”比较合适,如不正确请联系liuheqi@gmail.com)

  • 还原到某个早前的版本。如果你进行了多个修改,然后决定要返回到版本N中的模样,你就可以使用这个命令。当然,返回的东西都只在你的工作复本中,在你提交之前,并不会影响版本库。注意,这将会还原从那个版本以来的所有变更,使用选中的版本来替换文件/文件夹。(译注: 在实际使用中发现并不是简单的替换,如果你在当前工作复本中所做的修改不涉及到被选中版本以来的变更内容,那么你的修改会与版本N进行合并,否则这个操作会产生一个冲突。这段对应菜单中的“复原到此版本(Revert to this revision)”。如果不正确,请联系liuheqi@gmail.com)

  • 检出你选择的目录的选中版本,创建一个全新副本。它弹出对话框,让你确认URL和版本,并且选择保存的位置。

  • 导出选择的文件/目录的选中版本。它弹出对话框,让你确认URL和版本,选择导出位置。

  • 编辑之前提交时的日志信息或是作者。请阅读“修改日志消息和作者”一节,了解其工作原理。

  • 将选中版本的详细日志信息复制到剪贴板。它会复制版本号,作者,日期,日志信息,以及每个版本的改变项目列表。

  • 在日志信息中搜索你输入的的文字。这个操作搜索日志信息,也搜索由Subversion建立的提交行为总结(最底部的面板中的内容)。搜索大小写无关。

图 5.16. 选种两个版本的顶部面板的右键菜单

选种两个版本的顶部面板的右键菜单

如果你使用Ctrl组合键一次选中了两个版本,右键菜单有所改变:

  • 使用可视化差异比较工作比较两个选中的版本。默认的比较工作是与TortoiseSVN一起提供的TortoiseMerge。

    如果你是针对文件夹选中这个选项,则会弹出一个对话框列出修改过的文件,提供了更多的差异比较选项。请参考比较版本对话框获得详情: “比较文件夹”一节

  • 评审两个版本,并使用差异比较工作比较结果。详情请参考“追溯不同点”一节

  • 使用单一差异文件显示差异。这对文件和文件夹都有效。

  • 如前所述将日志消息复制到剪贴板。

  • 如前所述可以搜索日志消息。

如果你用CtrlShift组合键选择了多个连续的版本,右键菜单将有一个选项,可以让你还原这些版本中的修改。这是一次性还原多个版本中修改的最简方法。

图 5.17. 日志对话框的底部面板的右键菜单

日志对话框的底部面板的右键菜单

日志对话框的底部面板也有右键菜单,你可以:

  • 显示选中版本中的选中文件的差异。这个操作只对显示为已修改的文件有效。

  • 评审选中文件的选中版本与前一个版本,使用可视化差异工具显示差异。详情请参阅“追溯不同点”一节

  • 用默认查看器或你指定的程序打开选中文件的选中版本。

  • 还原选中文件的选中版本所作的变更。

  • 查看选中项的Subversion属性。

  • 显示选中的单个文件的版本日志。

  • 将选中的版本保存成文件,你可以得到一份该文件的旧版本。

获取更多的日志信息

日志对话框并不总是显示所有曾经的修改,日志不显示的可能原因如下:

  • 对于一个大的库,可能存在几百上千个改动,全部得到它们可能要花上很久的时间。通常你只关心最近的修改。默认情况下,日志消息限制只获取100条,但你可以在TortoiseSVN设置中修改这个值 (“TortoiseSVN的设置”一节),

  • 复制/重命名时停止复选框被选中时, 如果选中的文件或文件夹是从版本库中的其他地方复制而来的,显示日志将停止在该点。这对于查看分支(或标记)时很有用,因为它会停在分支的根节点上,可以快速查看该分支的修改。

    一般情况下你可以不要勾选它。 TortoiseSVN会记住它的状态,以改进性能。

    如果你在从合并对话框中调用的显示日志对话框,那么这个复选框默认将总是选中的。这是由于合并通常都是查看分支中的修改, 获取分支的根之前的日志在这种情况下通常没有什么意义。

    注意,Subversion当前是用复制/删除来实现重命名的,所以重命名一个文件或文件夹也会造成日志显示停止(如果选择了复制/重命名时停止)在该点。

如果你要查看更多的日志信息,点击下100个,以获取下100个日志信息。如果有需要你可以多次重复这个操作。

这个按钮旁边的是一个多功能按钮,它可以记住上一次你要它进行的操作。点击它上面的箭头,可以看到更多的选项。

如果你要查询指定范围的版本,使用显示范围 ...。这会出现一个对话框,要求输入开始和结束的版本。

如果你要查询从最新版本直到版本1的所有的日志消息,使用显示所有

修改日志消息和作者

有时你可能想要修改你曾经输入的日志消息,也许是因为有拼写错误或是你想改进消息内容,或是其他别的原因。偶尔你还想修改提交者,可能是你忘了设置认证等原因。

Subversion允许你在任何时候修改日志消息和作者。但这种改变不可还原(不在版本控制之下),正因如此,这些功能默认是不可用的,如果要开启它,必须设置一个pre-revprop-change钩子。具体如何做,请参考《使用 Subversion 进行版本管理》的相关章节钩子脚本。在Windows机器上实现钩子的注意事项请阅读“钩子脚本”一节

一旦你按需要为服务器设置了钩子,你就可以使用日志对话框顶部面板的右键菜单来修改任意版本的作者和日志信息了。

警告

由于Subversion的版本属性不受版本控制,对于这种属性的修改(如 svn:log提交信息属性将永久覆盖该属性之前的值。

过滤日志信息

如果你只想要显示上千条日志中你所感兴趣的日志,你可以使用日志对话框顶部的过滤器控件。开始和结束日期控件允许你查看指定日期范围内的输出。查找框帮你查出含有指定内容的信息。

要注意的是,这些过滤器只对已经获取的信息有效。它们并不从版本库中下载信息。

你还可以使用隐藏无关的修改路径 复选框来过滤底部面板中的路径名称。所谓相关路径,是指那些与日志相关的路径。对于一个文件夹的日志来说,相关路径就是该文件夹以其下的所有内容。对于一个文件的日志来说,相关路径就是与该文件的路径。该复选框是3态的: 可以显示所有的路径,将无关的内容灰色显示,或是完全隐藏无关路径。

统计信息

统计按扭,可以显示一些你感兴趣的关于日志对话框中版本的信息。可以显示已经有几个作者做了工作,他们各提交了几次,按周的统计,等等。现在,你可以发现一个大概情况: 谁最勤快,谁偷懒。;-)

统计页

此页可以提供所有你可以想到的数据,特别是周期和包括的版本数,还有一些最大/最小/平均值。

作者提交次数统计页

图 5.18. 作者提交次数统计柱状图

作者提交次数统计柱状图

此图用简单柱状图、叠加柱状图或饼图显示了哪些作者已经在项目中活跃了。

其中有几个主要作者和许多辅助的作者。由于太小的部分会导致图形难于阅读,所以在底部有个滑动条,可以设置一个范围(占所有提交的百分比),在这个范围下的所有行为都整合成其他类。

按日期提交统计页

图 5.19. 按日期提交统计图

按日期提交统计图

本页图示了以提交次数作者作为条件的项目行为统计。这里可以看出项目什么时候有人在工作,以及什么人在什么时候进行了工作。

如果有多个作者,你就会在图中看到多行。有两种视图可用正常,在这里,每个作者的行为都相对于基线;叠加,在这里每个作者的行为是相对于他的下面那条线。后一种视图避免了线的交叉,对于图来说更明了,但对查看一个作者的输出比较不直观。

默认统计是区别大小写的,也就是说用户PeterEganPeteRegan被认为是两个不同的作者。但在多数时候用户名并不区别大小写,有时会存在不一致,所以你可能希望PeterEganPeteRegan能被当成是同一个作者。使用作者不区分大小写复选框来控制。

注意,统计只包括了日志对话框中的那段时期。如果日志对话框中只显示一个版本,那么统计就没有什么意义了。