-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changelog Fragments #23
Comments
Tools in this space
|
I feel like my ideal solution is some combination of the above VisionIdealized workflows
DesignFor now, I'm going to call this "annalist". Unsure if this should be a git subcommand or not. In an ideal world, this would work well across VCS, across VCS hosts, and across build tools but the more we do that, the more inherent complexity and bloat there is.
File format [[change]]
# foo dependents are bar, baz
# bar dependents are bob
packages = ["foo", "bar"]
compatibility = "major"
scope = "parser"
type = "feat"
description = '''
Track compatibility across for releases
''' This was written as-if it was from
See https://hachyderm.io/@epage/111189054535306058 for some discussion |
Something I do with clap's changelog is have Highlights and Migration Guide sections. Couple of thoughts
|
My comment only refers to the following:
In general, I'd love to have a With that said, I think an alternative shouldn't be too tied to GitHub PRs and ideally have (at least) a plan for how workflows would look like without GitHub integration, just operating locally. Maybe it's even possible to design such workflow with just In any case, let me express my gratitude for your work in this space and my excitement for any kind of improvement this brings, knowing that one day all pieces may come together so |
I think a lot of this can work with other hosts and maybe VCS; it just might require some more manual work. The most magical / integrted parts would likely live in the Action itself, leveraging lower level tools to compose it. |
I've also toyed with something like this and wrote a PoC at https://github.com/thomaseizinger/semverlog. |
I've thought a lot about release automation for https://github.com/libp2p/rust-libp2p and where I am currently at is that I'd actually like to move away from release PRs and towards having What this doesn't solve is avoiding merge conflicts within changelogs if they are touched by multiple PRs. We squash-merge all PRs so at least for us, it would be ok if there was a bot that automatically amends the changelog and / or fixes the conflicts. Additionally, I am wondering if you couldn't avoid many of these conflicts with e.g. enforced formatting of the changelog. Git at least has the concept of merge drivers so perhaps that could also be used (by a bot) to automatically resolve some of the conflicts? But even with the possible changelog conflicts, I find that being able to just always release is still better than having to faff around with "prepare release" PRs. Unless you have a branching setup like git-flow, there is always the risk that another PR merges into Keen to hear about other people's experiences. |
Looks like this uses md files with yaml frontmatter. Someone was suggesting that on Mastadon, I'm assuming so that the editor workflow is focused on the markdown. My concern is I want it to be easy to split a changelog entry into two which would be easiest if they are in the same file. I'm also hoping most authorship is done by extracting conventional commits.
Something has to bump versions, whether its at the start or end of a release cycle, likely it'll be in the same release tool. With cargo-release, I got a lot of feedback that post-release bumps causes problems with If you have to bump the version at some point, I feel like generating the changelog and updating other related version bump files isn't too big of a deal.
I've raised these race condition concerns with release-plz and hopefully we can come up with a solution. My idea is to walk the commit history and do the publishes on the commits the version bumps happened on but that requires using merge commits (which solving this problem requires using merge commits anyways and I feel like squashing is an anti-pattern) |
The idea is that the versions must be bumped together with the change that is making them. See libp2p/rust-libp2p#4620 for example. Together with What I liked about Having said that, we currently use a model where breaking changes as batched up in a milestone and "wait" until we decide to make a release with breaking changes. I think for more established libraries, it is pretty common to do this kind of "planning" of releases. Hence, most of our PRs and also releases are patch-releases and those are the ones I want to automate / make easy. Consequently, I am no longer that concerned about inferred the bump-version from the changelog as the default should be that it is not breaking and you'd typically not interleave breaking and non-breaking changes much.
Yeah that is fair. I think using merge commits and clever branching strategies can definitely solve this, see https://github.com/thomaseizinger/github-action-gitflow-release-workflow for example. It is a different kind of complexity in my eyes and I'd like to avoid it if we can. There is something really nice about a linear history on |
Thanks for the writeup and discssions here people! When editing changelog for Cargo, I often combine relevant pull requests into one changelog entry. This is a thing need to consider. The other thing is the ability to post-edit. I guess this can be achieved by editing files under |
With this, the workflow is that PR authors would write their entry and we'd review them. And yes, we can always change the fragments later. |
Deferring documentation to the end of a task isn't ideal. When its a changelog
Ideally, the changelog would be written as part of the relevant PRs but how do we that?
If people directly edit
CHANGELOG.md
, then you end up with merge conflicts.You could infer it from the commits, but when a commit spans multiple packages, the "breaking change" in it might only apply to one of the packages with the other being just an internal change to update to the new API. The feedback process on commit messages is also not that great.
You could have a tool diff APIs but that leaves out behavior changes, documentation, etc.
What if instead you worked with machine-generated, hand edited changelog fragments per PR that got merged into the
CHANGELOG.md
?The text was updated successfully, but these errors were encountered: