Revert "connected: do not sort input revisions"

This reverts commit f45022dc2f,
as this is like breakage in the traversal more likely.  In a
history with 10 single strand of pearls,

   1-->2-->3--...->7-->8-->9-->10

asking "rev-list --unsorted-input 1 10 --not 9 8 7 6 5 4" fails to
paint the bottom 1 uninteresting as the traversal stops, without
completing the propagation of uninteresting bit starting at 4 down
through 3 and 2 to 1.
This commit is contained in:
Junio C Hamano 2021-11-11 12:34:41 -08:00
parent f559d6d45e
commit a7df4f52af
4 changed files with 1 additions and 48 deletions

View File

@ -968,11 +968,6 @@ list of the missing objects. Object IDs are prefixed with a ``?'' character.
objects. objects.
endif::git-rev-list[] endif::git-rev-list[]
--unsorted-input::
Show commits in the order they were given on the command line instead
of sorting them in reverse chronological order by commit time. Cannot
be combined with `--no-walk` or `--no-walk=sorted`.
--no-walk[=(sorted|unsorted)]:: --no-walk[=(sorted|unsorted)]::
Only show the given commits, but do not traverse their ancestors. Only show the given commits, but do not traverse their ancestors.
This has no effect if a range is specified. If the argument This has no effect if a range is specified. If the argument
@ -980,8 +975,7 @@ endif::git-rev-list[]
given on the command line. Otherwise (if `sorted` or no argument given on the command line. Otherwise (if `sorted` or no argument
was given), the commits are shown in reverse chronological order was given), the commits are shown in reverse chronological order
by commit time. by commit time.
Cannot be combined with `--graph`. Cannot be combined with Cannot be combined with `--graph`.
`--unsorted-input` if `sorted` or no argument was given.
--do-walk:: --do-walk::
Overrides a previous `--no-walk`. Overrides a previous `--no-walk`.

View File

@ -106,7 +106,6 @@ no_promisor_pack_found:
if (opt->progress) if (opt->progress)
strvec_pushf(&rev_list.args, "--progress=%s", strvec_pushf(&rev_list.args, "--progress=%s",
_("Checking connectivity")); _("Checking connectivity"));
strvec_push(&rev_list.args, "--unsorted-input");
rev_list.git_cmd = 1; rev_list.git_cmd = 1;
rev_list.env = opt->env; rev_list.env = opt->env;

View File

@ -2254,10 +2254,6 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
} else if (!strcmp(arg, "--author-date-order")) { } else if (!strcmp(arg, "--author-date-order")) {
revs->sort_order = REV_SORT_BY_AUTHOR_DATE; revs->sort_order = REV_SORT_BY_AUTHOR_DATE;
revs->topo_order = 1; revs->topo_order = 1;
} else if (!strcmp(arg, "--unsorted-input")) {
if (revs->no_walk)
die(_("--unsorted-input is incompatible with --no-walk"));
revs->unsorted_input = 1;
} else if (!strcmp(arg, "--early-output")) { } else if (!strcmp(arg, "--early-output")) {
revs->early_output = 100; revs->early_output = 100;
revs->topo_order = 1; revs->topo_order = 1;
@ -2653,13 +2649,8 @@ static int handle_revision_pseudo_opt(const char *submodule,
} else if (!strcmp(arg, "--not")) { } else if (!strcmp(arg, "--not")) {
*flags ^= UNINTERESTING | BOTTOM; *flags ^= UNINTERESTING | BOTTOM;
} else if (!strcmp(arg, "--no-walk")) { } else if (!strcmp(arg, "--no-walk")) {
if (!revs->no_walk && revs->unsorted_input)
die(_("--no-walk is incompatible with --unsorted-input"));
revs->no_walk = 1; revs->no_walk = 1;
} else if (skip_prefix(arg, "--no-walk=", &optarg)) { } else if (skip_prefix(arg, "--no-walk=", &optarg)) {
if (!revs->no_walk && revs->unsorted_input)
die(_("--no-walk is incompatible with --unsorted-input"));
/* /*
* Detached form ("--no-walk X" as opposed to "--no-walk=X") * Detached form ("--no-walk X" as opposed to "--no-walk=X")
* not allowed, since the argument is optional. * not allowed, since the argument is optional.

View File

@ -169,35 +169,4 @@ test_expect_success 'rev-list --count --objects' '
test_line_count = $count actual test_line_count = $count actual
' '
test_expect_success 'rev-list --unsorted-input results in different sorting' '
git rev-list --unsorted-input HEAD HEAD~ >first &&
git rev-list --unsorted-input HEAD~ HEAD >second &&
! test_cmp first second &&
sort first >first.sorted &&
sort second >second.sorted &&
test_cmp first.sorted second.sorted
'
test_expect_success 'rev-list --unsorted-input incompatible with --no-walk' '
cat >expect <<-EOF &&
fatal: --no-walk is incompatible with --unsorted-input
EOF
test_must_fail git rev-list --unsorted-input --no-walk HEAD 2>error &&
test_cmp expect error &&
test_must_fail git rev-list --unsorted-input --no-walk=sorted HEAD 2>error &&
test_cmp expect error &&
test_must_fail git rev-list --unsorted-input --no-walk=unsorted HEAD 2>error &&
test_cmp expect error &&
cat >expect <<-EOF &&
fatal: --unsorted-input is incompatible with --no-walk
EOF
test_must_fail git rev-list --no-walk --unsorted-input HEAD 2>error &&
test_cmp expect error &&
test_must_fail git rev-list --no-walk=sorted --unsorted-input HEAD 2>error &&
test_cmp expect error &&
test_must_fail git rev-list --no-walk=unsorted --unsorted-input HEAD 2>error &&
test_cmp expect error
'
test_done test_done