Skip to content

Commit

Permalink
Merge branch 'mg/reflog-with-options'
Browse files Browse the repository at this point in the history
* mg/reflog-with-options:
  reflog: fix overriding of command line options
  t/t1411: test reflog with formats
  builtin/log.c: separate default and setup of cmd_log_init()
  • Loading branch information
Junio C Hamano committed Apr 27, 2011
2 parents 1de0746 + 4b56cf5 commit 95fd6e2
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 13 deletions.
30 changes: 17 additions & 13 deletions builtin/log.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,8 @@ static int parse_decoration_style(const char *var, const char *value)
return -1;
}

static void cmd_log_init(int argc, const char **argv, const char *prefix,
struct rev_info *rev, struct setup_revision_opt *opt)
static void cmd_log_init_defaults(struct rev_info *rev)
{
int i;
int decoration_given = 0;
struct userformat_want w;

rev->abbrev = DEFAULT_ABBREV;
rev->commit_format = CMIT_FMT_DEFAULT;
if (fmt_pretty)
Expand All @@ -68,7 +63,14 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,

if (default_date_mode)
rev->date_mode = parse_date_format(default_date_mode);
}

static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
struct rev_info *rev, struct setup_revision_opt *opt)
{
int i;
int decoration_given = 0;
struct userformat_want w;
/*
* Check for -h before setup_revisions(), or "git log -h" will
* fail when run without a git directory.
Expand Down Expand Up @@ -128,6 +130,13 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
setup_pager();
}

static void cmd_log_init(int argc, const char **argv, const char *prefix,
struct rev_info *rev, struct setup_revision_opt *opt)
{
cmd_log_init_defaults(rev);
cmd_log_init_finish(argc, argv, prefix, rev, opt);
}

/*
* This gives a rough estimate for how many commits we
* will print out in the list.
Expand Down Expand Up @@ -486,16 +495,11 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix)
rev.verbose_header = 1;
memset(&opt, 0, sizeof(opt));
opt.def = "HEAD";
cmd_log_init(argc, argv, prefix, &rev, &opt);

/*
* This means that we override whatever commit format the user gave
* on the cmd line. Sad, but cmd_log_init() currently doesn't
* allow us to set a different default.
*/
cmd_log_init_defaults(&rev);
rev.commit_format = CMIT_FMT_ONELINE;
rev.use_terminator = 1;
rev.always_show_header = 1;
cmd_log_init_finish(argc, argv, prefix, &rev, &opt);

return cmd_log_walk(&rev);
}
Expand Down
18 changes: 18 additions & 0 deletions t/t1411-reflog-show.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,24 @@ test_expect_success 'oneline reflog format' '
test_cmp expect actual
'

test_expect_success 'reflog default format' '
git reflog -1 >actual &&
test_cmp expect actual
'

cat >expect <<'EOF'
commit e46513e
Reflog: HEAD@{0} (C O Mitter <committer@example.com>)
Reflog message: commit (initial): one
Author: A U Thor <author@example.com>
one
EOF
test_expect_success 'override reflog default format' '
git reflog --format=short -1 >actual &&
test_cmp expect actual
'

cat >expect <<'EOF'
Reflog: HEAD@{Thu Apr 7 15:13:13 2005 -0700} (C O Mitter <committer@example.com>)
Reflog message: commit (initial): one
Expand Down

0 comments on commit 95fd6e2

Please sign in to comment.