Make git-diff-tree --pretty
PATCH 1/1 Make git-diff-tree --pretty
Make git-diff-tree --pretty[=[short|medium|raw]] work as in git-rev-list.
Also suppress duplicate newline in 'git-diff-tree -s' output.
Signed-off-by Dan Holmsand <[email protected]>
---
diff-tree.c | 22 +++++++++++++++++++++- 1 files changed, 21 insertions(+), 1 deletions(-)
diff-tree.c +21 -1
@@ -323,7 +323,8 @@ static char *generate_header(const char offset =sprintf (this_header,"%s%s (from %s)\n" , header_prefix, commit, parent);if (verbose_header) { offset +=pretty_print_commit (commit_format, msg, len, this_header + offset,sizeof (this_header) - offset); - this_header[offset++] ='\n' ; +if (diff_output_format !=DIFF_FORMAT_NO_OUTPUT ) + this_header[offset++] ='\n' ; this_header[offset++] =0 ; }
@@ -400,6 +401,19 @@ static int diff_tree_stdin(char *line)static char *diff_tree_usage ="git-diff-tree [-p] [-r] [-z] [--stdin] [-M] [-C] [-R] [-S<string>] [-O<orderfile>] [-m] [-s] [-v] [-t] <tree-ish> <tree-ish>" ; +static enum cmit_fmt get_commit_format (const char *arg) +{ +if (!*arg) +return CMIT_FMT_DEFAULT ; +if (!strcmp (arg,"=raw" )) +return CMIT_FMT_RAW ; +if (!strcmp (arg,"=medium" )) +return CMIT_FMT_MEDIUM ; +if (!strcmp (arg,"=short" )) +return CMIT_FMT_SHORT ; +usage (diff_tree_usage); +} +int main (int argc,const char **argv) {int nr_sha1;
@@ -492,6 +506,12 @@ int main(int argc, const char **argv) header_prefix ="diff-tree " ;continue ; } +if (!strncmp (arg,"--pretty" ,8 )) { + commit_format =get_commit_format (arg+8 ); + verbose_header =1 ; + header_prefix ="diff-tree " ; +continue ; + }if (!strcmp (arg,"--stdin" )) { read_stdin =1 ;continue ;