diff --git a/abspath.c b/abspath.c index 9a81c5525b..d032f5dce5 100644 --- a/abspath.c +++ b/abspath.c @@ -1,4 +1,6 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "abspath.h" +#include "strbuf.h" /* * Do not use this for inspecting *tracked* content. When path is a diff --git a/abspath.h b/abspath.h new file mode 100644 index 0000000000..7cd3de5e9d --- /dev/null +++ b/abspath.h @@ -0,0 +1,33 @@ +#ifndef ABSPATH_H +#define ABSPATH_H + +int is_directory(const char *); +char *strbuf_realpath(struct strbuf *resolved, const char *path, + int die_on_error); +char *strbuf_realpath_forgiving(struct strbuf *resolved, const char *path, + int die_on_error); +char *real_pathdup(const char *path, int die_on_error); +const char *absolute_path(const char *path); +char *absolute_pathdup(const char *path); + +/* + * Concatenate "prefix" (if len is non-zero) and "path", with no + * connecting characters (so "prefix" should end with a "/"). + * Unlike prefix_path, this should be used if the named file does + * not have to interact with index entry; i.e. name of a random file + * on the filesystem. + * + * The return value is always a newly allocated string (even if the + * prefix was empty). + */ +char *prefix_filename(const char *prefix, const char *path); + +/* Likewise, but path=="-" always yields "-" */ +char *prefix_filename_except_for_dash(const char *prefix, const char *path); + +static inline int is_absolute_path(const char *path) +{ + return is_dir_sep(path[0]) || has_dos_drive_prefix(path); +} + +#endif /* ABSPATH_H */ diff --git a/add-interactive.c b/add-interactive.c index 14ccea150a..757a9929d4 100644 --- a/add-interactive.c +++ b/add-interactive.c @@ -3,6 +3,7 @@ #include "color.h" #include "config.h" #include "diffcore.h" +#include "gettext.h" #include "hex.h" #include "revision.h" #include "refs.h" diff --git a/add-patch.c b/add-patch.c index 6a32b49b29..1e1ee2df59 100644 --- a/add-patch.c +++ b/add-patch.c @@ -1,6 +1,8 @@ #include "cache.h" #include "add-interactive.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "strbuf.h" #include "run-command.h" #include "strvec.h" diff --git a/apply.c b/apply.c index 23789bb2d1..9b7288bc92 100644 --- a/apply.c +++ b/apply.c @@ -8,6 +8,7 @@ */ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "object-store.h" @@ -15,6 +16,8 @@ #include "delta.h" #include "diff.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "xdiff-interface.h" #include "ll-merge.h" @@ -24,6 +27,8 @@ #include "rerere.h" #include "apply.h" #include "entry.h" +#include "setup.h" +#include "wrapper.h" struct gitdiff_data { struct strbuf *root; diff --git a/archive-tar.c b/archive-tar.c index ee27fa0b39..497dad0b3a 100644 --- a/archive-tar.c +++ b/archive-tar.c @@ -4,12 +4,14 @@ #include "git-compat-util.h" #include "alloc.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "tar.h" #include "archive.h" #include "object-store.h" #include "streaming.h" #include "run-command.h" +#include "write-or-die.h" #define RECORDSIZE (512) #define BLOCKSIZE (RECORDSIZE * 20) diff --git a/archive-zip.c b/archive-zip.c index c5d1f72eb8..e6f5c10a14 100644 --- a/archive-zip.c +++ b/archive-zip.c @@ -4,11 +4,13 @@ #include "cache.h" #include "config.h" #include "archive.h" +#include "gettext.h" #include "hex.h" #include "streaming.h" #include "utf8.h" #include "object-store.h" #include "userdiff.h" +#include "write-or-die.h" #include "xdiff-interface.h" #include "date.h" diff --git a/archive.c b/archive.c index 933e5b39b9..f1b8e9ce48 100644 --- a/archive.c +++ b/archive.c @@ -1,7 +1,11 @@ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" +#include "setup.h" #include "refs.h" #include "object-store.h" #include "commit.h" diff --git a/attr.c b/attr.c index 657ee52229..2d8aeb8b58 100644 --- a/attr.c +++ b/attr.c @@ -9,13 +9,16 @@ #include "cache.h" #include "alloc.h" #include "config.h" +#include "environment.h" #include "exec-cmd.h" #include "attr.h" #include "dir.h" +#include "gettext.h" #include "utf8.h" #include "quote.h" #include "revision.h" #include "object-store.h" +#include "setup.h" #include "thread-utils.h" const char git_attr__true[] = "(builtin)true"; diff --git a/bisect.c b/bisect.c index d55f2a4da5..0a5f2ed354 100644 --- a/bisect.c +++ b/bisect.c @@ -2,6 +2,8 @@ #include "config.h" #include "commit.h" #include "diff.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "revision.h" #include "refs.h" diff --git a/blame.c b/blame.c index 8f0ae97ddb..2c427bcdbf 100644 --- a/blame.c +++ b/blame.c @@ -5,7 +5,9 @@ #include "mergesort.h" #include "diff.h" #include "diffcore.h" +#include "gettext.h" #include "hex.h" +#include "setup.h" #include "tag.h" #include "blame.h" #include "alloc.h" diff --git a/branch.c b/branch.c index 6fa61d1251..99a0e7889e 100644 --- a/branch.c +++ b/branch.c @@ -2,6 +2,8 @@ #include "cache.h" #include "config.h" #include "branch.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "refspec.h" diff --git a/builtin/add.c b/builtin/add.c index 61dd386d10..f12054d9be 100644 --- a/builtin/add.c +++ b/builtin/add.c @@ -9,6 +9,7 @@ #include "builtin.h" #include "lockfile.h" #include "dir.h" +#include "gettext.h" #include "pathspec.h" #include "exec-cmd.h" #include "cache-tree.h" diff --git a/builtin/am.c b/builtin/am.c index d89660d138..cd1e20f24e 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -5,9 +5,12 @@ */ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "config.h" #include "builtin.h" +#include "environment.h" #include "exec-cmd.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "dir.h" @@ -36,6 +39,7 @@ #include "packfile.h" #include "repository.h" #include "pretty.h" +#include "wrapper.h" /** * Returns the length of the first line of msg. diff --git a/builtin/apply.c b/builtin/apply.c index 555219de40..fe72c0ec3e 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -1,5 +1,6 @@ #include "cache.h" #include "builtin.h" +#include "gettext.h" #include "parse-options.h" #include "apply.h" diff --git a/builtin/archive.c b/builtin/archive.c index d0a583ea95..d13934f1a8 100644 --- a/builtin/archive.c +++ b/builtin/archive.c @@ -5,6 +5,7 @@ #include "cache.h" #include "builtin.h" #include "archive.h" +#include "gettext.h" #include "transport.h" #include "parse-options.h" #include "pkt-line.h" diff --git a/builtin/bisect.c b/builtin/bisect.c index c77564053a..26f07357a0 100644 --- a/builtin/bisect.c +++ b/builtin/bisect.c @@ -1,5 +1,7 @@ #include "builtin.h" #include "cache.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "bisect.h" @@ -10,6 +12,7 @@ #include "prompt.h" #include "quote.h" #include "revision.h" +#include "wrapper.h" static GIT_PATH_FUNC(git_path_bisect_terms, "BISECT_TERMS") static GIT_PATH_FUNC(git_path_bisect_expected_rev, "BISECT_EXPECTED_REV") diff --git a/builtin/blame.c b/builtin/blame.c index 7f92f9c1d3..a8d2114adc 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -10,6 +10,8 @@ #include "config.h" #include "color.h" #include "builtin.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "commit.h" @@ -29,7 +31,9 @@ #include "object-store.h" #include "blame.h" #include "refs.h" +#include "setup.h" #include "tag.h" +#include "write-or-die.h" static char blame_usage[] = N_("git blame [] [] [] [--] "); static char annotate_usage[] = N_("git annotate [] [] [] [--] "); diff --git a/builtin/branch.c b/builtin/branch.c index 43f6839b33..6413a016c5 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -8,9 +8,11 @@ #include "cache.h" #include "config.h" #include "color.h" +#include "environment.h" #include "refs.h" #include "commit.h" #include "builtin.h" +#include "gettext.h" #include "remote.h" #include "parse-options.h" #include "branch.h" @@ -24,6 +26,7 @@ #include "worktree.h" #include "help.h" #include "commit-reach.h" +#include "wrapper.h" static const char * const builtin_branch_usage[] = { N_("git branch [] [-r | -a] [--merged] [--no-merged]"), diff --git a/builtin/bugreport.c b/builtin/bugreport.c index 5bc254be80..52955e1d38 100644 --- a/builtin/bugreport.c +++ b/builtin/bugreport.c @@ -1,4 +1,6 @@ #include "builtin.h" +#include "abspath.h" +#include "gettext.h" #include "parse-options.h" #include "strbuf.h" #include "help.h" @@ -6,7 +8,8 @@ #include "hook.h" #include "hook-list.h" #include "diagnose.h" - +#include "setup.h" +#include "wrapper.h" static void get_system_info(struct strbuf *sys_info) { diff --git a/builtin/bundle.c b/builtin/bundle.c index 666f01bccd..e68fc83d94 100644 --- a/builtin/bundle.c +++ b/builtin/bundle.c @@ -1,4 +1,7 @@ #include "builtin.h" +#include "abspath.h" +#include "gettext.h" +#include "setup.h" #include "strvec.h" #include "parse-options.h" #include "cache.h" diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 44d202aa55..04d4bb6c77 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -9,6 +9,8 @@ #include "config.h" #include "builtin.h" #include "diff.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "ident.h" #include "parse-options.h" @@ -21,6 +23,7 @@ #include "replace-object.h" #include "promisor-remote.h" #include "mailmap.h" +#include "write-or-die.h" enum batch_mode { BATCH_MODE_CONTENTS, diff --git a/builtin/check-attr.c b/builtin/check-attr.c index d7a40e674c..1dbe9d6ca8 100644 --- a/builtin/check-attr.c +++ b/builtin/check-attr.c @@ -3,8 +3,12 @@ #include "cache.h" #include "config.h" #include "attr.h" +#include "environment.h" +#include "gettext.h" #include "quote.h" +#include "setup.h" #include "parse-options.h" +#include "write-or-die.h" static int all_attrs; static int cached_attrs; diff --git a/builtin/check-ignore.c b/builtin/check-ignore.c index ab776061c7..9401dad007 100644 --- a/builtin/check-ignore.c +++ b/builtin/check-ignore.c @@ -3,10 +3,12 @@ #include "cache.h" #include "config.h" #include "dir.h" +#include "gettext.h" #include "quote.h" #include "pathspec.h" #include "parse-options.h" #include "submodule.h" +#include "write-or-die.h" static int quiet, verbose, stdin_paths, show_non_matching, no_index; static const char * const check_ignore_usage[] = { diff --git a/builtin/check-mailmap.c b/builtin/check-mailmap.c index 96db3ddb4b..002d2941e9 100644 --- a/builtin/check-mailmap.c +++ b/builtin/check-mailmap.c @@ -1,9 +1,11 @@ #include "builtin.h" #include "config.h" +#include "gettext.h" #include "ident.h" #include "mailmap.h" #include "parse-options.h" #include "string-list.h" +#include "write-or-die.h" static int use_stdin; static const char * const check_mailmap_usage[] = { diff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c index 462eefe102..57f0505070 100644 --- a/builtin/check-ref-format.c +++ b/builtin/check-ref-format.c @@ -5,6 +5,7 @@ #include "cache.h" #include "refs.h" #include "builtin.h" +#include "setup.h" #include "strbuf.h" static const char builtin_check_ref_format_usage[] = diff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c index 0a7d762573..2120dd1d30 100644 --- a/builtin/checkout--worker.c +++ b/builtin/checkout--worker.c @@ -2,6 +2,7 @@ #include "alloc.h" #include "config.h" #include "entry.h" +#include "gettext.h" #include "parallel-checkout.h" #include "parse-options.h" #include "pkt-line.h" diff --git a/builtin/checkout-index.c b/builtin/checkout-index.c index cf6fba97ba..7df673e3e7 100644 --- a/builtin/checkout-index.c +++ b/builtin/checkout-index.c @@ -8,12 +8,14 @@ #include "builtin.h" #include "config.h" #include "dir.h" +#include "gettext.h" #include "lockfile.h" #include "quote.h" #include "cache-tree.h" #include "parse-options.h" #include "entry.h" #include "parallel-checkout.h" +#include "setup.h" #define CHECKOUT_ALL 4 static int nul_term_line; diff --git a/builtin/checkout.c b/builtin/checkout.c index fcede4600a..38a8cd6a96 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -9,6 +9,8 @@ #include "config.h" #include "diff.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "hook.h" #include "ll-merge.h" @@ -21,6 +23,7 @@ #include "resolve-undo.h" #include "revision.h" #include "run-command.h" +#include "setup.h" #include "submodule.h" #include "submodule-config.h" #include "tree.h" diff --git a/builtin/clean.c b/builtin/clean.c index 10aaa8c603..14c0d555ea 100644 --- a/builtin/clean.c +++ b/builtin/clean.c @@ -8,10 +8,13 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "cache.h" #include "config.h" #include "dir.h" +#include "gettext.h" #include "parse-options.h" +#include "setup.h" #include "string-list.h" #include "quote.h" #include "column.h" diff --git a/builtin/clone.c b/builtin/clone.c index e50e7e2c06..c171def1f3 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -10,7 +10,10 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "parse-options.h" @@ -30,6 +33,7 @@ #include "branch.h" #include "remote.h" #include "run-command.h" +#include "setup.h" #include "connected.h" #include "packfile.h" #include "list-objects-filter-options.h" diff --git a/builtin/column.c b/builtin/column.c index 158fdf53d9..de623a16c2 100644 --- a/builtin/column.c +++ b/builtin/column.c @@ -1,6 +1,7 @@ #include "builtin.h" #include "cache.h" #include "config.h" +#include "gettext.h" #include "strbuf.h" #include "parse-options.h" #include "string-list.h" diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c index d3be7f3b31..9011426976 100644 --- a/builtin/commit-graph.c +++ b/builtin/commit-graph.c @@ -1,6 +1,8 @@ #include "builtin.h" #include "config.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "parse-options.h" diff --git a/builtin/commit-tree.c b/builtin/commit-tree.c index b046c19306..15be167f87 100644 --- a/builtin/commit-tree.c +++ b/builtin/commit-tree.c @@ -5,6 +5,7 @@ */ #include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "repository.h" diff --git a/builtin/commit.c b/builtin/commit.c index b8b4893ab2..9d8e1ea91a 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -12,10 +12,12 @@ #include "cache-tree.h" #include "color.h" #include "dir.h" +#include "environment.h" #include "builtin.h" #include "diff.h" #include "diffcore.h" #include "commit.h" +#include "gettext.h" #include "revision.h" #include "wt-status.h" #include "run-command.h" diff --git a/builtin/config.c b/builtin/config.c index 49d832d409..fe79fb60c4 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -1,12 +1,17 @@ #include "builtin.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "color.h" +#include "environment.h" +#include "gettext.h" #include "ident.h" #include "parse-options.h" #include "urlmatch.h" #include "quote.h" +#include "setup.h" #include "worktree.h" +#include "wrapper.h" static const char *const builtin_config_usage[] = { N_("git config []"), diff --git a/builtin/count-objects.c b/builtin/count-objects.c index bb21bc43e4..f3d8f1bcbb 100644 --- a/builtin/count-objects.c +++ b/builtin/count-objects.c @@ -7,6 +7,8 @@ #include "cache.h" #include "config.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "repository.h" #include "builtin.h" #include "parse-options.h" diff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c index 6e509d02c3..62c09a271d 100644 --- a/builtin/credential-cache--daemon.c +++ b/builtin/credential-cache--daemon.c @@ -1,5 +1,7 @@ #include "builtin.h" +#include "abspath.h" #include "alloc.h" +#include "gettext.h" #include "parse-options.h" #ifndef NO_UNIX_SOCKETS diff --git a/builtin/credential-cache.c b/builtin/credential-cache.c index 78c02ad531..508da4c6e4 100644 --- a/builtin/credential-cache.c +++ b/builtin/credential-cache.c @@ -1,5 +1,8 @@ #include "builtin.h" +#include "gettext.h" #include "parse-options.h" +#include "wrapper.h" +#include "write-or-die.h" #ifndef NO_UNIX_SOCKETS diff --git a/builtin/credential-store.c b/builtin/credential-store.c index 62a4f3c265..8977604eb9 100644 --- a/builtin/credential-store.c +++ b/builtin/credential-store.c @@ -1,9 +1,11 @@ #include "builtin.h" #include "config.h" +#include "gettext.h" #include "lockfile.h" #include "credential.h" #include "string-list.h" #include "parse-options.h" +#include "write-or-die.h" static struct lock_file credential_lock; diff --git a/builtin/describe.c b/builtin/describe.c index 3e5595e0ed..0125d4ddba 100644 --- a/builtin/describe.c +++ b/builtin/describe.c @@ -1,6 +1,8 @@ #define USE_THE_INDEX_VARIABLE #include "cache.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "commit.h" @@ -13,6 +15,7 @@ #include "revision.h" #include "diff.h" #include "hashmap.h" +#include "setup.h" #include "strvec.h" #include "run-command.h" #include "object-store.h" diff --git a/builtin/diagnose.c b/builtin/diagnose.c index d52015c67a..0f8b64994c 100644 --- a/builtin/diagnose.c +++ b/builtin/diagnose.c @@ -1,4 +1,6 @@ #include "builtin.h" +#include "abspath.h" +#include "gettext.h" #include "parse-options.h" #include "diagnose.h" diff --git a/builtin/diff-index.c b/builtin/diff-index.c index 35dc9b23ee..b9a19bb7d3 100644 --- a/builtin/diff-index.c +++ b/builtin/diff-index.c @@ -5,6 +5,7 @@ #include "commit.h" #include "revision.h" #include "builtin.h" +#include "setup.h" #include "submodule.h" static const char diff_cache_usage[] = diff --git a/builtin/diff-tree.c b/builtin/diff-tree.c index a393efa4f0..385c2d0230 100644 --- a/builtin/diff-tree.c +++ b/builtin/diff-tree.c @@ -3,6 +3,7 @@ #include "config.h" #include "diff.h" #include "commit.h" +#include "gettext.h" #include "hex.h" #include "log-tree.h" #include "builtin.h" diff --git a/builtin/diff.c b/builtin/diff.c index 99e7660881..5a6a5d7f4b 100644 --- a/builtin/diff.c +++ b/builtin/diff.c @@ -11,6 +11,7 @@ #include "color.h" #include "commit.h" #include "blob.h" +#include "gettext.h" #include "tag.h" #include "diff.h" #include "diff-merges.h" @@ -18,6 +19,7 @@ #include "revision.h" #include "log-tree.h" #include "builtin.h" +#include "setup.h" #include "submodule.h" #include "oid-array.h" diff --git a/builtin/difftool.c b/builtin/difftool.c index 74466332b5..e010a21bfb 100644 --- a/builtin/difftool.c +++ b/builtin/difftool.c @@ -13,10 +13,13 @@ */ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "config.h" #include "builtin.h" #include "run-command.h" +#include "environment.h" #include "exec-cmd.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "strvec.h" @@ -25,6 +28,8 @@ #include "object-store.h" #include "dir.h" #include "entry.h" +#include "setup.h" +#include "wrapper.h" static int trust_exit_code; diff --git a/builtin/fast-export.c b/builtin/fast-export.c index 9844d4f3f4..8224bf4bc1 100644 --- a/builtin/fast-export.c +++ b/builtin/fast-export.c @@ -6,6 +6,7 @@ #include "builtin.h" #include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "refspec.h" diff --git a/builtin/fast-import.c b/builtin/fast-import.c index 6dbe1b165e..1fb95275d7 100644 --- a/builtin/fast-import.c +++ b/builtin/fast-import.c @@ -1,5 +1,8 @@ #include "builtin.h" +#include "abspath.h" #include "cache.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "config.h" @@ -21,6 +24,7 @@ #include "commit-reach.h" #include "khash.h" #include "date.h" +#include "wrapper.h" #define PACK_ID_BITS 16 #define MAX_PACK_ID ((1<] [--log[=] | --no-log] [--file ]"), diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c index 6b3d07ef40..0bdc49a6e1 100644 --- a/builtin/for-each-ref.c +++ b/builtin/for-each-ref.c @@ -1,6 +1,7 @@ #include "builtin.h" #include "cache.h" #include "config.h" +#include "gettext.h" #include "refs.h" #include "object.h" #include "parse-options.h" diff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c index ce8f7a9908..598ca16c46 100644 --- a/builtin/for-each-repo.c +++ b/builtin/for-each-repo.c @@ -1,6 +1,7 @@ #include "cache.h" #include "config.h" #include "builtin.h" +#include "gettext.h" #include "parse-options.h" #include "run-command.h" #include "string-list.h" diff --git a/builtin/fsck.c b/builtin/fsck.c index 4537d9f0f2..095b39d398 100644 --- a/builtin/fsck.c +++ b/builtin/fsck.c @@ -1,5 +1,6 @@ #include "builtin.h" #include "cache.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "config.h" diff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c index 3d4f2ae1d0..42af6a2cc7 100644 --- a/builtin/fsmonitor--daemon.c +++ b/builtin/fsmonitor--daemon.c @@ -1,6 +1,9 @@ #include "builtin.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "parse-options.h" #include "fsmonitor.h" #include "fsmonitor-ipc.h" diff --git a/builtin/gc.c b/builtin/gc.c index 42a5b7092f..edd98d35a5 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -11,6 +11,8 @@ */ #include "builtin.h" +#include "abspath.h" +#include "environment.h" #include "hex.h" #include "repository.h" #include "config.h" @@ -32,7 +34,10 @@ #include "refs.h" #include "remote.h" #include "exec-cmd.h" +#include "gettext.h" #include "hook.h" +#include "setup.h" +#include "wrapper.h" #define FAILED_RUN "failed to run %s" diff --git a/builtin/get-tar-commit-id.c b/builtin/get-tar-commit-id.c index 4324d39fb4..d5b871b21d 100644 --- a/builtin/get-tar-commit-id.c +++ b/builtin/get-tar-commit-id.c @@ -6,6 +6,7 @@ #include "tar.h" #include "builtin.h" #include "quote.h" +#include "wrapper.h" static const char builtin_get_tar_commit_id_usage[] = "git get-tar-commit-id"; diff --git a/builtin/grep.c b/builtin/grep.c index 49fc0c6909..a1b68d90bd 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -5,6 +5,7 @@ */ #include "cache.h" #include "alloc.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "config.h" @@ -22,10 +23,12 @@ #include "quote.h" #include "dir.h" #include "pathspec.h" +#include "setup.h" #include "submodule.h" #include "submodule-config.h" #include "object-store.h" #include "packfile.h" +#include "write-or-die.h" static const char *grep_prefix; diff --git a/builtin/hash-object.c b/builtin/hash-object.c index 1848768b97..a15fe4fd3f 100644 --- a/builtin/hash-object.c +++ b/builtin/hash-object.c @@ -5,13 +5,17 @@ * Copyright (C) Junio C Hamano, 2005 */ #include "builtin.h" +#include "abspath.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "blob.h" #include "quote.h" #include "parse-options.h" #include "exec-cmd.h" +#include "setup.h" +#include "write-or-die.h" /* * This is to create corrupt objects for debugging and as such it diff --git a/builtin/help.c b/builtin/help.c index 53f2812dfb..87333a02ec 100644 --- a/builtin/help.c +++ b/builtin/help.c @@ -5,11 +5,13 @@ #include "config.h" #include "builtin.h" #include "exec-cmd.h" +#include "gettext.h" #include "parse-options.h" #include "run-command.h" #include "config-list.h" #include "help.h" #include "alias.h" +#include "setup.h" #ifndef DEFAULT_HELP_FORMAT #define DEFAULT_HELP_FORMAT "man" diff --git a/builtin/hook.c b/builtin/hook.c index f95b7965c5..88051795c7 100644 --- a/builtin/hook.c +++ b/builtin/hook.c @@ -1,6 +1,7 @@ #include "cache.h" #include "builtin.h" #include "config.h" +#include "gettext.h" #include "hook.h" #include "parse-options.h" #include "strbuf.h" diff --git a/builtin/index-pack.c b/builtin/index-pack.c index 6bd95f54d6..b17e79cd40 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -2,6 +2,8 @@ #include "alloc.h" #include "config.h" #include "delta.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "pack.h" #include "csum-file.h" @@ -18,6 +20,8 @@ #include "object-store.h" #include "replace-object.h" #include "promisor-remote.h" +#include "setup.h" +#include "wrapper.h" static const char index_pack_usage[] = "git index-pack [-v] [-o ] [--keep | --keep=] [--[no-]rev-index] [--verify] [--strict] ( | --stdin [--fix-thin] [])"; diff --git a/builtin/init-db.c b/builtin/init-db.c index dcaaf102ea..ba6e0b20fa 100644 --- a/builtin/init-db.c +++ b/builtin/init-db.c @@ -4,12 +4,17 @@ * Copyright (C) Linus Torvalds, 2005 */ #include "cache.h" +#include "abspath.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "refs.h" #include "builtin.h" #include "exec-cmd.h" #include "parse-options.h" +#include "setup.h" #include "worktree.h" +#include "wrapper.h" #ifndef DEFAULT_GIT_TEMPLATE_DIR #define DEFAULT_GIT_TEMPLATE_DIR "/usr/share/git-core/templates" diff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c index e58627c72a..107ac28f0e 100644 --- a/builtin/interpret-trailers.c +++ b/builtin/interpret-trailers.c @@ -7,6 +7,7 @@ #include "cache.h" #include "builtin.h" +#include "gettext.h" #include "parse-options.h" #include "string-list.h" #include "trailer.h" diff --git a/builtin/log.c b/builtin/log.c index a087222aea..7d19578963 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -5,8 +5,11 @@ * 2006 Junio Hamano */ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "object-store.h" @@ -37,6 +40,7 @@ #include "commit-reach.h" #include "range-diff.h" #include "tmp-objdir.h" +#include "write-or-die.h" #define MAIL_DEFAULT_WRAP 72 #define COVER_FROM_AUTO_MAX_SUBJECT_LEN 100 diff --git a/builtin/ls-files.c b/builtin/ls-files.c index 7fc82d7f76..ed35fa8d8e 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -11,6 +11,7 @@ #include "quote.h" #include "dir.h" #include "builtin.h" +#include "gettext.h" #include "strbuf.h" #include "tree.h" #include "cache-tree.h" @@ -19,6 +20,7 @@ #include "string-list.h" #include "pathspec.h" #include "run-command.h" +#include "setup.h" #include "submodule.h" #include "submodule-config.h" diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c index a9de0575ce..3c74c4a104 100644 --- a/builtin/ls-remote.c +++ b/builtin/ls-remote.c @@ -1,5 +1,6 @@ #include "builtin.h" #include "cache.h" +#include "gettext.h" #include "hex.h" #include "transport.h" #include "ref-filter.h" diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c index 568088b6d6..f32e6be219 100644 --- a/builtin/ls-tree.c +++ b/builtin/ls-tree.c @@ -5,6 +5,7 @@ */ #include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "blob.h" diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c index 01d16ef9e5..a032a1c388 100644 --- a/builtin/mailinfo.c +++ b/builtin/mailinfo.c @@ -3,7 +3,10 @@ * email to figure out authorship and subject */ #include "cache.h" +#include "abspath.h" #include "builtin.h" +#include "environment.h" +#include "gettext.h" #include "utf8.h" #include "strbuf.h" #include "mailinfo.h" diff --git a/builtin/mailsplit.c b/builtin/mailsplit.c index 91e93f0c77..0b6193a091 100644 --- a/builtin/mailsplit.c +++ b/builtin/mailsplit.c @@ -6,6 +6,7 @@ */ #include "cache.h" #include "builtin.h" +#include "gettext.h" #include "string-list.h" #include "strbuf.h" diff --git a/builtin/merge-base.c b/builtin/merge-base.c index 671e424c26..3f22273b40 100644 --- a/builtin/merge-base.c +++ b/builtin/merge-base.c @@ -2,6 +2,7 @@ #include "cache.h" #include "config.h" #include "commit.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "diff.h" diff --git a/builtin/merge-file.c b/builtin/merge-file.c index c923bbf2ab..781818d08f 100644 --- a/builtin/merge-file.c +++ b/builtin/merge-file.c @@ -1,6 +1,9 @@ #include "builtin.h" +#include "abspath.h" #include "cache.h" #include "config.h" +#include "gettext.h" +#include "setup.h" #include "xdiff/xdiff.h" #include "xdiff-interface.h" #include "parse-options.h" diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c index c1e3ca1216..91ed55f3ab 100644 --- a/builtin/merge-recursive.c +++ b/builtin/merge-recursive.c @@ -1,6 +1,7 @@ #include "cache.h" #include "builtin.h" #include "commit.h" +#include "gettext.h" #include "tag.h" #include "merge-recursive.h" #include "xdiff-interface.h" diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c index 590532706e..803e380856 100644 --- a/builtin/merge-tree.c +++ b/builtin/merge-tree.c @@ -3,6 +3,7 @@ #include "tree-walk.h" #include "xdiff-interface.h" #include "help.h" +#include "gettext.h" #include "hex.h" #include "commit.h" #include "commit-reach.h" diff --git a/builtin/merge.c b/builtin/merge.c index 6538a4bae9..a99be9610e 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -8,8 +8,11 @@ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "builtin.h" @@ -46,6 +49,7 @@ #include "commit-reach.h" #include "wt-status.h" #include "commit-graph.h" +#include "wrapper.h" #define DEFAULT_TWOHEAD (1<<0) #define DEFAULT_OCTOPUS (1<<1) diff --git a/builtin/mktag.c b/builtin/mktag.c index 9385320013..b3f6d7ea38 100644 --- a/builtin/mktag.c +++ b/builtin/mktag.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "tag.h" diff --git a/builtin/mktree.c b/builtin/mktree.c index 848c7b4747..09a7bd5c5c 100644 --- a/builtin/mktree.c +++ b/builtin/mktree.c @@ -5,6 +5,7 @@ */ #include "builtin.h" #include "alloc.h" +#include "gettext.h" #include "hex.h" #include "quote.h" #include "tree.h" diff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c index 9a18a82b05..1b5083f8b2 100644 --- a/builtin/multi-pack-index.c +++ b/builtin/multi-pack-index.c @@ -1,6 +1,9 @@ #include "builtin.h" +#include "abspath.h" #include "cache.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "parse-options.h" #include "midx.h" #include "trace2.h" diff --git a/builtin/mv.c b/builtin/mv.c index 8129050377..b7c5ffbd8c 100644 --- a/builtin/mv.c +++ b/builtin/mv.c @@ -5,14 +5,18 @@ */ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "pathspec.h" #include "lockfile.h" #include "dir.h" #include "cache-tree.h" #include "string-list.h" #include "parse-options.h" +#include "setup.h" #include "submodule.h" #include "entry.h" diff --git a/builtin/name-rev.c b/builtin/name-rev.c index 9d0dd0ad01..831d360a78 100644 --- a/builtin/name-rev.c +++ b/builtin/name-rev.c @@ -1,5 +1,7 @@ #include "builtin.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "config.h" diff --git a/builtin/notes.c b/builtin/notes.c index 859a56591a..4ff44f1e3d 100644 --- a/builtin/notes.c +++ b/builtin/notes.c @@ -10,6 +10,7 @@ #include "cache.h" #include "config.h" #include "builtin.h" +#include "gettext.h" #include "hex.h" #include "notes.h" #include "object-store.h" @@ -24,6 +25,7 @@ #include "notes-merge.h" #include "notes-utils.h" #include "worktree.h" +#include "write-or-die.h" static const char * const git_notes_usage[] = { N_("git notes [--ref ] [list []]"), diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index bfaef00556..77d88f85b0 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -1,5 +1,7 @@ #include "builtin.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "config.h" @@ -40,6 +42,7 @@ #include "promisor-remote.h" #include "pack-mtimes.h" #include "parse-options.h" +#include "wrapper.h" /* * Objects we are going to pack are collected in the `to_pack` structure. diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c index d50c2d6693..43e9d12dfd 100644 --- a/builtin/pack-redundant.c +++ b/builtin/pack-redundant.c @@ -7,6 +7,7 @@ */ #include "builtin.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "packfile.h" diff --git a/builtin/pack-refs.c b/builtin/pack-refs.c index 27c2ca06ac..9833815fb3 100644 --- a/builtin/pack-refs.c +++ b/builtin/pack-refs.c @@ -1,5 +1,6 @@ #include "builtin.h" #include "config.h" +#include "gettext.h" #include "parse-options.h" #include "refs.h" #include "repository.h" diff --git a/builtin/patch-id.c b/builtin/patch-id.c index 338b15cd7b..9d5585d3a7 100644 --- a/builtin/patch-id.c +++ b/builtin/patch-id.c @@ -2,6 +2,7 @@ #include "builtin.h" #include "config.h" #include "diff.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" diff --git a/builtin/prune-packed.c b/builtin/prune-packed.c index da3273a268..ca3578e158 100644 --- a/builtin/prune-packed.c +++ b/builtin/prune-packed.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "gettext.h" #include "parse-options.h" #include "prune-packed.h" diff --git a/builtin/prune.c b/builtin/prune.c index 202f736774..5c0952f5c6 100644 --- a/builtin/prune.c +++ b/builtin/prune.c @@ -1,6 +1,8 @@ #include "cache.h" #include "commit.h" #include "diff.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "revision.h" #include "builtin.h" diff --git a/builtin/pull.c b/builtin/pull.c index bc0f29064b..5405d09f22 100644 --- a/builtin/pull.c +++ b/builtin/pull.c @@ -9,6 +9,7 @@ #include "cache.h" #include "config.h" #include "builtin.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "exec-cmd.h" diff --git a/builtin/push.c b/builtin/push.c index 12a402aea3..fa550b8f80 100644 --- a/builtin/push.c +++ b/builtin/push.c @@ -4,6 +4,8 @@ #include "cache.h" #include "branch.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "refs.h" #include "refspec.h" #include "run-command.h" diff --git a/builtin/range-diff.c b/builtin/range-diff.c index 556ee84b6d..b72af527f0 100644 --- a/builtin/range-diff.c +++ b/builtin/range-diff.c @@ -1,5 +1,6 @@ #include "cache.h" #include "builtin.h" +#include "gettext.h" #include "parse-options.h" #include "range-diff.h" #include "config.h" diff --git a/builtin/read-tree.c b/builtin/read-tree.c index fe19852634..600d4f748f 100644 --- a/builtin/read-tree.c +++ b/builtin/read-tree.c @@ -7,6 +7,7 @@ #define USE_THE_INDEX_VARIABLE #include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "object.h" @@ -18,6 +19,7 @@ #include "builtin.h" #include "parse-options.h" #include "resolve-undo.h" +#include "setup.h" #include "submodule.h" #include "submodule-config.h" diff --git a/builtin/rebase.c b/builtin/rebase.c index a70d94d075..680fe3c145 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -6,6 +6,9 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "run-command.h" #include "exec-cmd.h" @@ -30,6 +33,7 @@ #include "rebase-interactive.h" #include "reset.h" #include "hook.h" +#include "wrapper.h" static char const * const builtin_rebase_usage[] = { N_("git rebase [-i] [options] [--exec ] " diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 5123c56f9d..9109552533 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1,6 +1,9 @@ #include "builtin.h" +#include "abspath.h" #include "repository.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "pack.h" @@ -32,6 +35,7 @@ #include "worktree.h" #include "shallow.h" #include "parse-options.h" +#include "wrapper.h" static const char * const receive_pack_usage[] = { N_("git receive-pack "), diff --git a/builtin/reflog.c b/builtin/reflog.c index 9b000bb6bc..a1fa0c855f 100644 --- a/builtin/reflog.c +++ b/builtin/reflog.c @@ -1,5 +1,6 @@ #include "builtin.h" #include "config.h" +#include "gettext.h" #include "revision.h" #include "reachable.h" #include "worktree.h" diff --git a/builtin/remote.c b/builtin/remote.c index a6b100dce7..1e0b137d97 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -1,5 +1,6 @@ #include "builtin.h" #include "config.h" +#include "gettext.h" #include "parse-options.h" #include "transport.h" #include "remote.h" diff --git a/builtin/repack.c b/builtin/repack.c index ab4c55b50f..df4d8e0f0b 100644 --- a/builtin/repack.c +++ b/builtin/repack.c @@ -2,6 +2,8 @@ #include "alloc.h" #include "config.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "run-command.h" diff --git a/builtin/replace.c b/builtin/replace.c index 44ec170967..d2adc8ab61 100644 --- a/builtin/replace.c +++ b/builtin/replace.c @@ -11,6 +11,8 @@ #include "cache.h" #include "config.h" #include "builtin.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "parse-options.h" diff --git a/builtin/rerere.c b/builtin/rerere.c index 94ffb8c21a..d4a03707b1 100644 --- a/builtin/rerere.c +++ b/builtin/rerere.c @@ -2,9 +2,11 @@ #include "cache.h" #include "config.h" #include "dir.h" +#include "gettext.h" #include "parse-options.h" #include "string-list.h" #include "rerere.h" +#include "wrapper.h" #include "xdiff/xdiff.h" #include "xdiff-interface.h" #include "pathspec.h" diff --git a/builtin/reset.c b/builtin/reset.c index c2a390b3a0..0ed329236c 100644 --- a/builtin/reset.c +++ b/builtin/reset.c @@ -10,6 +10,8 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "tag.h" @@ -24,6 +26,7 @@ #include "parse-options.h" #include "unpack-trees.h" #include "cache-tree.h" +#include "setup.h" #include "submodule.h" #include "submodule-config.h" #include "dir.h" diff --git a/builtin/rev-list.c b/builtin/rev-list.c index e88affc276..a3dbbb6338 100644 --- a/builtin/rev-list.c +++ b/builtin/rev-list.c @@ -2,6 +2,8 @@ #include "config.h" #include "commit.h" #include "diff.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "revision.h" #include "list-objects.h" diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index 5662101a10..1af2089f9b 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -5,9 +5,12 @@ */ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "commit.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "quote.h" @@ -15,6 +18,7 @@ #include "parse-options.h" #include "diff.h" #include "revision.h" +#include "setup.h" #include "split-index.h" #include "submodule.h" #include "commit-reach.h" diff --git a/builtin/revert.c b/builtin/revert.c index 287721fd37..f72761bf88 100644 --- a/builtin/revert.c +++ b/builtin/revert.c @@ -4,6 +4,7 @@ #include "builtin.h" #include "parse-options.h" #include "diff.h" +#include "gettext.h" #include "revision.h" #include "rerere.h" #include "dir.h" diff --git a/builtin/rm.c b/builtin/rm.c index e093cb9996..6be9281742 100644 --- a/builtin/rm.c +++ b/builtin/rm.c @@ -11,9 +11,11 @@ #include "lockfile.h" #include "dir.h" #include "cache-tree.h" +#include "gettext.h" #include "tree-walk.h" #include "parse-options.h" #include "string-list.h" +#include "setup.h" #include "submodule.h" #include "pathspec.h" diff --git a/builtin/send-pack.c b/builtin/send-pack.c index 640125fe95..4784143004 100644 --- a/builtin/send-pack.c +++ b/builtin/send-pack.c @@ -17,6 +17,7 @@ #include "gettext.h" #include "protocol.h" #include "parse-options.h" +#include "write-or-die.h" static const char * const send_pack_usage[] = { N_("git send-pack [--mirror] [--dry-run] [--force]\n" diff --git a/builtin/shortlog.c b/builtin/shortlog.c index f287a6acd0..46f4e0832a 100644 --- a/builtin/shortlog.c +++ b/builtin/shortlog.c @@ -3,10 +3,13 @@ #include "config.h" #include "commit.h" #include "diff.h" +#include "environment.h" +#include "gettext.h" #include "string-list.h" #include "revision.h" #include "utf8.h" #include "mailmap.h" +#include "setup.h" #include "shortlog.h" #include "parse-options.h" #include "trailer.h" diff --git a/builtin/show-branch.c b/builtin/show-branch.c index 70bc461638..463a8d11c3 100644 --- a/builtin/show-branch.c +++ b/builtin/show-branch.c @@ -1,5 +1,7 @@ #include "cache.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "pretty.h" #include "refs.h" diff --git a/builtin/show-index.c b/builtin/show-index.c index 98ec40ddf4..d4bbbbcd6c 100644 --- a/builtin/show-index.c +++ b/builtin/show-index.c @@ -1,5 +1,6 @@ #include "builtin.h" #include "cache.h" +#include "gettext.h" #include "hex.h" #include "pack.h" #include "parse-options.h" diff --git a/builtin/show-ref.c b/builtin/show-ref.c index 63a5bb1efa..138d30a005 100644 --- a/builtin/show-ref.c +++ b/builtin/show-ref.c @@ -1,6 +1,7 @@ #include "builtin.h" #include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "object-store.h" diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c index d73d3d2d82..090bf33510 100644 --- a/builtin/sparse-checkout.c +++ b/builtin/sparse-checkout.c @@ -2,6 +2,8 @@ #include "cache.h" #include "config.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "parse-options.h" #include "pathspec.h" #include "repository.h" @@ -14,6 +16,7 @@ #include "unpack-trees.h" #include "wt-status.h" #include "quote.h" +#include "setup.h" #include "sparse-index.h" #include "worktree.h" diff --git a/builtin/stash.c b/builtin/stash.c index 6a3122cdd2..735d27039e 100644 --- a/builtin/stash.c +++ b/builtin/stash.c @@ -1,6 +1,9 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "refs.h" @@ -15,6 +18,7 @@ #include "entry.h" #include "rerere.h" #include "revision.h" +#include "setup.h" #include "log-tree.h" #include "diffcore.h" #include "exec-cmd.h" diff --git a/builtin/stripspace.c b/builtin/stripspace.c index 1e34cf2beb..9451eb69ff 100644 --- a/builtin/stripspace.c +++ b/builtin/stripspace.c @@ -1,8 +1,11 @@ #include "builtin.h" #include "cache.h" #include "config.h" +#include "gettext.h" #include "parse-options.h" +#include "setup.h" #include "strbuf.h" +#include "write-or-die.h" static void comment_lines(struct strbuf *buf) { diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index b836c0f6b7..569068e6a2 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -1,6 +1,9 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "cache.h" @@ -9,6 +12,7 @@ #include "quote.h" #include "pathspec.h" #include "dir.h" +#include "setup.h" #include "submodule.h" #include "submodule-config.h" #include "string-list.h" diff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c index e00768a8b7..10198a74fa 100644 --- a/builtin/symbolic-ref.c +++ b/builtin/symbolic-ref.c @@ -1,6 +1,7 @@ #include "builtin.h" #include "config.h" #include "cache.h" +#include "gettext.h" #include "refs.h" #include "parse-options.h" diff --git a/builtin/tag.c b/builtin/tag.c index f8705df14d..782bb3aa2f 100644 --- a/builtin/tag.c +++ b/builtin/tag.c @@ -9,6 +9,8 @@ #include "cache.h" #include "config.h" #include "builtin.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "object-store.h" @@ -22,6 +24,7 @@ #include "column.h" #include "ref-filter.h" #include "date.h" +#include "write-or-die.h" static const char * const git_tag_usage[] = { N_("git tag [-a | -s | -u ] [-f] [-m | -F ] [-e]\n" diff --git a/builtin/unpack-file.c b/builtin/unpack-file.c index 40fd42158d..00179180c7 100644 --- a/builtin/unpack-file.c +++ b/builtin/unpack-file.c @@ -2,6 +2,7 @@ #include "config.h" #include "hex.h" #include "object-store.h" +#include "wrapper.h" static char *create_temp_file(struct object_id *oid) { diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c index 1d3493b1eb..585e81b106 100644 --- a/builtin/unpack-objects.c +++ b/builtin/unpack-objects.c @@ -2,6 +2,8 @@ #include "cache.h" #include "bulk-checkin.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "object.h" diff --git a/builtin/update-index.c b/builtin/update-index.c index 11dc135271..03cda5e60d 100644 --- a/builtin/update-index.c +++ b/builtin/update-index.c @@ -7,6 +7,8 @@ #include "cache.h" #include "bulk-checkin.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "quote.h" @@ -18,8 +20,10 @@ #include "parse-options.h" #include "pathspec.h" #include "dir.h" +#include "setup.h" #include "split-index.h" #include "fsmonitor.h" +#include "write-or-die.h" /* * Default to not allowing changes to the list of files. The diff --git a/builtin/update-ref.c b/builtin/update-ref.c index 1ba0727ba7..3ffd75b3e7 100644 --- a/builtin/update-ref.c +++ b/builtin/update-ref.c @@ -1,5 +1,6 @@ #include "cache.h" #include "config.h" +#include "gettext.h" #include "refs.h" #include "builtin.h" #include "parse-options.h" diff --git a/builtin/update-server-info.c b/builtin/update-server-info.c index d2239c9ef4..e7bff27ae4 100644 --- a/builtin/update-server-info.c +++ b/builtin/update-server-info.c @@ -1,6 +1,7 @@ #include "cache.h" #include "config.h" #include "builtin.h" +#include "gettext.h" #include "parse-options.h" static const char * const update_server_info_usage[] = { diff --git a/builtin/upload-pack.c b/builtin/upload-pack.c index 7a3c68720f..beb9dd0861 100644 --- a/builtin/upload-pack.c +++ b/builtin/upload-pack.c @@ -1,6 +1,7 @@ #include "cache.h" #include "builtin.h" #include "exec-cmd.h" +#include "gettext.h" #include "pkt-line.h" #include "parse-options.h" #include "protocol.h" diff --git a/builtin/verify-commit.c b/builtin/verify-commit.c index 2a0c927ee9..4d10aa98b1 100644 --- a/builtin/verify-commit.c +++ b/builtin/verify-commit.c @@ -8,6 +8,7 @@ #include "cache.h" #include "config.h" #include "builtin.h" +#include "gettext.h" #include "object-store.h" #include "repository.h" #include "commit.h" diff --git a/builtin/verify-pack.c b/builtin/verify-pack.c index 27d6f75fd8..190fd69540 100644 --- a/builtin/verify-pack.c +++ b/builtin/verify-pack.c @@ -1,6 +1,7 @@ #include "builtin.h" #include "cache.h" #include "config.h" +#include "gettext.h" #include "run-command.h" #include "parse-options.h" diff --git a/builtin/verify-tag.c b/builtin/verify-tag.c index 2a9aac43b8..28d0da6845 100644 --- a/builtin/verify-tag.c +++ b/builtin/verify-tag.c @@ -8,6 +8,7 @@ #include "cache.h" #include "config.h" #include "builtin.h" +#include "gettext.h" #include "tag.h" #include "run-command.h" #include "parse-options.h" diff --git a/builtin/worktree.c b/builtin/worktree.c index 84e2888fa2..39e9e5c9ce 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -1,8 +1,11 @@ #include "cache.h" +#include "abspath.h" #include "checkout.h" #include "config.h" #include "builtin.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "strvec.h" @@ -14,6 +17,7 @@ #include "submodule.h" #include "utf8.h" #include "worktree.h" +#include "wrapper.h" #include "quote.h" #define BUILTIN_WORKTREE_ADD_USAGE \ diff --git a/builtin/write-tree.c b/builtin/write-tree.c index 7ad0d05945..6085f64d10 100644 --- a/builtin/write-tree.c +++ b/builtin/write-tree.c @@ -7,6 +7,8 @@ #include "builtin.h" #include "cache.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "tree.h" #include "cache-tree.h" diff --git a/bulk-checkin.c b/bulk-checkin.c index 556a34ba7d..6362b6aabc 100644 --- a/bulk-checkin.c +++ b/bulk-checkin.c @@ -1,9 +1,11 @@ /* * Copyright (c) 2011, Google Inc. */ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "bulk-checkin.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "repository.h" diff --git a/bulk-checkin.h b/bulk-checkin.h index 8281b9cb15..48fe9a6e91 100644 --- a/bulk-checkin.h +++ b/bulk-checkin.h @@ -4,7 +4,7 @@ #ifndef BULK_CHECKIN_H #define BULK_CHECKIN_H -#include "cache.h" +#include "object.h" void prepare_loose_object_bulk_checkin(void); void fsync_loose_object_bulk_checkin(int fd, const char *filename); diff --git a/bundle-uri.c b/bundle-uri.c index 177c181040..1ff1cf51da 100644 --- a/bundle-uri.c +++ b/bundle-uri.c @@ -1,6 +1,8 @@ #include "cache.h" #include "bundle-uri.h" #include "bundle.h" +#include "environment.h" +#include "gettext.h" #include "object-store.h" #include "refs.h" #include "run-command.h" diff --git a/bundle.c b/bundle.c index 73f0b1b89d..6471489975 100644 --- a/bundle.c +++ b/bundle.c @@ -1,6 +1,8 @@ #include "cache.h" #include "lockfile.h" #include "bundle.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "repository.h" @@ -14,6 +16,7 @@ #include "strvec.h" #include "list-objects-filter-options.h" #include "connected.h" +#include "write-or-die.h" static const char v2_bundle_signature[] = "# v2 git bundle\n"; static const char v3_bundle_signature[] = "# v3 git bundle\n"; diff --git a/bundle.h b/bundle.h index 9f2bd733a6..021adbdcbb 100644 --- a/bundle.h +++ b/bundle.h @@ -2,7 +2,6 @@ #define BUNDLE_H #include "strvec.h" -#include "cache.h" #include "string-list.h" #include "list-objects-filter-options.h" diff --git a/cache-tree.c b/cache-tree.c index 29ea7bd364..ff14b527da 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -1,5 +1,6 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" +#include "environment.h" #include "hex.h" #include "lockfile.h" #include "tree.h" diff --git a/cache.h b/cache.h index 0ede885656..82d7b112b4 100644 --- a/cache.h +++ b/cache.h @@ -452,174 +452,6 @@ static inline enum object_type object_type(unsigned int mode) OBJ_BLOB; } -/* Double-check local_repo_env below if you add to this list. */ -#define GIT_DIR_ENVIRONMENT "GIT_DIR" -#define GIT_COMMON_DIR_ENVIRONMENT "GIT_COMMON_DIR" -#define GIT_NAMESPACE_ENVIRONMENT "GIT_NAMESPACE" -#define GIT_WORK_TREE_ENVIRONMENT "GIT_WORK_TREE" -#define GIT_PREFIX_ENVIRONMENT "GIT_PREFIX" -#define DEFAULT_GIT_DIR_ENVIRONMENT ".git" -#define DB_ENVIRONMENT "GIT_OBJECT_DIRECTORY" -#define INDEX_ENVIRONMENT "GIT_INDEX_FILE" -#define GRAFT_ENVIRONMENT "GIT_GRAFT_FILE" -#define GIT_SHALLOW_FILE_ENVIRONMENT "GIT_SHALLOW_FILE" -#define TEMPLATE_DIR_ENVIRONMENT "GIT_TEMPLATE_DIR" -#define CONFIG_ENVIRONMENT "GIT_CONFIG" -#define CONFIG_DATA_ENVIRONMENT "GIT_CONFIG_PARAMETERS" -#define CONFIG_COUNT_ENVIRONMENT "GIT_CONFIG_COUNT" -#define EXEC_PATH_ENVIRONMENT "GIT_EXEC_PATH" -#define CEILING_DIRECTORIES_ENVIRONMENT "GIT_CEILING_DIRECTORIES" -#define NO_REPLACE_OBJECTS_ENVIRONMENT "GIT_NO_REPLACE_OBJECTS" -#define GIT_REPLACE_REF_BASE_ENVIRONMENT "GIT_REPLACE_REF_BASE" -#define GITATTRIBUTES_FILE ".gitattributes" -#define INFOATTRIBUTES_FILE "info/attributes" -#define ATTRIBUTE_MACRO_PREFIX "[attr]" -#define GITMODULES_FILE ".gitmodules" -#define GITMODULES_INDEX ":.gitmodules" -#define GITMODULES_HEAD "HEAD:.gitmodules" -#define GIT_NOTES_REF_ENVIRONMENT "GIT_NOTES_REF" -#define GIT_NOTES_DEFAULT_REF "refs/notes/commits" -#define GIT_NOTES_DISPLAY_REF_ENVIRONMENT "GIT_NOTES_DISPLAY_REF" -#define GIT_NOTES_REWRITE_REF_ENVIRONMENT "GIT_NOTES_REWRITE_REF" -#define GIT_NOTES_REWRITE_MODE_ENVIRONMENT "GIT_NOTES_REWRITE_MODE" -#define GIT_LITERAL_PATHSPECS_ENVIRONMENT "GIT_LITERAL_PATHSPECS" -#define GIT_GLOB_PATHSPECS_ENVIRONMENT "GIT_GLOB_PATHSPECS" -#define GIT_NOGLOB_PATHSPECS_ENVIRONMENT "GIT_NOGLOB_PATHSPECS" -#define GIT_ICASE_PATHSPECS_ENVIRONMENT "GIT_ICASE_PATHSPECS" -#define GIT_QUARANTINE_ENVIRONMENT "GIT_QUARANTINE_PATH" -#define GIT_OPTIONAL_LOCKS_ENVIRONMENT "GIT_OPTIONAL_LOCKS" -#define GIT_TEXT_DOMAIN_DIR_ENVIRONMENT "GIT_TEXTDOMAINDIR" - -/* - * Environment variable used in handshaking the wire protocol. - * Contains a colon ':' separated list of keys with optional values - * 'key[=value]'. Presence of unknown keys and values must be - * ignored. - */ -#define GIT_PROTOCOL_ENVIRONMENT "GIT_PROTOCOL" -/* HTTP header used to handshake the wire protocol */ -#define GIT_PROTOCOL_HEADER "Git-Protocol" - -/* - * This environment variable is expected to contain a boolean indicating - * whether we should or should not treat: - * - * GIT_DIR=foo.git git ... - * - * as if GIT_WORK_TREE=. was given. It's not expected that users will make use - * of this, but we use it internally to communicate to sub-processes that we - * are in a bare repo. If not set, defaults to true. - */ -#define GIT_IMPLICIT_WORK_TREE_ENVIRONMENT "GIT_IMPLICIT_WORK_TREE" - -/* - * Repository-local GIT_* environment variables; these will be cleared - * when git spawns a sub-process that runs inside another repository. - * The array is NULL-terminated, which makes it easy to pass in the "env" - * parameter of a run-command invocation, or to do a simple walk. - */ -extern const char * const local_repo_env[]; - -void setup_git_env(const char *git_dir); - -/* - * Returns true iff we have a configured git repository (either via - * setup_git_directory, or in the environment via $GIT_DIR). - */ -int have_git_dir(void); - -extern int is_bare_repository_cfg; -int is_bare_repository(void); -int is_inside_git_dir(void); -extern char *git_work_tree_cfg; -int is_inside_work_tree(void); -const char *get_git_dir(void); -const char *get_git_common_dir(void); -const char *get_object_directory(void); -char *get_index_file(void); -char *get_graft_file(struct repository *r); -void set_git_dir(const char *path, int make_realpath); -int get_common_dir_noenv(struct strbuf *sb, const char *gitdir); -int get_common_dir(struct strbuf *sb, const char *gitdir); -const char *get_git_namespace(void); -const char *strip_namespace(const char *namespaced_ref); -const char *get_git_work_tree(void); - -/* - * Return true if the given path is a git directory; note that this _just_ - * looks at the directory itself. If you want to know whether "foo/.git" - * is a repository, you must feed that path, not just "foo". - */ -int is_git_directory(const char *path); - -/* - * Return 1 if the given path is the root of a git repository or - * submodule, else 0. Will not return 1 for bare repositories with the - * exception of creating a bare repository in "foo/.git" and calling - * is_git_repository("foo"). - * - * If we run into read errors, we err on the side of saying "yes, it is", - * as we usually consider sub-repos precious, and would prefer to err on the - * side of not disrupting or deleting them. - */ -int is_nonbare_repository_dir(struct strbuf *path); - -#define READ_GITFILE_ERR_STAT_FAILED 1 -#define READ_GITFILE_ERR_NOT_A_FILE 2 -#define READ_GITFILE_ERR_OPEN_FAILED 3 -#define READ_GITFILE_ERR_READ_FAILED 4 -#define READ_GITFILE_ERR_INVALID_FORMAT 5 -#define READ_GITFILE_ERR_NO_PATH 6 -#define READ_GITFILE_ERR_NOT_A_REPO 7 -#define READ_GITFILE_ERR_TOO_LARGE 8 -void read_gitfile_error_die(int error_code, const char *path, const char *dir); -const char *read_gitfile_gently(const char *path, int *return_error_code); -#define read_gitfile(path) read_gitfile_gently((path), NULL) -const char *resolve_gitdir_gently(const char *suspect, int *return_error_code); -#define resolve_gitdir(path) resolve_gitdir_gently((path), NULL) - -void set_git_work_tree(const char *tree); - -#define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES" - -void setup_work_tree(void); -/* - * Find the commondir and gitdir of the repository that contains the current - * working directory, without changing the working directory or other global - * state. The result is appended to commondir and gitdir. If the discovered - * gitdir does not correspond to a worktree, then 'commondir' and 'gitdir' will - * both have the same result appended to the buffer. The return value is - * either 0 upon success and non-zero if no repository was found. - */ -int discover_git_directory(struct strbuf *commondir, - struct strbuf *gitdir); -const char *setup_git_directory_gently(int *); -const char *setup_git_directory(void); -char *prefix_path(const char *prefix, int len, const char *path); -char *prefix_path_gently(const char *prefix, int len, int *remaining, const char *path); - -/* - * Concatenate "prefix" (if len is non-zero) and "path", with no - * connecting characters (so "prefix" should end with a "/"). - * Unlike prefix_path, this should be used if the named file does - * not have to interact with index entry; i.e. name of a random file - * on the filesystem. - * - * The return value is always a newly allocated string (even if the - * prefix was empty). - */ -char *prefix_filename(const char *prefix, const char *path); - -/* Likewise, but path=="-" always yields "-" */ -char *prefix_filename_except_for_dash(const char *prefix, const char *path); - -int check_filename(const char *prefix, const char *name); -void verify_filename(const char *prefix, - const char *name, - int diagnose_misspelt_rev); -void verify_non_filename(const char *prefix, const char *name); -int path_inside_repo(const char *prefix, const char *path); - #define INIT_DB_QUIET 0x0001 #define INIT_DB_EXIST_OK 0x0002 @@ -628,9 +460,6 @@ int init_db(const char *git_dir, const char *real_git_dir, const char *initial_branch, unsigned int flags); void initialize_repository_version(int hash_algo, int reinit); -void sanitize_stdfds(void); -int daemonize(void); - /* Initialize and use the cache information */ struct lock_file; void preload_index(struct index_state *index, @@ -855,229 +684,7 @@ void set_alternate_index_output(const char *); extern int verify_index_checksum; extern int verify_ce_order; -/* Environment bits from configuration mechanism */ -extern int trust_executable_bit; -extern int trust_ctime; -extern int check_stat; extern int quote_path_fully; -extern int has_symlinks; -extern int minimum_abbrev, default_abbrev; -extern int ignore_case; -extern int assume_unchanged; -extern int prefer_symlink_refs; -extern int warn_ambiguous_refs; -extern int warn_on_object_refname_ambiguity; -extern char *apply_default_whitespace; -extern char *apply_default_ignorewhitespace; -extern const char *git_attributes_file; -extern const char *git_hooks_path; -extern int zlib_compression_level; -extern int pack_compression_level; -extern size_t packed_git_window_size; -extern size_t packed_git_limit; -extern size_t delta_base_cache_limit; -extern unsigned long big_file_threshold; -extern unsigned long pack_size_limit_cfg; - -/* - * Accessors for the core.sharedrepository config which lazy-load the value - * from the config (if not already set). The "reset" function can be - * used to unset "set" or cached value, meaning that the value will be loaded - * fresh from the config file on the next call to get_shared_repository(). - */ -void set_shared_repository(int value); -int get_shared_repository(void); -void reset_shared_repository(void); - -/* - * These values are used to help identify parts of a repository to fsync. - * FSYNC_COMPONENT_NONE identifies data that will not be a persistent part of the - * repository and so shouldn't be fsynced. - */ -enum fsync_component { - FSYNC_COMPONENT_NONE, - FSYNC_COMPONENT_LOOSE_OBJECT = 1 << 0, - FSYNC_COMPONENT_PACK = 1 << 1, - FSYNC_COMPONENT_PACK_METADATA = 1 << 2, - FSYNC_COMPONENT_COMMIT_GRAPH = 1 << 3, - FSYNC_COMPONENT_INDEX = 1 << 4, - FSYNC_COMPONENT_REFERENCE = 1 << 5, -}; - -#define FSYNC_COMPONENTS_OBJECTS (FSYNC_COMPONENT_LOOSE_OBJECT | \ - FSYNC_COMPONENT_PACK) - -#define FSYNC_COMPONENTS_DERIVED_METADATA (FSYNC_COMPONENT_PACK_METADATA | \ - FSYNC_COMPONENT_COMMIT_GRAPH) - -#define FSYNC_COMPONENTS_DEFAULT ((FSYNC_COMPONENTS_OBJECTS | \ - FSYNC_COMPONENTS_DERIVED_METADATA) & \ - ~FSYNC_COMPONENT_LOOSE_OBJECT) - -#define FSYNC_COMPONENTS_COMMITTED (FSYNC_COMPONENTS_OBJECTS | \ - FSYNC_COMPONENT_REFERENCE) - -#define FSYNC_COMPONENTS_ADDED (FSYNC_COMPONENTS_COMMITTED | \ - FSYNC_COMPONENT_INDEX) - -#define FSYNC_COMPONENTS_ALL (FSYNC_COMPONENT_LOOSE_OBJECT | \ - FSYNC_COMPONENT_PACK | \ - FSYNC_COMPONENT_PACK_METADATA | \ - FSYNC_COMPONENT_COMMIT_GRAPH | \ - FSYNC_COMPONENT_INDEX | \ - FSYNC_COMPONENT_REFERENCE) - -#ifndef FSYNC_COMPONENTS_PLATFORM_DEFAULT -#define FSYNC_COMPONENTS_PLATFORM_DEFAULT FSYNC_COMPONENTS_DEFAULT -#endif - -/* - * A bitmask indicating which components of the repo should be fsynced. - */ -extern enum fsync_component fsync_components; -extern int fsync_object_files; -extern int use_fsync; - -enum fsync_method { - FSYNC_METHOD_FSYNC, - FSYNC_METHOD_WRITEOUT_ONLY, - FSYNC_METHOD_BATCH, -}; - -extern enum fsync_method fsync_method; -extern int core_preload_index; -extern int precomposed_unicode; -extern int protect_hfs; -extern int protect_ntfs; - -extern int core_apply_sparse_checkout; -extern int core_sparse_checkout_cone; -extern int sparse_expect_files_outside_of_patterns; - -/* - * Returns the boolean value of $GIT_OPTIONAL_LOCKS (or the default value). - */ -int use_optional_locks(void); - -/* - * The character that begins a commented line in user-editable file - * that is subject to stripspace. - */ -extern char comment_line_char; -extern int auto_comment_line_char; - -enum log_refs_config { - LOG_REFS_UNSET = -1, - LOG_REFS_NONE = 0, - LOG_REFS_NORMAL, - LOG_REFS_ALWAYS -}; -extern enum log_refs_config log_all_ref_updates; - -enum rebase_setup_type { - AUTOREBASE_NEVER = 0, - AUTOREBASE_LOCAL, - AUTOREBASE_REMOTE, - AUTOREBASE_ALWAYS -}; - -enum push_default_type { - PUSH_DEFAULT_NOTHING = 0, - PUSH_DEFAULT_MATCHING, - PUSH_DEFAULT_SIMPLE, - PUSH_DEFAULT_UPSTREAM, - PUSH_DEFAULT_CURRENT, - PUSH_DEFAULT_UNSPECIFIED -}; - -extern enum rebase_setup_type autorebase; -extern enum push_default_type push_default; - -enum object_creation_mode { - OBJECT_CREATION_USES_HARDLINKS = 0, - OBJECT_CREATION_USES_RENAMES = 1 -}; - -extern enum object_creation_mode object_creation_mode; - -extern char *notes_ref_name; - -extern int grafts_replace_parents; - -/* - * GIT_REPO_VERSION is the version we write by default. The - * _READ variant is the highest number we know how to - * handle. - */ -#define GIT_REPO_VERSION 0 -#define GIT_REPO_VERSION_READ 1 -extern int repository_format_precious_objects; -extern int repository_format_worktree_config; - -/* - * You _have_ to initialize a `struct repository_format` using - * `= REPOSITORY_FORMAT_INIT` before calling `read_repository_format()`. - */ -struct repository_format { - int version; - int precious_objects; - char *partial_clone; /* value of extensions.partialclone */ - int worktree_config; - int is_bare; - int hash_algo; - int sparse_index; - char *work_tree; - struct string_list unknown_extensions; - struct string_list v1_only_extensions; -}; - -/* - * Always use this to initialize a `struct repository_format` - * to a well-defined, default state before calling - * `read_repository()`. - */ -#define REPOSITORY_FORMAT_INIT \ -{ \ - .version = -1, \ - .is_bare = -1, \ - .hash_algo = GIT_HASH_SHA1, \ - .unknown_extensions = STRING_LIST_INIT_DUP, \ - .v1_only_extensions = STRING_LIST_INIT_DUP, \ -} - -/* - * Read the repository format characteristics from the config file "path" into - * "format" struct. Returns the numeric version. On error, or if no version is - * found in the configuration, -1 is returned, format->version is set to -1, - * and all other fields in the struct are set to the default configuration - * (REPOSITORY_FORMAT_INIT). Always initialize the struct using - * REPOSITORY_FORMAT_INIT before calling this function. - */ -int read_repository_format(struct repository_format *format, const char *path); - -/* - * Free the memory held onto by `format`, but not the struct itself. - * (No need to use this after `read_repository_format()` fails.) - */ -void clear_repository_format(struct repository_format *format); - -/* - * Verify that the repository described by repository_format is something we - * can read. If it is, return 0. Otherwise, return -1, and "err" will describe - * any errors encountered. - */ -int verify_repository_format(const struct repository_format *format, - struct strbuf *err); - -/* - * Check the repository format version in the path found in get_git_dir(), - * and die if it is a version we don't understand. Generally one would - * set_git_dir() before calling this, and use it only for "are we in a valid - * repo?". - * - * If successful and fmt is not NULL, fill fmt with data. - */ -void check_repository_format(struct repository_format *fmt); #define MTIME_CHANGED 0x0001 #define CTIME_CHANGED 0x0002 @@ -1105,28 +712,6 @@ void check_repository_format(struct repository_format *fmt); const char *repo_find_unique_abbrev(struct repository *r, const struct object_id *oid, int len); int repo_find_unique_abbrev_r(struct repository *r, char *hex, const struct object_id *oid, int len); -/* set default permissions by passing mode arguments to open(2) */ -int git_mkstemps_mode(char *pattern, int suffix_len, int mode); -int git_mkstemp_mode(char *pattern, int mode); - -/* - * NOTE NOTE NOTE!! - * - * PERM_UMASK, OLD_PERM_GROUP and OLD_PERM_EVERYBODY enumerations must - * not be changed. Old repositories have core.sharedrepository written in - * numeric format, and therefore these values are preserved for compatibility - * reasons. - */ -enum sharedrepo { - PERM_UMASK = 0, - OLD_PERM_GROUP = 1, - OLD_PERM_EVERYBODY = 2, - PERM_GROUP = 0660, - PERM_EVERYBODY = 0664 -}; -int git_config_perm(const char *var, const char *value); -int adjust_shared_perm(const char *path); - /* * Create the directory containing the named path, using care to be * somewhat safe against races. Return one of the scld_error values to @@ -1161,68 +746,6 @@ enum scld_error safe_create_leading_directories_const(const char *path); enum scld_error safe_create_leading_directories_no_share(char *path); int mkdir_in_gitdir(const char *path); -char *interpolate_path(const char *path, int real_home); -/* NEEDSWORK: remove this synonym once in-flight topics have migrated */ -#define expand_user_path interpolate_path -const char *enter_repo(const char *path, int strict); -static inline int is_absolute_path(const char *path) -{ - return is_dir_sep(path[0]) || has_dos_drive_prefix(path); -} -int is_directory(const char *); -char *strbuf_realpath(struct strbuf *resolved, const char *path, - int die_on_error); -char *strbuf_realpath_forgiving(struct strbuf *resolved, const char *path, - int die_on_error); -char *real_pathdup(const char *path, int die_on_error); -const char *absolute_path(const char *path); -char *absolute_pathdup(const char *path); -const char *remove_leading_path(const char *in, const char *prefix); -const char *relative_path(const char *in, const char *prefix, struct strbuf *sb); -int normalize_path_copy_len(char *dst, const char *src, int *prefix_len); -int normalize_path_copy(char *dst, const char *src); -int longest_ancestor_length(const char *path, struct string_list *prefixes); -char *strip_path_suffix(const char *path, const char *suffix); -int daemon_avoid_alias(const char *path); - -/* - * These functions match their is_hfs_dotgit() counterparts; see utf8.h for - * details. - */ -int is_ntfs_dotgit(const char *name); -int is_ntfs_dotgitmodules(const char *name); -int is_ntfs_dotgitignore(const char *name); -int is_ntfs_dotgitattributes(const char *name); -int is_ntfs_dotmailmap(const char *name); - -/* - * Returns true iff "str" could be confused as a command-line option when - * passed to a sub-program like "ssh". Note that this has nothing to do with - * shell-quoting, which should be handled separately; we're assuming here that - * the string makes it verbatim to the sub-program. - */ -int looks_like_command_line_option(const char *str); - -/** - * Return a newly allocated string with the evaluation of - * "$XDG_CONFIG_HOME/$subdir/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise - * "$HOME/.config/$subdir/$filename". Return NULL upon error. - */ -char *xdg_config_home_for(const char *subdir, const char *filename); - -/** - * Return a newly allocated string with the evaluation of - * "$XDG_CONFIG_HOME/git/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise - * "$HOME/.config/git/$filename". Return NULL upon error. - */ -char *xdg_config_home(const char *filename); - -/** - * Return a newly allocated string with the evaluation of - * "$XDG_CACHE_HOME/git/$filename" if $XDG_CACHE_HOME is non-empty, otherwise - * "$HOME/.cache/git/$filename". Return NULL upon error. - */ -char *xdg_cache_home(const char *filename); int git_open_cloexec(const char *name, int flags); #define git_open(name) git_open_cloexec(name, O_RDONLY) @@ -1378,8 +901,6 @@ int repo_interpret_branch_name(struct repository *r, struct strbuf *buf, const struct interpret_branch_name_options *options); -int validate_headref(const char *ref); - int base_name_compare(const char *name1, size_t len1, int mode1, const char *name2, size_t len2, int mode2); int df_name_compare(const char *name1, size_t len1, int mode1, @@ -1438,21 +959,6 @@ struct pack_entry { struct packed_git *p; }; -/* - * Create a temporary file rooted in the object database directory, or - * die on failure. The filename is taken from "pattern", which should have the - * usual "XXXXXX" trailer, and the resulting filename is written into the - * "template" buffer. Returns the open descriptor. - */ -int odb_mkstemp(struct strbuf *temp_filename, const char *pattern); - -/* - * Create a pack .keep file named "name" (which should generally be the output - * of odb_pack_name). Returns a file descriptor opened for writing, or -1 on - * error. - */ -int odb_pack_keep(const char *name); - /* * Set this to 0 to prevent oid_object_info_extended() from fetching missing * blobs. This has a difference only if extensions.partialClone is set. @@ -1464,62 +970,15 @@ extern int fetch_if_missing; /* Dumb servers support */ int update_server_info(int); -const char *get_log_output_encoding(void); -const char *get_commit_output_encoding(void); - -extern const char *git_commit_encoding; -extern const char *git_log_output_encoding; extern const char *git_mailmap_file; extern const char *git_mailmap_blob; -/* IO helper functions */ -void maybe_flush_or_die(FILE *, const char *); -__attribute__((format (printf, 2, 3))) -void fprintf_or_die(FILE *, const char *fmt, ...); -void fwrite_or_die(FILE *f, const void *buf, size_t count); -void fflush_or_die(FILE *f); - #define COPY_READ_ERROR (-2) #define COPY_WRITE_ERROR (-3) int copy_fd(int ifd, int ofd); int copy_file(const char *dst, const char *src, int mode); int copy_file_with_time(const char *dst, const char *src, int mode); -void write_or_die(int fd, const void *buf, size_t count); -void fsync_or_die(int fd, const char *); -int fsync_component(enum fsync_component component, int fd); -void fsync_component_or_die(enum fsync_component component, int fd, const char *msg); - -static inline int batch_fsync_enabled(enum fsync_component component) -{ - return (fsync_components & component) && (fsync_method == FSYNC_METHOD_BATCH); -} - -ssize_t read_in_full(int fd, void *buf, size_t count); -ssize_t write_in_full(int fd, const void *buf, size_t count); -ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset); - -static inline ssize_t write_str_in_full(int fd, const char *str) -{ - return write_in_full(fd, str, strlen(str)); -} - -/** - * Open (and truncate) the file at path, write the contents of buf to it, - * and close it. Dies if any errors are encountered. - */ -void write_file_buf(const char *path, const char *buf, size_t len); - -/** - * Like write_file_buf(), but format the contents into a buffer first. - * Additionally, write_file() will append a newline if one is not already - * present, making it convenient to write text files: - * - * write_file(path, "counter: %d", ctr); - */ -__attribute__((format (printf, 2, 3))) -void write_file(const char *path, const char *fmt, ...); - /* pager.c */ void setup_pager(void); int pager_in_use(void); @@ -1530,10 +989,6 @@ int decimal_width(uintmax_t); int check_pager_config(const char *cmd); void prepare_pager_args(struct child_process *, const char *pager); -extern const char *editor_program; -extern const char *askpass_program; -extern const char *excludes_file; - /* base85 */ int decode_85(char *dst, const char *line, int linelen); void encode_85(char *buf, const unsigned char *data, int bytes); @@ -1585,15 +1040,6 @@ int ws_blank_line(const char *line, int len); void overlay_tree_on_index(struct index_state *istate, const char *tree_name, const char *prefix); -/* setup.c */ -struct startup_info { - int have_repository; - const char *prefix; - const char *original_cwd; -}; -extern struct startup_info *startup_info; -extern const char *tmp_original_cwd; - /* merge.c */ struct commit_list; int try_merge_command(struct repository *r, @@ -1637,21 +1083,4 @@ void stat_validity_update(struct stat_validity *sv, int fd); int versioncmp(const char *s1, const char *s2); -/* - * Create a directory and (if share is nonzero) adjust its permissions - * according to the shared_repository setting. Only use this for - * directories under $GIT_DIR. Don't use it for working tree - * directories. - */ -void safe_create_dir(const char *dir, int share); - -/* - * Should we print an ellipsis after an abbreviated SHA-1 value - * when doing diff-raw output or indicating a detached HEAD? - */ -int print_sha1_ellipsis(void); - -/* Return 1 if the file is empty or does not exists, 0 otherwise. */ -int is_empty_or_missing_file(const char *filename); - #endif /* CACHE_H */ diff --git a/chdir-notify.c b/chdir-notify.c index 5f7f2c2ac2..929ec01b3a 100644 --- a/chdir-notify.c +++ b/chdir-notify.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "chdir-notify.h" #include "list.h" #include "strbuf.h" diff --git a/chunk-format.c b/chunk-format.c index f65e9a1e42..60a73c1b14 100644 --- a/chunk-format.c +++ b/chunk-format.c @@ -2,6 +2,8 @@ #include "alloc.h" #include "chunk-format.h" #include "csum-file.h" +#include "gettext.h" +#include "trace2.h" /* * When writing a chunk-based file format, collect the chunks in diff --git a/color.c b/color.c index 6b577ce0a7..672dcbb73a 100644 --- a/color.c +++ b/color.c @@ -1,6 +1,7 @@ #include "cache.h" #include "config.h" #include "color.h" +#include "gettext.h" #include "hex.h" static int git_use_color_default = GIT_COLOR_AUTO; diff --git a/combine-diff.c b/combine-diff.c index 2095396394..44ef6a1a81 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -4,6 +4,7 @@ #include "blob.h" #include "diff.h" #include "diffcore.h" +#include "environment.h" #include "hex.h" #include "quote.h" #include "xdiff-interface.h" diff --git a/commit-graph.c b/commit-graph.c index ff9590043b..b1e737c01b 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -1,5 +1,6 @@ -#include "git-compat-util.h" +#include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "pack.h" @@ -21,6 +22,7 @@ #include "json-writer.h" #include "trace2.h" #include "chunk-format.h" +#include "wrapper.h" void git_test_write_commit_graph_or_die(void) { diff --git a/commit.c b/commit.c index 8e22bebd0e..6d844da9a6 100644 --- a/commit.c +++ b/commit.c @@ -2,6 +2,8 @@ #include "tag.h" #include "commit.h" #include "commit-graph.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "object-store.h" @@ -21,6 +23,7 @@ #include "refs.h" #include "commit-reach.h" #include "run-command.h" +#include "setup.h" #include "shallow.h" #include "hook.h" diff --git a/common-main.c b/common-main.c index 0a22861f1c..b83cb5cf06 100644 --- a/common-main.c +++ b/common-main.c @@ -1,6 +1,8 @@ #include "cache.h" #include "exec-cmd.h" +#include "gettext.h" #include "attr.h" +#include "setup.h" /* * Many parts of Git have subprograms communicate via pipe, expect the diff --git a/compat/disk.h b/compat/disk.h index 50a32e3d8a..6c979c27d8 100644 --- a/compat/disk.h +++ b/compat/disk.h @@ -2,6 +2,8 @@ #define COMPAT_DISK_H #include "git-compat-util.h" +#include "abspath.h" +#include "gettext.h" static int get_disk_info(struct strbuf *out) { diff --git a/compat/fsmonitor/fsm-health-win32.c b/compat/fsmonitor/fsm-health-win32.c index 2ea08c1d4e..fe11bdd9ce 100644 --- a/compat/fsmonitor/fsm-health-win32.c +++ b/compat/fsmonitor/fsm-health-win32.c @@ -3,6 +3,7 @@ #include "fsmonitor.h" #include "fsm-health.h" #include "fsmonitor--daemon.h" +#include "gettext.h" /* * Every minute wake up and test our health. diff --git a/compat/fsmonitor/fsm-listen-darwin.c b/compat/fsmonitor/fsm-listen-darwin.c index 97a55a6f0a..5eb6402ab8 100644 --- a/compat/fsmonitor/fsm-listen-darwin.c +++ b/compat/fsmonitor/fsm-listen-darwin.c @@ -28,6 +28,7 @@ #include "fsm-listen.h" #include "fsmonitor--daemon.h" #include "fsmonitor-path-utils.h" +#include "gettext.h" struct fsm_listen_data { diff --git a/compat/fsmonitor/fsm-listen-win32.c b/compat/fsmonitor/fsm-listen-win32.c index 03df8d951b..7b07b74ba5 100644 --- a/compat/fsmonitor/fsm-listen-win32.c +++ b/compat/fsmonitor/fsm-listen-win32.c @@ -3,6 +3,7 @@ #include "fsmonitor.h" #include "fsm-listen.h" #include "fsmonitor--daemon.h" +#include "gettext.h" /* * The documentation of ReadDirectoryChangesW() states that the maximum diff --git a/compat/fsmonitor/fsm-path-utils-darwin.c b/compat/fsmonitor/fsm-path-utils-darwin.c index ce5a8febe0..45eb4a9b9e 100644 --- a/compat/fsmonitor/fsm-path-utils-darwin.c +++ b/compat/fsmonitor/fsm-path-utils-darwin.c @@ -1,5 +1,6 @@ #include "fsmonitor.h" #include "fsmonitor-path-utils.h" +#include "gettext.h" #include #include #include diff --git a/compat/fsmonitor/fsm-path-utils-win32.c b/compat/fsmonitor/fsm-path-utils-win32.c index 0d95bbb416..4024baafb9 100644 --- a/compat/fsmonitor/fsm-path-utils-win32.c +++ b/compat/fsmonitor/fsm-path-utils-win32.c @@ -1,6 +1,7 @@ #include "cache.h" #include "fsmonitor.h" #include "fsmonitor-path-utils.h" +#include "gettext.h" /* * Check remote working directory protocol. diff --git a/compat/linux/procinfo.c b/compat/linux/procinfo.c index bc2f9382a1..4bb2d66227 100644 --- a/compat/linux/procinfo.c +++ b/compat/linux/procinfo.c @@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "strbuf.h" #include "strvec.h" diff --git a/compat/mingw.c b/compat/mingw.c index 3afbde7894..94c5a1daa4 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -7,10 +7,14 @@ #include "../strbuf.h" #include "../run-command.h" #include "../cache.h" +#include "../abspath.h" #include "../alloc.h" #include "win32/lazyload.h" #include "../config.h" +#include "../environment.h" +#include "../wrapper.h" #include "dir.h" +#include "gettext.h" #define SECURITY_WIN32 #include diff --git a/compat/precompose_utf8.c b/compat/precompose_utf8.c index cce1d57a46..8a9881db07 100644 --- a/compat/precompose_utf8.c +++ b/compat/precompose_utf8.c @@ -7,6 +7,8 @@ #include "cache.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "utf8.h" #include "precompose_utf8.h" diff --git a/compat/simple-ipc/ipc-shared.c b/compat/simple-ipc/ipc-shared.c index 1b9d359ab6..e5e1dda8cc 100644 --- a/compat/simple-ipc/ipc-shared.c +++ b/compat/simple-ipc/ipc-shared.c @@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "simple-ipc.h" #include "strbuf.h" #include "pkt-line.h" diff --git a/compat/simple-ipc/ipc-unix-socket.c b/compat/simple-ipc/ipc-unix-socket.c index 28a79289d4..152db60a31 100644 --- a/compat/simple-ipc/ipc-unix-socket.c +++ b/compat/simple-ipc/ipc-unix-socket.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "gettext.h" #include "simple-ipc.h" #include "strbuf.h" #include "pkt-line.h" diff --git a/compat/simple-ipc/ipc-win32.c b/compat/simple-ipc/ipc-win32.c index 20ea7b65e0..997f614434 100644 --- a/compat/simple-ipc/ipc-win32.c +++ b/compat/simple-ipc/ipc-win32.c @@ -1,4 +1,6 @@ #include "cache.h" +#include "abspath.h" +#include "gettext.h" #include "simple-ipc.h" #include "strbuf.h" #include "pkt-line.h" diff --git a/compat/terminal.c b/compat/terminal.c index ea490a7ced..d87e321189 100644 --- a/compat/terminal.c +++ b/compat/terminal.c @@ -1,10 +1,12 @@ -#include "cache.h" +#include "git-compat-util.h" #include "compat/terminal.h" +#include "gettext.h" #include "sigchain.h" #include "strbuf.h" #include "run-command.h" #include "string-list.h" #include "hashmap.h" +#include "wrapper.h" #if defined(HAVE_DEV_TTY) || defined(GIT_WINDOWS_NATIVE) diff --git a/config.c b/config.c index 03f38b621f..493f47df8a 100644 --- a/config.c +++ b/config.c @@ -5,12 +5,14 @@ * Copyright (C) Johannes Schindelin, 2005 * */ -#include "git-compat-util.h" +#include "cache.h" +#include "abspath.h" #include "alloc.h" #include "date.h" #include "branch.h" #include "config.h" #include "environment.h" +#include "gettext.h" #include "ident.h" #include "repository.h" #include "lockfile.h" @@ -25,7 +27,10 @@ #include "color.h" #include "replace-object.h" #include "refs.h" +#include "setup.h" #include "worktree.h" +#include "wrapper.h" +#include "write-or-die.h" struct config_source { struct config_source *prev; diff --git a/connect.c b/connect.c index ed486116ee..c0c8a38178 100644 --- a/connect.c +++ b/connect.c @@ -1,6 +1,8 @@ #include "git-compat-util.h" #include "cache.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "pkt-line.h" #include "quote.h" diff --git a/connected.c b/connected.c index 0b7be81237..d672521da4 100644 --- a/connected.c +++ b/connected.c @@ -1,4 +1,5 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "run-command.h" diff --git a/convert.c b/convert.c index 349c7e4af1..da06e2f51c 100644 --- a/convert.c +++ b/convert.c @@ -1,5 +1,6 @@ #include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "attr.h" @@ -10,6 +11,7 @@ #include "sub-process.h" #include "utf8.h" #include "ll-merge.h" +#include "wrapper.h" /* * convert.c - convert a file when checking it out and checking it in. diff --git a/copy.c b/copy.c index 4de6a110f0..c3250f0822 100644 --- a/copy.c +++ b/copy.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "wrapper.h" int copy_fd(int ifd, int ofd) { diff --git a/credential.c b/credential.c index ea40a2a410..e6417bf880 100644 --- a/credential.c +++ b/credential.c @@ -1,6 +1,8 @@ #include "cache.h" +#include "abspath.h" #include "config.h" #include "credential.h" +#include "gettext.h" #include "string-list.h" #include "run-command.h" #include "url.h" diff --git a/csum-file.c b/csum-file.c index cce13c0f04..82ae2973d3 100644 --- a/csum-file.c +++ b/csum-file.c @@ -7,9 +7,10 @@ * files. Useful when you write a file that you want to be * able to verify hasn't been messed with afterwards. */ -#include "cache.h" +#include "git-compat-util.h" #include "progress.h" #include "csum-file.h" +#include "wrapper.h" static void verify_buffer_or_die(struct hashfile *f, const void *buf, diff --git a/csum-file.h b/csum-file.h index 793a59da12..566e05cbd2 100644 --- a/csum-file.h +++ b/csum-file.h @@ -1,8 +1,8 @@ #ifndef CSUM_FILE_H #define CSUM_FILE_H -#include "cache.h" #include "hash.h" +#include "write-or-die.h" struct progress; diff --git a/daemon.c b/daemon.c index 8908e7f8d2..db8a31a6ea 100644 --- a/daemon.c +++ b/daemon.c @@ -1,10 +1,14 @@ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" #include "pkt-line.h" #include "run-command.h" +#include "setup.h" #include "strbuf.h" #include "string-list.h" +#include "wrapper.h" #ifdef NO_INITGROUPS #define initgroups(x, y) (0) /* nothing */ diff --git a/date.c b/date.c index 6f45eeb356..1fb2cd1b53 100644 --- a/date.c +++ b/date.c @@ -6,6 +6,7 @@ #include "cache.h" #include "date.h" +#include "gettext.h" /* * This is like mktime, but without normalization of tm_wday and tm_yday. diff --git a/delta-islands.c b/delta-islands.c index 7a412ccbf6..40f2ccfb55 100644 --- a/delta-islands.c +++ b/delta-islands.c @@ -1,9 +1,10 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "attr.h" #include "object.h" #include "blob.h" #include "commit.h" +#include "gettext.h" #include "hex.h" #include "tag.h" #include "tree.h" diff --git a/diagnose.c b/diagnose.c index 998f517c48..f1aebf0b50 100644 --- a/diagnose.c +++ b/diagnose.c @@ -4,11 +4,13 @@ #include "archive.h" #include "dir.h" #include "help.h" +#include "gettext.h" #include "hex.h" #include "strvec.h" #include "object-store.h" #include "packfile.h" #include "parse-options.h" +#include "write-or-die.h" struct archive_dir { const char *path; diff --git a/diff-lib.c b/diff-lib.c index 628e13c8b0..4169dd8cb1 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -6,6 +6,7 @@ #include "commit.h" #include "diff.h" #include "diffcore.h" +#include "gettext.h" #include "hex.h" #include "revision.h" #include "cache-tree.h" diff --git a/diff-no-index.c b/diff-no-index.c index a3cf358baf..934a24bee5 100644 --- a/diff-no-index.c +++ b/diff-no-index.c @@ -5,12 +5,14 @@ */ #include "cache.h" +#include "abspath.h" #include "color.h" #include "commit.h" #include "blob.h" #include "tag.h" #include "diff.h" #include "diffcore.h" +#include "gettext.h" #include "revision.h" #include "log-tree.h" #include "parse-options.h" diff --git a/diff.c b/diff.c index b0a810fbee..78b0fdd8ca 100644 --- a/diff.c +++ b/diff.c @@ -2,8 +2,11 @@ * Copyright (C) 2005 Junio C Hamano */ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "tempfile.h" #include "quote.h" #include "diff.h" @@ -30,7 +33,9 @@ #include "help.h" #include "promisor-remote.h" #include "dir.h" +#include "setup.h" #include "strmap.h" +#include "wrapper.h" #ifdef NO_FAST_WORKING_DIRECTORY #define FAST_WORKING_DIRECTORY 0 diff --git a/dir.c b/dir.c index b06a100514..18fd14c46b 100644 --- a/dir.c +++ b/dir.c @@ -6,9 +6,12 @@ * Junio Hamano, 2005-2006 */ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "object-store.h" #include "attr.h" #include "refs.h" @@ -18,7 +21,9 @@ #include "varint.h" #include "ewah/ewok.h" #include "fsmonitor.h" +#include "setup.h" #include "submodule-config.h" +#include "wrapper.h" /* * Tells read_directory_recursive how a file or directory should be treated. diff --git a/editor.c b/editor.c index 008c04fe2f..d632d79066 100644 --- a/editor.c +++ b/editor.c @@ -1,5 +1,8 @@ #include "cache.h" +#include "abspath.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "strbuf.h" #include "strvec.h" #include "run-command.h" diff --git a/entry.c b/entry.c index 8c21f98b9e..d89e61fa64 100644 --- a/entry.c +++ b/entry.c @@ -2,6 +2,8 @@ #include "blob.h" #include "object-store.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "streaming.h" #include "submodule.h" @@ -9,6 +11,7 @@ #include "fsmonitor.h" #include "entry.h" #include "parallel-checkout.h" +#include "wrapper.h" static void create_directories(const char *path, int path_len, const struct checkout *state) diff --git a/environment.c b/environment.c index 89d89110e4..63c697e7e9 100644 --- a/environment.c +++ b/environment.c @@ -8,8 +8,10 @@ * are. */ #include "cache.h" +#include "abspath.h" #include "branch.h" #include "environment.h" +#include "gettext.h" #include "repository.h" #include "config.h" #include "refs.h" @@ -20,7 +22,10 @@ #include "replace-object.h" #include "tmp-objdir.h" #include "chdir-notify.h" +#include "setup.h" #include "shallow.h" +#include "wrapper.h" +#include "write-or-die.h" int trust_executable_bit = 1; int trust_ctime = 1; diff --git a/environment.h b/environment.h index d438b5c8f3..a63f0c6a24 100644 --- a/environment.h +++ b/environment.h @@ -3,10 +3,230 @@ #include "strvec.h" +struct repository; + +/* + * The character that begins a commented line in user-editable file + * that is subject to stripspace. + */ +extern char comment_line_char; +extern int auto_comment_line_char; + /* * Wrapper of getenv() that returns a strdup value. This value is kept * in argv to be freed later. */ const char *getenv_safe(struct strvec *argv, const char *name); +/* Double-check local_repo_env below if you add to this list. */ +#define GIT_DIR_ENVIRONMENT "GIT_DIR" +#define GIT_COMMON_DIR_ENVIRONMENT "GIT_COMMON_DIR" +#define GIT_NAMESPACE_ENVIRONMENT "GIT_NAMESPACE" +#define GIT_WORK_TREE_ENVIRONMENT "GIT_WORK_TREE" +#define GIT_PREFIX_ENVIRONMENT "GIT_PREFIX" +#define DEFAULT_GIT_DIR_ENVIRONMENT ".git" +#define DB_ENVIRONMENT "GIT_OBJECT_DIRECTORY" +#define INDEX_ENVIRONMENT "GIT_INDEX_FILE" +#define GRAFT_ENVIRONMENT "GIT_GRAFT_FILE" +#define GIT_SHALLOW_FILE_ENVIRONMENT "GIT_SHALLOW_FILE" +#define TEMPLATE_DIR_ENVIRONMENT "GIT_TEMPLATE_DIR" +#define CONFIG_ENVIRONMENT "GIT_CONFIG" +#define CONFIG_DATA_ENVIRONMENT "GIT_CONFIG_PARAMETERS" +#define CONFIG_COUNT_ENVIRONMENT "GIT_CONFIG_COUNT" +#define EXEC_PATH_ENVIRONMENT "GIT_EXEC_PATH" +#define CEILING_DIRECTORIES_ENVIRONMENT "GIT_CEILING_DIRECTORIES" +#define NO_REPLACE_OBJECTS_ENVIRONMENT "GIT_NO_REPLACE_OBJECTS" +#define GIT_REPLACE_REF_BASE_ENVIRONMENT "GIT_REPLACE_REF_BASE" +#define GITATTRIBUTES_FILE ".gitattributes" +#define INFOATTRIBUTES_FILE "info/attributes" +#define ATTRIBUTE_MACRO_PREFIX "[attr]" +#define GITMODULES_FILE ".gitmodules" +#define GITMODULES_INDEX ":.gitmodules" +#define GITMODULES_HEAD "HEAD:.gitmodules" +#define GIT_NOTES_REF_ENVIRONMENT "GIT_NOTES_REF" +#define GIT_NOTES_DEFAULT_REF "refs/notes/commits" +#define GIT_NOTES_DISPLAY_REF_ENVIRONMENT "GIT_NOTES_DISPLAY_REF" +#define GIT_NOTES_REWRITE_REF_ENVIRONMENT "GIT_NOTES_REWRITE_REF" +#define GIT_NOTES_REWRITE_MODE_ENVIRONMENT "GIT_NOTES_REWRITE_MODE" +#define GIT_LITERAL_PATHSPECS_ENVIRONMENT "GIT_LITERAL_PATHSPECS" +#define GIT_GLOB_PATHSPECS_ENVIRONMENT "GIT_GLOB_PATHSPECS" +#define GIT_NOGLOB_PATHSPECS_ENVIRONMENT "GIT_NOGLOB_PATHSPECS" +#define GIT_ICASE_PATHSPECS_ENVIRONMENT "GIT_ICASE_PATHSPECS" +#define GIT_QUARANTINE_ENVIRONMENT "GIT_QUARANTINE_PATH" +#define GIT_OPTIONAL_LOCKS_ENVIRONMENT "GIT_OPTIONAL_LOCKS" +#define GIT_TEXT_DOMAIN_DIR_ENVIRONMENT "GIT_TEXTDOMAINDIR" + +/* + * Environment variable used in handshaking the wire protocol. + * Contains a colon ':' separated list of keys with optional values + * 'key[=value]'. Presence of unknown keys and values must be + * ignored. + */ +#define GIT_PROTOCOL_ENVIRONMENT "GIT_PROTOCOL" +/* HTTP header used to handshake the wire protocol */ +#define GIT_PROTOCOL_HEADER "Git-Protocol" + +/* + * This environment variable is expected to contain a boolean indicating + * whether we should or should not treat: + * + * GIT_DIR=foo.git git ... + * + * as if GIT_WORK_TREE=. was given. It's not expected that users will make use + * of this, but we use it internally to communicate to sub-processes that we + * are in a bare repo. If not set, defaults to true. + */ +#define GIT_IMPLICIT_WORK_TREE_ENVIRONMENT "GIT_IMPLICIT_WORK_TREE" + +/* + * Repository-local GIT_* environment variables; these will be cleared + * when git spawns a sub-process that runs inside another repository. + * The array is NULL-terminated, which makes it easy to pass in the "env" + * parameter of a run-command invocation, or to do a simple walk. + */ +extern const char * const local_repo_env[]; + +void setup_git_env(const char *git_dir); + +/* + * Returns true iff we have a configured git repository (either via + * setup_git_directory, or in the environment via $GIT_DIR). + */ +int have_git_dir(void); + +extern int is_bare_repository_cfg; +int is_bare_repository(void); +extern char *git_work_tree_cfg; +const char *get_git_dir(void); +const char *get_git_common_dir(void); +const char *get_object_directory(void); +char *get_index_file(void); +char *get_graft_file(struct repository *r); +void set_git_dir(const char *path, int make_realpath); +const char *get_git_namespace(void); +const char *strip_namespace(const char *namespaced_ref); +const char *get_git_work_tree(void); +void set_git_work_tree(const char *tree); + +#define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES" + +/* Environment bits from configuration mechanism */ +extern int trust_executable_bit; +extern int trust_ctime; +extern int check_stat; +extern int has_symlinks; +extern int minimum_abbrev, default_abbrev; +extern int ignore_case; +extern int assume_unchanged; +extern int prefer_symlink_refs; +extern int warn_ambiguous_refs; +extern int warn_on_object_refname_ambiguity; +extern char *apply_default_whitespace; +extern char *apply_default_ignorewhitespace; +extern const char *git_attributes_file; +extern const char *git_hooks_path; +extern int zlib_compression_level; +extern int pack_compression_level; +extern size_t packed_git_window_size; +extern size_t packed_git_limit; +extern size_t delta_base_cache_limit; +extern unsigned long big_file_threshold; +extern unsigned long pack_size_limit_cfg; + +/* + * Accessors for the core.sharedrepository config which lazy-load the value + * from the config (if not already set). The "reset" function can be + * used to unset "set" or cached value, meaning that the value will be loaded + * fresh from the config file on the next call to get_shared_repository(). + */ +void set_shared_repository(int value); +int get_shared_repository(void); +void reset_shared_repository(void); + +extern int core_preload_index; +extern int precomposed_unicode; +extern int protect_hfs; +extern int protect_ntfs; + +extern int core_apply_sparse_checkout; +extern int core_sparse_checkout_cone; +extern int sparse_expect_files_outside_of_patterns; + +/* + * Returns the boolean value of $GIT_OPTIONAL_LOCKS (or the default value). + */ +int use_optional_locks(void); + +enum log_refs_config { + LOG_REFS_UNSET = -1, + LOG_REFS_NONE = 0, + LOG_REFS_NORMAL, + LOG_REFS_ALWAYS +}; +extern enum log_refs_config log_all_ref_updates; + +enum rebase_setup_type { + AUTOREBASE_NEVER = 0, + AUTOREBASE_LOCAL, + AUTOREBASE_REMOTE, + AUTOREBASE_ALWAYS +}; + +enum push_default_type { + PUSH_DEFAULT_NOTHING = 0, + PUSH_DEFAULT_MATCHING, + PUSH_DEFAULT_SIMPLE, + PUSH_DEFAULT_UPSTREAM, + PUSH_DEFAULT_CURRENT, + PUSH_DEFAULT_UNSPECIFIED +}; + +extern enum rebase_setup_type autorebase; +extern enum push_default_type push_default; + +enum object_creation_mode { + OBJECT_CREATION_USES_HARDLINKS = 0, + OBJECT_CREATION_USES_RENAMES = 1 +}; + +extern enum object_creation_mode object_creation_mode; + +extern char *notes_ref_name; + +extern int grafts_replace_parents; + +extern int repository_format_precious_objects; +extern int repository_format_worktree_config; + +/* + * Create a temporary file rooted in the object database directory, or + * die on failure. The filename is taken from "pattern", which should have the + * usual "XXXXXX" trailer, and the resulting filename is written into the + * "template" buffer. Returns the open descriptor. + */ +int odb_mkstemp(struct strbuf *temp_filename, const char *pattern); + +/* + * Create a pack .keep file named "name" (which should generally be the output + * of odb_pack_name). Returns a file descriptor opened for writing, or -1 on + * error. + */ +int odb_pack_keep(const char *name); + +const char *get_log_output_encoding(void); +const char *get_commit_output_encoding(void); + +extern const char *git_commit_encoding; +extern const char *git_log_output_encoding; + +extern const char *editor_program; +extern const char *askpass_program; +extern const char *excludes_file; + +/* + * Should we print an ellipsis after an abbreviated SHA-1 value + * when doing diff-raw output or indicating a detached HEAD? + */ +int print_sha1_ellipsis(void); + #endif diff --git a/exec-cmd.c b/exec-cmd.c index 0232bbc990..fae0d4b244 100644 --- a/exec-cmd.c +++ b/exec-cmd.c @@ -1,5 +1,8 @@ #include "cache.h" +#include "abspath.h" +#include "environment.h" #include "exec-cmd.h" +#include "gettext.h" #include "quote.h" #include "strvec.h" diff --git a/fetch-pack.c b/fetch-pack.c index 12675052f9..368f2ed25a 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -1,7 +1,9 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "repository.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "refs.h" @@ -29,6 +31,7 @@ #include "commit-graph.h" #include "sigchain.h" #include "mergesort.h" +#include "wrapper.h" static int transfer_unpack_limit = -1; static int fetch_unpack_limit = -1; diff --git a/fmt-merge-msg.c b/fmt-merge-msg.c index 5236b75fab..1886c92ddb 100644 --- a/fmt-merge-msg.c +++ b/fmt-merge-msg.c @@ -1,6 +1,7 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "config.h" +#include "environment.h" #include "refs.h" #include "object-store.h" #include "diff.h" diff --git a/fsck.c b/fsck.c index adbe8bf59e..8ef1b02234 100644 --- a/fsck.c +++ b/fsck.c @@ -1,4 +1,4 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "hex.h" #include "object-store.h" diff --git a/fsmonitor-ipc.c b/fsmonitor-ipc.c index 19d772f0f3..866828e299 100644 --- a/fsmonitor-ipc.c +++ b/fsmonitor-ipc.c @@ -1,5 +1,6 @@ #include "cache.h" #include "fsmonitor.h" +#include "gettext.h" #include "simple-ipc.h" #include "fsmonitor-ipc.h" #include "run-command.h" diff --git a/fsmonitor.c b/fsmonitor.c index a5b9e75437..c956a347a2 100644 --- a/fsmonitor.c +++ b/fsmonitor.c @@ -1,6 +1,7 @@ #include "cache.h" #include "config.h" #include "dir.h" +#include "environment.h" #include "ewah/ewok.h" #include "fsmonitor.h" #include "fsmonitor-ipc.h" diff --git a/gettext.c b/gettext.c index f139008d0a..5f34870830 100644 --- a/gettext.c +++ b/gettext.c @@ -2,7 +2,9 @@ * Copyright (c) 2010 Ævar Arnfjörð Bjarmason */ -#include "cache.h" +#include "git-compat-util.h" +#include "abspath.h" +#include "environment.h" #include "exec-cmd.h" #include "gettext.h" #include "strbuf.h" diff --git a/git.c b/git.c index ae2134f29a..77f920a6f6 100644 --- a/git.c +++ b/git.c @@ -1,10 +1,13 @@ #include "builtin.h" #include "config.h" +#include "environment.h" #include "exec-cmd.h" +#include "gettext.h" #include "help.h" #include "run-command.h" #include "alias.h" #include "replace-object.h" +#include "setup.h" #include "shallow.h" #define RUN_SETUP (1<<0) diff --git a/gpg-interface.c b/gpg-interface.c index 855970bb93..aceeb08336 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -1,6 +1,7 @@ -#include "cache.h" +#include "git-compat-util.h" #include "commit.h" #include "config.h" +#include "gettext.h" #include "run-command.h" #include "strbuf.h" #include "dir.h" @@ -9,6 +10,7 @@ #include "sigchain.h" #include "tempfile.h" #include "alias.h" +#include "wrapper.h" static int git_gpg_config(const char *, const char *, void *); @@ -1048,7 +1050,7 @@ static int sign_buffer_ssh(struct strbuf *buffer, struct strbuf *signature, ssh_signing_key_file = strbuf_detach(&key_file->filename, NULL); } else { /* We assume a file */ - ssh_signing_key_file = expand_user_path(signing_key, 1); + ssh_signing_key_file = interpolate_path(signing_key, 1); } buffer_file = mks_tempfile_t(".git_signing_buffer_tmpXXXXXX"); diff --git a/grep.c b/grep.c index 25dc2ec788..b86462a12a 100644 --- a/grep.c +++ b/grep.c @@ -1,5 +1,6 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" +#include "gettext.h" #include "grep.h" #include "hex.h" #include "object-store.h" diff --git a/http-backend.c b/http-backend.c index 9cfc6f2541..89aad1b42c 100644 --- a/http-backend.c +++ b/http-backend.c @@ -1,6 +1,7 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "config.h" +#include "environment.h" #include "hex.h" #include "repository.h" #include "refs.h" @@ -16,6 +17,8 @@ #include "object-store.h" #include "protocol.h" #include "date.h" +#include "wrapper.h" +#include "write-or-die.h" static const char content_type[] = "Content-Type"; static const char content_length[] = "Content-Length"; diff --git a/http-fetch.c b/http-fetch.c index 8db35b9767..c874d3402d 100644 --- a/http-fetch.c +++ b/http-fetch.c @@ -1,9 +1,11 @@ #include "cache.h" #include "config.h" #include "exec-cmd.h" +#include "gettext.h" #include "hex.h" #include "http.h" #include "walker.h" +#include "setup.h" #include "strvec.h" #include "urlmatch.h" #include "trace2.h" diff --git a/http-push.c b/http-push.c index 0e2646a6c9..88b70f2c44 100644 --- a/http-push.c +++ b/http-push.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "environment.h" #include "hex.h" #include "repository.h" #include "commit.h" @@ -11,6 +12,7 @@ #include "exec-cmd.h" #include "remote.h" #include "list-objects.h" +#include "setup.h" #include "sigchain.h" #include "strvec.h" #include "packfile.h" diff --git a/imap-send.c b/imap-send.c index 93e9018439..a62424e90a 100644 --- a/imap-send.c +++ b/imap-send.c @@ -25,8 +25,11 @@ #include "config.h" #include "credential.h" #include "exec-cmd.h" +#include "gettext.h" #include "run-command.h" #include "parse-options.h" +#include "setup.h" +#include "wrapper.h" #if defined(NO_OPENSSL) && !defined(HAVE_OPENSSL_CSPRNG) typedef void *SSL; #endif diff --git a/line-log.c b/line-log.c index 6e7fc4b2e0..10c19daec4 100644 --- a/line-log.c +++ b/line-log.c @@ -1,7 +1,6 @@ #include "git-compat-util.h" #include "alloc.h" #include "line-range.h" -#include "cache.h" #include "hex.h" #include "tag.h" #include "blob.h" @@ -16,6 +15,7 @@ #include "graph.h" #include "userdiff.h" #include "line-log.h" +#include "setup.h" #include "strvec.h" #include "bloom.h" diff --git a/list-objects-filter-options.h b/list-objects-filter-options.h index 727c986122..f620612586 100644 --- a/list-objects-filter-options.h +++ b/list-objects-filter-options.h @@ -1,6 +1,7 @@ #ifndef LIST_OBJECTS_FILTER_OPTIONS_H #define LIST_OBJECTS_FILTER_OPTIONS_H +#include "gettext.h" #include "object.h" #include "string-list.h" #include "strbuf.h" diff --git a/list-objects-filter.c b/list-objects-filter.c index 5d7b331660..298ca08711 100644 --- a/list-objects-filter.c +++ b/list-objects-filter.c @@ -1,6 +1,7 @@ #include "cache.h" #include "alloc.h" #include "dir.h" +#include "gettext.h" #include "hex.h" #include "tag.h" #include "commit.h" diff --git a/list-objects.c b/list-objects.c index 6e6e7ce61e..df18d10306 100644 --- a/list-objects.c +++ b/list-objects.c @@ -1,6 +1,7 @@ #include "cache.h" #include "tag.h" #include "commit.h" +#include "gettext.h" #include "hex.h" #include "tree.h" #include "blob.h" diff --git a/ll-merge.c b/ll-merge.c index 130d26501c..8be38d3bd4 100644 --- a/ll-merge.c +++ b/ll-merge.c @@ -11,6 +11,7 @@ #include "run-command.h" #include "ll-merge.h" #include "quote.h" +#include "wrapper.h" struct ll_merge_driver; diff --git a/lockfile.c b/lockfile.c index cc9a4b8428..1d5ed01682 100644 --- a/lockfile.c +++ b/lockfile.c @@ -2,7 +2,9 @@ * Copyright (c) 2005, Junio C Hamano */ -#include "cache.h" +#include "git-compat-util.h" +#include "abspath.h" +#include "gettext.h" #include "lockfile.h" /* diff --git a/log-tree.c b/log-tree.c index f65c36e19d..627c711f70 100644 --- a/log-tree.c +++ b/log-tree.c @@ -2,6 +2,7 @@ #include "commit-reach.h" #include "config.h" #include "diff.h" +#include "environment.h" #include "hex.h" #include "object-store.h" #include "repository.h" @@ -22,6 +23,7 @@ #include "help.h" #include "range-diff.h" #include "strmap.h" +#include "write-or-die.h" static struct decoration name_decoration = { "object names" }; static int decoration_loaded; diff --git a/ls-refs.c b/ls-refs.c index 8091b0cca8..b9f3e08ec3 100644 --- a/ls-refs.c +++ b/ls-refs.c @@ -1,4 +1,6 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "refs.h" diff --git a/mailmap.c b/mailmap.c index a302335129..74fd9db448 100644 --- a/mailmap.c +++ b/mailmap.c @@ -1,7 +1,9 @@ #include "cache.h" +#include "environment.h" #include "string-list.h" #include "mailmap.h" #include "object-store.h" +#include "setup.h" const char *git_mailmap_file; const char *git_mailmap_blob; diff --git a/merge-ort-wrappers.c b/merge-ort-wrappers.c index 748924a69b..c00dfbab1c 100644 --- a/merge-ort-wrappers.c +++ b/merge-ort-wrappers.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "gettext.h" #include "merge-ort.h" #include "merge-ort-wrappers.h" diff --git a/merge-ort.c b/merge-ort.c index dace4073a0..5bf64354d1 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -26,6 +26,8 @@ #include "diff.h" #include "diffcore.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "entry.h" #include "ll-merge.h" diff --git a/merge-recursive.c b/merge-recursive.c index e324472146..ed5534eb57 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -17,6 +17,8 @@ #include "diff.h" #include "diffcore.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "ll-merge.h" #include "lockfile.h" @@ -29,6 +31,7 @@ #include "tag.h" #include "tree-walk.h" #include "unpack-trees.h" +#include "wrapper.h" #include "xdiff-interface.h" struct merge_options_internal { diff --git a/merge.c b/merge.c index 2c8b845684..da7fa652c2 100644 --- a/merge.c +++ b/merge.c @@ -1,6 +1,7 @@ #include "cache.h" #include "diff.h" #include "diffcore.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "commit.h" diff --git a/midx.c b/midx.c index 47989f7ea7..9af3e5de88 100644 --- a/midx.c +++ b/midx.c @@ -1,8 +1,10 @@ -#include "git-compat-util.h" +#include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "csum-file.h" #include "dir.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "packfile.h" diff --git a/name-hash.c b/name-hash.c index cd009c7c8a..2c2861efd1 100644 --- a/name-hash.c +++ b/name-hash.c @@ -6,6 +6,8 @@ * Copyright (C) 2008 Linus Torvalds */ #include "cache.h" +#include "environment.h" +#include "gettext.h" #include "thread-utils.h" #include "trace2.h" #include "sparse-index.h" diff --git a/negotiator/default.c b/negotiator/default.c index 658d9dd6b9..f4b78eb47d 100644 --- a/negotiator/default.c +++ b/negotiator/default.c @@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "default.h" #include "../commit.h" #include "../fetch-negotiator.h" diff --git a/negotiator/skipping.c b/negotiator/skipping.c index c4de512e6e..c7d6ab39bc 100644 --- a/negotiator/skipping.c +++ b/negotiator/skipping.c @@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "skipping.h" #include "../commit.h" #include "../fetch-negotiator.h" diff --git a/notes-cache.c b/notes-cache.c index 1a6e214ea7..fbcdfd0dfe 100644 --- a/notes-cache.c +++ b/notes-cache.c @@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "notes-cache.h" #include "object-store.h" #include "repository.h" diff --git a/notes-merge.c b/notes-merge.c index 571ecf15c7..c40107c3aa 100644 --- a/notes-merge.c +++ b/notes-merge.c @@ -1,5 +1,6 @@ #include "cache.h" #include "commit.h" +#include "gettext.h" #include "refs.h" #include "object-store.h" #include "repository.h" @@ -14,6 +15,7 @@ #include "strbuf.h" #include "notes-utils.h" #include "commit-reach.h" +#include "wrapper.h" struct notes_merge_pair { struct object_id obj, base, local, remote; diff --git a/notes-utils.c b/notes-utils.c index 4be0aaa6de..cb88171b7b 100644 --- a/notes-utils.c +++ b/notes-utils.c @@ -1,6 +1,8 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "commit.h" +#include "environment.h" +#include "gettext.h" #include "refs.h" #include "notes-utils.h" #include "repository.h" diff --git a/notes.c b/notes.c index d40affc0f2..45fb7f22d1 100644 --- a/notes.c +++ b/notes.c @@ -1,5 +1,6 @@ #include "cache.h" #include "config.h" +#include "environment.h" #include "hex.h" #include "notes.h" #include "object-store.h" diff --git a/object-file.c b/object-file.c index bd9741c7f3..76b22ca75c 100644 --- a/object-file.c +++ b/object-file.c @@ -6,9 +6,12 @@ * This handles basic git object files - packing, unpacking, * creation etc. */ -#include "git-compat-util.h" +#include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "string-list.h" #include "lockfile.h" @@ -34,8 +37,10 @@ #include "packfile.h" #include "object-store.h" #include "promisor-remote.h" +#include "setup.h" #include "submodule.h" #include "fsck.h" +#include "wrapper.h" /* The maximum size for an object header. */ #define MAX_HEADER_LEN 32 diff --git a/object-name.c b/object-name.c index 5e11b7fc97..f1edc0035b 100644 --- a/object-name.c +++ b/object-name.c @@ -1,5 +1,7 @@ #include "cache.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "tag.h" #include "commit.h" @@ -13,6 +15,7 @@ #include "packfile.h" #include "object-store.h" #include "repository.h" +#include "setup.h" #include "submodule.h" #include "midx.h" #include "commit-reach.h" diff --git a/object.c b/object.c index 609fed1b73..45c9721b8c 100644 --- a/object.c +++ b/object.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "gettext.h" #include "hex.h" #include "object.h" #include "replace-object.h" diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c index a3cafa8e20..7f5f489beb 100644 --- a/pack-bitmap-write.c +++ b/pack-bitmap-write.c @@ -1,5 +1,7 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "commit.h" @@ -15,6 +17,7 @@ #include "pack-objects.h" #include "commit-reach.h" #include "prio-queue.h" +#include "trace2.h" struct bitmapped_commit { struct commit *commit; diff --git a/pack-bitmap.c b/pack-bitmap.c index f8ab6be411..b2e7d06d60 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -1,6 +1,7 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "commit.h" +#include "gettext.h" #include "hex.h" #include "strbuf.h" #include "tag.h" diff --git a/pack-check.c b/pack-check.c index 7ed594d667..6974e40a95 100644 --- a/pack-check.c +++ b/pack-check.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "environment.h" #include "hex.h" #include "repository.h" #include "pack.h" diff --git a/pack-mtimes.c b/pack-mtimes.c index 0f9785fc5e..afed632190 100644 --- a/pack-mtimes.c +++ b/pack-mtimes.c @@ -1,4 +1,5 @@ -#include "git-compat-util.h" +#include "cache.h" +#include "gettext.h" #include "pack-mtimes.h" #include "object-store.h" #include "packfile.h" diff --git a/pack-revindex.c b/pack-revindex.c index 08dc160167..03c7e81f9d 100644 --- a/pack-revindex.c +++ b/pack-revindex.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "gettext.h" #include "pack-revindex.h" #include "object-store.h" #include "packfile.h" diff --git a/pack-write.c b/pack-write.c index 041e573bc1..f171405495 100644 --- a/pack-write.c +++ b/pack-write.c @@ -1,4 +1,6 @@ #include "cache.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "pack.h" #include "csum-file.h" diff --git a/pack.h b/pack.h index 01d385903a..3ab9e3f60c 100644 --- a/pack.h +++ b/pack.h @@ -4,6 +4,8 @@ #include "object.h" #include "csum-file.h" +struct packed_git; +struct pack_window; struct repository; /* diff --git a/packfile.c b/packfile.c index 53fcc0f44c..b120405ccc 100644 --- a/packfile.c +++ b/packfile.c @@ -1,5 +1,7 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "list.h" #include "pack.h" @@ -19,6 +21,7 @@ #include "midx.h" #include "commit-graph.h" #include "promisor-remote.h" +#include "wrapper.h" char *odb_pack_name(struct strbuf *buf, const unsigned char *hash, diff --git a/packfile.h b/packfile.h index 6ec1656797..665603b696 100644 --- a/packfile.h +++ b/packfile.h @@ -1,11 +1,13 @@ #ifndef PACKFILE_H #define PACKFILE_H -#include "cache.h" +#include "object.h" #include "oidset.h" /* in object-store.h */ struct packed_git; +struct pack_entry; +struct pack_window; struct object_info; /* diff --git a/parallel-checkout.c b/parallel-checkout.c index 2455aa356d..50fd7fe31e 100644 --- a/parallel-checkout.c +++ b/parallel-checkout.c @@ -2,6 +2,7 @@ #include "alloc.h" #include "config.h" #include "entry.h" +#include "gettext.h" #include "hex.h" #include "parallel-checkout.h" #include "pkt-line.h" @@ -11,6 +12,7 @@ #include "streaming.h" #include "thread-utils.h" #include "trace2.h" +#include "wrapper.h" struct pc_worker { struct child_process cp; diff --git a/parse-options-cb.c b/parse-options-cb.c index c1c46726d3..2488e6c030 100644 --- a/parse-options-cb.c +++ b/parse-options-cb.c @@ -4,6 +4,8 @@ #include "cache.h" #include "commit.h" #include "color.h" +#include "environment.h" +#include "gettext.h" #include "string-list.h" #include "strvec.h" #include "oid-array.h" diff --git a/parse-options.c b/parse-options.c index 6dd4c090e0..b6803647d0 100644 --- a/parse-options.c +++ b/parse-options.c @@ -1,9 +1,10 @@ #include "git-compat-util.h" #include "parse-options.h" -#include "cache.h" +#include "abspath.h" #include "config.h" #include "commit.h" #include "color.h" +#include "gettext.h" #include "utf8.h" static int disallow_abbreviated_options; diff --git a/parse-options.h b/parse-options.h index fcb58c4043..6f6462fdf9 100644 --- a/parse-options.h +++ b/parse-options.h @@ -1,6 +1,8 @@ #ifndef PARSE_OPTIONS_H #define PARSE_OPTIONS_H +#include "gettext.h" + /** * Refer to Documentation/technical/api-parse-options.txt for the API doc. */ diff --git a/patch-ids.c b/patch-ids.c index a4473a88fa..19af7bee98 100644 --- a/patch-ids.c +++ b/patch-ids.c @@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "diff.h" #include "commit.h" #include "hash-lookup.h" diff --git a/path.c b/path.c index 632a051809..dff215ac69 100644 --- a/path.c +++ b/path.c @@ -1,13 +1,17 @@ /* * Utilities for paths and pathnames */ -#include "cache.h" +#include "git-compat-util.h" +#include "abspath.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "strbuf.h" #include "string-list.h" #include "dir.h" #include "worktree.h" +#include "setup.h" #include "submodule-config.h" #include "path.h" #include "packfile.h" diff --git a/path.h b/path.h index 0a59c85a62..60e83a49a9 100644 --- a/path.h +++ b/path.h @@ -3,6 +3,7 @@ struct repository; struct strbuf; +struct string_list; /* * The result to all functions which return statically allocated memory may be @@ -179,7 +180,66 @@ const char *git_path_auto_merge(struct repository *r); const char *git_path_fetch_head(struct repository *r); const char *git_path_shallow(struct repository *r); - int ends_with_path_components(const char *path, const char *components); +int validate_headref(const char *ref); + +int adjust_shared_perm(const char *path); + +char *interpolate_path(const char *path, int real_home); +const char *enter_repo(const char *path, int strict); +const char *remove_leading_path(const char *in, const char *prefix); +const char *relative_path(const char *in, const char *prefix, struct strbuf *sb); +int normalize_path_copy_len(char *dst, const char *src, int *prefix_len); +int normalize_path_copy(char *dst, const char *src); +int longest_ancestor_length(const char *path, struct string_list *prefixes); +char *strip_path_suffix(const char *path, const char *suffix); +int daemon_avoid_alias(const char *path); + +/* + * These functions match their is_hfs_dotgit() counterparts; see utf8.h for + * details. + */ +int is_ntfs_dotgit(const char *name); +int is_ntfs_dotgitmodules(const char *name); +int is_ntfs_dotgitignore(const char *name); +int is_ntfs_dotgitattributes(const char *name); +int is_ntfs_dotmailmap(const char *name); + +/* + * Returns true iff "str" could be confused as a command-line option when + * passed to a sub-program like "ssh". Note that this has nothing to do with + * shell-quoting, which should be handled separately; we're assuming here that + * the string makes it verbatim to the sub-program. + */ +int looks_like_command_line_option(const char *str); + +/** + * Return a newly allocated string with the evaluation of + * "$XDG_CONFIG_HOME/$subdir/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise + * "$HOME/.config/$subdir/$filename". Return NULL upon error. + */ +char *xdg_config_home_for(const char *subdir, const char *filename); + +/** + * Return a newly allocated string with the evaluation of + * "$XDG_CONFIG_HOME/git/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise + * "$HOME/.config/git/$filename". Return NULL upon error. + */ +char *xdg_config_home(const char *filename); + +/** + * Return a newly allocated string with the evaluation of + * "$XDG_CACHE_HOME/git/$filename" if $XDG_CACHE_HOME is non-empty, otherwise + * "$HOME/.cache/git/$filename". Return NULL upon error. + */ +char *xdg_cache_home(const char *filename); + +/* + * Create a directory and (if share is nonzero) adjust its permissions + * according to the shared_repository setting. Only use this for + * directories under $GIT_DIR. Don't use it for working tree + * directories. + */ +void safe_create_dir(const char *dir, int share); #endif /* PATH_H */ diff --git a/pathspec.c b/pathspec.c index ab70fcbe61..6972d515f0 100644 --- a/pathspec.c +++ b/pathspec.c @@ -1,8 +1,12 @@ #include "cache.h" +#include "abspath.h" #include "config.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "pathspec.h" #include "attr.h" +#include "setup.h" #include "strvec.h" #include "quote.h" diff --git a/pkt-line.c b/pkt-line.c index 1ea7f8600e..36ae0fea4a 100644 --- a/pkt-line.c +++ b/pkt-line.c @@ -1,7 +1,10 @@ #include "cache.h" #include "pkt-line.h" +#include "gettext.h" #include "hex.h" #include "run-command.h" +#include "wrapper.h" +#include "write-or-die.h" char packet_buffer[LARGE_PACKET_MAX]; static const char *packet_trace_prefix = "git"; diff --git a/preload-index.c b/preload-index.c index 100f7a374d..52544d004e 100644 --- a/preload-index.c +++ b/preload-index.c @@ -4,7 +4,9 @@ #include "cache.h" #include "pathspec.h" #include "dir.h" +#include "environment.h" #include "fsmonitor.h" +#include "gettext.h" #include "config.h" #include "progress.h" #include "thread-utils.h" diff --git a/pretty.c b/pretty.c index 494932da20..76fc4f61e4 100644 --- a/pretty.c +++ b/pretty.c @@ -2,6 +2,8 @@ #include "alloc.h" #include "config.h" #include "commit.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "utf8.h" #include "diff.h" diff --git a/progress.c b/progress.c index 9b33a2df32..44c784d75f 100644 --- a/progress.c +++ b/progress.c @@ -10,7 +10,6 @@ #define GIT_TEST_PROGRESS_ONLY #include "cache.h" -#include "gettext.h" #include "progress.h" #include "strbuf.h" #include "trace.h" diff --git a/promisor-remote.c b/promisor-remote.c index 1db566982e..a8dbb788e8 100644 --- a/promisor-remote.c +++ b/promisor-remote.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "promisor-remote.h" diff --git a/prompt.c b/prompt.c index 50df17279d..3baa33f63d 100644 --- a/prompt.c +++ b/prompt.c @@ -1,5 +1,6 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" +#include "environment.h" #include "run-command.h" #include "strbuf.h" #include "prompt.h" diff --git a/protocol.c b/protocol.c index c53f7df5be..bdb32e1eeb 100644 --- a/protocol.c +++ b/protocol.c @@ -1,5 +1,6 @@ #include "cache.h" #include "config.h" +#include "environment.h" #include "protocol.h" static enum protocol_version parse_protocol_version(const char *value) diff --git a/prune-packed.c b/prune-packed.c index d2813f6a40..58412b4fb9 100644 --- a/prune-packed.c +++ b/prune-packed.c @@ -1,4 +1,6 @@ #include "git-compat-util.h" +#include "environment.h" +#include "gettext.h" #include "object-store.h" #include "packfile.h" #include "progress.h" diff --git a/range-diff.c b/range-diff.c index ff5d19f8ad..d1ed3b8ee5 100644 --- a/range-diff.c +++ b/range-diff.c @@ -1,4 +1,6 @@ #include "cache.h" +#include "environment.h" +#include "gettext.h" #include "range-diff.h" #include "string-list.h" #include "run-command.h" diff --git a/reachable.c b/reachable.c index c9dab2a66b..55bb114353 100644 --- a/reachable.c +++ b/reachable.c @@ -1,4 +1,5 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "tag.h" diff --git a/read-cache.c b/read-cache.c index 27e4f5ccb3..2a49178633 100644 --- a/read-cache.c +++ b/read-cache.c @@ -18,6 +18,8 @@ #include "tree.h" #include "commit.h" #include "blob.h" +#include "environment.h" +#include "gettext.h" #include "resolve-undo.h" #include "run-command.h" #include "strbuf.h" @@ -31,6 +33,7 @@ #include "csum-file.h" #include "promisor-remote.h" #include "hook.h" +#include "wrapper.h" /* Mask for the name length in ce_flags in the on-disk index */ diff --git a/rebase-interactive.c b/rebase-interactive.c index c151db0ad2..79ed61b9fa 100644 --- a/rebase-interactive.c +++ b/rebase-interactive.c @@ -1,11 +1,14 @@ #include "cache.h" #include "commit.h" +#include "environment.h" +#include "gettext.h" #include "sequencer.h" #include "rebase-interactive.h" #include "strbuf.h" #include "commit-slab.h" #include "config.h" #include "dir.h" +#include "wrapper.h" static const char edit_todo_list_advice[] = N_("You can fix this with 'git rebase --edit-todo' " diff --git a/ref-filter.c b/ref-filter.c index 81cc2d1e23..94a148c3e8 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -1,5 +1,7 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "refs.h" diff --git a/ref-filter.h b/ref-filter.h index ae51ace3a2..9169d12cb6 100644 --- a/ref-filter.h +++ b/ref-filter.h @@ -1,6 +1,7 @@ #ifndef REF_FILTER_H #define REF_FILTER_H +#include "gettext.h" #include "oid-array.h" #include "refs.h" #include "commit.h" diff --git a/reflog.c b/reflog.c index 510663e1e5..9c09443088 100644 --- a/reflog.c +++ b/reflog.c @@ -1,4 +1,5 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "gettext.h" #include "object-store.h" #include "reflog.h" #include "refs.h" diff --git a/refs.c b/refs.c index 1e1c76d1ec..0f369dbde7 100644 --- a/refs.c +++ b/refs.c @@ -2,10 +2,12 @@ * The backend-independent part of the reference module. */ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "config.h" +#include "environment.h" #include "hashmap.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "iterator.h" @@ -20,9 +22,11 @@ #include "worktree.h" #include "strvec.h" #include "repository.h" +#include "setup.h" #include "sigchain.h" #include "date.h" #include "commit.h" +#include "wrapper.h" /* * List of all available backends diff --git a/refs.h b/refs.h index 2998244b61..123cfa4424 100644 --- a/refs.h +++ b/refs.h @@ -1,7 +1,6 @@ #ifndef REFS_H #define REFS_H -#include "cache.h" #include "commit.h" struct object_id; diff --git a/refs/files-backend.c b/refs/files-backend.c index 31bc5c45ee..e6a6971381 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -1,5 +1,7 @@ #include "../cache.h" #include "../config.h" +#include "../environment.h" +#include "../gettext.h" #include "../hex.h" #include "../refs.h" #include "refs-internal.h" @@ -12,7 +14,10 @@ #include "../object.h" #include "../dir.h" #include "../chdir-notify.h" -#include "worktree.h" +#include "../setup.h" +#include "../worktree.h" +#include "../wrapper.h" +#include "../write-or-die.h" /* * This backend uses the following flags in `ref_update::flags` for diff --git a/refs/iterator.c b/refs/iterator.c index c9fd0bcaf9..6b680f610e 100644 --- a/refs/iterator.c +++ b/refs/iterator.c @@ -3,7 +3,7 @@ * documentation about the design and use of reference iterators. */ -#include "cache.h" +#include "git-compat-util.h" #include "refs.h" #include "refs/refs-internal.h" #include "iterator.h" diff --git a/refs/packed-backend.c b/refs/packed-backend.c index b665d0f7d9..1eba1015dd 100644 --- a/refs/packed-backend.c +++ b/refs/packed-backend.c @@ -1,6 +1,7 @@ -#include "../git-compat-util.h" +#include "../cache.h" #include "../alloc.h" #include "../config.h" +#include "../gettext.h" #include "../hex.h" #include "../refs.h" #include "refs-internal.h" @@ -8,6 +9,7 @@ #include "../iterator.h" #include "../lockfile.h" #include "../chdir-notify.h" +#include "../write-or-die.h" enum mmap_strategy { /* diff --git a/refspec.c b/refspec.c index 28d90911aa..7b5c305514 100644 --- a/refspec.c +++ b/refspec.c @@ -1,5 +1,6 @@ #include "git-compat-util.h" #include "alloc.h" +#include "gettext.h" #include "hex.h" #include "strvec.h" #include "refs.h" diff --git a/remote-curl.c b/remote-curl.c index bf5a0b186f..db3bc431fc 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -1,6 +1,8 @@ #include "git-compat-util.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "remote.h" #include "connect.h" @@ -16,9 +18,11 @@ #include "credential.h" #include "oid-array.h" #include "send-pack.h" +#include "setup.h" #include "protocol.h" #include "quote.h" #include "transport.h" +#include "write-or-die.h" static struct remote *remote; /* always ends with a trailing slash */ diff --git a/remote.c b/remote.c index f99122b0d3..3a831cb530 100644 --- a/remote.c +++ b/remote.c @@ -1,6 +1,9 @@ -#include "git-compat-util.h" +#include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "remote.h" #include "urlmatch.h" @@ -12,6 +15,7 @@ #include "revision.h" #include "dir.h" #include "tag.h" +#include "setup.h" #include "string-list.h" #include "strvec.h" #include "commit-reach.h" diff --git a/replace-object.c b/replace-object.c index 0cf056c4fb..e98825d585 100644 --- a/replace-object.c +++ b/replace-object.c @@ -1,4 +1,5 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "gettext.h" #include "hex.h" #include "oidmap.h" #include "object-store.h" diff --git a/repository.c b/repository.c index 937fa974b3..f6d9f5db08 100644 --- a/repository.c +++ b/repository.c @@ -4,12 +4,14 @@ */ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "repository.h" #include "object-store.h" #include "config.h" #include "object.h" #include "lockfile.h" #include "remote.h" +#include "setup.h" #include "submodule-config.h" #include "sparse-index.h" #include "promisor-remote.h" diff --git a/rerere.c b/rerere.c index 0ec546b744..5516e336d0 100644 --- a/rerere.c +++ b/rerere.c @@ -1,6 +1,8 @@ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "string-list.h" @@ -14,6 +16,7 @@ #include "object-store.h" #include "hash-lookup.h" #include "strmap.h" +#include "wrapper.h" #define RESOLVED 0 #define PUNTED 1 diff --git a/rerere.h b/rerere.h index 876c316321..5d6cb63879 100644 --- a/rerere.h +++ b/rerere.h @@ -1,6 +1,7 @@ #ifndef RERERE_H #define RERERE_H +#include "gettext.h" #include "string-list.h" struct pathspec; diff --git a/reset.c b/reset.c index b123480718..ab300923e0 100644 --- a/reset.c +++ b/reset.c @@ -1,5 +1,6 @@ #include "git-compat-util.h" #include "cache-tree.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "refs.h" diff --git a/revision.c b/revision.c index 5c2681bb4b..106ca1ce6c 100644 --- a/revision.c +++ b/revision.c @@ -1,6 +1,8 @@ #include "git-compat-util.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "tag.h" @@ -27,6 +29,7 @@ #include "bisect.h" #include "packfile.h" #include "worktree.h" +#include "setup.h" #include "strvec.h" #include "commit-reach.h" #include "commit-graph.h" diff --git a/run-command.c b/run-command.c index ba617655b2..614d48fa9a 100644 --- a/run-command.c +++ b/run-command.c @@ -1,6 +1,8 @@ #include "cache.h" #include "run-command.h" +#include "environment.h" #include "exec-cmd.h" +#include "gettext.h" #include "sigchain.h" #include "strvec.h" #include "thread-utils.h" diff --git a/scalar.c b/scalar.c index c7b8c16c8e..de07c37d21 100644 --- a/scalar.c +++ b/scalar.c @@ -3,6 +3,7 @@ */ #include "cache.h" +#include "abspath.h" #include "gettext.h" #include "parse-options.h" #include "config.h" @@ -14,6 +15,7 @@ #include "dir.h" #include "packfile.h" #include "help.h" +#include "setup.h" static void setup_enlistment_directory(int argc, const char **argv, const char * const *usagestr, diff --git a/send-pack.c b/send-pack.c index a3c10898db..f81bbb28d7 100644 --- a/send-pack.c +++ b/send-pack.c @@ -1,6 +1,7 @@ #include "git-compat-util.h" #include "config.h" #include "commit.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "object-store.h" @@ -15,9 +16,10 @@ #include "version.h" #include "oid-array.h" #include "gpg-interface.h" -#include "cache.h" #include "shallow.h" #include "parse-options.h" +#include "trace2.h" +#include "write-or-die.h" int option_parse_push_signed(const struct option *opt, const char *arg, int unset) diff --git a/sequencer.c b/sequencer.c index 4a693bca3d..6985ca526a 100644 --- a/sequencer.c +++ b/sequencer.c @@ -1,6 +1,9 @@ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "dir.h" @@ -38,6 +41,7 @@ #include "rebase-interactive.h" #include "reset.h" #include "branch.h" +#include "wrapper.h" #define GIT_REFLOG_ACTION "GIT_REFLOG_ACTION" diff --git a/server-info.c b/server-info.c index 4043689202..355b6e01a5 100644 --- a/server-info.c +++ b/server-info.c @@ -1,6 +1,7 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "dir.h" +#include "environment.h" #include "hex.h" #include "repository.h" #include "refs.h" @@ -10,6 +11,7 @@ #include "packfile.h" #include "object-store.h" #include "strbuf.h" +#include "wrapper.h" struct update_info_ctx { FILE *cur_fp; diff --git a/setup.c b/setup.c index cefd5f63c4..6c5b85e96c 100644 --- a/setup.c +++ b/setup.c @@ -1,7 +1,11 @@ #include "cache.h" +#include "abspath.h" +#include "environment.h" +#include "gettext.h" #include "repository.h" #include "config.h" #include "dir.h" +#include "setup.h" #include "string-list.h" #include "chdir-notify.h" #include "promisor-remote.h" diff --git a/setup.h b/setup.h new file mode 100644 index 0000000000..4c1ca9d0c9 --- /dev/null +++ b/setup.h @@ -0,0 +1,168 @@ +#ifndef SETUP_H +#define SETUP_H + +#include "string-list.h" + +int is_inside_git_dir(void); +int is_inside_work_tree(void); +int get_common_dir_noenv(struct strbuf *sb, const char *gitdir); +int get_common_dir(struct strbuf *sb, const char *gitdir); + +/* + * Return true if the given path is a git directory; note that this _just_ + * looks at the directory itself. If you want to know whether "foo/.git" + * is a repository, you must feed that path, not just "foo". + */ +int is_git_directory(const char *path); + +/* + * Return 1 if the given path is the root of a git repository or + * submodule, else 0. Will not return 1 for bare repositories with the + * exception of creating a bare repository in "foo/.git" and calling + * is_git_repository("foo"). + * + * If we run into read errors, we err on the side of saying "yes, it is", + * as we usually consider sub-repos precious, and would prefer to err on the + * side of not disrupting or deleting them. + */ +int is_nonbare_repository_dir(struct strbuf *path); + +#define READ_GITFILE_ERR_STAT_FAILED 1 +#define READ_GITFILE_ERR_NOT_A_FILE 2 +#define READ_GITFILE_ERR_OPEN_FAILED 3 +#define READ_GITFILE_ERR_READ_FAILED 4 +#define READ_GITFILE_ERR_INVALID_FORMAT 5 +#define READ_GITFILE_ERR_NO_PATH 6 +#define READ_GITFILE_ERR_NOT_A_REPO 7 +#define READ_GITFILE_ERR_TOO_LARGE 8 +void read_gitfile_error_die(int error_code, const char *path, const char *dir); +const char *read_gitfile_gently(const char *path, int *return_error_code); +#define read_gitfile(path) read_gitfile_gently((path), NULL) +const char *resolve_gitdir_gently(const char *suspect, int *return_error_code); +#define resolve_gitdir(path) resolve_gitdir_gently((path), NULL) + +void setup_work_tree(void); +/* + * Find the commondir and gitdir of the repository that contains the current + * working directory, without changing the working directory or other global + * state. The result is appended to commondir and gitdir. If the discovered + * gitdir does not correspond to a worktree, then 'commondir' and 'gitdir' will + * both have the same result appended to the buffer. The return value is + * either 0 upon success and non-zero if no repository was found. + */ +int discover_git_directory(struct strbuf *commondir, + struct strbuf *gitdir); +const char *setup_git_directory_gently(int *); +const char *setup_git_directory(void); +char *prefix_path(const char *prefix, int len, const char *path); +char *prefix_path_gently(const char *prefix, int len, int *remaining, const char *path); + +int check_filename(const char *prefix, const char *name); +void verify_filename(const char *prefix, + const char *name, + int diagnose_misspelt_rev); +void verify_non_filename(const char *prefix, const char *name); +int path_inside_repo(const char *prefix, const char *path); + +void sanitize_stdfds(void); +int daemonize(void); + +/* + * GIT_REPO_VERSION is the version we write by default. The + * _READ variant is the highest number we know how to + * handle. + */ +#define GIT_REPO_VERSION 0 +#define GIT_REPO_VERSION_READ 1 + +/* + * You _have_ to initialize a `struct repository_format` using + * `= REPOSITORY_FORMAT_INIT` before calling `read_repository_format()`. + */ +struct repository_format { + int version; + int precious_objects; + char *partial_clone; /* value of extensions.partialclone */ + int worktree_config; + int is_bare; + int hash_algo; + int sparse_index; + char *work_tree; + struct string_list unknown_extensions; + struct string_list v1_only_extensions; +}; + +/* + * Always use this to initialize a `struct repository_format` + * to a well-defined, default state before calling + * `read_repository()`. + */ +#define REPOSITORY_FORMAT_INIT \ +{ \ + .version = -1, \ + .is_bare = -1, \ + .hash_algo = GIT_HASH_SHA1, \ + .unknown_extensions = STRING_LIST_INIT_DUP, \ + .v1_only_extensions = STRING_LIST_INIT_DUP, \ +} + +/* + * Read the repository format characteristics from the config file "path" into + * "format" struct. Returns the numeric version. On error, or if no version is + * found in the configuration, -1 is returned, format->version is set to -1, + * and all other fields in the struct are set to the default configuration + * (REPOSITORY_FORMAT_INIT). Always initialize the struct using + * REPOSITORY_FORMAT_INIT before calling this function. + */ +int read_repository_format(struct repository_format *format, const char *path); + +/* + * Free the memory held onto by `format`, but not the struct itself. + * (No need to use this after `read_repository_format()` fails.) + */ +void clear_repository_format(struct repository_format *format); + +/* + * Verify that the repository described by repository_format is something we + * can read. If it is, return 0. Otherwise, return -1, and "err" will describe + * any errors encountered. + */ +int verify_repository_format(const struct repository_format *format, + struct strbuf *err); + +/* + * Check the repository format version in the path found in get_git_dir(), + * and die if it is a version we don't understand. Generally one would + * set_git_dir() before calling this, and use it only for "are we in a valid + * repo?". + * + * If successful and fmt is not NULL, fill fmt with data. + */ +void check_repository_format(struct repository_format *fmt); + +/* + * NOTE NOTE NOTE!! + * + * PERM_UMASK, OLD_PERM_GROUP and OLD_PERM_EVERYBODY enumerations must + * not be changed. Old repositories have core.sharedrepository written in + * numeric format, and therefore these values are preserved for compatibility + * reasons. + */ +enum sharedrepo { + PERM_UMASK = 0, + OLD_PERM_GROUP = 1, + OLD_PERM_EVERYBODY = 2, + PERM_GROUP = 0660, + PERM_EVERYBODY = 0664 +}; +int git_config_perm(const char *var, const char *value); + +struct startup_info { + int have_repository; + const char *prefix; + const char *original_cwd; +}; +extern struct startup_info *startup_info; +extern const char *tmp_original_cwd; + +#endif /* SETUP_H */ diff --git a/shallow.c b/shallow.c index 4f34861423..b4d726bd59 100644 --- a/shallow.c +++ b/shallow.c @@ -1,4 +1,4 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "hex.h" #include "repository.h" @@ -17,6 +17,7 @@ #include "list-objects.h" #include "commit-reach.h" #include "shallow.h" +#include "wrapper.h" void set_alternate_shallow_file(struct repository *r, const char *path, int override) { diff --git a/sideband.c b/sideband.c index 85bddfdcd4..0af582858b 100644 --- a/sideband.c +++ b/sideband.c @@ -1,9 +1,11 @@ #include "cache.h" #include "color.h" #include "config.h" +#include "gettext.h" #include "sideband.h" #include "help.h" #include "pkt-line.h" +#include "write-or-die.h" struct keyword_entry { /* diff --git a/sparse-index.c b/sparse-index.c index 63216b3e57..886054729e 100644 --- a/sparse-index.c +++ b/sparse-index.c @@ -1,5 +1,7 @@ #include "cache.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "repository.h" #include "sparse-index.h" #include "tree.h" diff --git a/split-index.c b/split-index.c index 95ecfa5319..c98807c655 100644 --- a/split-index.c +++ b/split-index.c @@ -1,5 +1,6 @@ #include "cache.h" #include "alloc.h" +#include "gettext.h" #include "split-index.h" #include "ewah/ewok.h" diff --git a/strbuf.c b/strbuf.c index 1c57ac6574..70a83e7980 100644 --- a/strbuf.c +++ b/strbuf.c @@ -1,10 +1,14 @@ -#include "git-compat-util.h" +#include "cache.h" +#include "abspath.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "string-list.h" #include "utf8.h" #include "date.h" +#include "wrapper.h" int starts_with(const char *str, const char *prefix) { diff --git a/streaming.c b/streaming.c index 27841dc1d9..024fd796b7 100644 --- a/streaming.c +++ b/streaming.c @@ -2,11 +2,13 @@ * Copyright (c) 2011, Google Inc. */ #include "cache.h" +#include "environment.h" #include "streaming.h" #include "repository.h" #include "object-store.h" #include "replace-object.h" #include "packfile.h" +#include "wrapper.h" typedef int (*open_istream_fn)(struct git_istream *, struct repository *, diff --git a/streaming.h b/streaming.h index 5e4e6acfd0..bd27f59e57 100644 --- a/streaming.h +++ b/streaming.h @@ -3,10 +3,12 @@ */ #ifndef STREAMING_H #define STREAMING_H 1 -#include "cache.h" + +#include "object.h" /* opaque */ struct git_istream; +struct stream_filter; struct git_istream *open_istream(struct repository *, const struct object_id *, enum object_type *, unsigned long *, diff --git a/submodule-config.c b/submodule-config.c index d0111e9993..ecf0fcf007 100644 --- a/submodule-config.c +++ b/submodule-config.c @@ -1,6 +1,8 @@ #include "cache.h" #include "alloc.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "config.h" diff --git a/submodule.c b/submodule.c index e7c8d8b2c3..94644fac0a 100644 --- a/submodule.c +++ b/submodule.c @@ -1,4 +1,5 @@ -#include "git-compat-util.h" +#include "cache.h" +#include "abspath.h" #include "alloc.h" #include "repository.h" #include "config.h" @@ -7,6 +8,8 @@ #include "dir.h" #include "diff.h" #include "commit.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "revision.h" #include "run-command.h" @@ -23,6 +26,7 @@ #include "parse-options.h" #include "object-store.h" #include "commit-reach.h" +#include "setup.h" #include "shallow.h" static int config_update_recurse_submodules = RECURSE_SUBMODULES_OFF; diff --git a/symlinks.c b/symlinks.c index c667baa949..27ecc93693 100644 --- a/symlinks.c +++ b/symlinks.c @@ -1,4 +1,6 @@ #include "cache.h" +#include "gettext.h" +#include "setup.h" static int threaded_check_leading_path(struct cache_def *cache, const char *name, int len, int warn_on_lstat_err); diff --git a/t/helper/test-advise.c b/t/helper/test-advise.c index cb881139f7..8a3fd0009a 100644 --- a/t/helper/test-advise.c +++ b/t/helper/test-advise.c @@ -1,7 +1,7 @@ #include "test-tool.h" -#include "cache.h" #include "advice.h" #include "config.h" +#include "setup.h" int cmd__advise_if_enabled(int argc, const char **argv) { diff --git a/t/helper/test-bitmap.c b/t/helper/test-bitmap.c index ff35f5999b..af43ee1cb5 100644 --- a/t/helper/test-bitmap.c +++ b/t/helper/test-bitmap.c @@ -1,6 +1,7 @@ #include "test-tool.h" -#include "cache.h" +#include "git-compat-util.h" #include "pack-bitmap.h" +#include "setup.h" static int bitmap_list_commits(void) { diff --git a/t/helper/test-bloom.c b/t/helper/test-bloom.c index 127f134a2a..d2b30d644d 100644 --- a/t/helper/test-bloom.c +++ b/t/helper/test-bloom.c @@ -1,8 +1,8 @@ -#include "cache.h" +#include "test-tool.h" #include "bloom.h" #include "hex.h" -#include "test-tool.h" #include "commit.h" +#include "setup.h" static struct bloom_filter_settings settings = DEFAULT_BLOOM_FILTER_SETTINGS; diff --git a/t/helper/test-bundle-uri.c b/t/helper/test-bundle-uri.c index b18e760310..475058592d 100644 --- a/t/helper/test-bundle-uri.c +++ b/t/helper/test-bundle-uri.c @@ -1,6 +1,7 @@ #include "test-tool.h" #include "parse-options.h" #include "bundle-uri.h" +#include "gettext.h" #include "strbuf.h" #include "string-list.h" #include "transport.h" diff --git a/t/helper/test-cache-tree.c b/t/helper/test-cache-tree.c index 615e648e55..cdaf5046f5 100644 --- a/t/helper/test-cache-tree.c +++ b/t/helper/test-cache-tree.c @@ -1,10 +1,12 @@ #define USE_THE_INDEX_VARIABLE #include "test-tool.h" #include "cache.h" +#include "gettext.h" #include "hex.h" #include "tree.h" #include "cache-tree.h" #include "parse-options.h" +#include "setup.h" static char const * const test_cache_tree_usage[] = { N_("test-tool cache-tree (control|prime|update)"), diff --git a/t/helper/test-config.c b/t/helper/test-config.c index c7d43afa64..ad78fc1768 100644 --- a/t/helper/test-config.c +++ b/t/helper/test-config.c @@ -1,6 +1,6 @@ #include "test-tool.h" -#include "cache.h" #include "config.h" +#include "setup.h" #include "string-list.h" /* diff --git a/t/helper/test-delta.c b/t/helper/test-delta.c index b15481ea59..e7d134ec25 100644 --- a/t/helper/test-delta.c +++ b/t/helper/test-delta.c @@ -11,7 +11,7 @@ #include "test-tool.h" #include "git-compat-util.h" #include "delta.h" -#include "cache.h" +#include "wrapper.h" static const char usage_str[] = "test-tool delta (-d|-p) "; diff --git a/t/helper/test-dump-cache-tree.c b/t/helper/test-dump-cache-tree.c index ba1c5ce717..2041ca1857 100644 --- a/t/helper/test-dump-cache-tree.c +++ b/t/helper/test-dump-cache-tree.c @@ -4,7 +4,7 @@ #include "hex.h" #include "tree.h" #include "cache-tree.h" - +#include "setup.h" static void dump_one(struct cache_tree *it, const char *pfx, const char *x) { diff --git a/t/helper/test-dump-fsmonitor.c b/t/helper/test-dump-fsmonitor.c index 3d2fb92ade..7c6f50158b 100644 --- a/t/helper/test-dump-fsmonitor.c +++ b/t/helper/test-dump-fsmonitor.c @@ -1,5 +1,6 @@ #include "test-tool.h" #include "cache.h" +#include "setup.h" int cmd__dump_fsmonitor(int ac UNUSED, const char **av UNUSED) { diff --git a/t/helper/test-dump-split-index.c b/t/helper/test-dump-split-index.c index 4fabbdea49..d1badd7112 100644 --- a/t/helper/test-dump-split-index.c +++ b/t/helper/test-dump-split-index.c @@ -2,6 +2,7 @@ #include "test-tool.h" #include "cache.h" #include "hex.h" +#include "setup.h" #include "split-index.h" #include "ewah/ewok.h" diff --git a/t/helper/test-dump-untracked-cache.c b/t/helper/test-dump-untracked-cache.c index bc1ef8d4dc..9225ced534 100644 --- a/t/helper/test-dump-untracked-cache.c +++ b/t/helper/test-dump-untracked-cache.c @@ -3,6 +3,7 @@ #include "cache.h" #include "dir.h" #include "hex.h" +#include "setup.h" static int compare_untracked(const void *a_, const void *b_) { diff --git a/t/helper/test-fast-rebase.c b/t/helper/test-fast-rebase.c index e07448c1a1..fd48e0ee2c 100644 --- a/t/helper/test-fast-rebase.c +++ b/t/helper/test-fast-rebase.c @@ -12,15 +12,18 @@ #define USE_THE_INDEX_VARIABLE #include "test-tool.h" - +#include "cache.h" #include "cache-tree.h" #include "commit.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "lockfile.h" #include "merge-ort.h" #include "refs.h" #include "revision.h" #include "sequencer.h" +#include "setup.h" #include "strvec.h" #include "tree.h" diff --git a/t/helper/test-fsmonitor-client.c b/t/helper/test-fsmonitor-client.c index 0a1e492e5b..14522b4c47 100644 --- a/t/helper/test-fsmonitor-client.c +++ b/t/helper/test-fsmonitor-client.c @@ -7,8 +7,10 @@ #include "cache.h" #include "parse-options.h" #include "fsmonitor-ipc.h" +#include "setup.h" #include "thread-utils.h" #include "trace2.h" +#include "wrapper.h" #ifndef HAVE_FSMONITOR_DAEMON_BACKEND int cmd__fsmonitor_client(int argc UNUSED, const char **argv UNUSED) diff --git a/t/helper/test-hash.c b/t/helper/test-hash.c index 016248106a..45d829c908 100644 --- a/t/helper/test-hash.c +++ b/t/helper/test-hash.c @@ -1,5 +1,4 @@ #include "test-tool.h" -#include "cache.h" #include "hex.h" int cmd_hash_impl(int ac, const char **av, int algo) diff --git a/t/helper/test-lazy-init-name-hash.c b/t/helper/test-lazy-init-name-hash.c index ab86c14c8b..06ce3a47cc 100644 --- a/t/helper/test-lazy-init-name-hash.c +++ b/t/helper/test-lazy-init-name-hash.c @@ -1,7 +1,9 @@ #define USE_THE_INDEX_VARIABLE #include "test-tool.h" #include "cache.h" +#include "environment.h" #include "parse-options.h" +#include "setup.h" static int single; static int multi; diff --git a/t/helper/test-match-trees.c b/t/helper/test-match-trees.c index 42b20d0cec..508eb7066a 100644 --- a/t/helper/test-match-trees.c +++ b/t/helper/test-match-trees.c @@ -1,6 +1,7 @@ #include "test-tool.h" #include "cache.h" #include "hex.h" +#include "setup.h" #include "tree.h" int cmd__match_trees(int ac UNUSED, const char **av) diff --git a/t/helper/test-oid-array.c b/t/helper/test-oid-array.c index c3a1a00466..30e1947b90 100644 --- a/t/helper/test-oid-array.c +++ b/t/helper/test-oid-array.c @@ -2,6 +2,7 @@ #include "cache.h" #include "hex.h" #include "oid-array.h" +#include "setup.h" static int print_oid(const struct object_id *oid, void *data) { diff --git a/t/helper/test-oidmap.c b/t/helper/test-oidmap.c index 32e694b2a2..a7b7b38df1 100644 --- a/t/helper/test-oidmap.c +++ b/t/helper/test-oidmap.c @@ -2,6 +2,7 @@ #include "cache.h" #include "hex.h" #include "oidmap.h" +#include "setup.h" #include "strbuf.h" /* key is an oid and value is a name (could be a refname for example) */ diff --git a/t/helper/test-oidtree.c b/t/helper/test-oidtree.c index 6a18e1bce8..5b98f2f70a 100644 --- a/t/helper/test-oidtree.c +++ b/t/helper/test-oidtree.c @@ -2,6 +2,7 @@ #include "cache.h" #include "hex.h" #include "oidtree.h" +#include "setup.h" static enum cb_next print_oid(const struct object_id *oid, void *data UNUSED) { diff --git a/t/helper/test-pack-mtimes.c b/t/helper/test-pack-mtimes.c index f68b3761b6..0f3fbeec53 100644 --- a/t/helper/test-pack-mtimes.c +++ b/t/helper/test-pack-mtimes.c @@ -1,10 +1,10 @@ -#include "git-compat-util.h" #include "test-tool.h" #include "hex.h" #include "strbuf.h" #include "object-store.h" #include "packfile.h" #include "pack-mtimes.h" +#include "setup.h" static void dump_mtimes(struct packed_git *p) { diff --git a/t/helper/test-parse-pathspec-file.c b/t/helper/test-parse-pathspec-file.c index 71d2131fba..89ecefd1cd 100644 --- a/t/helper/test-parse-pathspec-file.c +++ b/t/helper/test-parse-pathspec-file.c @@ -1,7 +1,6 @@ #include "test-tool.h" #include "parse-options.h" #include "pathspec.h" -#include "gettext.h" int cmd__parse_pathspec_file(int argc, const char **argv) { diff --git a/t/helper/test-partial-clone.c b/t/helper/test-partial-clone.c index da17fd37eb..362bd64a4c 100644 --- a/t/helper/test-partial-clone.c +++ b/t/helper/test-partial-clone.c @@ -1,8 +1,8 @@ -#include "cache.h" -#include "hex.h" #include "test-tool.h" +#include "hex.h" #include "repository.h" #include "object-store.h" +#include "setup.h" /* * Prints the size of the object corresponding to the given hash in a specific diff --git a/t/helper/test-path-utils.c b/t/helper/test-path-utils.c index f69709d674..4f5ac2fadc 100644 --- a/t/helper/test-path-utils.c +++ b/t/helper/test-path-utils.c @@ -1,5 +1,8 @@ #include "test-tool.h" #include "cache.h" +#include "abspath.h" +#include "environment.h" +#include "setup.h" #include "string-list.h" #include "utf8.h" diff --git a/t/helper/test-pkt-line.c b/t/helper/test-pkt-line.c index c5e052e537..f4d134a145 100644 --- a/t/helper/test-pkt-line.c +++ b/t/helper/test-pkt-line.c @@ -1,6 +1,7 @@ -#include "cache.h" +#include "git-compat-util.h" #include "test-tool.h" #include "pkt-line.h" +#include "write-or-die.h" static void pack_line(const char *line) { diff --git a/t/helper/test-proc-receive.c b/t/helper/test-proc-receive.c index 7e12d4f9aa..f30022d222 100644 --- a/t/helper/test-proc-receive.c +++ b/t/helper/test-proc-receive.c @@ -1,10 +1,10 @@ -#include "cache.h" +#include "test-tool.h" #include "connect.h" #include "hex.h" #include "parse-options.h" #include "pkt-line.h" +#include "setup.h" #include "sigchain.h" -#include "test-tool.h" static const char *proc_receive_usage[] = { "test-tool proc-receive []", diff --git a/t/helper/test-progress.c b/t/helper/test-progress.c index 6cc9735b60..66acb6a06c 100644 --- a/t/helper/test-progress.c +++ b/t/helper/test-progress.c @@ -19,7 +19,6 @@ */ #define GIT_TEST_PROGRESS_ONLY #include "test-tool.h" -#include "gettext.h" #include "parse-options.h" #include "progress.h" #include "strbuf.h" diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c index d08c3ffa3b..b0deaa106a 100644 --- a/t/helper/test-reach.c +++ b/t/helper/test-reach.c @@ -1,11 +1,14 @@ #include "test-tool.h" +#include "cache.h" #include "alloc.h" #include "commit.h" #include "commit-reach.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "parse-options.h" #include "ref-filter.h" +#include "setup.h" #include "string-list.h" #include "tag.h" diff --git a/t/helper/test-read-cache.c b/t/helper/test-read-cache.c index 23e9e27109..a4c24d0e42 100644 --- a/t/helper/test-read-cache.c +++ b/t/helper/test-read-cache.c @@ -2,6 +2,8 @@ #include "test-tool.h" #include "cache.h" #include "config.h" +#include "setup.h" +#include "wrapper.h" int cmd__read_cache(int argc, const char **argv) { diff --git a/t/helper/test-read-graph.c b/t/helper/test-read-graph.c index f92aea9d1f..3ac496e27e 100644 --- a/t/helper/test-read-graph.c +++ b/t/helper/test-read-graph.c @@ -1,9 +1,9 @@ #include "test-tool.h" -#include "cache.h" #include "commit-graph.h" #include "repository.h" #include "object-store.h" #include "bloom.h" +#include "setup.h" int cmd__read_graph(int argc UNUSED, const char **argv UNUSED) { diff --git a/t/helper/test-read-midx.c b/t/helper/test-read-midx.c index 0a883cdf26..05c4f2b262 100644 --- a/t/helper/test-read-midx.c +++ b/t/helper/test-read-midx.c @@ -5,6 +5,7 @@ #include "repository.h" #include "object-store.h" #include "pack-bitmap.h" +#include "setup.h" static int read_midx_file(const char *object_dir, int show_objects) { diff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c index 31c79a777a..6d8f844e9c 100644 --- a/t/helper/test-ref-store.c +++ b/t/helper/test-ref-store.c @@ -1,7 +1,7 @@ #include "test-tool.h" -#include "cache.h" #include "hex.h" #include "refs.h" +#include "setup.h" #include "worktree.h" #include "object-store.h" #include "repository.h" diff --git a/t/helper/test-repository.c b/t/helper/test-repository.c index 10a6dfc216..bafd2a5bf9 100644 --- a/t/helper/test-repository.c +++ b/t/helper/test-repository.c @@ -1,12 +1,13 @@ #include "test-tool.h" -#include "cache.h" #include "commit-graph.h" #include "commit.h" #include "config.h" +#include "environment.h" #include "hex.h" #include "object-store.h" #include "object.h" #include "repository.h" +#include "setup.h" #include "tree.h" static void test_parse_commit_in_graph(const char *gitdir, const char *worktree, diff --git a/t/helper/test-revision-walking.c b/t/helper/test-revision-walking.c index c7b22cb33d..0c62b9de18 100644 --- a/t/helper/test-revision-walking.c +++ b/t/helper/test-revision-walking.c @@ -9,10 +9,10 @@ */ #include "test-tool.h" -#include "cache.h" #include "commit.h" #include "diff.h" #include "revision.h" +#include "setup.h" static void print_commit(struct commit *commit) { diff --git a/t/helper/test-run-command.c b/t/helper/test-run-command.c index b0d041ec5f..c0ed8722c8 100644 --- a/t/helper/test-run-command.c +++ b/t/helper/test-run-command.c @@ -16,7 +16,6 @@ #include "string-list.h" #include "thread-utils.h" #include "wildmatch.h" -#include "gettext.h" static int number_callbacks; static int parallel_next(struct child_process *cp, diff --git a/t/helper/test-scrap-cache-tree.c b/t/helper/test-scrap-cache-tree.c index 8a42c475b3..3fecd06d17 100644 --- a/t/helper/test-scrap-cache-tree.c +++ b/t/helper/test-scrap-cache-tree.c @@ -2,6 +2,7 @@ #include "test-tool.h" #include "cache.h" #include "lockfile.h" +#include "setup.h" #include "tree.h" #include "cache-tree.h" diff --git a/t/helper/test-serve-v2.c b/t/helper/test-serve-v2.c index 824e5c0a95..054cbcf5d8 100644 --- a/t/helper/test-serve-v2.c +++ b/t/helper/test-serve-v2.c @@ -1,7 +1,8 @@ #include "test-tool.h" -#include "cache.h" +#include "gettext.h" #include "parse-options.h" #include "serve.h" +#include "setup.h" static char const * const serve_usage[] = { N_("test-tool serve-v2 []"), diff --git a/t/helper/test-submodule-config.c b/t/helper/test-submodule-config.c index f1b56ab2fa..40a6ee45af 100644 --- a/t/helper/test-submodule-config.c +++ b/t/helper/test-submodule-config.c @@ -1,6 +1,7 @@ #include "test-tool.h" #include "cache.h" #include "config.h" +#include "setup.h" #include "submodule-config.h" #include "submodule.h" diff --git a/t/helper/test-submodule-nested-repo-config.c b/t/helper/test-submodule-nested-repo-config.c index a3848a8b66..d31f5e48ab 100644 --- a/t/helper/test-submodule-nested-repo-config.c +++ b/t/helper/test-submodule-nested-repo-config.c @@ -1,5 +1,5 @@ #include "test-tool.h" -#include "cache.h" +#include "setup.h" #include "submodule-config.h" static void die_usage(const char **argv, const char *msg) diff --git a/t/helper/test-submodule.c b/t/helper/test-submodule.c index 3b75358723..7cbd59922a 100644 --- a/t/helper/test-submodule.c +++ b/t/helper/test-submodule.c @@ -1,8 +1,8 @@ #include "test-tool.h" #include "test-tool-utils.h" -#include "cache.h" #include "parse-options.h" #include "remote.h" +#include "setup.h" #include "submodule-config.h" #include "submodule.h" diff --git a/t/helper/test-subprocess.c b/t/helper/test-subprocess.c index ff22f2fa2c..c344f1694d 100644 --- a/t/helper/test-subprocess.c +++ b/t/helper/test-subprocess.c @@ -1,6 +1,6 @@ #include "test-tool.h" -#include "cache.h" #include "run-command.h" +#include "setup.h" int cmd__subprocess(int argc, const char **argv) { diff --git a/t/helper/test-trace2.c b/t/helper/test-trace2.c index 688c8d017d..98f071452a 100644 --- a/t/helper/test-trace2.c +++ b/t/helper/test-trace2.c @@ -1,9 +1,9 @@ #include "test-tool.h" -#include "cache.h" #include "strvec.h" #include "run-command.h" #include "exec-cmd.h" #include "config.h" +#include "trace2.h" typedef int(fn_unit_test)(int argc, const char **argv); diff --git a/t/helper/test-userdiff.c b/t/helper/test-userdiff.c index a2b56b9cae..680124a676 100644 --- a/t/helper/test-userdiff.c +++ b/t/helper/test-userdiff.c @@ -1,5 +1,5 @@ #include "test-tool.h" -#include "cache.h" +#include "setup.h" #include "userdiff.h" #include "config.h" diff --git a/t/helper/test-write-cache.c b/t/helper/test-write-cache.c index 7d45cd61e8..a93417ed3a 100644 --- a/t/helper/test-write-cache.c +++ b/t/helper/test-write-cache.c @@ -2,6 +2,7 @@ #include "test-tool.h" #include "cache.h" #include "lockfile.h" +#include "setup.h" int cmd__write_cache(int argc, const char **argv) { diff --git a/tag.c b/tag.c index 911cd3178c..01ed67d6fa 100644 --- a/tag.c +++ b/tag.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "environment.h" #include "tag.h" #include "object-store.h" #include "commit.h" @@ -8,6 +9,7 @@ #include "gpg-interface.h" #include "hex.h" #include "packfile.h" +#include "wrapper.h" const char *tag_type = "tag"; diff --git a/tempfile.c b/tempfile.c index e27048f970..50c377134c 100644 --- a/tempfile.c +++ b/tempfile.c @@ -42,9 +42,11 @@ * file created by its parent. */ -#include "cache.h" +#include "git-compat-util.h" +#include "path.h" #include "tempfile.h" #include "sigchain.h" +#include "wrapper.h" static VOLATILE_LIST_HEAD(tempfile_list); diff --git a/tmp-objdir.c b/tmp-objdir.c index 2a2012eb6d..5adad1925d 100644 --- a/tmp-objdir.c +++ b/tmp-objdir.c @@ -1,7 +1,9 @@ #include "cache.h" #include "tmp-objdir.h" +#include "abspath.h" #include "chdir-notify.h" #include "dir.h" +#include "environment.h" #include "sigchain.h" #include "string-list.h" #include "strbuf.h" diff --git a/trace.c b/trace.c index efa4e2d8e0..81318a2455 100644 --- a/trace.c +++ b/trace.c @@ -22,7 +22,11 @@ */ #include "cache.h" +#include "abspath.h" +#include "environment.h" #include "quote.h" +#include "setup.h" +#include "wrapper.h" struct trace_key trace_default_key = { "GIT_TRACE", 0, 0, 0 }; struct trace_key trace_perf_key = TRACE_KEY_INIT(PERFORMANCE); diff --git a/trace2/tr2_cfg.c b/trace2/tr2_cfg.c index ec9ac1a6ef..78cfc15d52 100644 --- a/trace2/tr2_cfg.c +++ b/trace2/tr2_cfg.c @@ -1,5 +1,7 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" +#include "strbuf.h" +#include "trace2.h" #include "trace2/tr2_cfg.h" #include "trace2/tr2_sysenv.h" diff --git a/trace2/tr2_cmd_name.c b/trace2/tr2_cmd_name.c index dd313204f5..b7b5a869b7 100644 --- a/trace2/tr2_cmd_name.c +++ b/trace2/tr2_cmd_name.c @@ -1,4 +1,5 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "strbuf.h" #include "trace2/tr2_cmd_name.h" #define TR2_ENVVAR_PARENT_NAME "GIT_TRACE2_PARENT_NAME" diff --git a/trace2/tr2_dst.c b/trace2/tr2_dst.c index 8a21dd2972..5be892cd5c 100644 --- a/trace2/tr2_dst.c +++ b/trace2/tr2_dst.c @@ -1,5 +1,7 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "abspath.h" #include "sigchain.h" +#include "strbuf.h" #include "trace2/tr2_dst.h" #include "trace2/tr2_sid.h" #include "trace2/tr2_sysenv.h" diff --git a/trace2/tr2_sid.c b/trace2/tr2_sid.c index 5f1ce6f85c..09c4ef0d17 100644 --- a/trace2/tr2_sid.c +++ b/trace2/tr2_sid.c @@ -1,5 +1,6 @@ -#include "cache.h" +#include "git-compat-util.h" #include "hex.h" +#include "strbuf.h" #include "trace2/tr2_tbuf.h" #include "trace2/tr2_sid.h" diff --git a/trailer.c b/trailer.c index 72c3fed5c6..a2c3ed6f28 100644 --- a/trailer.c +++ b/trailer.c @@ -1,6 +1,8 @@ -#include "cache.h" +#include "git-compat-util.h" #include "alloc.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "string-list.h" #include "run-command.h" #include "commit.h" diff --git a/transport-helper.c b/transport-helper.c index 1939763ab5..76d146ee88 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -4,6 +4,8 @@ #include "run-command.h" #include "commit.h" #include "diff.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "revision.h" #include "remote.h" @@ -15,6 +17,7 @@ #include "refspec.h" #include "transport-internal.h" #include "protocol.h" +#include "wrapper.h" static int debug; diff --git a/transport.c b/transport.c index 8f36ee3f00..89a220425e 100644 --- a/transport.c +++ b/transport.c @@ -1,6 +1,7 @@ -#include "git-compat-util.h" +#include "cache.h" #include "alloc.h" #include "config.h" +#include "environment.h" #include "hex.h" #include "transport.h" #include "hook.h" @@ -26,6 +27,7 @@ #include "object-store.h" #include "color.h" #include "bundle-uri.h" +#include "wrapper.h" static int transport_use_color = -1; static char transport_colors[][COLOR_MAXLEN] = { diff --git a/transport.h b/transport.h index 85150f504f..6393cd9823 100644 --- a/transport.h +++ b/transport.h @@ -1,7 +1,6 @@ #ifndef TRANSPORT_H #define TRANSPORT_H -#include "cache.h" #include "run-command.h" #include "remote.h" #include "list-objects-filter-options.h" diff --git a/tree-walk.c b/tree-walk.c index 0e2f5ceb71..38b6556478 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -2,6 +2,7 @@ #include "tree-walk.h" #include "alloc.h" #include "dir.h" +#include "gettext.h" #include "hex.h" #include "object-store.h" #include "tree.h" diff --git a/unpack-trees.c b/unpack-trees.c index 0e7ae852ff..3ded68ecb6 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -3,6 +3,8 @@ #include "repository.h" #include "config.h" #include "dir.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "tree.h" #include "tree-walk.h" @@ -20,6 +22,7 @@ #include "promisor-remote.h" #include "entry.h" #include "parallel-checkout.h" +#include "setup.h" /* * Error messages expected by scripts out of plumbing commands such as diff --git a/upload-pack.c b/upload-pack.c index 54be6a6191..e23f16dfdd 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -1,5 +1,7 @@ #include "cache.h" #include "config.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "refs.h" #include "pkt-line.h" @@ -28,6 +30,7 @@ #include "commit-graph.h" #include "commit-reach.h" #include "shallow.h" +#include "write-or-die.h" /* Remember to update object flag allocation in object.h */ #define THEY_HAVE (1u << 11) diff --git a/usage.c b/usage.c index 5a7c6c346c..46d99f8bd4 100644 --- a/usage.c +++ b/usage.c @@ -4,7 +4,9 @@ * Copyright (C) Linus Torvalds, 2005 */ #include "git-compat-util.h" -#include "cache.h" +#include "gettext.h" +#include "trace2.h" +#include "wrapper.h" static void vreportf(const char *prefix, const char *err, va_list params) { diff --git a/walker.c b/walker.c index e86f85e528..cfbd257fdb 100644 --- a/walker.c +++ b/walker.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "gettext.h" #include "hex.h" #include "walker.h" #include "repository.h" diff --git a/worktree.c b/worktree.c index e10594ef33..b5ee71c5eb 100644 --- a/worktree.c +++ b/worktree.c @@ -1,12 +1,17 @@ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" +#include "environment.h" +#include "gettext.h" #include "repository.h" #include "refs.h" +#include "setup.h" #include "strbuf.h" #include "worktree.h" #include "dir.h" #include "wt-status.h" #include "config.h" +#include "wrapper.h" void free_worktrees(struct worktree **worktrees) { diff --git a/wrapper.c b/wrapper.c index 299d6489a6..ee83757590 100644 --- a/wrapper.c +++ b/wrapper.c @@ -2,7 +2,10 @@ * Various trivial helper wrappers around standard functions */ #include "cache.h" +#include "abspath.h" #include "config.h" +#include "gettext.h" +#include "wrapper.h" static intmax_t count_fsync_writeout_only; static intmax_t count_fsync_hardware_flush; diff --git a/wrapper.h b/wrapper.h new file mode 100644 index 0000000000..f0c7d0616d --- /dev/null +++ b/wrapper.h @@ -0,0 +1,36 @@ +#ifndef WRAPPER_H +#define WRAPPER_H + +/* set default permissions by passing mode arguments to open(2) */ +int git_mkstemps_mode(char *pattern, int suffix_len, int mode); +int git_mkstemp_mode(char *pattern, int mode); + +ssize_t read_in_full(int fd, void *buf, size_t count); +ssize_t write_in_full(int fd, const void *buf, size_t count); +ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset); + +static inline ssize_t write_str_in_full(int fd, const char *str) +{ + return write_in_full(fd, str, strlen(str)); +} + +/** + * Open (and truncate) the file at path, write the contents of buf to it, + * and close it. Dies if any errors are encountered. + */ +void write_file_buf(const char *path, const char *buf, size_t len); + +/** + * Like write_file_buf(), but format the contents into a buffer first. + * Additionally, write_file() will append a newline if one is not already + * present, making it convenient to write text files: + * + * write_file(path, "counter: %d", ctr); + */ +__attribute__((format (printf, 2, 3))) +void write_file(const char *path, const char *fmt, ...); + +/* Return 1 if the file is empty or does not exists, 0 otherwise. */ +int is_empty_or_missing_file(const char *filename); + +#endif /* WRAPPER_H */ diff --git a/write-or-die.c b/write-or-die.c index aaa0318e82..cc9e0787a1 100644 --- a/write-or-die.c +++ b/write-or-die.c @@ -1,6 +1,8 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "run-command.h" +#include "wrapper.h" +#include "write-or-die.h" /* * Some cases use stdio, but want to flush after the write diff --git a/write-or-die.h b/write-or-die.h new file mode 100644 index 0000000000..65a5c42a47 --- /dev/null +++ b/write-or-die.h @@ -0,0 +1,78 @@ +#ifndef WRITE_OR_DIE_H +#define WRITE_OR_DIE_H + +void maybe_flush_or_die(FILE *, const char *); +__attribute__((format (printf, 2, 3))) +void fprintf_or_die(FILE *, const char *fmt, ...); +void fwrite_or_die(FILE *f, const void *buf, size_t count); +void fflush_or_die(FILE *f); +void write_or_die(int fd, const void *buf, size_t count); + +/* + * These values are used to help identify parts of a repository to fsync. + * FSYNC_COMPONENT_NONE identifies data that will not be a persistent part of the + * repository and so shouldn't be fsynced. + */ +enum fsync_component { + FSYNC_COMPONENT_NONE, + FSYNC_COMPONENT_LOOSE_OBJECT = 1 << 0, + FSYNC_COMPONENT_PACK = 1 << 1, + FSYNC_COMPONENT_PACK_METADATA = 1 << 2, + FSYNC_COMPONENT_COMMIT_GRAPH = 1 << 3, + FSYNC_COMPONENT_INDEX = 1 << 4, + FSYNC_COMPONENT_REFERENCE = 1 << 5, +}; + +#define FSYNC_COMPONENTS_OBJECTS (FSYNC_COMPONENT_LOOSE_OBJECT | \ + FSYNC_COMPONENT_PACK) + +#define FSYNC_COMPONENTS_DERIVED_METADATA (FSYNC_COMPONENT_PACK_METADATA | \ + FSYNC_COMPONENT_COMMIT_GRAPH) + +#define FSYNC_COMPONENTS_DEFAULT ((FSYNC_COMPONENTS_OBJECTS | \ + FSYNC_COMPONENTS_DERIVED_METADATA) & \ + ~FSYNC_COMPONENT_LOOSE_OBJECT) + +#define FSYNC_COMPONENTS_COMMITTED (FSYNC_COMPONENTS_OBJECTS | \ + FSYNC_COMPONENT_REFERENCE) + +#define FSYNC_COMPONENTS_ADDED (FSYNC_COMPONENTS_COMMITTED | \ + FSYNC_COMPONENT_INDEX) + +#define FSYNC_COMPONENTS_ALL (FSYNC_COMPONENT_LOOSE_OBJECT | \ + FSYNC_COMPONENT_PACK | \ + FSYNC_COMPONENT_PACK_METADATA | \ + FSYNC_COMPONENT_COMMIT_GRAPH | \ + FSYNC_COMPONENT_INDEX | \ + FSYNC_COMPONENT_REFERENCE) + +#ifndef FSYNC_COMPONENTS_PLATFORM_DEFAULT +#define FSYNC_COMPONENTS_PLATFORM_DEFAULT FSYNC_COMPONENTS_DEFAULT +#endif + +/* IO helper functions */ +void fsync_or_die(int fd, const char *); +int fsync_component(enum fsync_component component, int fd); +void fsync_component_or_die(enum fsync_component component, int fd, const char *msg); + +/* + * A bitmask indicating which components of the repo should be fsynced. + */ +extern enum fsync_component fsync_components; +extern int fsync_object_files; +extern int use_fsync; + +enum fsync_method { + FSYNC_METHOD_FSYNC, + FSYNC_METHOD_WRITEOUT_ONLY, + FSYNC_METHOD_BATCH, +}; + +extern enum fsync_method fsync_method; + +static inline int batch_fsync_enabled(enum fsync_component component) +{ + return (fsync_components & component) && (fsync_method == FSYNC_METHOD_BATCH); +} + +#endif /* WRITE_OR_DIE_H */ diff --git a/wt-status.c b/wt-status.c index 151b94aa36..4bef09de1c 100644 --- a/wt-status.c +++ b/wt-status.c @@ -4,6 +4,8 @@ #include "dir.h" #include "commit.h" #include "diff.h" +#include "environment.h" +#include "gettext.h" #include "hex.h" #include "revision.h" #include "diffcore.h" @@ -14,6 +16,7 @@ #include "refs.h" #include "submodule.h" #include "column.h" +#include "setup.h" #include "strbuf.h" #include "utf8.h" #include "worktree.h" diff --git a/xdiff-interface.c b/xdiff-interface.c index 0617fadbfb..0460e03f5e 100644 --- a/xdiff-interface.c +++ b/xdiff-interface.c @@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "hex.h" #include "object-store.h"