As the author is aware of[1][2] the Git project uses this interdiff approach with email.
- Patch series (PR equivalent) go through a round of reviews
- Each version has a cover letter (like PR desription) unless it’s only a one-patch series
- Each version has that optional cover letter with each patch as a reply email to it
- The next version is a reply to the previous cover letter
- And each version 2 and above cover letter has a git-range-diff in it (courtesy of git-format-patch)
- And also a human/manual summary of changes between versions
- Optionally you can have little comments of each patch that are not part of the commit/patch message: just put it between the three dashes and the diff. Or use Git Notes and let it handle it for you (it will put it in the same space).
In turn there are no “address feedback” commits in the final (merged) series. Only the changes themselves.
Just look at any `[PATCH v2 0/...` or higher (v3...) email on the mailing list: https://lore.kernel.org/git/
Of course this isn’t the easiest workflow:
- Email
- You ought to keep track of the base commit between versions (you could have rebased on the main branch)
- You need to store versions of your branches
- You need to keep track of who to CC on the emails. Well, perhaps not if they are the same people throughout, but it is good courtesy to add people who reply to these versions to the CC list
- You need to harvest the email message id on the cover letters and use that `In-Reply-To`
Phew!
But this is quite sublime for reviewers and people who come back to the series years later:[3]
- All of the review in the same thread overview
- Each version moves the thread to the right
- Each patch (to be commit) is commented on individually
- You can reply to the commit message and the diff by quoting them directly
- The contributor will both give you the range diff (which will highlight diff changes and metadata changes like edited commit messages) and a manual summary of the changes
[1] https://news.ycombinator.com/item?id=41511649
[2] And it is with some trepidation that I bring this up because of the aversion some people have to email workflows. Because the “interdiff style” of PRs is useful!
[3] Git Notes `amlog` records the message id of the patch email where the commit came from