源文件顶部的源代码管理签名注释

时间:2010-05-17 13:49:31

标签: version-control code-comments keyword-expansion

我注意到我们系统中的一些源文件存在差异,其中一些包含源代码控制签入注释,而另一些则没有。签入时,这些注释会自动添加到文件顶部:

    * $Log:   //vm1/Projects/Morpheus/Sleep.bdy-arc  $
--
--   Rev 1.14   Apr 14 2009 15:32:52   John Smith
--Fixed bugs 2292 and 2230.

这似乎在我所有的工作中都非常出色,但我必须承认我很难看清楚这一点。一般来说,这些评论并不那么好,而且很久以前就已经离开了人们,即使他们的标准很高,也很难将它们与物理代码的变化联系起来。

同样让我感到震惊的是,您正在实际更改您正在检入的文件。现在,对于将要编译的文件,这可能不是一个问题,但可能是其他人的灾难,例如: JavaScript文件。

实际上,我的问题是在第一个实例中提供此功能背后的概念动机是什么?有没有人真正发现这些评论有用?

另外,我很想知道这是否是Source Control系统中通常支持的功能。我知道PVCS,VSS和Subversion(Subversion Keyword Substitution),但是我想知道它是否也可以在一些比较流行的DVCS中使用。

一如既往地非常感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

你是对的 - 总的来说,这不是修订控制系统的一个非常有用的功能!是的,公司喜欢审计跟踪,但这是由修订控制系统的日志命令提供的;是的,这意味着如果修订控制系统不是,那么日志是可用的 - 但在这种情况下,Fixed bug 1234可能不是很有意义:-)而且,正如你所提到的那样,为了将变更联系起来对于特定的行,您仍然需要修订控制系统的帮助。

你也是正确的,因为在提交文件时更改文件会引起问题 - 我曾经看到一个问题,一位同事仔细确保他的代码编译,然后承诺,只是因为他的文件被玷污了d commit没有编译。事实证明,评论类似于Clean up /tmp/*.txt,C编译器将/*视为评论开始字符(抱怨因为它已经在评论中)。

登录文件的另一个问题是它们只对线性工作有意义 - 一旦你开发了多个分支(就像git / mercurial / bazaar鼓励的分布式源工具那样)在源文件中有日志它本身仅用于在几乎所有时间创建合并冲突。

因此,现代工具往往不实现此功能。确实subversion doesn't - 其关键字替换故意不允许包含日志历史记录。

答案 1 :(得分:1)

  

所以真的,我的查询是什么   提供背后的概念的动机   这个功能在第一个   实例?有没有人真正找到   这些评论有用吗?

当源被镜像到外部位置(源包,源代码索引等)时,版本控制信息可能不可用。对于此类情况,此信息可能有用。

答案 2 :(得分:1)

  

实际上,我的问题是在第一个实例中提供此功能背后的概念动机是什么?有没有人真正发现这些评论有用?

在一些公司中,审计控制是一个大问题。审计人员希望能够从事件系统跟踪到实际的代码更改。 Fixed bugs 2292 and 2230.提供从代码到事件系统的追溯。

出于同样的原因,一些公司要求将事件编号作为源控件更改日志注释的一部分。