Changelog

Last updated

A changelog (also spelled change log [1] ) is a log or record of all notable changes made to a project. The project is often a website or software project, and the changelog usually includes records of changes such as bug fixes, new features, etc. Some open-source projects include a changelog as one of the top-level files in their distribution.

Contents

A changelog has historically included all changes made to a project. The "Keep a Changelog" site instead advocates that a changelog not include all changes, but that it should instead contain "a curated, chronologically ordered list of notable changes for each version of a project" and should not be a "dump" of a git log "because this helps nobody". [2]

Although the GNU (Automake) canonical naming convention for the file is ChangeLog, [3] it is sometimes alternatively named as CHANGES or HISTORY (NEWS is usually a different file reflecting changes between releases, not between the commits). Another convention is to call it a CHANGELOG. [2] Some project maintainers will append a .txt suffix to the file name if the changelog is plain text, a .md suffix if it is in Markdown, or a .rst suffix if it is in reStructuredText.

Some revision control systems are able to generate the relevant information for a changelog, if the goal is to include all changes. [4]

Format

Changelog files are organized by paragraphs, which define a unique change within a function or file. The GNU Coding standards recommend the following format: [5]

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. 

Between the date and the name, and again between the name and the email address, there are two spaces each. It is common to enclose the email address in < and >. The Emacs editor creates such entries when creating additional changelog entries.

Changelog format for packaging

When a software is maintained under a revision control such as git or older svn or even much older cvs, and is distributed via a package like RPM Package Manager, the format of the Changelog file is different and for example:

* Mon Aug 05 2024 johndoe <johndoe@example.com> (583f243) - myfile.ext (myfunction): my changes made additional changes.  * Fri Jul 19 2024 johndoe <johndoe@example.com> (a18761f) - myfile.ext (unrelated_change): my changes made     to myfile.ext but completely unrelated to the above.  * Fri Jul 19 2024 johndoe <johndoe@example.com>  (a739b6f) - anotherfile.ext (somefunction): more changes made by me. 

Such a file can usually be generated from the internal database of the revision control used. For example, under git, the date format must omit the time and time zone. In the command below the abbreviated commit hash is added in brackets:

git log --date=format:"%a %b %d %Y" --pretty="tformat:* %ad %an <%ae> (%h)%n- %s%b%n" >Changelog 

An rpm package is itself produced from a file with a .spec extension and the revision history contained in the Changelog file is inserted at the very end, after the tag %changelog. In order to access to the history of an installed package such as foo.rpm, the query option is--changelog:

$ rpm -q --changelog foo * Mon Aug 05 2024 johndoe <johndoe@example.com> (583f243) - myfile.ext (myfunction): my changes made additional changes. ... 

Changelogs in wikis

Most wiki software includes changelogs as a fundamental feature (often called history in this context). For example, the "View history" link at the top [6] of a Wikipedia entry links to that page's changelog. This feature is vital for complying with the attribution requirements of some copyright licenses.[ citation needed ]

Product changelogs

A product changelog can keep customers in the loop about what's new. It helps to announce new features, latest releases, and relevant news directly in-app.[ citation needed ]

See also

Notes

  1. "Change Log Definition". Law Insider. Retrieved 2023-11-07.
  2. 1 2 "Keep a Changelog". keepachangelog.com.
  3. The GNU automake manual.
  4. Atlassian. "What is version control | Atlassian Git Tutorial". Atlassian. Retrieved 2022-02-17.
  5. "GNU Coding Standards: Style of Change Logs". Gnu.org. Retrieved 2019-09-03.
  6. Help:Page_history.

Related Research Articles

Version control is the software engineering practice of controlling computer files and versions of files; primarily source code text files, but generally any type of file.

<span class="mw-page-title-main">Apache Subversion</span> Free and open-source software versioning and revision control system

Apache Subversion is a version control system distributed as open source under the Apache License. Software developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly compatible successor to the widely used Concurrent Versions System (CVS).

GNU Autoconf is a tool for producing configure scripts for building, installing, and packaging software on computer systems where a Bourne shell is available.

<span class="mw-page-title-main">GNU Autotools</span> GNU software packaging tools

The GNU Autotools, also known as the GNU Build System, is a suite of programming tools designed to assist in making source code packages portable to many Unix-like systems.

dpkg is the software at the base of the package management system in the free operating system Debian and its numerous derivatives. dpkg is used to install, remove, and provide information about .deb packages.

Delta encoding is a way of storing or transmitting data in the form of differences (deltas) between sequential data rather than complete files; more generally this is known as data differencing. Delta encoding is sometimes called delta compression, particularly where archival histories of changes are required.

<span class="mw-page-title-main">Wget</span> Computer command line program.

GNU Wget is a computer program that retrieves content from web servers. It is part of the GNU Project. Its name derives from "World Wide Web" and "get". It supports downloading via HTTP, HTTPS, and FTP.

Release notes are documents that are distributed with software products or hardware products, sometimes when the product is still in the development or test state. For products that have already been in use by clients, the release note is delivered to the customer when an update is released. Another abbreviation for Release notes is Changelog or Release logs or Software changes or Revision historyUpdates or README file. However, in some cases, the release notes and changelog are published separately. This split is for clarity and differentiation of feature-highlights from bugs, change requests (CRs) or improvements on the other side.

In software development, distributed version control is a form of version control in which the complete codebase, including its full history, is mirrored on every developer's computer. Compared to centralized version control, this enables automatic management branching and merging, speeds up most operations, improves the ability to work offline, and does not rely on a single location for backups. Git, the world's most popular version control system, is a distributed version control system.

Open-source software development (OSSD) is the process by which open-source software, or similar software whose source code is publicly available, is developed by an open-source software project. These are software products available with its source code under an open-source license to study, change, and improve its design. Examples of some popular open-source software products are Mozilla Firefox, Google Chromium, Android, LibreOffice and the VLC media player.

A source-code-hosting facility is a file archive and web hosting facility for source code of software, documentation, web pages, and other works, accessible either publicly or privately. They are often used by open-source software projects and other multi-developer projects to maintain revision and version history, or version control. Many repositories provide a bug tracking system, and offer release management, mailing lists, and wiki-based project documentation. Software authors generally retain their copyright when software is posted to a code hosting facilities.

<span class="mw-page-title-main">QGIS</span> Open-source desktop GIS software

QGIS is a geographic information system (GIS) software that is free and open-source. QGIS supports Windows, macOS, and Linux. It supports viewing, editing, printing, and analysis of geospatial data in a range of data formats. QGIS was previously also known as Quantum GIS.

<span class="mw-page-title-main">GNU IceCat</span> Firefox derivative recommending only free software

GNU IceCat, formerly known as GNU IceWeasel, is a completely free version of the Mozilla Firefox web browser distributed by the GNU Project. It is compatible with Linux, Windows, Android and macOS.

makedepend is a Unix tool used to generate dependencies of C source files. A Microsoft Windows version was made available in 2002 and last updated in 2007 on UnxUtils.

The Debian build toolchain is a collection of software utilities used to create Debian source packages (.dsc) and Debian binary packages from upstream source tarballs.

Fisheye is a revision-control browser and search engine owned by Atlassian, Inc. Although Fisheye is a commercial product, it is freely available to open source projects and non-profit institutions. In addition to the advanced search and diff capabilities, it provides:

<span class="mw-page-title-main">RPM Package Manager</span> Package management system

RPM Package Manager (RPM) is a free and open-source package management system. The name RPM refers to the .rpm file format and the package manager program itself. RPM was intended primarily for Linux distributions; the file format is the baseline package format of the Linux Standard Base.

XZ Utils is a set of free software command-line lossless data compressors, including the programs lzma and xz, for Unix-like operating systems and, from version 5.0 onwards, Microsoft Windows. For compression/decompression the Lempel–Ziv–Markov chain algorithm (LZMA) is used. XZ Utils started as a Unix port of Igor Pavlov's LZMA-SDK that has been adapted to fit seamlessly into Unix environments and their usual structure and behavior.

lzip Data compression utility

lzip is a free, command-line tool for the compression of data; it employs the Lempel–Ziv–Markov chain algorithm (LZMA) with a user interface that is familiar to users of usual Unix compression tools, such as gzip and bzip2.