手册

谁修改了哪一行?

有时您不仅需要知道哪些行发生了更改,还需要知道是谁更改了文件中的特定行。这时,TortoiseSVNBlame... 命令(有时也称为 注释 命令)就派上用场了。

此命令列出文件中的每一行,以及更改该行的作者和修订版本。

文件的 Blame

图 4.64. 注释/Blame 对话框

The Annotate / Blame Dialog


如果您对早期修订版本的更改不感兴趣,您可以设置 Blame 开始的修订版本。如果您希望对 所有 修订版本进行 Blame,请将其设置为 1

默认情况下,Blame 文件使用 TortoiseBlame 查看,它会突出显示不同的修订版本,以便于阅读。如果您希望打印或编辑 Blame 文件,请选择 使用文本查看器查看 Blame

您可以指定处理行尾和空格更改的方式。这些选项在 名为“行尾和空格选项”的部分 中进行了描述。默认行为是将所有空格和行尾差异视为真实更改,但如果您希望忽略缩进更改并找到原始作者,则可以选择此处合适的选项。

如果您愿意,也可以包含合并信息,尽管此选项可能需要更长的时间才能从服务器检索。当从另一个来源合并行时,Blame 信息将显示更改在原始来源中进行的修订版本以及将其合并到此文件的修订版本。

按下 确定 后,TortoiseSVN 将开始检索数据以创建 Blame 文件。Blame 过程完成后,结果将写入临时文件,您可以查看结果。

图 4.65. TortoiseBlame

TortoiseBlame


TortoiseBlame(包含在 TortoiseSVN 中)使 Blame 文件更易于阅读。当您将鼠标悬停在 Blame 信息列中的某一行时,所有具有相同修订版本的行将显示为深色背景。由同一作者更改的其他修订版本的行将显示为浅色背景。如果您将显示设置为 256 色模式,则颜色可能无法清晰显示。

如果您 左键单击 某一行,所有具有相同修订版本的行将被突出显示,其他修订版本中由同一作者更改的行将以浅色突出显示。此突出显示是粘性的,允许您移动鼠标而不丢失突出显示。再次单击该修订版本以关闭突出显示。

当鼠标悬停在 Blame 信息列上时,修订版本注释(日志消息)将显示在提示框中。如果您想复制该修订版本的日志消息,请使用在右键单击 Blame 信息列时出现的上下文菜单。

您可以在 Blame 报告中使用 编辑查找... 进行搜索。这允许您搜索修订号、作者和文件本身的内容。日志消息不包含在搜索中 - 您应该使用日志对话框来搜索它们。

您也可以使用 编辑转到行... 跳转到特定行号。

当鼠标悬停在 blame 信息列上时,会出现一个上下文菜单,它有助于比较修订版和检查历史记录,使用鼠标下方的行的修订号作为参考。 上下文菜单Blame 上一个修订版 会为同一个文件生成一个 blame 报告,但使用上一个修订版作为上限。这将为您提供您正在查看的行最后一次更改之前文件状态的 blame 报告。 上下文菜单显示更改 将启动您的 diff 查看器,显示您在引用的修订版中所做的更改。 上下文菜单显示日志 将显示修订版日志对话框,从引用的修订版开始。

如果您需要一个更好的视觉指示器来显示最旧和最新的更改在哪里,请选择 视图颜色行年龄。这将使用颜色渐变来显示较新的行以红色,较旧的行以蓝色显示。默认颜色相当浅,但您可以使用 TortoiseBlame 设置更改它。

如果您正在使用合并跟踪并且您在启动 blame 时请求了合并信息,则合并的行将以略微不同的方式显示。如果一行由于从另一个路径合并而发生了更改,TortoiseBlame 将显示原始文件中的最后一次更改的修订版和作者,而不是合并发生的修订版。这些行通过以斜体显示修订版和作者来指示。合并发生的修订版在您将鼠标悬停在 blame 信息列上时,将在工具提示中单独显示。如果您不希望以这种方式显示合并的行,请在启动 blame 时取消选中 包含合并信息 复选框。

如果您想查看参与合并的路径,请选择 视图合并路径。这将显示最后一次更改行的路径,不包括由于合并而导致的更改。

blame 信息中显示的修订版表示该行内容最后一次更改的修订版。如果文件是通过复制另一个文件创建的,那么在您更改一行之前,它的 blame 修订版将显示原始源文件中的最后一次更改,而不是复制发生的修订版。这也适用于显示合并信息的路径。该路径显示了对该行进行最后一次更改的存储库位置。

TortoiseBlame 的设置可以通过 TortoiseSVN设置... 在 TortoiseBlame 选项卡中访问。请参考 名为“TortoiseBlame 设置”的部分

Blame 差异

Blame 报告的一个限制是它只显示文件在特定版本中的样子,以及最后修改每一行的用户。有时您想知道做了什么更改,以及是谁做的。如果您在 TortoiseBlame 中右键单击一行,您将有一个上下文菜单项来显示该版本中所做的更改。但是,如果您想同时查看更改 blame 信息,则需要结合使用 diff 和 blame 报告。

版本日志对话框包含几个选项,允许您执行此操作。

Blame 版本

在顶部窗格中,选择 2 个版本,然后选择 上下文菜单Blame 版本。这将获取这两个版本的 blame 数据,然后使用 diff 查看器比较这两个 blame 文件。

Blame 更改

在顶部窗格中选择一个版本,然后在底部窗格中选择一个文件,并选择 上下文菜单Blame 更改。这将获取所选版本和前一个版本的 blame 数据,然后使用 diff 查看器比较这两个 blame 文件。

与工作 BASE 比较和 Blame

显示单个文件的日志,并在顶部窗格中选择一个版本,然后选择 上下文菜单与工作 BASE 比较和 Blame。这将获取所选版本的 blame 数据,以及工作 BASE 中文件的 blame 数据,然后使用 diff 查看器比较这两个 blame 文件。

TortoiseSVN 主页