summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2017-08-02 18:30:19 -0400
committerJunio C Hamano <gitster@pobox.com>2017-08-02 15:45:22 -0700
commit5d34d1ac06fe70fc0a7a8f35ddf9e7690114dda7 (patch)
treecaa5584f37f25395ae4121fe660cc3e9a290db56
parent0159ba3226f75fbd6d3dc0e92c325cb11f2f0699 (diff)
downloadgit-jk/rev-list-empty-input.tar.gz
revision: do not fallback to default when rev_input_given is setjk/rev-list-empty-input
If revs->def is set (as it is in "git log") and there are no pending objects after parsing the user's input, then we show whatever is in "def". But if the user _did_ ask for some input that just happened to be empty (e.g., "--glob" that does not match anything), showing the default revision is confusing. We should just show nothing, as that is what the user's request yielded. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--revision.c2
-rwxr-xr-xt/t4202-log.sh6
2 files changed, 7 insertions, 1 deletions
diff --git a/revision.c b/revision.c
index 08d5806b8a..ba2b166cd6 100644
--- a/revision.c
+++ b/revision.c
@@ -2316,7 +2316,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
opt->tweak(revs, opt);
if (revs->show_merge)
prepare_show_merge(revs);
- if (revs->def && !revs->pending.nr && !got_rev_arg) {
+ if (revs->def && !revs->pending.nr && !revs->rev_input_given && !got_rev_arg) {
struct object_id oid;
struct object *object;
struct object_context oc;
diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index 3f3531f0a4..36d120c969 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -1523,6 +1523,12 @@ test_expect_success 'log diagnoses bogus HEAD' '
test_i18ngrep broken stderr
'
+test_expect_success 'log does not default to HEAD when rev input is given' '
+ >expect &&
+ git log --branches=does-not-exist >actual &&
+ test_cmp expect actual
+'
+
test_expect_success 'set up --source tests' '
git checkout --orphan source-a &&
test_commit one &&