[PATCH] Tweak git-diff-tree -v output further (take 2).
- From
Junio C Hamano <junkio@cox.net>
- Date
- May 6, 2005, 19:37 UTC
- Message-ID
- <7vbr7ocfj7.fsf@assigned-by-dhcp.cox.net>
(This one is simpler than the previous one I just sent out)
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. It also stops indenting the log message to match what git-export does.
Signed-off-by: Junio C Hamano <junkio@cox.net> ---
diff-tree.c | 22 ++++++++++++---------- 1 files changed, 12 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,11 @@ 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; + memcpy(this_header + offset, line, linelen); + if (hdr && !strncmp(line, "parent ", 7) && + !strncmp(line+7, parent, 40)) + this_header[offset + 6] = '*'; + offset += linelen; } this_header[offset++] = '\n'; this_header[offset] = 0;