зеркало из https://github.com/microsoft/git.git
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 https://github.com/git-for-windows/git/issues/1218 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Родитель
370d1e68d1
Коммит
79a2a0864c
|
@ -9,6 +9,7 @@
|
|||
#include "parse-options.h"
|
||||
#include "pkt-line.h"
|
||||
#include "sideband.h"
|
||||
#include "config.h"
|
||||
|
||||
static void create_output_file(const char *output_file)
|
||||
{
|
||||
|
@ -95,6 +96,7 @@ int cmd_archive(int argc, const char **argv, const char *prefix)
|
|||
OPT_END()
|
||||
};
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
argc = parse_options(argc, argv, prefix, local_opts, NULL,
|
||||
PARSE_OPT_KEEP_ALL);
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "run-command.h"
|
||||
#include "prompt.h"
|
||||
#include "quote.h"
|
||||
#include "config.h"
|
||||
|
||||
static GIT_PATH_FUNC(git_path_bisect_terms, "BISECT_TERMS")
|
||||
static GIT_PATH_FUNC(git_path_bisect_expected_rev, "BISECT_EXPECTED_REV")
|
||||
|
@ -655,6 +656,7 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
|
|||
};
|
||||
struct bisect_terms terms = { .term_good = NULL, .term_bad = NULL };
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
argc = parse_options(argc, argv, prefix, options,
|
||||
git_bisect_helper_usage,
|
||||
PARSE_OPT_KEEP_DASHDASH | PARSE_OPT_KEEP_UNKNOWN);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "parse-options.h"
|
||||
#include "cache.h"
|
||||
#include "bundle.h"
|
||||
#include "config.h"
|
||||
|
||||
/*
|
||||
* Basic handler for bundle files to connect repositories via sneakernet.
|
||||
|
@ -106,6 +107,7 @@ static int cmd_bundle_verify(int argc, const char **argv, const char *prefix) {
|
|||
};
|
||||
const char* bundle_file;
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
argc = parse_options_cmd_bundle(argc, argv, prefix,
|
||||
builtin_bundle_verify_usage, options, &bundle_file);
|
||||
/* bundle internals use argv[1] as further parameters */
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "refs.h"
|
||||
#include "builtin.h"
|
||||
#include "strbuf.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char builtin_check_ref_format_usage[] =
|
||||
"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)
|
|||
int flags = 0;
|
||||
const char *refname;
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
if (argc == 2 && !strcmp(argv[1], "-h"))
|
||||
usage(builtin_check_ref_format_usage);
|
||||
|
||||
|
|
|
@ -951,6 +951,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
|||
|
||||
struct argv_array ref_prefixes = ARGV_ARRAY_INIT;
|
||||
|
||||
git_config(platform_core_config, NULL);
|
||||
|
||||
packet_trace_identity("clone");
|
||||
argc = parse_options(argc, argv, prefix, builtin_clone_options,
|
||||
builtin_clone_usage, 0);
|
||||
|
|
|
@ -34,6 +34,8 @@ int cmd_column(int argc, const char **argv, const char *prefix)
|
|||
OPT_END()
|
||||
};
|
||||
|
||||
git_config(platform_core_config, NULL);
|
||||
|
||||
/* This one is special and must be the first one */
|
||||
if (argc > 1 && starts_with(argv[1], "--command=")) {
|
||||
command = argv[1] + 10;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "git-compat-util.h"
|
||||
#include "credential.h"
|
||||
#include "builtin.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char usage_msg[] =
|
||||
"git credential [fill|approve|reject]";
|
||||
|
@ -10,6 +11,8 @@ int cmd_credential(int argc, const char **argv, const char *prefix)
|
|||
const char *op;
|
||||
struct credential c = CREDENTIAL_INIT;
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
|
||||
if (argc != 2 || !strcmp(argv[1], "-h"))
|
||||
usage(usage_msg);
|
||||
op = argv[1];
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include "connect.h"
|
||||
#include "sha1-array.h"
|
||||
#include "protocol.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char fetch_pack_usage[] =
|
||||
"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)
|
|||
struct packet_reader reader;
|
||||
enum protocol_version version;
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
fetch_if_missing = 0;
|
||||
|
||||
packet_trace_identity("fetch-pack");
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "tar.h"
|
||||
#include "builtin.h"
|
||||
#include "quote.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char builtin_get_tar_commit_id_usage[] =
|
||||
"git get-tar-commit-id";
|
||||
|
@ -27,6 +28,7 @@ int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix)
|
|||
if (argc != 1)
|
||||
usage(builtin_get_tar_commit_id_usage);
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
n = read_in_full(0, buffer, HEADERSIZE);
|
||||
if (n < 0)
|
||||
die_errno("git get-tar-commit-id: read error");
|
||||
|
|
|
@ -2167,6 +2167,7 @@ int cmd_cherry(int argc, const char **argv, const char *prefix)
|
|||
OPT_END()
|
||||
};
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
argc = parse_options(argc, argv, prefix, options, cherry_usage, 0);
|
||||
|
||||
switch (argc) {
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "ref-filter.h"
|
||||
#include "remote.h"
|
||||
#include "refs.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char * const ls_remote_usage[] = {
|
||||
N_("git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
|
||||
|
@ -83,6 +84,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
|||
PARSE_OPT_STOP_AT_NON_OPTION);
|
||||
dest = argv[0];
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
if (argc > 1) {
|
||||
int i;
|
||||
pattern = xcalloc(argc, sizeof(const char *));
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "utf8.h"
|
||||
#include "strbuf.h"
|
||||
#include "mailinfo.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char mailinfo_usage[] =
|
||||
"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)
|
|||
int status;
|
||||
char *msgfile, *patchfile;
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
setup_mailinfo(&mi);
|
||||
|
||||
def_charset = get_commit_output_encoding();
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "builtin.h"
|
||||
#include "string-list.h"
|
||||
#include "strbuf.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char git_mailsplit_usage[] =
|
||||
"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)
|
|||
const char **argp;
|
||||
static const char *stdin_only[] = { "-", NULL };
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
for (argp = argv+1; *argp; argp++) {
|
||||
const char *arg = *argp;
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#define USE_THE_INDEX_COMPATIBILITY_MACROS
|
||||
#include "builtin.h"
|
||||
#include "run-command.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char *pgm;
|
||||
static int one_shot, quiet;
|
||||
|
@ -75,6 +76,8 @@ int cmd_merge_index(int argc, const char **argv, const char *prefix)
|
|||
*/
|
||||
signal(SIGCHLD, SIG_DFL);
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
|
||||
if (argc < 3)
|
||||
usage("git merge-index [-o] [-q] <merge-program> (-a | [--] [<filename>...])");
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "blob.h"
|
||||
#include "exec-cmd.h"
|
||||
#include "merge-blobs.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char merge_tree_usage[] = "git merge-tree <base-tree> <branch1> <branch2>";
|
||||
|
||||
|
@ -377,6 +378,7 @@ int cmd_merge_tree(int argc, const char **argv, const char *prefix)
|
|||
if (argc != 4)
|
||||
usage(merge_tree_usage);
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
buf1 = get_tree_descriptor(r, t+0, argv[1]);
|
||||
buf2 = get_tree_descriptor(r, t+1, argv[2]);
|
||||
buf3 = get_tree_descriptor(r, t+2, argv[3]);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "tag.h"
|
||||
#include "replace-object.h"
|
||||
#include "object-store.h"
|
||||
#include "config.h"
|
||||
|
||||
/*
|
||||
* A signature file has a very simple fixed format: four lines
|
||||
|
@ -158,6 +159,7 @@ int cmd_mktag(int argc, const char **argv, const char *prefix)
|
|||
if (argc != 1)
|
||||
usage("git mktag");
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
if (strbuf_read(&buf, 0, 4096) < 0) {
|
||||
die_errno("could not read from stdin");
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "tree.h"
|
||||
#include "parse-options.h"
|
||||
#include "object-store.h"
|
||||
#include "config.h"
|
||||
|
||||
static struct treeent {
|
||||
unsigned mode;
|
||||
|
@ -157,6 +158,7 @@ int cmd_mktree(int ac, const char **av, const char *prefix)
|
|||
OPT_END()
|
||||
};
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
ac = parse_options(ac, av, prefix, option, mktree_usage, 0);
|
||||
getline_fn = nul_term_line ? strbuf_getline_nul : strbuf_getline_lf;
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "parse-options.h"
|
||||
#include "refs.h"
|
||||
#include "repository.h"
|
||||
#include "config.h"
|
||||
|
||||
static char const * const pack_refs_usage[] = {
|
||||
N_("git pack-refs [<options>]"),
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "parse-options.h"
|
||||
#include "packfile.h"
|
||||
#include "object-store.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char * const prune_packed_usage[] = {
|
||||
N_("git prune-packed [-n | --dry-run] [-q | --quiet]"),
|
||||
|
@ -60,6 +61,7 @@ int cmd_prune_packed(int argc, const char **argv, const char *prefix)
|
|||
OPT_END()
|
||||
};
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
argc = parse_options(argc, argv, prefix, prune_packed_options,
|
||||
prune_packed_usage, 0);
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "parse-options.h"
|
||||
#include "progress.h"
|
||||
#include "object-store.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char * const prune_usage[] = {
|
||||
N_("git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"),
|
||||
|
@ -138,6 +139,8 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
|
|||
};
|
||||
char *s;
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
|
||||
expire = TIME_MAX;
|
||||
save_commit_buffer = 0;
|
||||
read_replace_refs = 0;
|
||||
|
|
|
@ -765,6 +765,7 @@ N_("git reflog [ show | expire | delete | exists ]");
|
|||
|
||||
int cmd_reflog(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
git_config(git_default_config, NULL);
|
||||
if (argc > 1 && !strcmp(argv[1], "-h"))
|
||||
usage(_(reflog_usage));
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "transport.h"
|
||||
#include "run-command.h"
|
||||
#include "pkt-line.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char usage_msg[] =
|
||||
"git remote-ext <remote> <url>";
|
||||
|
@ -198,5 +199,6 @@ int cmd_remote_ext(int argc, const char **argv, const char *prefix)
|
|||
if (argc != 3)
|
||||
usage(usage_msg);
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
return command_loop(argv[2]);
|
||||
}
|
||||
|
|
|
@ -1611,6 +1611,7 @@ int cmd_remote(int argc, const char **argv, const char *prefix)
|
|||
};
|
||||
int result;
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
argc = parse_options(argc, argv, prefix, options, builtin_remote_usage,
|
||||
PARSE_OPT_STOP_AT_NON_OPTION);
|
||||
|
||||
|
|
|
@ -425,6 +425,7 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
|
|||
struct option *opts = NULL;
|
||||
int onb = 0, osz = 0, unb = 0, usz = 0;
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
strbuf_addstr(&parsed, "set --");
|
||||
argc = parse_options(argc, argv, prefix, parseopt_opts, parseopt_usage,
|
||||
PARSE_OPT_KEEP_DASHDASH);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "builtin.h"
|
||||
#include "cache.h"
|
||||
#include "pack.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char show_index_usage[] =
|
||||
"git show-index";
|
||||
|
@ -15,6 +16,7 @@ int cmd_show_index(int argc, const char **argv, const char *prefix)
|
|||
|
||||
if (argc != 1)
|
||||
usage(show_index_usage);
|
||||
git_config(git_default_config, NULL);
|
||||
if (fread(top_index, 2 * 4, 1, stdin) != 1)
|
||||
die("unable to read header");
|
||||
if (top_index[0] == htonl(PACK_IDX_SIGNATURE)) {
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "tag.h"
|
||||
#include "string-list.h"
|
||||
#include "parse-options.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char * const show_ref_usage[] = {
|
||||
N_("git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<pattern>...]"),
|
||||
|
|
|
@ -46,10 +46,9 @@ int cmd_stripspace(int argc, const char **argv, const char *prefix)
|
|||
if (argc)
|
||||
usage_with_options(stripspace_usage, options);
|
||||
|
||||
if (mode == STRIP_COMMENTS || mode == COMMENT_LINES) {
|
||||
if (mode == STRIP_COMMENTS || mode == COMMENT_LINES)
|
||||
setup_git_directory_gently(&nongit);
|
||||
git_config(git_default_config, NULL);
|
||||
}
|
||||
|
||||
if (strbuf_read(&buf, 0, 1024) < 0)
|
||||
die_errno("could not read the input");
|
||||
|
|
|
@ -2252,6 +2252,7 @@ static struct cmd_struct commands[] = {
|
|||
int cmd_submodule__helper(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
int i;
|
||||
git_config(git_default_config, NULL);
|
||||
if (argc < 2 || !strcmp(argv[1], "-h"))
|
||||
usage("git submodule--helper <command>");
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "sideband.h"
|
||||
#include "run-command.h"
|
||||
#include "argv-array.h"
|
||||
#include "config.h"
|
||||
|
||||
static const char upload_archive_usage[] =
|
||||
"git upload-archive <repo>";
|
||||
|
@ -28,6 +29,7 @@ int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix)
|
|||
if (!enter_repo(argv[1], 0))
|
||||
die("'%s' does not appear to be a git repository", argv[1]);
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
init_archivers();
|
||||
|
||||
/* put received options in sent_argv[] */
|
||||
|
@ -79,6 +81,7 @@ int cmd_upload_archive(int argc, const char **argv, const char *prefix)
|
|||
{
|
||||
struct child_process writer = { argv };
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
if (argc == 2 && !strcmp(argv[1], "-h"))
|
||||
usage(upload_archive_usage);
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "credential.h"
|
||||
#include "string-list.h"
|
||||
#include "parse-options.h"
|
||||
#include "config.h"
|
||||
|
||||
static struct lock_file credential_lock;
|
||||
|
||||
|
@ -161,6 +162,8 @@ int cmd_main(int argc, const char **argv)
|
|||
|
||||
umask(077);
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
|
||||
argc = parse_options(argc, (const char **)argv, NULL, options, usage, 0);
|
||||
if (argc != 1)
|
||||
usage_with_options(usage, options);
|
||||
|
|
|
@ -782,6 +782,7 @@ int cmd_main(int argc, const char **argv)
|
|||
setup_path();
|
||||
if (!enter_repo(dir, 0))
|
||||
not_found(&hdr, "Not a git repository: '%s'", dir);
|
||||
git_config(git_default_config, NULL);
|
||||
if (!getenv("GIT_HTTP_EXPORT_ALL") &&
|
||||
access("git-daemon-export-ok", F_OK) )
|
||||
not_found(&hdr, "Repository not exported: '%s'", dir);
|
||||
|
|
2
refs.c
2
refs.c
|
@ -1385,7 +1385,7 @@ int parse_hide_refs_config(const char *var, const char *value, const char *secti
|
|||
}
|
||||
string_list_append(hide_refs, ref);
|
||||
}
|
||||
return 0;
|
||||
return git_default_config(var, value, NULL);
|
||||
}
|
||||
|
||||
int ref_is_hidden(const char *refname, const char *refname_full)
|
||||
|
|
Загрузка…
Ссылка в новой задаче