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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *format_subject(struct strbuf *sb, const char *msg,
|
||||||
|
const char *line_separator);
|
||||||
|
|
||||||
static void insert_one_record(struct shortlog *log,
|
static void insert_one_record(struct shortlog *log,
|
||||||
const char *author,
|
const char *author,
|
||||||
const char *oneline)
|
const char *oneline)
|
||||||
@ -41,6 +44,7 @@ static void insert_one_record(struct shortlog *log,
|
|||||||
size_t len;
|
size_t len;
|
||||||
const char *eol;
|
const char *eol;
|
||||||
const char *boemail, *eoemail;
|
const char *boemail, *eoemail;
|
||||||
|
struct strbuf subject = STRBUF_INIT;
|
||||||
|
|
||||||
boemail = strchr(author, '<');
|
boemail = strchr(author, '<');
|
||||||
if (!boemail)
|
if (!boemail)
|
||||||
@ -89,9 +93,8 @@ static void insert_one_record(struct shortlog *log,
|
|||||||
while (*oneline && isspace(*oneline) && *oneline != '\n')
|
while (*oneline && isspace(*oneline) && *oneline != '\n')
|
||||||
oneline++;
|
oneline++;
|
||||||
len = eol - oneline;
|
len = eol - oneline;
|
||||||
while (len && isspace(oneline[len-1]))
|
format_subject(&subject, oneline, " ");
|
||||||
len--;
|
buffer = strbuf_detach(&subject, NULL);
|
||||||
buffer = xmemdupz(oneline, len);
|
|
||||||
|
|
||||||
if (dot3) {
|
if (dot3) {
|
||||||
int dot3len = strlen(dot3);
|
int dot3len = strlen(dot3);
|
||||||
|
4
pretty.c
4
pretty.c
@ -486,8 +486,8 @@ static void parse_commit_header(struct format_commit_context *context)
|
|||||||
context->commit_header_parsed = 1;
|
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)
|
const char *line_separator)
|
||||||
{
|
{
|
||||||
int first = 1;
|
int first = 1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user