Fixes for option parsing

Make sure "git show" always show the header, regardless of whether there
is a diff or not.

Also, make sure "always_show_header" actually works, since generate_header
only tested it in one out of three return paths.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Linus Torvalds 2006-04-16 15:17:23 -07:00 committed by Junio C Hamano
parent cb8f64b4e3
commit 78fff6ebba
2 changed files with 16 additions and 5 deletions

1
git.c
View file

@ -373,6 +373,7 @@ static int cmd_show(int argc, const char **argv, char **envp)
rev.diffopt.recursive = 1;
rev.combine_merges = 1;
rev.dense_combined_merges = 1;
rev.always_show_header = 1;
rev.ignore_merges = 0;
rev.no_walk = 1;
return cmd_log_wc(argc, argv, envp, &rev);

View file

@ -43,7 +43,7 @@ static int diff_root_tree(struct rev_info *opt,
return retval;
}
static const char *generate_header(struct rev_info *opt,
static const char *get_header(struct rev_info *opt,
const unsigned char *commit_sha1,
const unsigned char *parent_sha1,
const struct commit *commit)
@ -75,13 +75,23 @@ static const char *generate_header(struct rev_info *opt,
offset += pretty_print_commit(opt->commit_format, commit, len,
this_header + offset,
sizeof(this_header) - offset, abbrev);
if (opt->always_show_header) {
puts(this_header);
return NULL;
}
return this_header;
}
static const char *generate_header(struct rev_info *opt,
const unsigned char *commit_sha1,
const unsigned char *parent_sha1,
const struct commit *commit)
{
const char *header = get_header(opt, commit_sha1, parent_sha1, commit);
if (opt->always_show_header) {
puts(header);
header = NULL;
}
return header;
}
static int do_diff_combined(struct rev_info *opt, struct commit *commit)
{
unsigned const char *sha1 = commit->object.sha1;