有没有办法在SVN中生成变更日志

时间:2020-03-06 14:26:19  来源:igfitidea点击:

提交到SVN时,我可以添加一个顶级提交消息来详细说明正在提交的内容,但理想情况下,我希望使用一种方法来评论各个文件以及其中的更改。我在以前的工作中见过类似的东西,但这是使用CVS的(我不记得这是否通过家用Brew脚本生成骨架文件来实现)

我看过变更列表,但我仍然不认为(尽管我愿意证明是错误的),这提供了以下概述的粒度。

理想情况下,我正在寻找以下方面的东西:

Foo.vb

Added new function bar

Removed function foo 
  Added functionality in xyz to do abc
  +/- Modified function to log error

解决方案

我只是在单个提交消息中执行此操作。 TortoiseSVN具有文件自动补全功能,因此在此方面有很大帮助。

我们可以做的另一件事是在提交并将文件名复制/粘贴到提交消息之前的svn st。

哦,一定要强烈质疑它的价值。我知道某些OSS项目(Linux?)需要这种保真度,但是对于许多项目而言,这只是噪音。差异不仅可以告诉我们更多信息,而且可以更准确地告诉我们。

我们可能要考虑的另一件事是使用Git。 Git允许我们以较小的步骤在本地提交。然后,我们将所有提交单独推送到主服务器,或者将所有提交消息压缩到单个提交中。这是一种简化的解释方式,但可能值得一试。

只要完成一项特定任务,就可以提交。无论如何,这应该导致更好的评论。在三个必要文件上的注释"已实施的电子邮件验证"显示的内容比"添加功能verify_email"还多。我可以在差异中看到后者。

如果在每个已提交文件中写入注释的方式有一些规则,则可以获得这种结果。之后,可以通过svn触发器提取这些注释。

SVN和CVS之间的本质区别之一是更改是原子提交的。在CVS中,每个文件都有其自己的版本,但是在SVN中,该版本适用于整个项目,并且包括所有一起签入的文件。

以下是解决方案的四个想法:

  • 使用自己的日志消息分别检入每个程序。这可能意味着,例如,如果我们签入五个文件,则将"用完"五个版本,其中四个版本可能会导致版本破坏。
  • 在单独的路径(即我们自己的私有分支)上进行开发,执行上述操作,然后在战略时刻将分支合并到主干。
  • 一起检查所有内容,并将各个记录作为注释保留在程序头中。这可能意味着(一点点)额外的工作,但是无论如何我们都必须编写各个登录消息。
  • 对所有文件进行一次检入,但附带一条完整的完整日志消息,详细说明每个文件的每个部分。

我已经写了一个项目来做这种叫做MOAP的事情

它的功能之一是从本地差异(当前支持集市,cvs,svn,git和darcs)生成ChangeLog条目。我们可以通过运行'moap changelog prepare'或者'moap cl prep'来实现。如果启用该选项,则该条目也可以包含已更改的功能。

然后,我们去更改该条目,并描述更改。我们可以删除不希望提交的文件,作为下一次提交的一部分。

然后,我们可以运行" moap changelog commit"来提交ChangeLog条目中描述的更改。它只会提交此处列出的文件,而将所有其他更改保留在本地。

希望对我们有所帮助!