]> Kevux Git Server - rit/commitdiff
don't use default revision if a rev was specified
authorDave Olszewski <cxreg@pobox.com>
Sat, 13 Mar 2010 22:47:05 +0000 (14:47 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sun, 14 Mar 2010 05:23:43 +0000 (21:23 -0800)
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>
revision.c
t/t1411-reflog-show.sh

index 29721ec..490b484 100644 (file)
@@ -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;
index c18ed8e..ba25ff3 100755 (executable)
@@ -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