don't use default revision if a rev was specified
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>
This commit is contained in:
parent
8ca7880356
commit
8fcaca3ff2
@ -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 "--" */
|
||||
@ -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)
|
||||
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user