Introduce --pretty=oneline format.
This introduces --pretty=oneline to git-rev-tree and git-rev-list commands to show only the first line of the commit message, without frills. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
62033318ab
commit
d87449c553
33
commit.c
33
commit.c
@ -33,6 +33,8 @@ enum cmit_fmt get_commit_format(const char *arg)
|
||||
return CMIT_FMT_SHORT;
|
||||
if (!strcmp(arg, "=full"))
|
||||
return CMIT_FMT_FULL;
|
||||
if (!strcmp(arg, "=oneline"))
|
||||
return CMIT_FMT_ONELINE;
|
||||
die("invalid --pretty format");
|
||||
}
|
||||
|
||||
@ -350,6 +352,8 @@ static int add_user_info(const char *what, enum cmit_fmt fmt, char *buf, const c
|
||||
unsigned long time;
|
||||
int tz, ret;
|
||||
|
||||
if (fmt == CMIT_FMT_ONELINE)
|
||||
return 0;
|
||||
date = strchr(line, '>');
|
||||
if (!date)
|
||||
return 0;
|
||||
@ -373,6 +377,9 @@ static int is_empty_line(const char *line, int len)
|
||||
static int add_parent_info(enum cmit_fmt fmt, char *buf, const char *line, int parents)
|
||||
{
|
||||
int offset = 0;
|
||||
|
||||
if (fmt == CMIT_FMT_ONELINE)
|
||||
return offset;
|
||||
switch (parents) {
|
||||
case 1:
|
||||
break;
|
||||
@ -393,6 +400,7 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const char *msg, unsigned l
|
||||
int hdr = 1, body = 0;
|
||||
unsigned long offset = 0;
|
||||
int parents = 0;
|
||||
int indent = (fmt == CMIT_FMT_ONELINE) ? 0 : 4;
|
||||
|
||||
for (;;) {
|
||||
const char *line = msg;
|
||||
@ -416,7 +424,8 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const char *msg, unsigned l
|
||||
if (hdr) {
|
||||
if (linelen == 1) {
|
||||
hdr = 0;
|
||||
buf[offset++] = '\n';
|
||||
if (fmt != CMIT_FMT_ONELINE)
|
||||
buf[offset++] = '\n';
|
||||
continue;
|
||||
}
|
||||
if (fmt == CMIT_FMT_RAW) {
|
||||
@ -446,13 +455,23 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const char *msg, unsigned l
|
||||
} else {
|
||||
body = 1;
|
||||
}
|
||||
memset(buf + offset, ' ', 4);
|
||||
memcpy(buf + offset + 4, line, linelen);
|
||||
offset += linelen + 4;
|
||||
|
||||
memset(buf + offset, ' ', indent);
|
||||
memcpy(buf + offset + indent, line, linelen);
|
||||
offset += linelen + indent;
|
||||
if (fmt == CMIT_FMT_ONELINE)
|
||||
break;
|
||||
}
|
||||
if (fmt == CMIT_FMT_ONELINE) {
|
||||
/* We do not want the terminating newline */
|
||||
if (buf[offset - 1] == '\n')
|
||||
offset--;
|
||||
}
|
||||
else {
|
||||
/* Make sure there is an EOLN */
|
||||
if (buf[offset - 1] != '\n')
|
||||
buf[offset++] = '\n';
|
||||
}
|
||||
/* Make sure there is an EOLN */
|
||||
if (buf[offset - 1] != '\n')
|
||||
buf[offset++] = '\n';
|
||||
buf[offset] = '\0';
|
||||
return offset;
|
||||
}
|
||||
|
1
commit.h
1
commit.h
@ -40,6 +40,7 @@ enum cmit_fmt {
|
||||
CMIT_FMT_DEFAULT = CMIT_FMT_MEDIUM,
|
||||
CMIT_FMT_SHORT,
|
||||
CMIT_FMT_FULL,
|
||||
CMIT_FMT_ONELINE,
|
||||
};
|
||||
|
||||
extern enum cmit_fmt get_commit_format(const char *arg);
|
||||
|
11
rev-list.c
11
rev-list.c
@ -63,7 +63,11 @@ static void show_commit(struct commit *commit)
|
||||
parents = parents->next;
|
||||
}
|
||||
}
|
||||
putchar('\n');
|
||||
if (commit_format == CMIT_FMT_ONELINE)
|
||||
putchar(' ');
|
||||
else
|
||||
putchar('\n');
|
||||
|
||||
if (verbose_header) {
|
||||
static char pretty_header[16384];
|
||||
pretty_print_commit(commit_format, commit->buffer, ~0, pretty_header, sizeof(pretty_header));
|
||||
@ -503,7 +507,10 @@ int main(int argc, char **argv)
|
||||
commit_format = get_commit_format(arg+8);
|
||||
verbose_header = 1;
|
||||
hdr_termination = '\n';
|
||||
prefix = "commit ";
|
||||
if (commit_format == CMIT_FMT_ONELINE)
|
||||
prefix = "";
|
||||
else
|
||||
prefix = "commit ";
|
||||
continue;
|
||||
}
|
||||
if (!strncmp(arg, "--no-merges", 11)) {
|
||||
|
Loading…
Reference in New Issue
Block a user