Subversion:在提交时将修订数据添加到代码文件中

时间:2010-01-05 20:28:07

标签: svn

在提交文件时,是否有一种简单的方法可以自动将信息插入代码文件本身(如作者,提交评论,提交日期等)?我希望将此信息附加到每个已提交文件顶部的块中。基本上,整个修订历史记录应记录在每个代码文件中......

我看到有一种方法可以使用subversion属性来实现类似的功能,但是我没有看到如何将实际的提交注释添加到文件中,而且我也看不到如何保持运行的日志整个修订历史,而不是最后一次提交信息。

我个人认为这不是一个好主意,因为代码文件应该包含代码,但不幸的是,这是我当前项目的要求。

7 个答案:

答案 0 :(得分:17)

Subversion支持各种关键字,例如$Id$$Author$$Revision$等。要相应地使用set the svn:keywords property所需的那些。但是,您无法插入$Log$之类的提交注释。请参阅subversion FAQ了解相关原因,我只能同意其中的原因。将提交注释放入文件中只是设计破坏了,任何此类注释都是错误的,当您无法对存储库进行检查时。

其他版本控制系统也不支持此功能,其中大多数都有类似的推理(例如,git)。

请不要争论这样的“项目要求”。如果已发布的代码必须包含更改历史记录,则可以在使用某些帮助程序脚本轻松创建发布时添加此历史记录。至少,颠覆根本不支持它。我会强烈阻止尝试使用预提交钩子来实现此目的。提交挂钩应该永远不会更改提交的数据。

答案 1 :(得分:5)

我知道这不是你要找的答案,但我会试着说出来这样做。

最好的选择是使用关键字替换,但SVN没有提供$Log$关键字,原因很充分(参见http://subversion.tigris.org/faq.html#log-in-source),这与我用来反对拥有关键字的原因相同登录代码。

答案 2 :(得分:2)

我建议改用CVS。它内置了这种功能.CVS大约有24年的历史。听起来你的文档要求可能来自版本控制不常见的时代,所以你最好使用那个时代创建的工具。

答案 3 :(得分:1)

  

我看到有一种方法可以使用subversion   实现某些目标的属性   类似,但我不知道如何得到   实际的提交评论   文件,我也看不到如何保持   一个包含整个日志的运行日志   修订历史而不是公正   最后一次提交信息。

您不希望文件中的提交评论。毕竟那是svn log的意思。

答案 4 :(得分:0)

除此之外,就像你自己说的那样,作为一个愚蠢的想法,我想不出一个使用SVN板载方法做到这一点的简单方法。在脚本检出(或更新)后,您必须浏览每个文件,在该文件中标识“更改日志”块,并使用svn log的输出更新该块。可以做但是要做很多工作,你必须监视每个工作副本的变化,而且这是非常耗费资源的。

除此之外,提交后挂钩可能是最好的工作方式,但是如果可能的话,在修订环境之外操作存储库内的文件听起来很糟糕。

答案 5 :(得分:0)

我们在某些源文件中使用$Revision: 9584 $,每次修改该特定文件时,修订版都会更新。但我很确定你的意思不同。

答案 6 :(得分:0)

这是一种方法。 使用第二个版本控制工具,例如Visual Source Safe,它具有一个History关键字。下面我会说VSS,但是您可以使用任何具有History关键字或Log关键字的旧工具。 然后遵循两步过程。 [1]将源文件检查到VSS中。这允许您编写注释,并且VSS将更新源文件本身中的修订历史记录。如果方便的话,您可以一步执行一次多文件签入,并在所有签入的文件中插入相同的注释。或者,您可以逐个文件地进行注释。 [2]按照通常的方式检查生成的文件,该文件现在已使用最新的修订注释插入到Subversion中进行更新。

顺便说一句,就样式而言,我发现将修订历史记录保留在源文件的底部而不是顶部更方便。大多数人从顶部开始阅读,而在底部则看不到修订历史,因此不会打扰他们。另外,源代码行号保持不变,因为当修订历史记录位于文件底部时,除了修订历史记录之外没有其他源代码。这在某些类型的调试中非常方便,在这些调试中,您不想每次登录时都更改源代码行号。