# More builtin git-am issues..

- From: Linus Torvalds \<torvalds@linux-foundation.org\>
- Date: 2016-06-15 23:06:27 
- List: git
- Page: https://ratatoskr.run/git/2016/06/7663734
- Thread: https://ratatoskr.run/git/2016/06/7663734/t.md

```text
Ok, this may not be new either, but I'm trying to be careful when
using "git am" these days, because I know it got rewritten.

And I _think_ the whitespace handling for adding sign-offs got scrogged.

I just applied the usual patch-bomb from Andrew, and several of the
commits (but not all) end up looking like this:

    Cc: [ref] [3.15+]
    Signed-off-by: Andrew Morton [ref]

    Signed-off-by: Linus Torvalds [ref]

note the extraneous whitespace line between Andrew's sign-off and mine.

What's odd is that the emails I'm applying literally don't have that
extra empty line, so it's git that somehow decides to add it.  Only
for a few cases, though.

The pattern *seems* to be that git now looks at the *first* line of
the sign-off block and decides that "this is a sign-off block if that
first line has a sign-ff on it, ie this is fine:

    Signed-off-by: Andrea Arcangeli [ref]
    Cc: Pavel Emelyanov [ref]
    Cc: Dave Hansen [ref]
    Cc: Linus Torvalds [ref]
    Signed-off-by: Andrew Morton [ref]
    Signed-off-by: Linus Torvalds [ref]

but the failing cases have a comment by Andrew:

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Tang Chen [ref]
    Cc: Xishi Qiu [ref]
    Cc: Yasuaki Ishimatsu [ref]
    Cc: Kamezawa Hiroyuki [ref]
    Cc: Taku Izumi [ref]
    Cc: Gu Zheng [ref]
    Cc: Naoya Horiguchi [ref]
    Cc: Vlastimil Babka [ref]
    Cc: Mel Gorman [ref]
    Cc: David Rientjes [ref]
    Cc: [ref]        [4.2.x]
    Signed-off-by: Andrew Morton [ref]

    Signed-off-by: Linus Torvalds [ref]

ie that "[akpm@linux-foundation.org: coding-style fixes]" makes git am
now decide that the previous block of text was not a sign-off block,
so it adds an empty line before adding my sign-off. But very obviously
it *was* a sign-off block.

Maybe this isn't new at all, and it's just that I notice because I'm
looking for "git am" oddities.  Something is clearly wrong in
"has_conforming_footer()".

I *think* it's this part:

                if (!(found_rfc2822 ||
                      is_cherry_picked_from_line(buf + i, k - i - 1)))
                        return 0;

which basically returns 0 for _any_ line in the footer that doesn't
match the found_rfc2822 format.

I really think that if we find any "Signed-off-by:" in that last
chunk, we should not add a whitespace.

Comments?

                    Linus
```
