Update version to 59.2.0, update changelog generation to git-cliff - #10451
Update version to 59.2.0, update changelog generation to git-cliff#10451Jefffrey wants to merge 12 commits into
Conversation
|
@alamb we could try test this out for upcoming release? 👀 I haven't updated the release instructions, but it would essentially cut out the need for running existing update changelog script and the label issues script too Edit: if we do wanna use this for 59.2.0 release I can go in and label a few more PRs to get a better changelog |
|
Yes, I would love to try this out. I personally think the github changelog generator is quite long in the tooth and I would welcome this change. |
|
Another potential option would be to port the datafusion generate-changelog script: https://github.com/apache/datafusion/blob/main/dev/release/generate-changelog.py However I think it would be good to try another tool and see how it goes |
|
Regarding the changelog file, do we prefer keeping this approach of having latest changelog in
Though one thing to keep in mind is having a single big
I think |
Yeah, the total changelog for arrow-rs is now pretty large (there is lots of good stuff in there https://github.com/apache/arrow-rs/blob/main/CHANGELOG-old.md) |
|
I did a quick test where I imitated a 58.5.0 release, and it seems to generate changelog fine
So looks like the |
| Now prepare a PR to update `CHANGELOG.md` and versions on `main` to reflect the planned release. | ||
|
|
||
| Do this in the root of this repository. For example [#2323](https://github.com/apache/arrow-rs/pull/2323) | ||
| First copy the contents of `CHANGELOG.md` into `CHANGELOG-old.md`. |
There was a problem hiding this comment.
I noticed we never had an explicit step for this? I don't think our existing changelog script did this either
Out of curiosity, how long on average does it take to run the DataFusion version? (Though DataFusion does have more commits per release, at least for major ones) @alamb |
|
I am starting to test this out for the 59.2.0 release. As long as I am able to replicate the results my plan is to update + merge this PR |
| {% for group, commits in commits | group_by(attribute="group") %} | ||
| ### {{ group | striptags | trim | upper_first }} | ||
| {%- for commit in commits %} | ||
| - {% if commit.remote.pr_title %}{{ commit.remote.pr_title | trim }}{% else %}{{ commit.message | split(pat="\n") | first | upper_first | trim }}{% endif %}\ |
There was a problem hiding this comment.
I changed this to use remote.pr_title first and then fall back to commit message.
Note (from @alamb): This PR contains both:
git-cliffrather than changelog_generatorgit-cliffwas a much nicer experience than the changelog generator (specifically it ran much faster)59.2.0(July 2026) #9879Testing out git-cliff for generating our changelogs. In this PR I've included the config file, as well as an example changelog for upcoming 59.2.0 release.
To install
git-cliffcan either cargo install or do via brewThen we need to ensure we have the tags locally:
# If remote for the apache remote is named differently ensure swap to the name here git fetch origin --tagsgit-cliffoperates via checking the commits since latest tag, so if we don't locally have the tags it'll generate a changelog since the start of time 🙂Then run command:
GITHUB_TOKENenvironment variable, or can add to command via--github-token59.2.0(we change this for each release), into a separate fileThen can see what the generated changelog is like in this PR.
git-cliffalso supports prepending onto an existing changelog, in which case it removes the header (specified in the config), prepends new body, then re-adds the header:--outputand--prependso long as they don't point to the same fileOn categorization
git-clifflooks only at PRs; it ignores issues. I prefer this approach as it makes it more clear which code we actually shipped. There was also an issue with our previous approach in thatgithub-changelog-generatordidn't ignore issues closed as not planned/duplicate which can add noise to the changelog. By focusing only on PRs we don't need to worry about this, and we also don't need to bother labeling issues from their PRs anymore.However, we need to ensure our PRs have good labeling. This can come from maintainers adding labels, or having workflows to do some of this automation. For example we could:
development-processto PRs that only touch benches/testsFor now I've been going around to some PRs and adding labels to get some better categorization in this example.
Speed
Oh also its blazing fast 😃 (well compared to old approach)
Further work
Need to update release instructions if going with this approach; also want to test out patch releases (aka test when we're not generating for commits off main)