Re: [RFC PATCH 0/4] interpret-trailers: introduce "move" action
- From
Paolo Bonzini <pbonzini@redhat.com>
- Date
- Oct 6, 2017, 10:40 UTC
- Message-ID
- <748131b7-bddd-08c2-ff72-9fd1a63ef6a0@redhat.com>
- In-Reply-To
- <CAP8UFD1X-aRN5sAB5PQt04jL_92APK279bjNf=Zt_x8KOxyL+A@mail.gmail.com>
On 06/10/2017 12:30, Christian Couder wrote:
Show 35 quoted lines
> On Thu, Oct 5, 2017 at 3:22 PM, Paolo Bonzini <pbonzini@redhat.com> 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@redhat.com> >> Reviewed-by: Junio C Hamano <gitster@pobox.com> >> >> 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"`?
Yes, it's a different behavior; "--if-exists replace" matches on others' SoB as well, so it would eat the original author's SoB if I didn't have one.
So "move" does get it wrong for
Signed-off-by: Me
Signed-off-by: Friend(Me gets moved last, which may not be what you want) but "replace" gets it wrong in the arguably more common case of
Signed-off-by: Friend
which is damaged to just "Signed-off-by: Me".
Paolo