The purpose of this action is for scripts to be able to keep the
user's Signed-off-by at the end. For example say I have a script
that adds a Reviewed-by tag:
#! /bin/sh
them=$(git log -i -1 --pretty='format:%an <%ae>' --author="$*")
trailer="Reviewed-by: $them"
git log -1 --pretty=format:%B | \
git interpret-trailers --where end --if-exists doNothing --trailer
"$trailer" | \
git commit --amend -F-
Now, this script will leave my Signed-off-by line in a non-canonical
place, like
Signed-off-by: Paolo Bonzini <[email protected]>
Reviewed-by: Junio C Hamano <[email protected]>
This new option enables the following improvement:
#! /bin/sh
me=$(git var GIT_COMMITTER_IDENT | sed 's,>.*,>,')
them=$(git log -i -1 --pretty='format:%an <%ae>' --author="$*")
trailer="Reviewed-by: $them"
sob="Signed-off-by: $me"
git log -1 --pretty=format:%B | \
git interpret-trailers --where end --if-exists doNothing --trailer
"$trailer" \
--where end --if-exists move --if-missing
doNothing --trailer "$sob" | \
git commit --amend -F-
which lets me keep the SoB line at the end, as it should be.
Posting as RFC because it's possible that I'm missing a simpler
way to achieve this...
Paolo Bonzini (4):
trailer: push free_arg_item up
trailer: simplify check_if_different
trailer: create a new function to handle adding trailers
trailer: add "move" configuration for trailer.ifExists
Documentation/git-interpret-trailers.txt | 13 ++-
t/t7513-interpret-trailers.sh | 37 +++++++
trailer.c | 169 ++++++++++++++++++-------------
trailer.h | 1 +
4 files changed, 149 insertions(+), 71 deletions(-)
--
2.14.2