Skip to content

Commit 10be3a1

Browse files
committed
mingw: ensure that core.longPaths is handled *always*
A ton of Git commands simply do not read (or at least parse) the core.* settings. This is not good, as Git for Windows relies on the core.longPaths setting to be read quite early on. So let's just make sure that all commands read the config and give platform_core_config() a chance. This patch teaches tons of Git commands to respect the config setting `core.longPaths = true`, including `pack-refs`, thereby fixing #1218 Signed-off-by: Johannes Schindelin <[email protected]>
1 parent 403b1aa commit 10be3a1

32 files changed

+60
-4
lines changed

builtin/archive.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "parse-options.h"
1010
#include "pkt-line.h"
1111
#include "sideband.h"
12+
#include "config.h"
1213

1314
static void create_output_file(const char *output_file)
1415
{
@@ -95,6 +96,7 @@ int cmd_archive(int argc, const char **argv, const char *prefix)
9596
OPT_END()
9697
};
9798

99+
git_config(git_default_config, NULL);
98100
argc = parse_options(argc, argv, prefix, local_opts, NULL,
99101
PARSE_OPT_KEEP_ALL);
100102

builtin/bisect--helper.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "prompt.h"
1010
#include "quote.h"
1111
#include "revision.h"
12+
#include "config.h"
1213

1314
static GIT_PATH_FUNC(git_path_bisect_terms, "BISECT_TERMS")
1415
static GIT_PATH_FUNC(git_path_bisect_expected_rev, "BISECT_EXPECTED_REV")
@@ -894,6 +895,7 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
894895
};
895896
struct bisect_terms terms = { .term_good = NULL, .term_bad = NULL };
896897

898+
git_config(git_default_config, NULL);
897899
argc = parse_options(argc, argv, prefix, options,
898900
git_bisect_helper_usage,
899901
PARSE_OPT_KEEP_DASHDASH | PARSE_OPT_KEEP_UNKNOWN);

builtin/bundle.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "parse-options.h"
44
#include "cache.h"
55
#include "bundle.h"
6+
#include "config.h"
67

78
/*
89
* Basic handler for bundle files to connect repositories via sneakernet.
@@ -109,6 +110,7 @@ static int cmd_bundle_verify(int argc, const char **argv, const char *prefix) {
109110
};
110111
const char* bundle_file;
111112

113+
git_config(git_default_config, NULL);
112114
argc = parse_options_cmd_bundle(argc, argv, prefix,
113115
builtin_bundle_verify_usage, options, &bundle_file);
114116
/* bundle internals use argv[1] as further parameters */

builtin/check-ref-format.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "refs.h"
77
#include "builtin.h"
88
#include "strbuf.h"
9+
#include "config.h"
910

1011
static const char builtin_check_ref_format_usage[] =
1112
"git check-ref-format [--normalize] [<options>] <refname>\n"
@@ -58,6 +59,7 @@ int cmd_check_ref_format(int argc, const char **argv, const char *prefix)
5859
int flags = 0;
5960
const char *refname;
6061

62+
git_config(git_default_config, NULL);
6163
if (argc == 2 && !strcmp(argv[1], "-h"))
6264
usage(builtin_check_ref_format_usage);
6365

builtin/clone.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -962,6 +962,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
962962

963963
struct strvec ref_prefixes = STRVEC_INIT;
964964

965+
git_config(platform_core_config, NULL);
966+
965967
packet_trace_identity("clone");
966968
argc = parse_options(argc, argv, prefix, builtin_clone_options,
967969
builtin_clone_usage, 0);

builtin/column.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ int cmd_column(int argc, const char **argv, const char *prefix)
3434
OPT_END()
3535
};
3636

37+
git_config(platform_core_config, NULL);
38+
3739
/* This one is special and must be the first one */
3840
if (argc > 1 && starts_with(argv[1], "--command=")) {
3941
command = argv[1] + 10;

builtin/credential-store.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "credential.h"
44
#include "string-list.h"
55
#include "parse-options.h"
6+
#include "config.h"
67

78
static struct lock_file credential_lock;
89

@@ -161,6 +162,8 @@ int cmd_credential_store(int argc, const char **argv, const char *prefix)
161162

162163
umask(077);
163164

165+
git_config(git_default_config, NULL);
166+
164167
argc = parse_options(argc, (const char **)argv, prefix, options, usage, 0);
165168
if (argc != 1)
166169
usage_with_options(usage, options);

builtin/credential.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "git-compat-util.h"
22
#include "credential.h"
33
#include "builtin.h"
4+
#include "config.h"
45

56
static const char usage_msg[] =
67
"git credential [fill|approve|reject]";
@@ -10,6 +11,8 @@ int cmd_credential(int argc, const char **argv, const char *prefix)
1011
const char *op;
1112
struct credential c = CREDENTIAL_INIT;
1213

14+
git_config(git_default_config, NULL);
15+
1316
if (argc != 2 || !strcmp(argv[1], "-h"))
1417
usage(usage_msg);
1518
op = argv[1];

builtin/fetch-pack.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "connect.h"
66
#include "oid-array.h"
77
#include "protocol.h"
8+
#include "config.h"
89

910
static const char fetch_pack_usage[] =
1011
"git fetch-pack [--all] [--stdin] [--quiet | -q] [--keep | -k] [--thin] "
@@ -57,6 +58,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
5758
struct packet_reader reader;
5859
enum protocol_version version;
5960

61+
git_config(git_default_config, NULL);
6062
fetch_if_missing = 0;
6163

6264
packet_trace_identity("fetch-pack");

builtin/get-tar-commit-id.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "tar.h"
77
#include "builtin.h"
88
#include "quote.h"
9+
#include "config.h"
910

1011
static const char builtin_get_tar_commit_id_usage[] =
1112
"git get-tar-commit-id";
@@ -27,6 +28,7 @@ int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix)
2728
if (argc != 1)
2829
usage(builtin_get_tar_commit_id_usage);
2930

31+
git_config(git_default_config, NULL);
3032
n = read_in_full(0, buffer, HEADERSIZE);
3133
if (n < 0)
3234
die_errno("git get-tar-commit-id: read error");

builtin/log.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2271,6 +2271,7 @@ int cmd_cherry(int argc, const char **argv, const char *prefix)
22712271
OPT_END()
22722272
};
22732273

2274+
git_config(git_default_config, NULL);
22742275
argc = parse_options(argc, argv, prefix, options, cherry_usage, 0);
22752276

22762277
switch (argc) {

builtin/ls-remote.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "ref-filter.h"
55
#include "remote.h"
66
#include "refs.h"
7+
#include "config.h"
78

89
static const char * const ls_remote_usage[] = {
910
N_("git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -85,6 +86,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
8586

8687
UNLEAK(sorting);
8788

89+
git_config(git_default_config, NULL);
8890
if (argc > 1) {
8991
int i;
9092
pattern = xcalloc(argc, sizeof(const char *));

builtin/mailinfo.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "utf8.h"
88
#include "strbuf.h"
99
#include "mailinfo.h"
10+
#include "config.h"
1011

1112
static const char mailinfo_usage[] =
1213
"git mailinfo [-k | -b] [-m | --message-id] [-u | --encoding=<encoding> | -n] [--scissors | --no-scissors] <msg> <patch> < mail >info";
@@ -18,6 +19,7 @@ int cmd_mailinfo(int argc, const char **argv, const char *prefix)
1819
int status;
1920
char *msgfile, *patchfile;
2021

22+
git_config(git_default_config, NULL);
2123
setup_mailinfo(&mi);
2224

2325
def_charset = get_commit_output_encoding();

builtin/mailsplit.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "builtin.h"
99
#include "string-list.h"
1010
#include "strbuf.h"
11+
#include "config.h"
1112

1213
static const char git_mailsplit_usage[] =
1314
"git mailsplit [-d<prec>] [-f<n>] [-b] [--keep-cr] -o<directory> [(<mbox>|<Maildir>)...]";
@@ -276,6 +277,7 @@ int cmd_mailsplit(int argc, const char **argv, const char *prefix)
276277
const char **argp;
277278
static const char *stdin_only[] = { "-", NULL };
278279

280+
git_config(git_default_config, NULL);
279281
for (argp = argv+1; *argp; argp++) {
280282
const char *arg = *argp;
281283

builtin/merge-index.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#define USE_THE_INDEX_COMPATIBILITY_MACROS
22
#include "builtin.h"
33
#include "run-command.h"
4+
#include "config.h"
45

56
static const char *pgm;
67
static int one_shot, quiet;
@@ -75,6 +76,8 @@ int cmd_merge_index(int argc, const char **argv, const char *prefix)
7576
*/
7677
signal(SIGCHLD, SIG_DFL);
7778

79+
git_config(git_default_config, NULL);
80+
7881
if (argc < 3)
7982
usage("git merge-index [-o] [-q] <merge-program> (-a | [--] [<filename>...])");
8083

builtin/merge-tree.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "blob.h"
88
#include "exec-cmd.h"
99
#include "merge-blobs.h"
10+
#include "config.h"
1011

1112
static const char merge_tree_usage[] = "git merge-tree <base-tree> <branch1> <branch2>";
1213

@@ -377,6 +378,7 @@ int cmd_merge_tree(int argc, const char **argv, const char *prefix)
377378
if (argc != 4)
378379
usage(merge_tree_usage);
379380

381+
git_config(git_default_config, NULL);
380382
buf1 = get_tree_descriptor(r, t+0, argv[1]);
381383
buf2 = get_tree_descriptor(r, t+1, argv[2]);
382384
buf3 = get_tree_descriptor(r, t+2, argv[3]);

builtin/mktag.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "tag.h"
33
#include "replace-object.h"
44
#include "object-store.h"
5+
#include "config.h"
56

67
/*
78
* A signature file has a very simple fixed format: four lines
@@ -161,6 +162,7 @@ int cmd_mktag(int argc, const char **argv, const char *prefix)
161162
if (argc != 1)
162163
usage("git mktag");
163164

165+
git_config(git_default_config, NULL);
164166
if (strbuf_read(&buf, 0, 4096) < 0) {
165167
die_errno("could not read from stdin");
166168
}

builtin/mktree.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "tree.h"
99
#include "parse-options.h"
1010
#include "object-store.h"
11+
#include "config.h"
1112

1213
static struct treeent {
1314
unsigned mode;
@@ -157,6 +158,7 @@ int cmd_mktree(int ac, const char **av, const char *prefix)
157158
OPT_END()
158159
};
159160

161+
git_config(git_default_config, NULL);
160162
ac = parse_options(ac, av, prefix, option, mktree_usage, 0);
161163
getline_fn = nul_term_line ? strbuf_getline_nul : strbuf_getline_lf;
162164

builtin/pack-refs.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "parse-options.h"
44
#include "refs.h"
55
#include "repository.h"
6+
#include "config.h"
67

78
static char const * const pack_refs_usage[] = {
89
N_("git pack-refs [<options>]"),

builtin/prune-packed.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "builtin.h"
22
#include "parse-options.h"
33
#include "prune-packed.h"
4+
#include "config.h"
45

56
static const char * const prune_packed_usage[] = {
67
N_("git prune-packed [-n | --dry-run] [-q | --quiet]"),
@@ -18,6 +19,7 @@ int cmd_prune_packed(int argc, const char **argv, const char *prefix)
1819
OPT_END()
1920
};
2021

22+
git_config(git_default_config, NULL);
2123
argc = parse_options(argc, argv, prefix, prune_packed_options,
2224
prune_packed_usage, 0);
2325

builtin/prune.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "prune-packed.h"
1010
#include "object-store.h"
1111
#include "shallow.h"
12+
#include "config.h"
1213

1314
static const char * const prune_usage[] = {
1415
N_("git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"),
@@ -140,6 +141,8 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
140141
};
141142
char *s;
142143

144+
git_config(git_default_config, NULL);
145+
143146
expire = TIME_MAX;
144147
save_commit_buffer = 0;
145148
read_replace_refs = 0;

builtin/reflog.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,7 @@ N_("git reflog [ show | expire | delete | exists ]");
766766

767767
int cmd_reflog(int argc, const char **argv, const char *prefix)
768768
{
769+
git_config(git_default_config, NULL);
769770
if (argc > 1 && !strcmp(argv[1], "-h"))
770771
usage(_(reflog_usage));
771772

builtin/remote-ext.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "transport.h"
33
#include "run-command.h"
44
#include "pkt-line.h"
5+
#include "config.h"
56

67
static const char usage_msg[] =
78
"git remote-ext <remote> <url>";
@@ -198,5 +199,6 @@ int cmd_remote_ext(int argc, const char **argv, const char *prefix)
198199
if (argc != 3)
199200
usage(usage_msg);
200201

202+
git_config(git_default_config, NULL);
201203
return command_loop(argv[2]);
202204
}

builtin/remote.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,6 +1689,7 @@ int cmd_remote(int argc, const char **argv, const char *prefix)
16891689
};
16901690
int result;
16911691

1692+
git_config(git_default_config, NULL);
16921693
argc = parse_options(argc, argv, prefix, options, builtin_remote_usage,
16931694
PARSE_OPT_STOP_AT_NON_OPTION);
16941695

builtin/rev-parse.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,7 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
426426
struct option *opts = NULL;
427427
int onb = 0, osz = 0, unb = 0, usz = 0;
428428

429+
git_config(git_default_config, NULL);
429430
strbuf_addstr(&parsed, "set --");
430431
argc = parse_options(argc, argv, prefix, parseopt_opts, parseopt_usage,
431432
PARSE_OPT_KEEP_DASHDASH);

builtin/show-index.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "cache.h"
33
#include "pack.h"
44
#include "parse-options.h"
5+
#include "config.h"
56

67
static const char *const show_index_usage[] = {
78
"git show-index [--object-format=<hash-algorithm>]",
@@ -23,6 +24,7 @@ int cmd_show_index(int argc, const char **argv, const char *prefix)
2324
OPT_END()
2425
};
2526

27+
git_config(git_default_config, NULL);
2628
argc = parse_options(argc, argv, prefix, show_index_options, show_index_usage, 0);
2729

2830
if (hash_name) {

builtin/show-ref.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "tag.h"
88
#include "string-list.h"
99
#include "parse-options.h"
10+
#include "config.h"
1011

1112
static const char * const show_ref_usage[] = {
1213
N_("git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<pattern>...]"),

builtin/stripspace.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,9 @@ int cmd_stripspace(int argc, const char **argv, const char *prefix)
4646
if (argc)
4747
usage_with_options(stripspace_usage, options);
4848

49-
if (mode == STRIP_COMMENTS || mode == COMMENT_LINES) {
49+
if (mode == STRIP_COMMENTS || mode == COMMENT_LINES)
5050
setup_git_directory_gently(&nongit);
51-
git_config(git_default_config, NULL);
52-
}
51+
git_config(git_default_config, NULL);
5352

5453
if (strbuf_read(&buf, 0, 1024) < 0)
5554
die_errno("could not read the input");

builtin/submodule--helper.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2782,6 +2782,7 @@ static struct cmd_struct commands[] = {
27822782
int cmd_submodule__helper(int argc, const char **argv, const char *prefix)
27832783
{
27842784
int i;
2785+
git_config(git_default_config, NULL);
27852786
if (argc < 2 || !strcmp(argv[1], "-h"))
27862787
usage("git submodule--helper <command>");
27872788

0 commit comments

Comments
 (0)