Changelog items aren't in chronological order

Tue Sep 14, 2021 2:11 am

Older commits list is in a mess: 03-Aug-2021 is followed by 29-Jul-2021 and 11-Aug-2021 (?!).

Re: Changelog items aren't in chronological order

Tue Sep 14, 2021 4:34 am

With Git it is not a strict requirement that commits be chronological, especially when there is a tree merge. That is just how Git works. Some newer commits may be older work and will therefore carry the older timestamp.

Re: Changelog items aren't in chronological order

Tue Sep 14, 2021 4:45 am

It's just hard to determine what's new in the latest release because of this.

Re: Changelog items aren't in chronological order

Tue Sep 14, 2021 5:18 am

The "latest" will always be the top-most. But what came before that is always very complicated - because it depends on how the past commits were merged.

If the merge was a 3-way there is often a merge commit, which as the name suggests, is a 3-way merge - a branch, a parent, and the continuation after the merge. With those you cannot bisect older commits unless they are part of the branch you are diagnosing for a problem. Often commits there will appear in chronological order, but commits that appear in sequence are often not be related to one another, and you may be seeing one branch or the other. In general with Git, 3-ways are the most common type of branch merges - but GZDoom does not do this often when merging pull requests from external contributors, they actually occur much more often with internal development when a dev merges his/her own branch into the mainline. (Or the opposite)

This is an example of a 3-way merge: https://github.com/coelckers/gzdoom/com ... 393ad2eb4b (notice it has 2 parents)

What GZDoom does most often with pull requests is a rebase merge. When this happens, the non-chronological sequence occurs, but a very convenient single path of progression none-the-less is formed, which is much easier to bisect and follow, even if the timestamps are out of order. Even if the time stamps are out of order there is still only one path going forwards and backwards - which is very convenient if you have to track down a problem.

This is an example of a rebase: https://github.com/coelckers/gzdoom/com ... 98d1e2de54
The top 7 commits in here are another example of a rebase: https://github.com/coelckers/gzdoom/com ... 3e6b4fa9be

A third type of merge that GZDoom does not do often but it has happened (and Git allows) is a squashed merge - where the author's commits are all reduced to a single commit. It's similar to a 3-way merge in that a merge commit is created, but it completely eliminates the original commit history that was in the other branch before the merge.

Here is an example of a squash: https://github.com/coelckers/gzdoom/com ... 45598d3038

Re: Changelog items aren't in chronological order

Tue Sep 14, 2021 5:30 am

The main problem with the changelog is that it only displays the "authoring date", but not the "commit date". The latter will always be sequential, and in all common repo browsers both can be shown.
Github's browser only considers the commit date, btw, which is a bit easier to follow.