On Thu, Oct 5, 2017 at 3:22 PM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > 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... Did you try using `--where end --if-exists replace --trailer "$sob"`?