Junio C Hamano <gitster@xxxxxxxxx> writes: > Dave Borowitz <dborowitz@xxxxxxxxxx> writes: > >> Signed-off-by: Dave Borowitz <dborowitz@xxxxxxxxxx> >> --- >> Documentation/technical/pack-protocol.txt | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/Documentation/technical/pack-protocol.txt >> b/Documentation/technical/pack-protocol.txt >> index 1386840..2d8b1a1 100644 >> --- a/Documentation/technical/pack-protocol.txt >> +++ b/Documentation/technical/pack-protocol.txt >> @@ -534,6 +534,9 @@ A push certificate begins with a set of header >> lines. After the >> header and an empty line, the protocol commands follow, one per >> line. >> >> +Note that (unlike other portions of the protocol), all LFs in the >> +`push-cert` specification above MUST be present. >> + >> Currently, the following header fields are defined: >> >> `pusher` ident:: > > I am moderately negative about this; wouldn't it make the end result > cleaner to fix the implementation? I think that something like this should be sufficient. As the receiving end, we must not complain if there is no terminator. diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 94d0571..303a1dd 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1415,9 +1415,12 @@ static struct command *read_head_info(struct sha1_array *shallow) true_flush = 1; break; } - if (!strcmp(certbuf, "push-cert-end\n")) + if (!strcmp(certbuf, "push-cert-end") || + !strcmp(certbuf, "push-cert-end\n")) break; /* end of cert */ strbuf_addstr(&push_cert, certbuf); + if (certbuf[len - 1] != '\n') + strbuf_addch(&push_cert, '\n'); } if (true_flush) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html