为什么在现代世界中保留传统的详细ChangeLog(使用SVN,Mercurial,Git)?

gav*_*koa 6 version-control coding-style changelog

详细的ChangeLog条目通常会告诉谁,何时以及更改了哪些功能以及为什么要进行此更改.

这对于源代码树中的每个单独的函数!

据我所知,ChangeLog来自过去,当时没有好的VCS.

所以传统的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

Luk*_*ský 6

使用分布式VCS,它已成为"早期提交,经常提交"的标准.使用这种方法,您将获得比实际新功能或错误修复更多的提交.更改日志应该总结整个应用程序的更改.另一方面,VCS日志显示源代码的历史记录,即该功能如何最终实现.