详细的ChangeLog条目通常会告诉谁,何时以及更改了哪些功能以及为什么要进行此更改。
这适用于源代码树中的每个单独函数!
据我所知,当没有好的VCS时,ChangeLog来自过去。
因此传统的ChangeLog根本不需要,因为你可以从中获取:
$ svn log . $ hg log . $ git log . $ bzr log .
只有一种可能需要的ChangeLog用于产品版本之间的简短摘要,仅供用户使用(例如,当新版本出现时,开发人员准备ChangeLog描述显着/可见的更改)。
或者我错了?
来自http://autotoolset.sourceforge.net/tutorial.html#SEC45:
The ChangeLog file: Use this file to record all the changes that you make to your source code. If your source code is distributed among many subdirectories, and there is reason enough to think of the contents of the subdirectories as different subpackages,then please maintain a separate `ChangeLog' file for each subdirectory.
看起来过时和教条。 Autotools和“GNU编码标准”要求的ChangeLog。
GNU Emacs源代码包含许多巨大的ChangeLog(很多部分由很多部分组成):
$ find emacs-22.3 -name "ChangeLog*" | xargs cat | wc -c 13605747
我可以从Emacs bzr repo获取摘要日志大约1分钟并搜索它,而不是搜索每个单独的ChangeLog,并使用现代工具(如Emacs VC
或Tortoise SVN/HG
)立即获取差异进行更改。
更新使用ChengeLog的原理来自RCS / CVS服务控制系统的笨拙。检查http://www.red-bean.com/cvs2cl/changelogs.html部分“ChangeLogs和CVS日志”。所有现代VCS都提供/允许批评CVS中的这篇文章。
还有很多sctipts将您的VCS历史记录转换为ChangeLog样式。所以拒绝所有 ChangeLog 。
如果您希望在版本之间提供面向用户的功能/背面兼容性等信息,请使用NEWS文件:http://www.gnu.org/prep/standards/html_node/NEWS-File.html
答案 0 :(得分:6)
使用分布式VCS,它已成为“提前提交,经常提交”的标准。使用这种方法,您将获得比实际新功能或错误修复更多的提交。更改日志应该总结整个应用程序的更改。另一方面,VCS日志显示源代码的历史记录,即该功能如何最终实现。
答案 1 :(得分:4)
正如您所说,手动维护的更改日志可用作用户可见更改的摘要,也可用作查看大量单个提交消息可能难以确定的大规模更改的概述。 / p>
答案 2 :(得分:4)
更改日志对于非开发人员并希望了解更改内容的人员非常有用。虽然更改日志可以详细说明,但我不希望我编写的任何应用程序的用户通过git log
输出来确定更改内容。
来自VCS的日志输出可能更细粒度(即您可能有一个标记为“固定拼写错误”的提交 - 用户可能关心吗?)并且没有提供足够的上下文。 changelog为他们提供了上下文。
答案 3 :(得分:2)
除了你的理由(仅限用户等),我认为它们在进行开发时非常有用。在提交源代码控制之前,我经常会做一些更改,并在工作时在更改日志中对它们进行注释。
此外,如果进行了更改然后删除,则可能更难以从单个文件中选择源控件修订日志(例如,只删除一行)。作为旁注,我倾向于将源代码控制下的更改日志保留在我的源代码旁边。