Skip to content

Commit cdc034a

Browse files
pks-tgitster
authored andcommitted
fetch: move option related variables into main function
The options of git-fetch(1) which we pass to `parse_options()` are declared globally in `builtin/fetch.c`. This means we're forced to use global variables for all the options, which is more likely to cause confusion than explicitly passing state around. Refactor the code to move the options into `cmd_fetch()`. Move variables that were previously forced to be declared globally and which are only used by `cmd_fetch()` into function-local scope. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 58afbe8 commit cdc034a

File tree

1 file changed

+100
-97
lines changed

1 file changed

+100
-97
lines changed

builtin/fetch.c

Lines changed: 100 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,12 @@ static int fetch_prune_tags_config = -1; /* unspecified */
7777
static int prune_tags = -1; /* unspecified */
7878
#define PRUNE_TAGS_BY_DEFAULT 0 /* do we prune tags by default? */
7979

80-
static int all, append, dry_run, force, keep, multiple, update_head_ok;
80+
static int append, dry_run, force, keep, update_head_ok;
8181
static int write_fetch_head = 1;
8282
static int verbosity, deepen_relative, set_upstream, refetch;
8383
static int progress = -1;
84-
static int enable_auto_gc = 1;
85-
static int tags = TAGS_DEFAULT, unshallow, update_shallow, deepen;
86-
static int max_jobs = -1, submodule_fetch_jobs_config = -1;
84+
static int tags = TAGS_DEFAULT, update_shallow, deepen;
85+
static int submodule_fetch_jobs_config = -1;
8786
static int fetch_parallel_config = 1;
8887
static int atomic_fetch;
8988
static enum transport_family family;
@@ -94,17 +93,11 @@ static struct string_list deepen_not = STRING_LIST_INIT_NODUP;
9493
static struct strbuf default_rla = STRBUF_INIT;
9594
static struct transport *gtransport;
9695
static struct transport *gsecondary;
97-
static const char *submodule_prefix = "";
9896
static int recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
99-
static int recurse_submodules_cli = RECURSE_SUBMODULES_DEFAULT;
100-
static int recurse_submodules_default = RECURSE_SUBMODULES_ON_DEMAND;
10197
static struct refspec refmap = REFSPEC_INIT_FETCH;
10298
static struct list_objects_filter_options filter_options = LIST_OBJECTS_FILTER_INIT;
10399
static struct string_list server_options = STRING_LIST_INIT_DUP;
104100
static struct string_list negotiation_tip = STRING_LIST_INIT_NODUP;
105-
static int fetch_write_commit_graph = -1;
106-
static int stdin_refspecs = 0;
107-
static int negotiate_only;
108101

109102
struct fetch_config {
110103
enum display_format display_format;
@@ -180,92 +173,6 @@ static int parse_refmap_arg(const struct option *opt, const char *arg, int unset
180173
return 0;
181174
}
182175

183-
static struct option builtin_fetch_options[] = {
184-
OPT__VERBOSITY(&verbosity),
185-
OPT_BOOL(0, "all", &all,
186-
N_("fetch from all remotes")),
187-
OPT_BOOL(0, "set-upstream", &set_upstream,
188-
N_("set upstream for git pull/fetch")),
189-
OPT_BOOL('a', "append", &append,
190-
N_("append to .git/FETCH_HEAD instead of overwriting")),
191-
OPT_BOOL(0, "atomic", &atomic_fetch,
192-
N_("use atomic transaction to update references")),
193-
OPT_STRING(0, "upload-pack", &upload_pack, N_("path"),
194-
N_("path to upload pack on remote end")),
195-
OPT__FORCE(&force, N_("force overwrite of local reference"), 0),
196-
OPT_BOOL('m', "multiple", &multiple,
197-
N_("fetch from multiple remotes")),
198-
OPT_SET_INT('t', "tags", &tags,
199-
N_("fetch all tags and associated objects"), TAGS_SET),
200-
OPT_SET_INT('n', NULL, &tags,
201-
N_("do not fetch all tags (--no-tags)"), TAGS_UNSET),
202-
OPT_INTEGER('j', "jobs", &max_jobs,
203-
N_("number of submodules fetched in parallel")),
204-
OPT_BOOL(0, "prefetch", &prefetch,
205-
N_("modify the refspec to place all refs within refs/prefetch/")),
206-
OPT_BOOL('p', "prune", &prune,
207-
N_("prune remote-tracking branches no longer on remote")),
208-
OPT_BOOL('P', "prune-tags", &prune_tags,
209-
N_("prune local tags no longer on remote and clobber changed tags")),
210-
OPT_CALLBACK_F(0, "recurse-submodules", &recurse_submodules_cli, N_("on-demand"),
211-
N_("control recursive fetching of submodules"),
212-
PARSE_OPT_OPTARG, option_fetch_parse_recurse_submodules),
213-
OPT_BOOL(0, "dry-run", &dry_run,
214-
N_("dry run")),
215-
OPT_BOOL(0, "write-fetch-head", &write_fetch_head,
216-
N_("write fetched references to the FETCH_HEAD file")),
217-
OPT_BOOL('k', "keep", &keep, N_("keep downloaded pack")),
218-
OPT_BOOL('u', "update-head-ok", &update_head_ok,
219-
N_("allow updating of HEAD ref")),
220-
OPT_BOOL(0, "progress", &progress, N_("force progress reporting")),
221-
OPT_STRING(0, "depth", &depth, N_("depth"),
222-
N_("deepen history of shallow clone")),
223-
OPT_STRING(0, "shallow-since", &deepen_since, N_("time"),
224-
N_("deepen history of shallow repository based on time")),
225-
OPT_STRING_LIST(0, "shallow-exclude", &deepen_not, N_("revision"),
226-
N_("deepen history of shallow clone, excluding rev")),
227-
OPT_INTEGER(0, "deepen", &deepen_relative,
228-
N_("deepen history of shallow clone")),
229-
OPT_SET_INT_F(0, "unshallow", &unshallow,
230-
N_("convert to a complete repository"),
231-
1, PARSE_OPT_NONEG),
232-
OPT_SET_INT_F(0, "refetch", &refetch,
233-
N_("re-fetch without negotiating common commits"),
234-
1, PARSE_OPT_NONEG),
235-
{ OPTION_STRING, 0, "submodule-prefix", &submodule_prefix, N_("dir"),
236-
N_("prepend this to submodule path output"), PARSE_OPT_HIDDEN },
237-
OPT_CALLBACK_F(0, "recurse-submodules-default",
238-
&recurse_submodules_default, N_("on-demand"),
239-
N_("default for recursive fetching of submodules "
240-
"(lower priority than config files)"),
241-
PARSE_OPT_HIDDEN, option_fetch_parse_recurse_submodules),
242-
OPT_BOOL(0, "update-shallow", &update_shallow,
243-
N_("accept refs that update .git/shallow")),
244-
OPT_CALLBACK_F(0, "refmap", NULL, N_("refmap"),
245-
N_("specify fetch refmap"), PARSE_OPT_NONEG, parse_refmap_arg),
246-
OPT_STRING_LIST('o', "server-option", &server_options, N_("server-specific"), N_("option to transmit")),
247-
OPT_SET_INT('4', "ipv4", &family, N_("use IPv4 addresses only"),
248-
TRANSPORT_FAMILY_IPV4),
249-
OPT_SET_INT('6', "ipv6", &family, N_("use IPv6 addresses only"),
250-
TRANSPORT_FAMILY_IPV6),
251-
OPT_STRING_LIST(0, "negotiation-tip", &negotiation_tip, N_("revision"),
252-
N_("report that we have only objects reachable from this object")),
253-
OPT_BOOL(0, "negotiate-only", &negotiate_only,
254-
N_("do not fetch a packfile; instead, print ancestors of negotiation tips")),
255-
OPT_PARSE_LIST_OBJECTS_FILTER(&filter_options),
256-
OPT_BOOL(0, "auto-maintenance", &enable_auto_gc,
257-
N_("run 'maintenance --auto' after fetching")),
258-
OPT_BOOL(0, "auto-gc", &enable_auto_gc,
259-
N_("run 'maintenance --auto' after fetching")),
260-
OPT_BOOL(0, "show-forced-updates", &fetch_show_forced_updates,
261-
N_("check for forced-updates on all updated branches")),
262-
OPT_BOOL(0, "write-commit-graph", &fetch_write_commit_graph,
263-
N_("write the commit-graph after fetching")),
264-
OPT_BOOL(0, "stdin", &stdin_refspecs,
265-
N_("accept refspecs from stdin")),
266-
OPT_END()
267-
};
268-
269176
static void unlock_pack(unsigned int flags)
270177
{
271178
if (gtransport)
@@ -2167,12 +2074,108 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
21672074
struct fetch_config config = {
21682075
.display_format = DISPLAY_FORMAT_FULL,
21692076
};
2170-
int i;
2077+
const char *submodule_prefix = "";
21712078
const char *bundle_uri;
21722079
struct string_list list = STRING_LIST_INIT_DUP;
21732080
struct remote *remote = NULL;
2081+
int all = 0, multiple = 0;
21742082
int result = 0;
21752083
int prune_tags_ok = 1;
2084+
int enable_auto_gc = 1;
2085+
int unshallow = 0;
2086+
int max_jobs = -1;
2087+
int recurse_submodules_cli = RECURSE_SUBMODULES_DEFAULT;
2088+
int recurse_submodules_default = RECURSE_SUBMODULES_ON_DEMAND;
2089+
int fetch_write_commit_graph = -1;
2090+
int stdin_refspecs = 0;
2091+
int negotiate_only = 0;
2092+
int i;
2093+
2094+
struct option builtin_fetch_options[] = {
2095+
OPT__VERBOSITY(&verbosity),
2096+
OPT_BOOL(0, "all", &all,
2097+
N_("fetch from all remotes")),
2098+
OPT_BOOL(0, "set-upstream", &set_upstream,
2099+
N_("set upstream for git pull/fetch")),
2100+
OPT_BOOL('a', "append", &append,
2101+
N_("append to .git/FETCH_HEAD instead of overwriting")),
2102+
OPT_BOOL(0, "atomic", &atomic_fetch,
2103+
N_("use atomic transaction to update references")),
2104+
OPT_STRING(0, "upload-pack", &upload_pack, N_("path"),
2105+
N_("path to upload pack on remote end")),
2106+
OPT__FORCE(&force, N_("force overwrite of local reference"), 0),
2107+
OPT_BOOL('m', "multiple", &multiple,
2108+
N_("fetch from multiple remotes")),
2109+
OPT_SET_INT('t', "tags", &tags,
2110+
N_("fetch all tags and associated objects"), TAGS_SET),
2111+
OPT_SET_INT('n', NULL, &tags,
2112+
N_("do not fetch all tags (--no-tags)"), TAGS_UNSET),
2113+
OPT_INTEGER('j', "jobs", &max_jobs,
2114+
N_("number of submodules fetched in parallel")),
2115+
OPT_BOOL(0, "prefetch", &prefetch,
2116+
N_("modify the refspec to place all refs within refs/prefetch/")),
2117+
OPT_BOOL('p', "prune", &prune,
2118+
N_("prune remote-tracking branches no longer on remote")),
2119+
OPT_BOOL('P', "prune-tags", &prune_tags,
2120+
N_("prune local tags no longer on remote and clobber changed tags")),
2121+
OPT_CALLBACK_F(0, "recurse-submodules", &recurse_submodules_cli, N_("on-demand"),
2122+
N_("control recursive fetching of submodules"),
2123+
PARSE_OPT_OPTARG, option_fetch_parse_recurse_submodules),
2124+
OPT_BOOL(0, "dry-run", &dry_run,
2125+
N_("dry run")),
2126+
OPT_BOOL(0, "write-fetch-head", &write_fetch_head,
2127+
N_("write fetched references to the FETCH_HEAD file")),
2128+
OPT_BOOL('k', "keep", &keep, N_("keep downloaded pack")),
2129+
OPT_BOOL('u', "update-head-ok", &update_head_ok,
2130+
N_("allow updating of HEAD ref")),
2131+
OPT_BOOL(0, "progress", &progress, N_("force progress reporting")),
2132+
OPT_STRING(0, "depth", &depth, N_("depth"),
2133+
N_("deepen history of shallow clone")),
2134+
OPT_STRING(0, "shallow-since", &deepen_since, N_("time"),
2135+
N_("deepen history of shallow repository based on time")),
2136+
OPT_STRING_LIST(0, "shallow-exclude", &deepen_not, N_("revision"),
2137+
N_("deepen history of shallow clone, excluding rev")),
2138+
OPT_INTEGER(0, "deepen", &deepen_relative,
2139+
N_("deepen history of shallow clone")),
2140+
OPT_SET_INT_F(0, "unshallow", &unshallow,
2141+
N_("convert to a complete repository"),
2142+
1, PARSE_OPT_NONEG),
2143+
OPT_SET_INT_F(0, "refetch", &refetch,
2144+
N_("re-fetch without negotiating common commits"),
2145+
1, PARSE_OPT_NONEG),
2146+
{ OPTION_STRING, 0, "submodule-prefix", &submodule_prefix, N_("dir"),
2147+
N_("prepend this to submodule path output"), PARSE_OPT_HIDDEN },
2148+
OPT_CALLBACK_F(0, "recurse-submodules-default",
2149+
&recurse_submodules_default, N_("on-demand"),
2150+
N_("default for recursive fetching of submodules "
2151+
"(lower priority than config files)"),
2152+
PARSE_OPT_HIDDEN, option_fetch_parse_recurse_submodules),
2153+
OPT_BOOL(0, "update-shallow", &update_shallow,
2154+
N_("accept refs that update .git/shallow")),
2155+
OPT_CALLBACK_F(0, "refmap", NULL, N_("refmap"),
2156+
N_("specify fetch refmap"), PARSE_OPT_NONEG, parse_refmap_arg),
2157+
OPT_STRING_LIST('o', "server-option", &server_options, N_("server-specific"), N_("option to transmit")),
2158+
OPT_SET_INT('4', "ipv4", &family, N_("use IPv4 addresses only"),
2159+
TRANSPORT_FAMILY_IPV4),
2160+
OPT_SET_INT('6', "ipv6", &family, N_("use IPv6 addresses only"),
2161+
TRANSPORT_FAMILY_IPV6),
2162+
OPT_STRING_LIST(0, "negotiation-tip", &negotiation_tip, N_("revision"),
2163+
N_("report that we have only objects reachable from this object")),
2164+
OPT_BOOL(0, "negotiate-only", &negotiate_only,
2165+
N_("do not fetch a packfile; instead, print ancestors of negotiation tips")),
2166+
OPT_PARSE_LIST_OBJECTS_FILTER(&filter_options),
2167+
OPT_BOOL(0, "auto-maintenance", &enable_auto_gc,
2168+
N_("run 'maintenance --auto' after fetching")),
2169+
OPT_BOOL(0, "auto-gc", &enable_auto_gc,
2170+
N_("run 'maintenance --auto' after fetching")),
2171+
OPT_BOOL(0, "show-forced-updates", &fetch_show_forced_updates,
2172+
N_("check for forced-updates on all updated branches")),
2173+
OPT_BOOL(0, "write-commit-graph", &fetch_write_commit_graph,
2174+
N_("write the commit-graph after fetching")),
2175+
OPT_BOOL(0, "stdin", &stdin_refspecs,
2176+
N_("accept refspecs from stdin")),
2177+
OPT_END()
2178+
};
21762179

21772180
packet_trace_identity("fetch");
21782181

0 commit comments

Comments
 (0)