[PATCH] Tweak git-diff-tree -v output further.
- From
Junio C Hamano <junkio@cox.net>
- Date
- May 6, 2005, 19:27 UTC
- Message-ID
- <7vd5s4cfzq.fsf@assigned-by-dhcp.cox.net>
The first hunk of this is a pure bugfix---it guards us against a commit message that does not end with a newline.
This adds the full header information to git-diff-tree -v output in addition to the log message it already produces.
Maybe we want to stop indenting so that it matches what git-export produces better.
Signed-off-by: Junio C Hamano <junkio@cox.net> ---
diff-tree.c | 30 ++++++++++++++++++++---------- 1 files changed, 20 insertions(+), 10 deletions(-)
# - linus-mirror: diff-tree: add "verbose header" mode # + (working tree)
--- a/diff-tree.c +++ b/diff-tree.c @@ -278,7 +278,7 @@ static int get_one_line(const char *msg, while (len--) { ret++; - if (*msg++ == '\n') + if (!*msg || *msg++ == '\n') break; } return ret; @@ -287,12 +287,14 @@ static int get_one_line(const char *msg, static char *generate_header(const char *commit, const char *parent, const char *msg, unsigned long len) { static char this_header[1000]; - int offset; - offset = sprintf(this_header, "%s%s (from %s)\n", header_prefix, commit, parent); - if (verbose_header) { + if (!verbose_header) + sprintf(this_header, "%s%s (from %s)\n", header_prefix, + commit, parent); + else { + int offset; int hdr = 1; - + offset = sprintf(this_header, "Id: %s\n", commit); for (;;) { const char *line = msg; int linelen = get_one_line(msg, len); @@ -306,11 +308,19 @@ static char *generate_header(const char len -= linelen; if (linelen == 1) hdr = 0; - if (hdr) - continue; - memset(this_header + offset, ' ', 4); - memcpy(this_header + offset + 4, line, linelen); - offset += linelen + 4; + if (hdr) { + memcpy(this_header + offset, line, linelen); + if (!strncmp(line, "parent ", 7) && + !strncmp(line+7, parent, 40)) + this_header[offset + 6] = '*'; + offset += linelen; + + } + else { + memset(this_header + offset, ' ', 4); + memcpy(this_header + offset + 4, line, linelen); + offset += linelen + 4; + } } this_header[offset++] = '\n'; this_header[offset] = 0;