Browse Source

Merge branch 'jk/rev-input-given-fix'

Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and
running "git log --ignore-missing $ZERO_OID" fell back to start
digging from HEAD; it has been corrected to become a no-op, like
"git log --tags=no-tag-matches-this-pattern" does.

* jk/rev-input-given-fix:
  revision: set rev_input_given in handle_revision_arg()
maint
Junio C Hamano 4 years ago
parent
commit
cacab0c856
  1. 16
      revision.c
  2. 10
      t/t4202-log.sh
  3. 5
      t/t6018-rev-list-glob.sh

16
revision.c

@ -2017,7 +2017,7 @@ static int handle_dotdot(const char *arg, @@ -2017,7 +2017,7 @@ static int handle_dotdot(const char *arg,
return ret;
}

int handle_revision_arg(const char *arg_, struct rev_info *revs, int flags, unsigned revarg_opt)
static int handle_revision_arg_1(const char *arg_, struct rev_info *revs, int flags, unsigned revarg_opt)
{
struct object_context oc;
char *mark;
@ -2092,6 +2092,14 @@ int handle_revision_arg(const char *arg_, struct rev_info *revs, int flags, unsi @@ -2092,6 +2092,14 @@ int handle_revision_arg(const char *arg_, struct rev_info *revs, int flags, unsi
return 0;
}

int handle_revision_arg(const char *arg, struct rev_info *revs, int flags, unsigned revarg_opt)
{
int ret = handle_revision_arg_1(arg, revs, flags, revarg_opt);
if (!ret)
revs->rev_input_given = 1;
return ret;
}

static void read_pathspec_from_stdin(struct strbuf *sb,
struct strvec *prune)
{
@ -2703,7 +2711,7 @@ static void NORETURN diagnose_missing_default(const char *def) @@ -2703,7 +2711,7 @@ static void NORETURN diagnose_missing_default(const char *def)
*/
int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct setup_revision_opt *opt)
{
int i, flags, left, seen_dashdash, got_rev_arg = 0, revarg_opt;
int i, flags, left, seen_dashdash, revarg_opt;
struct strvec prune_data = STRVEC_INIT;
const char *submodule = NULL;
int seen_end_of_options = 0;
@ -2792,8 +2800,6 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s @@ -2792,8 +2800,6 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
strvec_pushv(&prune_data, argv + i);
break;
}
else
got_rev_arg = 1;
}

if (prune_data.nr) {
@ -2822,7 +2828,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s @@ -2822,7 +2828,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 && !revs->rev_input_given && !got_rev_arg) {
if (revs->def && !revs->pending.nr && !revs->rev_input_given) {
struct object_id oid;
struct object *object;
struct object_context oc;

10
t/t4202-log.sh

@ -1850,6 +1850,16 @@ test_expect_success 'log does not default to HEAD when rev input is given' ' @@ -1850,6 +1850,16 @@ test_expect_success 'log does not default to HEAD when rev input is given' '
test_must_be_empty actual
'

test_expect_success 'do not default to HEAD with ignored object on cmdline' '
git log --ignore-missing $ZERO_OID >actual &&
test_must_be_empty actual
'

test_expect_success 'do not default to HEAD with ignored object on stdin' '
echo $ZERO_OID | git log --ignore-missing --stdin >actual &&
test_must_be_empty actual
'

test_expect_success 'set up --source tests' '
git checkout --orphan source-a &&
test_commit one &&

5
t/t6018-rev-list-glob.sh

@ -345,6 +345,11 @@ test_expect_success 'rev-list should succeed with empty output with empty glob' @@ -345,6 +345,11 @@ test_expect_success 'rev-list should succeed with empty output with empty glob'
test_must_be_empty actual
'

test_expect_success 'rev-list should succeed with empty output when ignoring missing' '
git rev-list --ignore-missing $ZERO_OID >actual &&
test_must_be_empty actual
'

test_expect_success 'shortlog accepts --glob/--tags/--remotes' '

compare shortlog "subspace/one subspace/two" --branches=subspace &&

Loading…
Cancel
Save