SZEDER Gábor <szeder@xxxxxxxxxx> writes: > The diff and submodule shortlog appended to the commit message template > by 'git commit --verbose' are not stripped when the commit message > contains an indented scissors line. > > When cleaning up a commit message with 'git commit --verbose' or > '--cleanup=scissors' the code is careful and triggers only on a pure > scissors line, i.e. a line containing nothing but a comment character, a > space, and the scissors cut. This is good, because people can embed > scissor lines in the commit message while using 'git commit --verbose', > and the text they write after their indented scissors line doesn't get > deleted. > > While doing so, however, the cleanup function only looks at the first > line matching the scissors pattern and if it doesn't start at the > beginning of the line, then the function just returns without performing > any cleanup. This is bad, because a "real" scissors line added by 'git > commit --verbose' might follow, and in that case the diff and submodule > shortlog get included in the commit message. Yikes; this is not just "bad" but simply "wrong". Thanks for noticing. > void wt_status_truncate_message_at_cut_line(struct strbuf *buf) > { > - const char *p; > + const char *p = buf->buf; > struct strbuf pattern = STRBUF_INIT; > > strbuf_addf(&pattern, "%c %s", comment_line_char, cut_line); > - p = strstr(buf->buf, pattern.buf); > - if (p && (p == buf->buf || p[-1] == '\n')) > - strbuf_setlen(buf, p - buf->buf); > + while ((p = strstr(p, pattern.buf))) { > + if (p == buf->buf || p[-1] == '\n') { > + strbuf_setlen(buf, p - buf->buf); > + break; > + } > + p++; > + } I however wonder if we should make strstr() do more work for us. strbuf_addf(&pattern, "\n%c %s", comment_line_char, cut_line); if (starts_with(buf->buf, pattern.buf + 1)) strbuf_setlen(buf, 0); else if ((p = strstr(buf->buf, pattern.buf)) != NULL) strbuf_setlen(buf, p - buf->buf + 1); strbuf_release(&pattern); perhaps? -- 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