Subversion 1.5 中的合并审计

本文已获得原始位置 http://blogs.collab.net/subversion/2007/06/merge_auditing_.html 的许可,并在此处镜像。已删除或更新了无效链接。

作者:Mark Phippard

发布 2007-06-13

上周,我们在 Subversion 合并跟踪功能中添加了一个非常棒的功能,并将其提交到主干。 Hyrum Wright 是一位参加 Google 夏季代码 项目的学生。他报名参加了为合并跟踪提供“合并审计”功能。您可以在 功能规范 中看到有关此功能的更多详细信息,但本质上它是关于向 svn 日志和 blame 输出添加对合并跟踪信息的智能和感知。在 合并跟踪规划 中,这被列为 1.5 之后的特性。这是每个人都希望在代码库中看到的特性,但人们认为发布版本和核心功能必须是优先事项。

无论如何,在这种情况下,我们似乎能够 两全其美。Hyrum(我应该补充的是,他已经成为 完整的 Subversion 提交者)在将此支持添加到 svn log 命令方面取得了很大进展,并将这些更改提交到主干。此外,事实证明,我们为合并跟踪早期采用者计划创建的示例存储库确实有助于解决此功能中的问题。由于我们拥有一个记录良好的示例存储库和匹配的图形,Hyrum 可以参考,这使他更容易完善该功能并使其正常工作。

[截至 2023 年 3 月 19 日,图像丢失
原始链接 http://blogs.open.collab.net/photos/uncategorized/2007/06/13/repo.gif 和 http://blogs.collab.net/subversion/files/2007/06/merge-auditing.gif]

上图是我们示例仓库的历史记录。如果你仔细观察,trunk 的 r14 提交是一个有趣的例子,它展示了这个功能的应用。这个提交是从一个分支合并的,并且合并还包含了来自另一个分支的额外合并。如果我运行这个命令(注意新的 -g 选项)

svn log -g -r 14 $REPOS/trunk

以下是新的输出

------------------------------------------------------------------------r14 | merger | 2007-05-30 15:48:11 -0400 (Wed, 30 May 2007) | 3 lines

Merge branch b - product roadmap and update about page

Command executed: svn merge $REPOS/branches/b------------------------------------------------------------------------r13 | buser | 2007-05-30 15:46:48 -0400 (Wed, 30 May 2007) | 1 lineResult of a merge from: r14

Update info about our company------------------------------------------------------------------------r12 | merger | 2007-05-30 15:45:19 -0400 (Wed, 30 May 2007) | 3 linesResult of a merge from: r14

Merge branch a - product roadmap

Command executed: svn merge $REPOS/branches/a------------------------------------------------------------------------r11 | auser | 2007-05-30 15:43:00 -0400 (Wed, 30 May 2007) | 1 lineResult of a merge from: r14, r12

Add product roadmap------------------------------------------------------------------------

注意它包含了关于在 r14 中合并的修订版本的信息,以及其中一个修订版本是如何由另一个合并产生的。图形化客户端,比如我们的 CollabNet Desktop - Eclipse Edition 和 TortoiseSVN 应该能够在他们的 UI 中以非常有用和有趣的方式展示这些信息。

Hyrum,这是很棒的工作。继续努力。我迫不及待地想看到 blame 实现的成果。

关于作者

Mark Phippard 是 CollabNet 多个团队的工程经理,包括 CloudForge、Subversion、Subversion Edge、Git 以及我们的桌面和集成。

Subclipse 项目的项目负责人,该项目在 Eclipse 中提供 Subversion 支持。也是 Subversion 项目的完整提交者。

GitEye、Subversion Edge 和 CollabNet 桌面与集成的产品负责人。

TortoiseSVN 官方中文版 1.14.7 发布