On Thu, Jun 30, 2022 at 8:35 AM Konstantin Ryabitsev <konstantin@xxxxxxxxxxxxxxxxxxx> wrote: > > Hello, all: > > What's the best approach to non-interactively rewrite specific commit > messages? In this particular case, I am trying to automatically retrieve code > review trailers sent to the mailing list and put them into corresponding > commits. > > For example, I have a set of commits: > > abcabc: This commit does foo > bcdbcd: This commit does bar > cdecde: This commit does baz > > They were all sent to the mailing list and a maintainer sent a "Reviewed-by" > to the second commit. In a usual interactive rebase session this would be: > > pick abcabc > reword bcdbcd > pick cdecde > > When the edit screen comes up for the bcdbcd commit, the author would manually > stick the new trailer into the commit message. However, I can automate all > that away with b4 -- just need a sane strategy for non-interactively rewriting > entire commit messages at arbitrary points in the recent history. > > Any pointers? One possibility would be to tweak https://github.com/newren/git-filter-repo/blob/main/contrib/filter-repo-demos/signed-off-by, modifying the line setting the 'trailer' variable to make it be a Reviewed-by rather than a Signed-off-by. You could tweak the script to also make other automated commit message changes unrelated to any trailers, if you wanted. (There's also the slightly less careful way of adding trailers shown over at https://github.com/newren/git-filter-repo/blob/main/Documentation/converting-from-filter-branch.md#rewriting-commit-messages----adding-text, but the literal appending instead of determining whether to also first add one or more newlines before the trailer might not be exactly what you want.)