Skip to content

Commit

Permalink
don't use default revision if a rev was specified
Browse files Browse the repository at this point in the history
If a revision is specified, it happens not to have any commits, don't
use the default revision.  By doing so, surprising and undesired
behavior can happen, such as showing the reflog for HEAD when a branch
was specified.

[jc: squashed a test from René]

Signed-off-by: Dave Olszewski <cxreg@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Dave Olszewski authored and Junio C Hamano committed Mar 14, 2010
1 parent 8ca7880 commit 8fcaca3
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
6 changes: 4 additions & 2 deletions revision.c
Original file line number Diff line number Diff line change
Expand Up @@ -1334,7 +1334,7 @@ static void append_prune_data(const char ***prune_data, const char **av)
*/
int setup_revisions(int argc, const char **argv, struct rev_info *revs, const char *def)
{
int i, flags, left, seen_dashdash, read_from_stdin;
int i, flags, left, seen_dashdash, read_from_stdin, got_rev_arg = 0;
const char **prune_data = NULL;

/* First, search for "--" */
Expand Down Expand Up @@ -1460,6 +1460,8 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
append_prune_data(&prune_data, argv + i);
break;
}
else
got_rev_arg = 1;
}

if (prune_data)
Expand All @@ -1469,7 +1471,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
revs->def = def;
if (revs->show_merge)
prepare_show_merge(revs);
if (revs->def && !revs->pending.nr) {
if (revs->def && !revs->pending.nr && !got_rev_arg) {
unsigned char sha1[20];
struct object *object;
unsigned mode;
Expand Down
9 changes: 9 additions & 0 deletions t/t1411-reflog-show.sh
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,13 @@ test_expect_success 'using --date= shows reflog date (oneline)' '
test_cmp expect actual
'

: >expect
test_expect_success 'empty reflog file' '
git branch empty &&
: >.git/logs/refs/heads/empty &&
git log -g empty >actual &&
test_cmp expect actual
'

test_done

0 comments on commit 8fcaca3

Please sign in to comment.