Changelog

Last updated

A changelog [1] is a list of changes made to software that has been revised over time such as a codebase or a product. [2]

Contents

A changelog can be a curated record. The author of the changelog can present the information to make it easy to understand and consume. For a software project and a software release, a changelog often is organized as bug fixes and new features.

A changelog can also be a generated report that includes all changes without regard to the ease of consuming or understanding. Typically, a version control system such as git can generate a dump of every change, but some view this as unhelpful and prefer a curated list of notable changes. [3] [4] Another example of generated changelog is that of the typical wiki that lists changes made to each article. In particular, Wikipedia provides this feature via the "View history" link on each article page. [5]

The name of a changelog file varies. Commonly-used names include "CHANGELOG", "CHANGES" and "HISTORY". [4] The GNU Automake naming convention is "ChangeLog". [6] Sometimes that file name includes a file name extension to indicate file format, such as ".txt" for text, ".md" for Markdown, or ".rst" for reStructuredText. Often a codebase, especially a open-source software project, includes a changelog file in the top level of a distribution directory tree.

Sometimes, information limited to recent changes is included in a product release. This might be exposed as a feature or a file named something like "news", "recent changes" or "release notes".

Format

In general, the format of a changelog varies dramatically, but the GNU coding standards specify that a changelog is organized as blocks that each identify when a change was made and by whom (name and email address) and describes each change within a function or file. Between the date and the name, and between the name and the email address, there are two spaces. It is common to enclose the email address in < and >. The Emacs editor creates such entries when creating additional changelog entries. [7]

For example:

[[ISO 8601|YYYY-MM-DD]]␣␣[[John Doe]]␣␣<johndoe@[[example.com]]>      * myfile.ext (myfunction): my changes made     additional changes.      * myfile.ext (unrelated_change): my changes made     to myfile.ext but completely unrelated to the above.      * anotherfile.ext (somefunction): more changes made by me.

See also

Notes

  1. Kuchenrither, Richard D.; Hite, Robert W.; Gerali, Catherine R.; Brennan, William F.; Wilson, David (1 January 2008). "New Innovations for Program Management … Challenges and Successes". Proceedings of the Water Environment Federation. 2008 (14): 2331–2344. doi:10.2175/193864708788734656.
  2. Lewko, Caroline (2021). Developer Relations: How to Build and Grow a Successful Developer Program. Berkeley, CA: Apress L. P. pp. 189–194. ISBN   978-1484271636.
  3. Atlassian. "What is version control | Atlassian Git Tutorial". Atlassian. Retrieved 2022-02-17.
  4. 1 2 "Keep a Changelog". keepachangelog.com.
  5. Help:Page history
  6. The GNU automake manual.
  7. "GNU Coding Standards: Style of Change Logs". Gnu.org. Retrieved 2019-09-03.