shortlog: handle multi-line subjects like log --pretty=oneline et. al. do
The commit message parser of git shortlog used to treat only the first non-empty line of the commit message as the subject. Other log commands (e.g. --pretty=oneline) show the whole first paragraph instead (unwrapped into a single line). For consistency, this patch borrows format_subject() from pretty.c to make shortlog do the same. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f53bd743ff
commit
cec08717cc
@ -29,6 +29,9 @@ static int compare_by_number(const void *a1, const void *a2)
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char *format_subject(struct strbuf *sb, const char *msg,
|
||||
const char *line_separator);
|
||||
|
||||
static void insert_one_record(struct shortlog *log,
|
||||
const char *author,
|
||||
const char *oneline)
|
||||
@ -41,6 +44,7 @@ static void insert_one_record(struct shortlog *log,
|
||||
size_t len;
|
||||
const char *eol;
|
||||
const char *boemail, *eoemail;
|
||||
struct strbuf subject = STRBUF_INIT;
|
||||
|
||||
boemail = strchr(author, '<');
|
||||
if (!boemail)
|
||||
@ -89,9 +93,8 @@ static void insert_one_record(struct shortlog *log,
|
||||
while (*oneline && isspace(*oneline) && *oneline != '\n')
|
||||
oneline++;
|
||||
len = eol - oneline;
|
||||
while (len && isspace(oneline[len-1]))
|
||||
len--;
|
||||
buffer = xmemdupz(oneline, len);
|
||||
format_subject(&subject, oneline, " ");
|
||||
buffer = strbuf_detach(&subject, NULL);
|
||||
|
||||
if (dot3) {
|
||||
int dot3len = strlen(dot3);
|
||||
|
2
pretty.c
2
pretty.c
@ -486,7 +486,7 @@ static void parse_commit_header(struct format_commit_context *context)
|
||||
context->commit_header_parsed = 1;
|
||||
}
|
||||
|
||||
static const char *format_subject(struct strbuf *sb, const char *msg,
|
||||
const char *format_subject(struct strbuf *sb, const char *msg,
|
||||
const char *line_separator)
|
||||
{
|
||||
int first = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user