From: Junio C Hamano Date: Thu, 13 Sep 2012 17:23:13 GMT Subject: Re: [PATCH v2] cherry-pick: don't forget -s on failure Message-ID: <7v8vcdalby.fsf@alter.siamese.dyndns.org> In-Reply-To: <20120913073324.GA14383@suse.cz> Miklos Vajna writes: > +void append_signoff(struct strbuf *msgbuf, int ignore_footer) > +{ > + struct strbuf sob = STRBUF_INIT; > + int i; > + > + strbuf_addstr(&sob, sign_off_header); > + strbuf_addstr(&sob, fmt_name(getenv("GIT_COMMITTER_NAME"), > + getenv("GIT_COMMITTER_EMAIL"))); > + strbuf_addch(&sob, '\n'); > + for (i = msgbuf->len - 1 - ignore_footer; i > 0 && msgbuf->buf[i - 1] != '\n'; i--) > + ; /* do nothing */ > + if (prefixcmp(msgbuf->buf + i, sob.buf)) { > + if (!i || !ends_rfc2822_footer(msgbuf)) > + strbuf_addch(msgbuf, '\n'); > + strbuf_addbuf(msgbuf, &sob); > + } > + strbuf_release(&sob); > +} Hrm, what is this thing trying to do? It does start scanning from the end (ignoring the "Conflicts:" thing) to see who the last person that signed it off was, but once it decides that it needs to add a new sign-off, it still adds it at the very end anyway.