Skip to content

Commit f6aca0d

Browse files
jrngitster
authored andcommitted
revisions: split out handle_revision_pseudo_opt function
As v1.6.0-rc2~42 (Allow "non-option" revision options in parse_option-enabled commands, 2008-07-31) explains, options handled by setup_revisions fall into two categories: 1. global options like --topo-order handled by parse_revision_opt, which can take detached arguments and can be parsed in advance; 2. pseudo-options that must be parsed in order with their revision counterparts, like --not and --all. The global options are taken care of by handle_revision_opt; the pseudo-options are currently in a deeply indented portion of setup_revisions. Give them their own function for easier reading. The only goal is to make setup_revisions easier to read straight through. No functional change intended. Signed-off-by: Jonathan Nieder <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 6ceb270 commit f6aca0d

File tree

1 file changed

+59
-64
lines changed

1 file changed

+59
-64
lines changed

revision.c

Lines changed: 59 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1526,6 +1526,59 @@ static void append_prune_data(const char ***prune_data, const char **av)
15261526
*prune_data = prune;
15271527
}
15281528

1529+
static int handle_revision_pseudo_opt(const char *submodule,
1530+
struct rev_info *revs,
1531+
int argc, const char **argv, int *flags)
1532+
{
1533+
const char *arg = argv[0];
1534+
const char *optarg;
1535+
int argcount;
1536+
1537+
if (!strcmp(arg, "--all")) {
1538+
handle_refs(submodule, revs, *flags, for_each_ref_submodule);
1539+
handle_refs(submodule, revs, *flags, head_ref_submodule);
1540+
} else if (!strcmp(arg, "--branches")) {
1541+
handle_refs(submodule, revs, *flags, for_each_branch_ref_submodule);
1542+
} else if (!strcmp(arg, "--bisect")) {
1543+
handle_refs(submodule, revs, *flags, for_each_bad_bisect_ref);
1544+
handle_refs(submodule, revs, *flags ^ UNINTERESTING, for_each_good_bisect_ref);
1545+
revs->bisect = 1;
1546+
} else if (!strcmp(arg, "--tags")) {
1547+
handle_refs(submodule, revs, *flags, for_each_tag_ref_submodule);
1548+
} else if (!strcmp(arg, "--remotes")) {
1549+
handle_refs(submodule, revs, *flags, for_each_remote_ref_submodule);
1550+
} else if ((argcount = parse_long_opt("glob", argv, &optarg))) {
1551+
struct all_refs_cb cb;
1552+
init_all_refs_cb(&cb, revs, *flags);
1553+
for_each_glob_ref(handle_one_ref, optarg, &cb);
1554+
return argcount;
1555+
} else if (!prefixcmp(arg, "--branches=")) {
1556+
struct all_refs_cb cb;
1557+
init_all_refs_cb(&cb, revs, *flags);
1558+
for_each_glob_ref_in(handle_one_ref, arg + 11, "refs/heads/", &cb);
1559+
} else if (!prefixcmp(arg, "--tags=")) {
1560+
struct all_refs_cb cb;
1561+
init_all_refs_cb(&cb, revs, *flags);
1562+
for_each_glob_ref_in(handle_one_ref, arg + 7, "refs/tags/", &cb);
1563+
} else if (!prefixcmp(arg, "--remotes=")) {
1564+
struct all_refs_cb cb;
1565+
init_all_refs_cb(&cb, revs, *flags);
1566+
for_each_glob_ref_in(handle_one_ref, arg + 10, "refs/remotes/", &cb);
1567+
} else if (!strcmp(arg, "--reflog")) {
1568+
handle_reflog(revs, *flags);
1569+
} else if (!strcmp(arg, "--not")) {
1570+
*flags ^= UNINTERESTING;
1571+
} else if (!strcmp(arg, "--no-walk")) {
1572+
revs->no_walk = 1;
1573+
} else if (!strcmp(arg, "--do-walk")) {
1574+
revs->no_walk = 0;
1575+
} else {
1576+
return 0;
1577+
}
1578+
1579+
return 1;
1580+
}
1581+
15291582
/*
15301583
* Parse revision information, filling in the "rev_info" structure,
15311584
* and removing the used arguments from the argument list.
@@ -1538,8 +1591,6 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
15381591
int i, flags, left, seen_dashdash, read_from_stdin, got_rev_arg = 0;
15391592
const char **prune_data = NULL;
15401593
const char *submodule = NULL;
1541-
const char *optarg;
1542-
int argcount;
15431594

15441595
if (opt)
15451596
submodule = opt->submodule;
@@ -1566,70 +1617,14 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
15661617
if (*arg == '-') {
15671618
int opts;
15681619

1569-
if (!strcmp(arg, "--all")) {
1570-
handle_refs(submodule, revs, flags, for_each_ref_submodule);
1571-
handle_refs(submodule, revs, flags, head_ref_submodule);
1572-
continue;
1573-
}
1574-
if (!strcmp(arg, "--branches")) {
1575-
handle_refs(submodule, revs, flags, for_each_branch_ref_submodule);
1576-
continue;
1577-
}
1578-
if (!strcmp(arg, "--bisect")) {
1579-
handle_refs(submodule, revs, flags, for_each_bad_bisect_ref);
1580-
handle_refs(submodule, revs, flags ^ UNINTERESTING, for_each_good_bisect_ref);
1581-
revs->bisect = 1;
1582-
continue;
1583-
}
1584-
if (!strcmp(arg, "--tags")) {
1585-
handle_refs(submodule, revs, flags, for_each_tag_ref_submodule);
1586-
continue;
1587-
}
1588-
if (!strcmp(arg, "--remotes")) {
1589-
handle_refs(submodule, revs, flags, for_each_remote_ref_submodule);
1590-
continue;
1591-
}
1592-
if ((argcount = parse_long_opt("glob", argv + i, &optarg))) {
1593-
struct all_refs_cb cb;
1594-
i += argcount - 1;
1595-
init_all_refs_cb(&cb, revs, flags);
1596-
for_each_glob_ref(handle_one_ref, optarg, &cb);
1597-
continue;
1598-
}
1599-
if (!prefixcmp(arg, "--branches=")) {
1600-
struct all_refs_cb cb;
1601-
init_all_refs_cb(&cb, revs, flags);
1602-
for_each_glob_ref_in(handle_one_ref, arg + 11, "refs/heads/", &cb);
1603-
continue;
1604-
}
1605-
if (!prefixcmp(arg, "--tags=")) {
1606-
struct all_refs_cb cb;
1607-
init_all_refs_cb(&cb, revs, flags);
1608-
for_each_glob_ref_in(handle_one_ref, arg + 7, "refs/tags/", &cb);
1609-
continue;
1610-
}
1611-
if (!prefixcmp(arg, "--remotes=")) {
1612-
struct all_refs_cb cb;
1613-
init_all_refs_cb(&cb, revs, flags);
1614-
for_each_glob_ref_in(handle_one_ref, arg + 10, "refs/remotes/", &cb);
1615-
continue;
1616-
}
1617-
if (!strcmp(arg, "--reflog")) {
1618-
handle_reflog(revs, flags);
1619-
continue;
1620-
}
1621-
if (!strcmp(arg, "--not")) {
1622-
flags ^= UNINTERESTING;
1623-
continue;
1624-
}
1625-
if (!strcmp(arg, "--no-walk")) {
1626-
revs->no_walk = 1;
1627-
continue;
1628-
}
1629-
if (!strcmp(arg, "--do-walk")) {
1630-
revs->no_walk = 0;
1620+
opts = handle_revision_pseudo_opt(submodule,
1621+
revs, argc - i, argv + i,
1622+
&flags);
1623+
if (opts > 0) {
1624+
i += opts - 1;
16311625
continue;
16321626
}
1627+
16331628
if (!strcmp(arg, "--stdin")) {
16341629
if (revs->disable_stdin) {
16351630
argv[left++] = arg;

0 commit comments

Comments
 (0)