Mercurial - 什么是 "future auditing"?

Mercurial - what is "future auditing"?

我正在阅读 the docs。在关于 Mercurial 的书签系统的部分,我读到:

Bookmarks can be used as an alternative to NamedBranches for tracking multiple lines of development. Systems like Mercurial, CVS, and Subversion store their branch information as a permanent part of each commit. This is useful for future auditing of long-lived branches, as it’s always possible to identify which branch a commit was introduced on. Git, by contrast, has “branches” that are not stored in history, which is useful for working with numerous short-lived feature branches, but makes future auditing impossible.

我试着在网上搜索 "future auditing" 与 mercurial 有关的内容,但几乎每篇文章的内容都与上面引用的内容完全相同,就好像他们都是从同一个地方抓取该文档一样。

这个神秘的 "future auditing" 是什么,据说在 git 中是不可能的?

谢谢。

“未来审计”不是一个技术术语,它只是“供未来参考”、“供未来分析”的另一种说法。这就是为什么谷歌搜索 mercurial future auditing 不会给你那么多有用的结果。

附带说明,在 Git 中,您可以通过在 git merge 上使用 --no-ff 选项来实现可读的历史记录,这可以防止快进分支并强制创建合并提交。这样,您将始终在历史记录中有一个可见的分支,从而更容易了解特定提交是在哪个功能分支的上下文中设计的。出于这个原因,像 Git Flow 这样的流行工作流程强制使用 --no-ff

上图来自Git Flow website。它显示了在可以快进但用户选择强制合并提交的情况下 --no-ff 对历史的影响。

这与“Deleting git branch looses audit”中提到的审计相同:

git 中的分支可以随时删除或重命名。

if the merge was not a fast-forward you will see that the commits were made to a branch that was later merged, but you won't know what the branch was originally called.

您可以在 More On Mercurial vs. Git (with Graphs!) (2011)

中看到它的插图

如果您想要一些标识符与您的开发人员推送的每个提交相关联,请让他们将该标识符与他们推送的每个提交相关联。在这里,这里有一个 commit-msg 过滤器,它将它从 repo 的配置中拉出来:

    sed -si "/^###audit identifer:.*###/d
         $ s/.*$/&\n###audit identifier: $(printf %s `git config x-workdata.bugid`)###" ""

将其放入您的 commit-msg 挂钩(pace 语法),每次提交都会记录 x-workdata.bugid 配置项。

但是,(a) 没有理由要求开发人员以特定方式记录该 id,并且 (b) 更没有理由要求该 id 是他们在处理此特定时使用的唯一分支名称努力。如果他们尝试三种不同的方式,那么他们必须返回并使用以完全正确的 ID 命名的分支重新设置最好的基线,因为有一些强制要求这是通过提交记录该 ID 的唯一方法?太可笑了。