Skip to content

Commit

Permalink
shortlog: handle multi-line subjects like log --pretty=oneline et. al…
Browse files Browse the repository at this point in the history
…. 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>
  • Loading branch information
René Scharfe authored and Junio C Hamano committed Jan 7, 2009
1 parent f53bd74 commit cec0871
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
9 changes: 6 additions & 3 deletions builtin-shortlog.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions pretty.c
Original file line number Diff line number Diff line change
Expand Up @@ -486,8 +486,8 @@ 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 *line_separator)
const char *format_subject(struct strbuf *sb, const char *msg,
const char *line_separator)
{
int first = 1;

Expand Down

0 comments on commit cec0871

Please sign in to comment.