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 <pbonzini@xxxxxxxxxx> Reviewed-by: Junio C Hamano <gitster@xxxxxxxxx> 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