Header cleanups (more splitting of cache.h and simplifying a few other deps)
cover Header cleanups (more splitting of cache.h and simplifying a few other deps)
Maintainer notes: (1) This series is based on en/header-split-cache-h (now in next). (2) Although I've tweaked the series to minimize conflicts, there is a semantic conflict with sl/sparse-write-tree in next; to resolve, add an include of repository.h in builtin/write-tree.c.
This series continues to focus on splitting declarations from cache.h to separate headers. This series also untangles some dependencies between hash.h and repository.h, and between read-cache.c and tree.[ch], and cleans up a few other headers. At the end of this series the number of cache.h includes drops from 189 down to 149.
The series may appear to be long at first glance, but is filled with mostly repetitive and simple changes similar to those from earlier series. An overview:
* Patch 1: files depending on strbuf.h should be explicit about it
* Patches 2-13: move stuff out of cache.h into other more logical headers
* Patch 14-16: move functions between hash<->repository and read-cache<->tree to simplify dependencies
* Patch 17: remove includes of cache.h permitted by the previous 16 patches
* Patches 18-22: clean up now-unnecessary includes in other headers
* Patch 23: start enforcing git-compat-util.h is first include for reftable files as well.
And thanks once again to Dscho for gitgitgadget. Getting multiple platform testing + all the special tests (sparse, cocci, hdr-check, etc.) really helps clean out all the issues that would otherwise hit a series like this.
Elijah Newren (23):
treewide: be explicit about dependence on strbuf.h symlinks.h: move declarations for symlinks.c functions from cache.h protocol.h: move definition of DEFAULT_GIT_PORT from cache.h packfile.h: move pack_window and pack_entry from cache.h server-info.h: move declarations for server-info.c functions from
cache.h
copy.h: move declarations for copy.c functions from cache.h base85.h: move declarations for base85.c functions from cache.h pkt-line.h: move declarations for pkt-line.c functions from cache.h match-trees.h: move declarations for match-trees.c functions from
cache.h
ws.h: move declarations for ws.c functions from cache.h versioncmp.h: move declarations for versioncmp.c functions from
cache.h
dir.h: move DTYPE defines from cache.h
tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h hash.h, repository.h: reverse the order of these dependencies cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c cache,tree: move basic name compare functions from read-cache to tree
treewide: remove cache.h inclusion due to previous changes cache.h: remove unnecessary headers
fsmonitor: reduce includes of cache.h
commit.h: reduce unnecessary includes
object-store.h: reduce unnecessary includes
diff.h: reduce unnecessary includes
reftable: ensure git-compat-util.h is the first (indirect) include
add-interactive.c | 1 + alloc.c | 1 + apply.c | 3 + archive-zip.c | 2 +- archive.c | 2 + attr.c | 1 + base85.c | 3 +- base85.h | 7 + bloom.c | 1 + branch.c | 1 + builtin/apply.c | 1 + builtin/archive.c | 1 + builtin/bisect.c | 1 + builtin/bundle.c | 2 + builtin/check-attr.c | 1 + builtin/check-ignore.c | 1 + builtin/checkout-index.c | 1 + builtin/checkout.c | 1 + builtin/clean.c | 1 + builtin/clone.c | 2 + builtin/config.c | 1 + builtin/credential-cache.c | 1 + builtin/credential-store.c | 1 + builtin/diff-tree.c | 1 + builtin/diff.c | 1 + builtin/difftool.c | 1 + builtin/fetch.c | 1 + builtin/for-each-repo.c | 2 + builtin/gc.c | 1 + builtin/help.c | 1 + builtin/init-db.c | 2 + builtin/log.c | 1 + builtin/ls-remote.c | 1 + builtin/merge-index.c | 1 + builtin/merge-recursive.c | 1 + builtin/merge-tree.c | 1 + builtin/mv.c | 1 + builtin/push.c | 2 + builtin/read-tree.c | 1 + builtin/receive-pack.c | 1 + builtin/repack.c | 1 + builtin/rerere.c | 1 + builtin/rm.c | 1 + builtin/show-branch.c | 1 + builtin/show-index.c | 1 + builtin/update-index.c | 2 + builtin/update-ref.c | 1 + builtin/update-server-info.c | 1 + builtin/upload-archive.c | 1 + builtin/worktree.c | 2 + bundle-uri.c | 3 +- cache.h | 143 +------------------ checkout.c | 1 + chunk-format.c | 1 + color.c | 3 +- combine-diff.c | 3 +- commit-graph.c | 1 + commit.c | 1 + commit.h | 11 +- common-main.c | 4 +- compat/fsmonitor/fsm-health-darwin.c | 2 +- compat/fsmonitor/fsm-ipc-darwin.c | 4 +- compat/fsmonitor/fsm-ipc-win32.c | 1 + compat/fsmonitor/fsm-listen-darwin.c | 3 +- compat/mingw.c | 1 + compat/precompose_utf8.c | 1 + compat/win32/trace2_win32_process_info.c | 1 + config.c | 3 +- convert.c | 1 + copy.c | 4 +- copy.h | 10 ++ credential.c | 3 +- csum-file.c | 1 + daemon.c | 4 +- date.c | 3 +- diagnose.c | 2 +- diff-lib.c | 1 + diff.c | 2 + diff.h | 1 - dir.c | 2 + dir.h | 15 ++ editor.c | 1 + entry.c | 1 + environment.c | 3 +- exec-cmd.c | 1 + fetch-pack.c | 1 + fsck.c | 1 + fsmonitor--daemon.h | 1 - fsmonitor-ipc.c | 1 + gpg-interface.c | 2 + grep.c | 1 + hash-lookup.c | 1 + hash.h | 97 ------------- hex.c | 1 + hook.c | 1 + http-push.c | 2 + khash.h | 1 + line-log.c | 1 + ll-merge.c | 3 +- log-tree.c | 1 + match-trees.c | 3 +- match-trees.h | 10 ++ merge-ort-wrappers.c | 2 + merge-ort.c | 1 + merge-recursive.c | 2 + merge.c | 1 + midx.c | 2 +- negotiator/default.c | 1 + negotiator/skipping.c | 1 + notes-cache.c | 1 + notes-utils.c | 1 + object-file.c | 3 +- object-file.h | 2 + object-name.c | 2 + object-store.h | 8 +- object.h | 1 + oid-array.h | 1 + oidmap.c | 1 + oidtree.c | 1 + pack-bitmap-write.c | 2 + packfile.c | 2 +- packfile.h | 16 ++- parallel-checkout.c | 2 + parse-options-cb.c | 1 + parse-options.c | 1 + pathspec.c | 2 + pkt-line.c | 3 +- pkt-line.h | 2 + preload-index.c | 1 + progress.c | 1 + protocol.h | 21 +++ range-diff.c | 2 +- read-cache.c | 81 ++--------- rebase-interactive.c | 1 + ref-filter.c | 4 +- reflog.c | 2 + refs/debug.c | 1 + refs/files-backend.c | 2 + refs/packed-backend.c | 1 + refs/ref-cache.c | 1 + refs/ref-cache.h | 1 + refspec.c | 2 + reftable/error.c | 1 + reftable/publicbasics.c | 2 +- reftable/tree.c | 2 +- reftable/tree_test.c | 1 + repository.h | 96 +++++++++++++ rerere.c | 1 + resolve-undo.c | 1 + revision.h | 1 + run-command.c | 1 + send-pack.c | 1 + sequencer.c | 1 + server-info.c | 3 +- server-info.h | 7 + split-index.c | 2 + strbuf.c | 1 + submodule-config.c | 1 + symlinks.c | 3 +- symlinks.h | 28 ++++ t/helper/test-bloom.c | 1 + t/helper/test-cache-tree.c | 1 + t/helper/test-dump-cache-tree.c | 1 + t/helper/test-dump-fsmonitor.c | 1 + t/helper/test-dump-untracked-cache.c | 1 + t/helper/test-example-decorate.c | 1 + t/helper/test-fsmonitor-client.c | 1 + t/helper/test-lazy-init-name-hash.c | 1 + t/helper/test-match-trees.c | 3 +- t/helper/test-mergesort.c | 2 +- t/helper/test-oid-array.c | 2 +- t/helper/test-oidmap.c | 1 + t/helper/test-oidtree.c | 2 +- t/helper/test-parse-options.c | 2 +- t/helper/test-path-utils.c | 1 + t/helper/test-read-cache.c | 1 + t/helper/test-read-midx.c | 2 +- t/helper/test-reftable.c | 1 + t/helper/test-scrap-cache-tree.c | 1 + t/helper/test-string-list.c | 2 +- t/helper/test-submodule-config.c | 1 + t/helper/test-submodule-nested-repo-config.c | 1 + t/helper/test-submodule.c | 1 + t/helper/test-trace2.c | 1 + t/helper/test-write-cache.c | 1 + trace2.c | 1 + trace2/tr2_tgt_event.c | 1 + trace2/tr2_tgt_normal.c | 1 + trace2/tr2_tgt_perf.c | 1 + tree-diff.c | 16 ++- tree-walk.c | 2 +- tree-walk.h | 1 + tree.c | 72 +++++++++- tree.h | 11 +- unpack-trees.c | 1 + versioncmp.c | 3 +- versioncmp.h | 6 + wrapper.c | 5 +- ws.c | 6 +- ws.h | 33 +++++ wt-status.c | 1 + 201 files changed, 598 insertions(+), 371 deletions(-) create mode 100644 base85.h create mode 100644 copy.h create mode 100644 match-trees.h create mode 100644 server-info.h create mode 100644 symlinks.h create mode 100644 versioncmp.h create mode 100644 ws.h
base-commit: 4711556905f381c01f1fbae205f67cfa673ab44a
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1517%2Fnewren%2Fheader-cleanup-4-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1517/newren/header-cleanup-4-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1517
Signature · 1 line
gitgitgadget
PATCH 3/23 protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
From: Elijah Newren <[email protected]>
--- cache.h | 21 --------------------- daemon.c | 1 + protocol.h | 21 +++++++++++++++++++++ 3 files changed, 22 insertions(+), 21 deletions(-)
cache.h +0 -21
@@ -39,27 +39,6 @@#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 -/* -* Intensive research over the course of many years has shown that -* port 9418 is totally unused by anything else. Or -* -* Your search - "port 9418" - did not match any documents. -* -* as www.google.com puts it. -* -* This port has been properly assigned for git use by IANA: -* git (Assigned-9418) [I06-050728-0001]. -* -* git 9418/tcp git pack transfer service -* git 9418/udp git pack transfer service -* -* with Linus Torvalds <[email protected]> as the point of -* contact. September 2005. -* -* See http://www.iana.org/assignments/port-numbers -*/ -#define DEFAULT_GIT_PORT 9418 -/* * Basic data structures for the directory cache */
daemon.c +1 -0
@@ -4,6 +4,7 @@#include "config.h" #include "environment.h" #include "pkt-line.h" +#include "protocol.h" #include "run-command.h" #include "setup.h" #include "strbuf.h"
protocol.h +21 -0
@@ -1,6 +1,27 @@#ifndef PROTOCOL_H #define PROTOCOL_H +/* +* Intensive research over the course of many years has shown that +* port 9418 is totally unused by anything else. Or +* +* Your search - "port 9418" - did not match any documents. +* +* as www.google.com puts it. +* +* This port has been properly assigned for git use by IANA: +* git (Assigned-9418) [I06-050728-0001]. +* +* git 9418/tcp git pack transfer service +* git 9418/udp git pack transfer service +* +* with Linus Torvalds <[email protected]> as the point of +* contact. September 2005. +* +* See http://www.iana.org/assignments/port-numbers +*/ +#define DEFAULT_GIT_PORT 9418 +enum protocol_version { protocol_unknown_version =-1 , protocol_v0 = 0,
Signature · 1 line
gitgitgadget
PATCH 6/23 copy.h: move declarations for copy.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- builtin/bisect.c | 1 + builtin/clone.c | 1 + builtin/difftool.c | 1 + builtin/init-db.c | 1 + builtin/worktree.c | 1 + bundle-uri.c | 1 + cache.h | 6 ------ convert.c | 1 + copy.c | 1 + copy.h | 10 ++++++++++ pkt-line.c | 1 + refs/files-backend.c | 1 + rerere.c | 1 + sequencer.c | 1 + 14 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 copy.h
builtin/bisect.c +1 -0
@@ -1,5 +1,6 @@#include "builtin.h" #include "cache.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "hex.h"
builtin/clone.c +1 -0
@@ -13,6 +13,7 @@#include "abspath.h" #include "advice.h" #include "config.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "hex.h"
builtin/difftool.c +1 -0
@@ -15,6 +15,7 @@#include "cache.h" #include "abspath.h" #include "config.h" +#include "copy.h" #include "builtin.h" #include "run-command.h" #include "environment.h"
builtin/init-db.c +1 -0
@@ -6,6 +6,7 @@#include "cache.h" #include "abspath.h" #include "config.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "refs.h"
builtin/worktree.c +1 -0
@@ -2,6 +2,7 @@#include "abspath.h" #include "checkout.h" #include "config.h" +#include "copy.h" #include "builtin.h" #include "dir.h" #include "environment.h"
bundle-uri.c +1 -0
@@ -1,6 +1,7 @@#include "cache.h" #include "bundle-uri.h" #include "bundle.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "object-store.h"
cache.h +0 -6
@@ -593,12 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -#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); -/* base85 */ int decode_85 (char *dst,const char *line,int linelen);void encode_85 (char *buf,const unsigned char *data,int bytes);
convert.c +1 -0
@@ -2,6 +2,7 @@#include "advice.h" #include "config.h" #include "convert.h" +#include "copy.h" #include "gettext.h" #include "hex.h" #include "object-store.h"
copy.c +1 -0
@@ -1,4 +1,5 @@#include "cache.h" +#include "copy.h" #include "wrapper.h" int copy_fd (int ifd,int ofd)
copy.h new file +10 -0
@@ -0,0 +1,10 @@ +#ifndef COPY_H +#define COPY_H + +#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); + +#endif /* COPY_H */
pkt-line.c +1 -0
@@ -1,4 +1,5 @@#include "cache.h" +#include "copy.h" #include "pkt-line.h" #include "gettext.h" #include "hex.h"
refs/files-backend.c +1 -0
@@ -1,5 +1,6 @@#include "../cache.h" #include "../config.h" +#include "../copy.h" #include "../environment.h" #include "../gettext.h" #include "../hex.h"
rerere.c +1 -0
@@ -2,6 +2,7 @@#include "abspath.h" #include "alloc.h" #include "config.h" +#include "copy.h" #include "gettext.h" #include "hex.h" #include "lockfile.h"
sequencer.c +1 -0
@@ -3,6 +3,7 @@#include "advice.h" #include "alloc.h" #include "config.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "hex.h"
Signature · 1 line
gitgitgadget
PATCH 2/23 symlinks.h: move declarations for symlinks.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- apply.c | 1 + builtin/checkout.c | 1 + builtin/update-index.c | 1 + cache.h | 22 ---------------------- compat/mingw.c | 1 + diff-lib.c | 1 + dir.c | 1 + entry.c | 1 + merge-recursive.c | 1 + parallel-checkout.c | 1 + pathspec.c | 1 + preload-index.c | 1 + read-cache.c | 1 + run-command.c | 1 + symlinks.c | 3 ++- symlinks.h | 28 ++++++++++++++++++++++++++++ unpack-trees.c | 1 + 17 files changed, 44 insertions(+), 23 deletions(-) create mode 100644 symlinks.h
apply.c +1 -0
@@ -30,6 +30,7 @@#include "apply.h" #include "entry.h" #include "setup.h" +#include "symlinks.h" #include "wrapper.h" struct gitdiff_data {
builtin/checkout.c +1 -0
@@ -28,6 +28,7 @@#include "setup.h" #include "submodule.h" #include "submodule-config.h" +#include "symlinks.h" #include "trace2.h" #include "tree.h" #include "tree-walk.h"
builtin/update-index.c +1 -0
@@ -23,6 +23,7 @@#include "dir.h" #include "setup.h" #include "split-index.h" +#include "symlinks.h" #include "fsmonitor.h" #include "write-or-die.h"
cache.h +0 -22
@@ -614,28 +614,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -struct cache_def { -struct strbuf path; -int flags; -int track_flags; -int prefix_len_stat_func; -}; -#define CACHE_DEF_INIT { \ - .path = STRBUF_INIT, \ -} -static inline void cache_def_clear (struct cache_def *cache) -{ -strbuf_release (&cache->path); -} - -int has_symlink_leading_path (const char *name,int len); -int threaded_has_symlink_leading_path (struct cache_def *,const char *,int ); -int check_leading_path (const char *name,int len,int warn_on_lstat_err); -int has_dirs_only_path (const char *name,int len,int prefix_len); -void invalidate_lstat_cache (void ); -void schedule_dir_for_removal (const char *name,int len); -void remove_scheduled_dirs (void ); -struct pack_window {struct pack_window *next;unsigned char *base;
compat/mingw.c +1 -0
@@ -13,6 +13,7 @@#include "../config.h" #include "../environment.h" #include "../trace2.h" +#include "../symlinks.h" #include "../wrapper.h" #include "dir.h" #include "gettext.h"
diff-lib.c +1 -0
@@ -14,6 +14,7 @@#include "unpack-trees.h" #include "refs.h" #include "submodule.h" +#include "symlinks.h" #include "trace.h" #include "dir.h" #include "fsmonitor.h"
dir.c +1 -0
@@ -25,6 +25,7 @@#include "fsmonitor.h" #include "setup.h" #include "submodule-config.h" +#include "symlinks.h" #include "trace2.h" #include "wrapper.h"
entry.c +1 -0
@@ -7,6 +7,7 @@#include "hex.h" #include "streaming.h" #include "submodule.h" +#include "symlinks.h" #include "progress.h" #include "fsmonitor.h" #include "entry.h"
merge-recursive.c +1 -0
@@ -30,6 +30,7 @@#include "string-list.h" #include "submodule-config.h" #include "submodule.h" +#include "symlinks.h" #include "tag.h" #include "tree-walk.h" #include "unpack-trees.h"
parallel-checkout.c +1 -0
@@ -10,6 +10,7 @@#include "run-command.h" #include "sigchain.h" #include "streaming.h" +#include "symlinks.h" #include "thread-utils.h" #include "trace2.h" #include "wrapper.h"
pathspec.c +1 -0
@@ -8,6 +8,7 @@#include "attr.h" #include "setup.h" #include "strvec.h" +#include "symlinks.h" #include "quote.h" /*
preload-index.c +1 -0
@@ -11,6 +11,7 @@#include "progress.h" #include "thread-utils.h" #include "repository.h" +#include "symlinks.h" #include "trace2.h" /*
read-cache.c +1 -0
@@ -30,6 +30,7 @@#include "trace2.h" #include "varint.h" #include "split-index.h" +#include "symlinks.h" #include "utf8.h" #include "fsmonitor.h" #include "thread-utils.h"
run-command.c +1 -0
@@ -5,6 +5,7 @@#include "gettext.h" #include "sigchain.h" #include "strvec.h" +#include "symlinks.h" #include "thread-utils.h" #include "strbuf.h" #include "string-list.h"
symlinks.c +2 -1
@@ -1,6 +1,7 @@ -#include "cache.h" +#include "git-compat-util.h" #include "gettext.h" #include "setup.h" +#include "symlinks.h" static int threaded_check_leading_path (struct cache_def *cache,const char *name,int len,int warn_on_lstat_err);
symlinks.h new file +28 -0
@@ -0,0 +1,28 @@ +#ifndef SYMLINKS_H +#define SYMLINKS_H + +#include "strbuf.h" + +struct cache_def { +struct strbuf path; +int flags; +int track_flags; +int prefix_len_stat_func; +}; +#define CACHE_DEF_INIT { \ + .path = STRBUF_INIT, \ +} +static inline void cache_def_clear (struct cache_def *cache) +{ +strbuf_release (&cache->path); +} + +int has_symlink_leading_path (const char *name,int len); +int threaded_has_symlink_leading_path (struct cache_def *,const char *,int ); +int check_leading_path (const char *name,int len,int warn_on_lstat_err); +int has_dirs_only_path (const char *name,int len,int prefix_len); +void invalidate_lstat_cache (void ); +void schedule_dir_for_removal (const char *name,int len); +void remove_scheduled_dirs (void ); + +#endif /* SYMLINKS_H */
unpack-trees.c +1 -0
@@ -18,6 +18,7 @@#include "sparse-index.h" #include "submodule.h" #include "submodule-config.h" +#include "symlinks.h" #include "trace2.h" #include "fsmonitor.h" #include "object-store.h"
Signature · 1 line
gitgitgadget
PATCH 1/23 treewide: be explicit about dependence on strbuf.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- color.c | 1 + common-main.c | 1 + credential.c | 1 + date.c | 1 + ll-merge.c | 1 + split-index.c | 1 + t/helper/test-mergesort.c | 1 + t/helper/test-oid-array.c | 1 + t/helper/test-oidtree.c | 1 + t/helper/test-parse-options.c | 1 + t/helper/test-string-list.c | 1 + wrapper.c | 1 + ws.c | 1 + 13 files changed, 13 insertions(+)
color.c +1 -0
@@ -5,6 +5,7 @@#include "gettext.h" #include "hex.h" #include "pager.h" +#include "strbuf.h" static int git_use_color_default =GIT_COLOR_AUTO ;int color_stdout_is_tty =-1 ;
common-main.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "attr.h" #include "setup.h" +#include "strbuf.h" #include "trace2.h" /*
credential.c +1 -0
@@ -8,6 +8,7 @@#include "url.h" #include "prompt.h" #include "sigchain.h" +#include "strbuf.h" #include "urlmatch.h" #include "git-compat-util.h"
date.c +1 -0
@@ -8,6 +8,7 @@#include "date.h" #include "gettext.h" #include "pager.h" +#include "strbuf.h" /* * This is like mktime, but without normalization of tm_wday and tm_yday.
ll-merge.c +1 -0
@@ -12,6 +12,7 @@#include "run-command.h" #include "ll-merge.h" #include "quote.h" +#include "strbuf.h" #include "wrapper.h" struct ll_merge_driver ;
split-index.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "mem-pool.h" #include "split-index.h" +#include "strbuf.h" #include "ewah/ewok.h" struct split_index *init_split_index (struct index_state *istate)
t/helper/test-mergesort.c +1 -0
@@ -2,6 +2,7 @@#include "cache.h" #include "mem-pool.h" #include "mergesort.h" +#include "strbuf.h" static uint32_t minstd_rand (uint32_t *state) {
t/helper/test-oid-array.c +1 -0
@@ -3,6 +3,7 @@#include "hex.h" #include "oid-array.h" #include "setup.h" +#include "strbuf.h" static int print_oid (const struct object_id *oid,void *data) {
t/helper/test-oidtree.c +1 -0
@@ -3,6 +3,7 @@#include "hex.h" #include "oidtree.h" #include "setup.h" +#include "strbuf.h" static enum cb_next print_oid (const struct object_id *oid,void *data) {
t/helper/test-parse-options.c +1 -0
@@ -1,6 +1,7 @@#include "test-tool.h" #include "cache.h" #include "parse-options.h" +#include "strbuf.h" #include "string-list.h" #include "trace2.h"
t/helper/test-string-list.c +1 -0
@@ -1,5 +1,6 @@#include "test-tool.h" #include "cache.h" +#include "strbuf.h" #include "string-list.h" /*
wrapper.c +1 -0
@@ -5,6 +5,7 @@#include "abspath.h" #include "config.h" #include "gettext.h" +#include "strbuf.h" #include "trace2.h" #include "wrapper.h"
ws.c +1 -0
@@ -5,6 +5,7 @@*/ #include "cache.h" #include "attr.h" +#include "strbuf.h" static struct whitespace_rule { const char *rule_name;
Signature · 1 line
gitgitgadget
PATCH 4/23 packfile.h: move pack_window and pack_entry from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- cache.h | 14 -------------- packfile.h | 16 ++++++++++++++-- t/helper/test-read-midx.c | 1 + 3 files changed, 15 insertions(+), 16 deletions(-)
cache.h +0 -14
@@ -593,20 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -struct pack_window { -struct pack_window *next; -unsigned char *base; -off_t offset; -size_t len; -unsigned int last_used; -unsigned int inuse_cnt; -}; - -struct pack_entry { -off_t offset; -struct packed_git *p; -}; -/* Dumb servers support */ int update_server_info (int );
packfile.h +14 -2
@@ -6,10 +6,22 @@/* in object-store.h */ struct packed_git ; -struct pack_entry ; -struct pack_window ;struct object_info ; +struct pack_window { +struct pack_window *next; +unsigned char *base; +off_t offset; +size_t len; +unsigned int last_used; +unsigned int inuse_cnt; +}; + +struct pack_entry { +off_t offset; +struct packed_git *p; +}; +/* * Generate the filename to be used for a pack file with checksum "sha1" and * extension "ext". The result is written into the strbuf "buf", overwriting
t/helper/test-read-midx.c +1 -0
@@ -5,6 +5,7 @@#include "repository.h" #include "object-store.h" #include "pack-bitmap.h" +#include "packfile.h" #include "setup.h" static int read_midx_file (const char *object_dir,int show_objects)
Signature · 1 line
gitgitgadget
PATCH 5/23 server-info.h: move declarations for server-info.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- builtin/receive-pack.c | 1 + builtin/repack.c | 1 + builtin/update-server-info.c | 1 + cache.h | 3 --- server-info.c | 3 ++- server-info.h | 7 +++++++ 6 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 server-info.h
builtin/receive-pack.c +1 -0
@@ -33,6 +33,7 @@#include "object-store.h" #include "protocol.h" #include "commit-reach.h" +#include "server-info.h" #include "trace.h" #include "trace2.h" #include "worktree.h"
builtin/repack.c +1 -0
@@ -7,6 +7,7 @@#include "hex.h" #include "parse-options.h" #include "run-command.h" +#include "server-info.h" #include "sigchain.h" #include "strbuf.h" #include "string-list.h"
builtin/update-server-info.c +1 -0
@@ -3,6 +3,7 @@#include "builtin.h" #include "gettext.h" #include "parse-options.h" +#include "server-info.h" static const char *const update_server_info_usage[] = {"git update-server-info [-f | --force]" ,
cache.h +0 -3
@@ -593,9 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -/* Dumb servers support */ -int update_server_info (int ); -#define COPY_READ_ERROR (-2)#define COPY_WRITE_ERROR (-3)int copy_fd (int ifd,int ofd);
server-info.c +2 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "alloc.h" #include "dir.h" #include "environment.h"
@@ -11,6 +11,7 @@#include "packfile.h" #include "object-file.h" #include "object-store.h" +#include "server-info.h" #include "strbuf.h" #include "wrapper.h"
server-info.h new file +7 -0
@@ -0,0 +1,7 @@ +#ifndef SERVER_INFO_H +#define SERVER_INFO_H + +/* Dumb servers support */ +int update_server_info (int ); + +#endif /* SERVER_INFO_H */
Signature · 1 line
gitgitgadget
PATCH 7/23 base85.h: move declarations for base85.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- apply.c | 1 + base85.c | 3 ++- base85.h | 7 +++++++ cache.h | 4 ---- diff.c | 1 + 5 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 base85.h
apply.c +1 -0
@@ -10,6 +10,7 @@#include "cache.h" #include "abspath.h" #include "alloc.h" +#include "base85.h" #include "config.h" #include "object-store.h" #include "blob.h"
base85.c +2 -1
@@ -1,4 +1,5 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "base85.h" #undef DEBUG_85
base85.h new file +7 -0
@@ -0,0 +1,7 @@ +#ifndef BASE85_H +#define BASE85_H + +int decode_85 (char *dst,const char *line,int linelen); +void encode_85 (char *buf,const unsigned char *data,int bytes); + +#endif /* BASE85_H */
cache.h +0 -4
@@ -593,10 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -/* base85 */ -int decode_85 (char *dst,const char *line,int linelen); -void encode_85 (char *buf,const unsigned char *data,int bytes); -/* pkt-line.c */ void packet_trace_identity (const char *prog);
diff.c +1 -0
@@ -4,6 +4,7 @@#include "cache.h" #include "abspath.h" #include "alloc.h" +#include "base85.h" #include "config.h" #include "convert.h" #include "environment.h"
Signature · 1 line
gitgitgadget
PATCH 8/23 pkt-line.h: move declarations for pkt-line.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- builtin/bundle.c | 1 + builtin/clone.c | 1 + builtin/fetch.c | 1 + builtin/ls-remote.c | 1 + builtin/push.c | 1 + cache.h | 3 --- pkt-line.h | 2 ++ 7 files changed, 7 insertions(+), 3 deletions(-)
builtin/bundle.c +1 -0
@@ -4,6 +4,7 @@#include "setup.h" #include "strvec.h" #include "parse-options.h" +#include "pkt-line.h" #include "cache.h" #include "bundle.h"
builtin/clone.c +1 -0
@@ -39,6 +39,7 @@#include "setup.h" #include "connected.h" #include "packfile.h" +#include "pkt-line.h" #include "list-objects-filter-options.h" #include "hook.h" #include "bundle.h"
builtin/fetch.c +1 -0
@@ -29,6 +29,7 @@#include "utf8.h" #include "packfile.h" #include "pager.h" +#include "pkt-line.h" #include "list-objects-filter-options.h" #include "commit-reach.h" #include "branch.h"
builtin/ls-remote.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "hex.h" #include "transport.h" +#include "pkt-line.h" #include "ref-filter.h" #include "remote.h" #include "refs.h"
builtin/push.c +1 -0
@@ -14,6 +14,7 @@#include "remote.h" #include "transport.h" #include "parse-options.h" +#include "pkt-line.h" #include "submodule.h" #include "submodule-config.h" #include "send-pack.h"
cache.h +0 -3
@@ -593,9 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -/* pkt-line.c */ -void packet_trace_identity (const char *prog); -/* add */ /* * return 0 if success, 1 - if addition of a file failed and
pkt-line.h +2 -0
@@ -246,4 +246,6 @@ void packet_writer_error(struct packet_writer *writer, const char *fmt, ...);void packet_writer_delim (struct packet_writer *writer);void packet_writer_flush (struct packet_writer *writer); +void packet_trace_identity (const char *prog); +#endif
Signature · 1 line
gitgitgadget
PATCH 9/23 match-trees.h: move declarations for match-trees.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- cache.h | 4 ---- match-trees.c | 1 + match-trees.h | 10 ++++++++++ merge-ort.c | 1 + merge-recursive.c | 1 + t/helper/test-match-trees.c | 1 + 6 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 match-trees.h
cache.h +0 -4
@@ -603,10 +603,6 @@ int add_files_to_cache(const char *prefix, const struct pathspec *pathspec, int/* diff.c */ extern int diff_auto_refresh_index; -/* match-trees.c */ -void shift_tree (struct repository *,const struct object_id *,const struct object_id *,struct object_id *,int ); -void shift_tree_by (struct repository *,const struct object_id *,const struct object_id *,struct object_id *,const char *); -/* * whitespace rules. * used by both diff and apply
match-trees.c +1 -0
@@ -1,5 +1,6 @@#include "cache.h" #include "hex.h" +#include "match-trees.h" #include "tree.h" #include "tree-walk.h" #include "object-store.h"
match-trees.h new file +10 -0
@@ -0,0 +1,10 @@ +#ifndef MATCH_TREES_H +#define MATCH_TREES_H + +struct object_id ; +struct repository ; + +void shift_tree (struct repository *,const struct object_id *,const struct object_id *,struct object_id *,int ); +void shift_tree_by (struct repository *,const struct object_id *,const struct object_id *,struct object_id *,const char *); + +#endif /* MATCH_TREES_H */
merge-ort.c +1 -0
@@ -31,6 +31,7 @@#include "hex.h" #include "entry.h" #include "ll-merge.h" +#include "match-trees.h" #include "mem-pool.h" #include "object-name.h" #include "object-store.h"
merge-recursive.c +1 -0
@@ -22,6 +22,7 @@#include "hex.h" #include "ll-merge.h" #include "lockfile.h" +#include "match-trees.h" #include "object-file.h" #include "object-name.h" #include "object-store.h"
t/helper/test-match-trees.c +1 -0
@@ -1,6 +1,7 @@#include "test-tool.h" #include "cache.h" #include "hex.h" +#include "match-trees.h" #include "object-name.h" #include "setup.h" #include "tree.h"
Signature · 1 line
gitgitgadget
PATCH 11/23 versioncmp.h: move declarations for versioncmp.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- cache.h | 2 -- ref-filter.c | 1 + versioncmp.c | 3 ++- versioncmp.h | 6 ++++++ 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 versioncmp.h
cache.h +0 -2
@@ -648,6 +648,4 @@ int stat_validity_check(struct stat_validity *sv, const char *path);*/ void stat_validity_update (struct stat_validity *sv,int fd); -int versioncmp (const char *s1,const char *s2); -#endif /* CACHE_H */
ref-filter.c +1 -0
@@ -19,6 +19,7 @@#include "revision.h" #include "utf8.h" #include "version.h" +#include "versioncmp.h" #include "trailer.h" #include "wt-status.h" #include "commit-slab.h"
versioncmp.c +2 -1
@@ -1,6 +1,7 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "string-list.h" +#include "versioncmp.h" /* * versioncmp(): copied from string/strverscmp.c in glibc commit
versioncmp.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef VERSIONCMP_H +#define VERSIONCMP_H + +int versioncmp (const char *s1,const char *s2); + +#endif /* VERSIONCMP_H */
Signature · 1 line
gitgitgadget
PATCH 10/23 ws.h: move declarations for ws.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- apply.c | 1 + cache.h | 26 -------------------------- config.c | 1 + diff.c | 1 + environment.c | 1 - ws.c | 5 ++++- ws.h | 33 +++++++++++++++++++++++++++++++++ 7 files changed, 40 insertions(+), 28 deletions(-) create mode 100644 ws.h
apply.c +1 -0
@@ -32,6 +32,7 @@#include "entry.h" #include "setup.h" #include "symlinks.h" +#include "ws.h" #include "wrapper.h" struct gitdiff_data {
cache.h +0 -26
@@ -603,32 +603,6 @@ int add_files_to_cache(const char *prefix, const struct pathspec *pathspec, int/* diff.c */ extern int diff_auto_refresh_index; -/* -* whitespace rules. -* used by both diff and apply -* last two digits are tab width -*/ -#define WS_BLANK_AT_EOL 0100 -#define WS_SPACE_BEFORE_TAB 0200 -#define WS_INDENT_WITH_NON_TAB 0400 -#define WS_CR_AT_EOL 01000 -#define WS_BLANK_AT_EOF 02000 -#define WS_TAB_IN_INDENT 04000 -#define WS_TRAILING_SPACE (WS_BLANK_AT_EOL|WS_BLANK_AT_EOF) -#define WS_DEFAULT_RULE (WS_TRAILING_SPACE|WS_SPACE_BEFORE_TAB|8) -#define WS_TAB_WIDTH_MASK 077 -/* All WS_* -- when extended, adapt diff.c emit_symbol */ -#define WS_RULE_MASK 07777 -extern unsigned whitespace_rule_cfg; -unsigned whitespace_rule (struct index_state *,const char *); -unsigned parse_whitespace_rule (const char *); -unsigned ws_check (const char *line,int len,unsigned ws_rule); -void ws_check_emit (const char *line,int len,unsigned ws_rule,FILE *stream,const char *set,const char *reset,const char *ws); -char *whitespace_error_string (unsigned ws); -void ws_fix_copy (struct strbuf *,const char *,int ,unsigned ,int *); -int ws_blank_line (const char *line,int len); -#define ws_tab_width (rule) ((rule) & WS_TAB_WIDTH_MASK) -/* ls-files */ void overlay_tree_on_index (struct index_state *istate,const char *tree_name,const char *prefix);
config.c +1 -0
@@ -35,6 +35,7 @@#include "setup.h" #include "trace2.h" #include "worktree.h" +#include "ws.h" #include "wrapper.h" #include "write-or-die.h"
diff.c +1 -0
@@ -41,6 +41,7 @@#include "object-name.h" #include "setup.h" #include "strmap.h" +#include "ws.h" #include "wrapper.h" #ifdef NO_FAST_WORKING_DIRECTORY
environment.c +0 -1
@@ -67,7 +67,6 @@ int read_replace_refs = 1;enum eol core_eol =EOL_UNSET ;int global_conv_flags_eol =CONV_EOL_RNDTRP_WARN ;char *check_roundtrip_encoding ="SHIFT-JIS" ; -unsigned whitespace_rule_cfg =WS_DEFAULT_RULE ;enum branch_track git_branch_track =BRANCH_TRACK_REMOTE ;enum rebase_setup_type autorebase =AUTOREBASE_NEVER ;enum push_default_type push_default =PUSH_DEFAULT_UNSPECIFIED ;
ws.c +4 -1
@@ -3,9 +3,12 @@* * Copyright (c) 2007 Junio C Hamano */ -#include "cache.h" +#include "git-compat-util.h" #include "attr.h" #include "strbuf.h" +#include "ws.h" + +unsigned whitespace_rule_cfg =WS_DEFAULT_RULE ; static struct whitespace_rule { const char *rule_name;
ws.h new file +33 -0
@@ -0,0 +1,33 @@ +#ifndef WS_H +#define WS_H + +struct index_state ; +struct strbuf ; + +/* +* whitespace rules. +* used by both diff and apply +* last two digits are tab width +*/ +#define WS_BLANK_AT_EOL 0100 +#define WS_SPACE_BEFORE_TAB 0200 +#define WS_INDENT_WITH_NON_TAB 0400 +#define WS_CR_AT_EOL 01000 +#define WS_BLANK_AT_EOF 02000 +#define WS_TAB_IN_INDENT 04000 +#define WS_TRAILING_SPACE (WS_BLANK_AT_EOL|WS_BLANK_AT_EOF) +#define WS_DEFAULT_RULE (WS_TRAILING_SPACE|WS_SPACE_BEFORE_TAB|8) +#define WS_TAB_WIDTH_MASK 077 +/* All WS_* -- when extended, adapt diff.c emit_symbol */ +#define WS_RULE_MASK 07777 +extern unsigned whitespace_rule_cfg; +unsigned whitespace_rule (struct index_state *,const char *); +unsigned parse_whitespace_rule (const char *); +unsigned ws_check (const char *line,int len,unsigned ws_rule); +void ws_check_emit (const char *line,int len,unsigned ws_rule,FILE *stream,const char *set,const char *reset,const char *ws); +char *whitespace_error_string (unsigned ws); +void ws_fix_copy (struct strbuf *,const char *,int ,unsigned ,int *); +int ws_blank_line (const char *line,int len); +#define ws_tab_width (rule) ((rule) & WS_TAB_WIDTH_MASK) + +#endif /* WS_H */
Signature · 1 line
gitgitgadget
PATCH 12/23 dir.h: move DTYPE defines from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- cache.h | 14 -------------- dir.h | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 14 deletions(-)
cache.h +0 -14
@@ -10,20 +10,6 @@#include "object.h" #include "statinfo.h" -#if defined(DT_UNKNOWN ) && !defined(NO_D_TYPE_IN_DIRENT ) -#define DTYPE (de) ((de)->d_type) -#else -#undef DT_UNKNOWN -#undef DT_DIR -#undef DT_REG -#undef DT_LNK -#define DT_UNKNOWN 0 -#define DT_DIR 1 -#define DT_REG 2 -#define DT_LNK 3 -#define DTYPE (de) DT_UNKNOWN -#endif -/* * Some mode bits are also used internally for computations. *
dir.h +15 -0
@@ -640,4 +640,19 @@ static inline int starts_with_dot_dot_slash_native(const char *const path) return path_match_flags(path, what | PATH_MATCH_NATIVE); } + +#if defined(DT_UNKNOWN ) && !defined(NO_D_TYPE_IN_DIRENT ) +#define DTYPE (de) ((de)->d_type) +#else +#undef DT_UNKNOWN +#undef DT_DIR +#undef DT_REG +#undef DT_LNK +#define DT_UNKNOWN 0 +#define DT_DIR 1 +#define DT_REG 2 +#define DT_LNK 3 +#define DTYPE (de) DT_UNKNOWN +#endif +#endif
Signature · 1 line
gitgitgadget
PATCH 15/23 cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
Since cmp_cache_name_compare() was comparing cache_entry structs, it was associated with the cache rather than with trees. Move the function. As a side effect, we can make cache_name_stage_compare() static as well.
--- cache.h | 2 +- read-cache.c | 13 ++++++++++++- tree.c | 10 ---------- tree.h | 1 - 4 files changed, 13 insertions(+), 13 deletions(-)
cache.h +1 -1
@@ -562,7 +562,7 @@ int base_name_compare(const char *name1, size_t len1, int mode1,int df_name_compare (const char *name1,size_t len1,int mode1,const char *name2,size_t len2,int mode2);int name_compare (const char *name1,size_t len1,const char *name2,size_t len2); -int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); +int cmp_cache_name_compare (const void *a_,const void *b_);/* add */ /*
read-cache.c +12 -1
@@ -567,7 +567,8 @@ int name_compare(const char *name1, size_t len1, const char *name2, size_t len2)return 0 ; } -int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2) +static int cache_name_stage_compare (const char *name1,int len1,int stage1, +const char *name2,int len2,int stage2) {int cmp;
@@ -582,6 +583,16 @@ int cache_name_stage_compare(const char *name1, int len1, int stage1, const charreturn 0 ; } +int cmp_cache_name_compare (const void *a_,const void *b_) +{ +const struct cache_entry *ce1, *ce2; + + ce1 = *((const struct cache_entry **)a_); + ce2 = *((const struct cache_entry **)b_); +return cache_name_stage_compare (ce1->name, ce1->ce_namelen,ce_stage (ce1), + ce2->name, ce2->ce_namelen,ce_stage (ce2)); +} + static int index_name_stage_pos(struct index_state *istate, const char *name, int namelen, int stage,
tree.c +0 -10
@@ -94,16 +94,6 @@ int read_tree(struct repository *r,return ret; } -int cmp_cache_name_compare (const void *a_,const void *b_) -{ -const struct cache_entry *ce1, *ce2; - - ce1 = *((const struct cache_entry **)a_); - ce2 = *((const struct cache_entry **)b_); -return cache_name_stage_compare (ce1->name, ce1->ce_namelen,ce_stage (ce1), - ce2->name, ce2->ce_namelen,ce_stage (ce2)); -} -struct tree *lookup_tree (struct repository *r,const struct object_id *oid) {struct object *obj =lookup_object (r, oid);
tree.h +0 -1
@@ -29,7 +29,6 @@ void free_tree_buffer(struct tree *tree);/* Parses and returns the tree in the given ent, chasing tags and commits. */ struct tree *parse_tree_indirect (const struct object_id *oid); -int cmp_cache_name_compare (const void *a_,const void *b_);#define READ_TREE_RECURSIVE 1typedef int (*read_tree_fn_t )(const struct object_id *,struct strbuf *,const char *,unsigned int ,void *);
Signature · 1 line
gitgitgadget
PATCH 16/23 cache,tree: move basic name compare functions from read-cache to tree
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
None of base_name_compare(), df_name_compare(), or name_compare() depended upon a cache_entry or index_state in any way. By moving these functions to tree.h, half a dozen other files can stop depending upon cache.h (though that change will be made in a later commit).
--- cache.h | 5 ---- read-cache.c | 68 ---------------------------------------------------- tree.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tree.h | 9 +++++++ 4 files changed, 77 insertions(+), 73 deletions(-)
cache.h +0 -5
@@ -557,11 +557,6 @@ extern int verify_ce_order;#define DATA_CHANGED 0x0020#define TYPE_CHANGED 0x0040 -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, -const char *name2,size_t len2,int mode2); -int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cmp_cache_name_compare (const void *a_,const void *b_);/* add */
read-cache.c +0 -68
74 lines not on this page · raw message
tree.c +68 -0
74 lines not on this page · raw message
tree.h +9 -0
@@ -29,6 +29,15 @@ void free_tree_buffer(struct tree *tree);/* Parses and returns the tree in the given ent, chasing tags and commits. */ struct tree *parse_tree_indirect (const struct object_id *oid); +/* +* Functions for comparing pathnames +*/ +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, +const char *name2,size_t len2,int mode2); +int name_compare (const char *name1,size_t len1, +const char *name2,size_t len2);#define READ_TREE_RECURSIVE 1typedef int (*read_tree_fn_t )(const struct object_id *,struct strbuf *,const char *,unsigned int ,void *);
Signature · 1 line
gitgitgadget
PATCH 18/23 cache.h: remove unnecessary headers
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- cache.h | 2 -- compat/fsmonitor/fsm-ipc-darwin.c | 1 + compat/fsmonitor/fsm-listen-darwin.c | 1 + 3 files changed, 2 insertions(+), 2 deletions(-)
cache.h +0 -2
@@ -4,8 +4,6 @@#include "git-compat-util.h" #include "strbuf.h" #include "hashmap.h" -#include "gettext.h" -#include "string-list.h" #include "pathspec.h" #include "object.h" #include "statinfo.h"
compat/fsmonitor/fsm-ipc-darwin.c +1 -0
@@ -1,5 +1,6 @@#include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "strbuf.h"
compat/fsmonitor/fsm-listen-darwin.c +1 -0
@@ -29,6 +29,7 @@#include "fsmonitor--daemon.h" #include "fsmonitor-path-utils.h" #include "gettext.h" +#include "string-list.h" struct fsm_listen_data {
Signature · 1 line
gitgitgadget
PATCH 13/23 tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
S_DIFFTREE_IFXMIN_NEQ is *only* used in tree-diff.c, so there is no point exposing it in cache.h. Move it to tree-diff.c.
--- cache.h | 15 --------------- tree-diff.c | 13 +++++++++++++ 2 files changed, 13 insertions(+), 15 deletions(-)
cache.h +0 -15
@@ -10,21 +10,6 @@#include "object.h" #include "statinfo.h" -/* -* Some mode bits are also used internally for computations. -* -* They *must* not overlap with any valid modes, and they *must* not be emitted -* to outside world - i.e. appear on disk or network. In other words, it's just -* temporary fields, which we internally use, but they have to stay in-house. -* -* ( such approach is valid, as standard S_IF* fits into 16 bits, and in Git -* codebase mode is `unsigned int` which is assumed to be at least 32 bits ) -*/ - -/* used internally in tree-diff */ -#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 - -/* * Basic data structures for the directory cache */
tree-diff.c +13 -0
@@ -6,6 +6,19 @@#include "diffcore.h" #include "tree.h" +/* +* Some mode bits are also used internally for computations. +* +* They *must* not overlap with any valid modes, and they *must* not be emitted +* to outside world - i.e. appear on disk or network. In other words, it's just +* temporary fields, which we internally use, but they have to stay in-house. +* +* ( such approach is valid, as standard S_IF* fits into 16 bits, and in Git +* codebase mode is `unsigned int` which is assumed to be at least 32 bits ) +*/ + +#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 +/* * internal mode marker, saying a tree entry != entry of tp[imin] * (see ll_diff_tree_paths for what it means there)
Signature · 1 line
gitgitgadget
PATCH 19/23 fsmonitor: reduce includes of cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- compat/fsmonitor/fsm-health-darwin.c | 2 +- compat/fsmonitor/fsm-ipc-darwin.c | 2 +- compat/fsmonitor/fsm-listen-darwin.c | 2 +- fsmonitor--daemon.h | 1 - 4 files changed, 3 insertions(+), 4 deletions(-)
compat/fsmonitor/fsm-health-darwin.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "fsmonitor.h" #include "fsm-health.h"
compat/fsmonitor/fsm-ipc-darwin.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "gettext.h" #include "hex.h"
compat/fsmonitor/fsm-listen-darwin.c +1 -1
@@ -23,7 +23,7 @@#endif #endif -#include "cache.h" +#include "git-compat-util.h" #include "fsmonitor.h" #include "fsm-listen.h" #include "fsmonitor--daemon.h"
fsmonitor--daemon.h +0 -1
@@ -3,7 +3,6 @@#ifdef HAVE_FSMONITOR_DAEMON_BACKEND -#include "cache.h" #include "dir.h" #include "run-command.h" #include "simple-ipc.h"
Signature · 1 line
gitgitgadget
PATCH 17/23 treewide: remove cache.h inclusion due to previous changes
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- archive-zip.c | 2 +- bundle-uri.c | 2 +- color.c | 2 +- combine-diff.c | 2 +- common-main.c | 2 +- config.c | 2 +- copy.c | 2 +- credential.c | 2 +- daemon.c | 2 +- date.c | 2 +- diagnose.c | 2 +- environment.c | 2 +- ll-merge.c | 2 +- match-trees.c | 2 +- midx.c | 2 +- object-file.c | 2 +- packfile.c | 2 +- pkt-line.c | 2 +- range-diff.c | 2 +- ref-filter.c | 2 +- t/helper/test-match-trees.c | 1 - t/helper/test-mergesort.c | 1 - t/helper/test-oid-array.c | 1 - t/helper/test-oidtree.c | 1 - t/helper/test-parse-options.c | 1 - t/helper/test-read-midx.c | 1 - t/helper/test-string-list.c | 1 - tree-diff.c | 2 +- tree-walk.c | 2 +- tree.c | 2 +- wrapper.c | 3 ++- 31 files changed, 25 insertions(+), 31 deletions(-)
archive-zip.c +1 -1
@@ -1,7 +1,7 @@/* * Copyright (c) 2006 Rene Scharfe */ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "archive.h" #include "gettext.h"
bundle-uri.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "bundle-uri.h" #include "bundle.h" #include "copy.h"
color.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "color.h" #include "editor.h"
combine-diff.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "object-store.h" #include "commit.h" #include "convert.h"
common-main.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "exec-cmd.h" #include "gettext.h" #include "attr.h"
config.c +1 -1
@@ -5,7 +5,7 @@* Copyright (C) Johannes Schindelin, 2005 * */ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "advice.h" #include "alloc.h"
copy.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "copy.h" #include "path.h" #include "wrapper.h"
credential.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "config.h" #include "credential.h"
daemon.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "alloc.h" #include "config.h"
date.c +1 -1
@@ -4,7 +4,7 @@* Copyright (C) Linus Torvalds, 2005 */ -#include "cache.h" +#include "git-compat-util.h" #include "date.h" #include "gettext.h" #include "pager.h"
diagnose.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "diagnose.h" #include "compat/disk.h" #include "archive.h"
environment.c +1 -1
@@ -7,7 +7,7 @@* even if you might want to know where the git directory etc * are. */ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "branch.h" #include "convert.h"
ll-merge.c +1 -1
@@ -4,7 +4,7 @@* Copyright (c) 2007 Junio C Hamano */ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "convert.h" #include "attr.h"
match-trees.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "hex.h" #include "match-trees.h" #include "tree.h"
midx.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "alloc.h" #include "config.h"
object-file.c +1 -1
@@ -6,7 +6,7 @@* This handles basic git object files - packing, unpacking, * creation etc. */ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "alloc.h" #include "config.h"
packfile.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "alloc.h" #include "environment.h" #include "gettext.h"
pkt-line.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "copy.h" #include "pkt-line.h" #include "gettext.h"
range-diff.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "environment.h" #include "gettext.h" #include "range-diff.h"
ref-filter.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "alloc.h" #include "environment.h" #include "gettext.h"
t/helper/test-match-trees.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "hex.h" #include "match-trees.h" #include "object-name.h"
t/helper/test-mergesort.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "mem-pool.h" #include "mergesort.h" #include "strbuf.h"
t/helper/test-oid-array.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "hex.h" #include "oid-array.h" #include "setup.h"
t/helper/test-oidtree.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "hex.h" #include "oidtree.h" #include "setup.h"
t/helper/test-parse-options.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "parse-options.h" #include "strbuf.h" #include "string-list.h"
t/helper/test-read-midx.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "hex.h" #include "midx.h" #include "repository.h"
t/helper/test-string-list.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "strbuf.h" #include "string-list.h"
tree-diff.c +1 -1
@@ -1,7 +1,7 @@/* * Helper functions for tree diff generation */ -#include "cache.h" +#include "git-compat-util.h" #include "diff.h" #include "diffcore.h" #include "tree.h"
tree-walk.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "tree-walk.h" #include "alloc.h" #include "dir.h"
tree.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "cache-tree.h" #include "hex.h" #include "tree.h"
wrapper.c +2 -1
@@ -1,10 +1,11 @@/* * Various trivial helper wrappers around standard functions */ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "config.h" #include "gettext.h" +#include "object.h" #include "repository.h" #include "strbuf.h" #include "trace2.h"
Signature · 1 line
gitgitgadget
PATCH 14/23 hash.h, repository.h: reverse the order of these dependencies
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
Previously, hash.h depended upon and included repository.h, due to the definition and use of the_hash_algo (defined as the_repository->hash_algo). Move this #define, and the associated inline functions that depend upon it, from hash.h to repository.h. Due to that movement, reverse the dependencies so repository.h includes hash.h.
This allows hash.h and object.h to be fairly small, minimal headers. It also exposes a lot of hidden dependencies on both path.h (which was brought in by repository.h) and repository.h (which was previously implicitly brought in by object.h).
--- alloc.c | 1 + branch.c | 1 + builtin/apply.c | 1 + builtin/archive.c | 1 + builtin/bundle.c | 1 + builtin/check-attr.c | 1 + builtin/check-ignore.c | 1 + builtin/checkout-index.c | 1 + builtin/clean.c | 1 + builtin/config.c | 1 + builtin/credential-cache.c | 1 + builtin/credential-store.c | 1 + builtin/for-each-repo.c | 2 + builtin/help.c | 1 + builtin/init-db.c | 1 + builtin/merge-index.c | 1 + builtin/merge-recursive.c | 1 + builtin/mv.c | 1 + builtin/push.c | 1 + builtin/read-tree.c | 1 + builtin/rerere.c | 1 + builtin/rm.c | 1 + builtin/show-branch.c | 1 + builtin/show-index.c | 1 + builtin/update-index.c | 1 + builtin/update-ref.c | 1 + builtin/upload-archive.c | 1 + builtin/worktree.c | 1 + checkout.c | 1 + chunk-format.c | 1 + common-main.c | 1 + compat/fsmonitor/fsm-ipc-darwin.c | 1 + compat/fsmonitor/fsm-ipc-win32.c | 1 + compat/precompose_utf8.c | 1 + compat/win32/trace2_win32_process_info.c | 1 + copy.c | 1 + csum-file.c | 1 + daemon.c | 1 + editor.c | 1 + exec-cmd.c | 1 + fsmonitor-ipc.c | 1 + gpg-interface.c | 1 + hash-lookup.c | 1 + hash.h | 97 -------------------- hex.c | 1 + hook.c | 1 + khash.h | 1 + merge-ort-wrappers.c | 1 + negotiator/default.c | 1 + negotiator/skipping.c | 1 + object-file.h | 2 + object.h | 1 + oid-array.h | 1 + oidmap.c | 1 + oidtree.c | 1 + parallel-checkout.c | 1 + pathspec.c | 1 + progress.c | 1 + rebase-interactive.c | 1 + refs/files-backend.c | 1 + refs/packed-backend.c | 1 + refs/ref-cache.c | 1 + refs/ref-cache.h | 1 + refspec.c | 1 + repository.h | 96 +++++++++++++++++++ resolve-undo.c | 1 + split-index.c | 1 + strbuf.c | 1 + t/helper/test-bloom.c | 1 + t/helper/test-cache-tree.c | 1 + t/helper/test-dump-cache-tree.c | 1 + t/helper/test-dump-fsmonitor.c | 1 + t/helper/test-dump-untracked-cache.c | 1 + t/helper/test-example-decorate.c | 1 + t/helper/test-fsmonitor-client.c | 1 + t/helper/test-lazy-init-name-hash.c | 1 + t/helper/test-match-trees.c | 1 + t/helper/test-oidmap.c | 1 + t/helper/test-path-utils.c | 1 + t/helper/test-read-cache.c | 1 + t/helper/test-scrap-cache-tree.c | 1 + t/helper/test-submodule-config.c | 1 + t/helper/test-submodule-nested-repo-config.c | 1 + t/helper/test-submodule.c | 1 + t/helper/test-trace2.c | 1 + t/helper/test-write-cache.c | 1 + trace2.c | 1 + trace2/tr2_tgt_event.c | 1 + trace2/tr2_tgt_normal.c | 1 + trace2/tr2_tgt_perf.c | 1 + tree-walk.h | 1 + tree.h | 1 + wrapper.c | 1 + 93 files changed, 189 insertions(+), 97 deletions(-)
alloc.c +1 -0
@@ -13,6 +13,7 @@#include "blob.h" #include "tree.h" #include "commit.h" +#include "repository.h" #include "tag.h" #include "alloc.h"
branch.c +1 -0
@@ -9,6 +9,7 @@#include "refs.h" #include "refspec.h" #include "remote.h" +#include "repository.h" #include "sequencer.h" #include "commit.h" #include "worktree.h"
builtin/apply.c +1 -0
@@ -2,6 +2,7 @@#include "builtin.h" #include "gettext.h" #include "parse-options.h" +#include "repository.h" #include "apply.h" static const char *const apply_usage[] = {
builtin/archive.c +1 -0
@@ -9,6 +9,7 @@#include "transport.h" #include "parse-options.h" #include "pkt-line.h" +#include "repository.h" #include "sideband.h" static void create_output_file (const char *output_file)
builtin/bundle.c +1 -0
@@ -5,6 +5,7 @@#include "strvec.h" #include "parse-options.h" #include "pkt-line.h" +#include "repository.h" #include "cache.h" #include "bundle.h"
builtin/check-attr.c +1 -0
@@ -7,6 +7,7 @@#include "gettext.h" #include "object-name.h" #include "quote.h" +#include "repository.h" #include "setup.h" #include "parse-options.h" #include "write-or-die.h"
builtin/check-ignore.c +1 -0
@@ -7,6 +7,7 @@#include "quote.h" #include "pathspec.h" #include "parse-options.h" +#include "repository.h" #include "submodule.h" #include "write-or-die.h"
builtin/checkout-index.c +1 -0
@@ -11,6 +11,7 @@#include "gettext.h" #include "lockfile.h" #include "quote.h" +#include "repository.h" #include "cache-tree.h" #include "parse-options.h" #include "entry.h"
builtin/clean.c +1 -0
@@ -14,6 +14,7 @@#include "dir.h" #include "gettext.h" #include "parse-options.h" +#include "repository.h" #include "setup.h" #include "string-list.h" #include "quote.h"
builtin/config.c +1 -0
@@ -10,6 +10,7 @@#include "parse-options.h" #include "urlmatch.h" #include "quote.h" +#include "repository.h" #include "setup.h" #include "worktree.h" #include "wrapper.h"
builtin/credential-cache.c +1 -0
@@ -1,6 +1,7 @@#include "builtin.h" #include "gettext.h" #include "parse-options.h" +#include "repository.h" #include "wrapper.h" #include "write-or-die.h"
builtin/credential-store.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "lockfile.h" #include "credential.h" +#include "path.h" #include "string-list.h" #include "parse-options.h" #include "write-or-die.h"
builtin/for-each-repo.c +2 -0
@@ -3,6 +3,8 @@#include "builtin.h" #include "gettext.h" #include "parse-options.h" +#include "path.h" +#include "repository.h" #include "run-command.h" #include "string-list.h"
builtin/help.c +1 -0
@@ -8,6 +8,7 @@#include "gettext.h" #include "pager.h" #include "parse-options.h" +#include "path.h" #include "run-command.h" #include "config-list.h" #include "help.h"
builtin/init-db.c +1 -0
@@ -14,6 +14,7 @@#include "exec-cmd.h" #include "object-file.h" #include "parse-options.h" +#include "path.h" #include "setup.h" #include "worktree.h" #include "wrapper.h"
builtin/merge-index.c +1 -0
@@ -1,6 +1,7 @@#define USE_THE_INDEX_VARIABLE #include "builtin.h" #include "hex.h" +#include "repository.h" #include "run-command.h" static const char *pgm;
builtin/merge-recursive.c +1 -0
@@ -6,6 +6,7 @@#include "tag.h" #include "merge-recursive.h" #include "object-name.h" +#include "repository.h" #include "xdiff-interface.h" static const char builtin_merge_recursive_usage[] =
builtin/mv.c +1 -0
@@ -18,6 +18,7 @@#include "cache-tree.h" #include "string-list.h" #include "parse-options.h" +#include "repository.h" #include "setup.h" #include "submodule.h" #include "entry.h"
builtin/push.c +1 -0
@@ -15,6 +15,7 @@#include "transport.h" #include "parse-options.h" #include "pkt-line.h" +#include "repository.h" #include "submodule.h" #include "submodule-config.h" #include "send-pack.h"
builtin/read-tree.c +1 -0
@@ -19,6 +19,7 @@#include "dir.h" #include "builtin.h" #include "parse-options.h" +#include "repository.h" #include "resolve-undo.h" #include "setup.h" #include "submodule.h"
builtin/rerere.c +1 -0
@@ -4,6 +4,7 @@#include "dir.h" #include "gettext.h" #include "parse-options.h" +#include "repository.h" #include "string-list.h" #include "rerere.h" #include "wrapper.h"
builtin/rm.c +1 -0
@@ -15,6 +15,7 @@#include "tree-walk.h" #include "object-name.h" #include "parse-options.h" +#include "repository.h" #include "string-list.h" #include "setup.h" #include "submodule.h"
builtin/show-branch.c +1 -0
@@ -10,6 +10,7 @@#include "strvec.h" #include "object-name.h" #include "parse-options.h" +#include "repository.h" #include "dir.h" #include "commit-slab.h" #include "date.h"
builtin/show-index.c +1 -0
@@ -4,6 +4,7 @@#include "hex.h" #include "pack.h" #include "parse-options.h" +#include "repository.h" static const char *const show_index_usage[] = {"git show-index [--object-format=<hash-algorithm>]" ,
builtin/update-index.c +1 -0
@@ -21,6 +21,7 @@#include "parse-options.h" #include "pathspec.h" #include "dir.h" +#include "repository.h" #include "setup.h" #include "split-index.h" #include "symlinks.h"
builtin/update-ref.c +1 -0
@@ -6,6 +6,7 @@#include "object-name.h" #include "parse-options.h" #include "quote.h" +#include "repository.h" #include "strvec.h" static const char *const git_update_ref_usage[] = {
builtin/upload-archive.c +1 -0
@@ -6,6 +6,7 @@#include "archive.h" #include "pkt-line.h" #include "sideband.h" +#include "repository.h" #include "run-command.h" #include "strvec.h"
builtin/worktree.c +1 -0
@@ -14,6 +14,7 @@#include "strvec.h" #include "branch.h" #include "refs.h" +#include "repository.h" #include "run-command.h" #include "hook.h" #include "sigchain.h"
checkout.c +1 -0
@@ -2,6 +2,7 @@#include "object-name.h" #include "remote.h" #include "refspec.h" +#include "repository.h" #include "checkout.h" #include "config.h" #include "strbuf.h"
chunk-format.c +1 -0
@@ -3,6 +3,7 @@#include "chunk-format.h" #include "csum-file.h" #include "gettext.h" +#include "repository.h" #include "trace2.h" /*
common-main.c +1 -0
@@ -2,6 +2,7 @@#include "exec-cmd.h" #include "gettext.h" #include "attr.h" +#include "repository.h" #include "setup.h" #include "strbuf.h" #include "trace2.h"
compat/fsmonitor/fsm-ipc-darwin.c +1 -0
@@ -1,6 +1,7 @@#include "cache.h" #include "config.h" #include "hex.h" +#include "repository.h" #include "strbuf.h" #include "fsmonitor.h" #include "fsmonitor-ipc.h"
compat/fsmonitor/fsm-ipc-win32.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "config.h" #include "fsmonitor-ipc.h" +#include "path.h" const char *fsmonitor_ipc__get_path (struct repository *r) {static char *ret;
compat/precompose_utf8.c +1 -0
@@ -9,6 +9,7 @@#include "config.h" #include "environment.h" #include "gettext.h" +#include "path.h" #include "utf8.h" #include "precompose_utf8.h"
compat/win32/trace2_win32_process_info.c +1 -0
@@ -1,5 +1,6 @@#include "../../cache.h" #include "../../json-writer.h" +#include "../../repository.h" #include "../../trace2.h" #include "lazyload.h" #include <Psapi.h>
copy.c +1 -0
@@ -1,5 +1,6 @@#include "cache.h" #include "copy.h" +#include "path.h" #include "wrapper.h" int copy_fd (int ifd,int ofd)
csum-file.c +1 -0
@@ -10,6 +10,7 @@#include "git-compat-util.h" #include "progress.h" #include "csum-file.h" +#include "repository.h" #include "wrapper.h" static void verify_buffer_or_die(struct hashfile *f,
daemon.c +1 -0
@@ -3,6 +3,7 @@#include "alloc.h" #include "config.h" #include "environment.h" +#include "path.h" #include "pkt-line.h" #include "protocol.h" #include "run-command.h"
editor.c +1 -0
@@ -6,6 +6,7 @@#include "environment.h" #include "gettext.h" #include "pager.h" +#include "path.h" #include "strbuf.h" #include "strvec.h" #include "run-command.h"
exec-cmd.c +1 -0
@@ -3,6 +3,7 @@#include "environment.h" #include "exec-cmd.h" #include "gettext.h" +#include "path.h" #include "quote.h" #include "strvec.h" #include "trace.h"
fsmonitor-ipc.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "simple-ipc.h" #include "fsmonitor-ipc.h" +#include "repository.h" #include "run-command.h" #include "strbuf.h" #include "trace2.h"
gpg-interface.c +1 -0
@@ -7,6 +7,7 @@#include "dir.h" #include "ident.h" #include "gpg-interface.h" +#include "path.h" #include "sigchain.h" #include "tempfile.h" #include "alias.h"
hash-lookup.c +1 -0
@@ -1,5 +1,6 @@#include "cache.h" #include "hash-lookup.h" +#include "repository.h" static uint32_t take2 (const struct object_id *oid,size_t ofs) {
hash.h +0 -97
133 lines not on this page · raw message
hex.c +1 -0
@@ -1,5 +1,6 @@#include "git-compat-util.h" #include "hex.h" +#include "repository.h" const signed char hexval_table[256 ] = {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,/* 00-07 */
hook.c +1 -0
@@ -2,6 +2,7 @@#include "advice.h" #include "gettext.h" #include "hook.h" +#include "path.h" #include "run-command.h" #include "config.h" #include "strbuf.h"
khash.h +1 -0
@@ -27,6 +27,7 @@#define __AC_KHASH_H#include "hashmap.h" +#include "repository.h" #define AC_VERSION_KHASH_H "0.2.8"
merge-ort-wrappers.c +1 -0
@@ -2,6 +2,7 @@#include "gettext.h" #include "merge-ort.h" #include "merge-ort-wrappers.h" +#include "repository.h" #include "commit.h"
negotiator/default.c +1 -0
@@ -4,6 +4,7 @@#include "../fetch-negotiator.h" #include "../prio-queue.h" #include "../refs.h" +#include "../repository.h" #include "../tag.h" /* Remember to update object flag allocation in object.h */
negotiator/skipping.c +1 -0
@@ -5,6 +5,7 @@#include "../hex.h" #include "../prio-queue.h" #include "../refs.h" +#include "../repository.h" #include "../tag.h" /* Remember to update object flag allocation in object.h */
object-file.h +2 -0
@@ -4,6 +4,8 @@#include "git-zlib.h" #include "object.h" +struct index_state ; +/* * Set this to 0 to prevent oid_object_info_extended() from fetching missing * blobs. This has a difference only if extensions.partialClone is set.
object.h +1 -0
@@ -4,6 +4,7 @@#include "hash.h" struct buffer_slab ; +struct repository ;struct parsed_object_pool {struct object **obj_hash;
oid-array.h +1 -0
@@ -2,6 +2,7 @@#define OID_ARRAY_H #include "hash.h" +#include "repository.h" /** * The API provides storage and manipulation of sets of object identifiers.
oidmap.c +1 -0
@@ -1,5 +1,6 @@#include "git-compat-util.h" #include "oidmap.h" +#include "repository.h" static int oidmap_neq(const void *hashmap_cmp_fn_data UNUSED, const struct hashmap_entry *e1,
oidtree.c +1 -0
@@ -6,6 +6,7 @@#include "oidtree.h" #include "alloc.h" #include "hash.h" +#include "repository.h" struct oidtree_iter_data {oidtree_iter fn;
parallel-checkout.c +1 -0
@@ -7,6 +7,7 @@#include "parallel-checkout.h" #include "pkt-line.h" #include "progress.h" +#include "repository.h" #include "run-command.h" #include "sigchain.h" #include "streaming.h"
pathspec.c +1 -0
@@ -6,6 +6,7 @@#include "gettext.h" #include "pathspec.h" #include "attr.h" +#include "repository.h" #include "setup.h" #include "strvec.h" #include "symlinks.h"
progress.c +1 -0
@@ -12,6 +12,7 @@#include "git-compat-util.h" #include "pager.h" #include "progress.h" +#include "repository.h" #include "strbuf.h" #include "trace.h" #include "trace2.h"
rebase-interactive.c +1 -0
@@ -5,6 +5,7 @@#include "gettext.h" #include "sequencer.h" #include "rebase-interactive.h" +#include "repository.h" #include "strbuf.h" #include "commit-slab.h" #include "config.h"
refs/files-backend.c +1 -0
@@ -14,6 +14,7 @@#include "../lockfile.h" #include "../object.h" #include "../object-file.h" +#include "../repository.h" #include "../dir.h" #include "../chdir-notify.h" #include "../setup.h"
refs/packed-backend.c +1 -0
@@ -9,6 +9,7 @@#include "../iterator.h" #include "../lockfile.h" #include "../chdir-notify.h" +#include "../repository.h" #include "../wrapper.h" #include "../write-or-die.h"
refs/ref-cache.c +1 -0
@@ -4,6 +4,7 @@#include "refs-internal.h" #include "ref-cache.h" #include "../iterator.h" +#include "../repository.h" void add_entry_to_dir (struct ref_dir *dir,struct ref_entry *entry) {
refs/ref-cache.h +1 -0
@@ -5,6 +5,7 @@struct ref_dir ;struct ref_store ; +struct repository ;/* * If this ref_cache is filled lazily, this function is used to load
refspec.c +1 -0
@@ -5,6 +5,7 @@#include "strvec.h" #include "refs.h" #include "refspec.h" +#include "repository.h" static struct refspec_item s_tag_refspec = { .force =0 ,
repository.h +96 -0
106 lines not on this page · raw message
resolve-undo.c +1 -0
@@ -1,6 +1,7 @@#include "cache.h" #include "dir.h" #include "resolve-undo.h" +#include "repository.h" #include "string-list.h" /* The only error case is to run out of memory in string-list */
split-index.c +1 -0
@@ -2,6 +2,7 @@#include "alloc.h" #include "gettext.h" #include "mem-pool.h" +#include "repository.h" #include "split-index.h" #include "strbuf.h" #include "ewah/ewok.h"
strbuf.c +1 -0
@@ -6,6 +6,7 @@#include "hex.h" #include "object-name.h" #include "refs.h" +#include "repository.h" #include "string-list.h" #include "utf8.h" #include "date.h"
t/helper/test-bloom.c +1 -0
@@ -2,6 +2,7 @@#include "bloom.h" #include "hex.h" #include "commit.h" +#include "repository.h" #include "setup.h" static struct bloom_filter_settings settings =DEFAULT_BLOOM_FILTER_SETTINGS ;
t/helper/test-cache-tree.c +1 -0
@@ -6,6 +6,7 @@#include "tree.h" #include "cache-tree.h" #include "parse-options.h" +#include "repository.h" #include "setup.h" static char const *const test_cache_tree_usage[] = {
t/helper/test-dump-cache-tree.c +1 -0
@@ -4,6 +4,7 @@#include "hex.h" #include "tree.h" #include "cache-tree.h" +#include "repository.h" #include "setup.h" static void dump_one (struct cache_tree *it,const char *pfx,const char *x)
t/helper/test-dump-fsmonitor.c +1 -0
@@ -1,5 +1,6 @@#include "test-tool.h" #include "cache.h" +#include "repository.h" #include "setup.h" int cmd__dump_fsmonitor (int ac,const char **av)
t/helper/test-dump-untracked-cache.c +1 -0
@@ -3,6 +3,7 @@#include "cache.h" #include "dir.h" #include "hex.h" +#include "repository.h" #include "setup.h" static int compare_untracked (const void *a_,const void *b_)
t/helper/test-example-decorate.c +1 -0
@@ -2,6 +2,7 @@#include "git-compat-util.h" #include "object.h" #include "decorate.h" +#include "repository.h" int cmd__example_decorate (int argc,const char **argv) {
t/helper/test-fsmonitor-client.c +1 -0
@@ -7,6 +7,7 @@#include "cache.h" #include "parse-options.h" #include "fsmonitor-ipc.h" +#include "repository.h" #include "setup.h" #include "thread-utils.h" #include "trace2.h"
t/helper/test-lazy-init-name-hash.c +1 -0
@@ -3,6 +3,7 @@#include "cache.h" #include "environment.h" #include "parse-options.h" +#include "repository.h" #include "setup.h" #include "trace.h"
t/helper/test-match-trees.c +1 -0
@@ -3,6 +3,7 @@#include "hex.h" #include "match-trees.h" #include "object-name.h" +#include "repository.h" #include "setup.h" #include "tree.h"
t/helper/test-oidmap.c +1 -0
@@ -2,6 +2,7 @@#include "hex.h" #include "object-name.h" #include "oidmap.h" +#include "repository.h" #include "setup.h" #include "strbuf.h"
t/helper/test-path-utils.c +1 -0
@@ -2,6 +2,7 @@#include "cache.h" #include "abspath.h" #include "environment.h" +#include "path.h" #include "setup.h" #include "string-list.h" #include "trace.h"
t/helper/test-read-cache.c +1 -0
@@ -2,6 +2,7 @@#include "test-tool.h" #include "cache.h" #include "config.h" +#include "repository.h" #include "setup.h" #include "wrapper.h"
t/helper/test-scrap-cache-tree.c +1 -0
@@ -2,6 +2,7 @@#include "test-tool.h" #include "cache.h" #include "lockfile.h" +#include "repository.h" #include "setup.h" #include "tree.h" #include "cache-tree.h"
t/helper/test-submodule-config.c +1 -0
@@ -1,6 +1,7 @@#include "test-tool.h" #include "config.h" #include "object-name.h" +#include "repository.h" #include "setup.h" #include "submodule-config.h" #include "submodule.h"
t/helper/test-submodule-nested-repo-config.c +1 -0
@@ -1,4 +1,5 @@#include "test-tool.h" +#include "repository.h" #include "setup.h" #include "submodule-config.h"
t/helper/test-submodule.c +1 -0
@@ -2,6 +2,7 @@#include "test-tool-utils.h" #include "parse-options.h" #include "remote.h" +#include "repository.h" #include "setup.h" #include "submodule-config.h" #include "submodule.h"
t/helper/test-trace2.c +1 -0
@@ -3,6 +3,7 @@#include "run-command.h" #include "exec-cmd.h" #include "config.h" +#include "repository.h" #include "trace2.h" typedef int (fn_unit_test )(int argc,const char **argv);
t/helper/test-write-cache.c +1 -0
@@ -2,6 +2,7 @@#include "test-tool.h" #include "cache.h" #include "lockfile.h" +#include "repository.h" #include "setup.h" int cmd__write_cache (int argc,const char **argv)
trace2.c +1 -0
@@ -2,6 +2,7 @@#include "config.h" #include "json-writer.h" #include "quote.h" +#include "repository.h" #include "run-command.h" #include "sigchain.h" #include "thread-utils.h"
trace2/tr2_tgt_event.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "config.h" #include "json-writer.h" +#include "repository.h" #include "run-command.h" #include "version.h" #include "trace2/tr2_dst.h"
trace2/tr2_tgt_normal.c +1 -0
@@ -1,5 +1,6 @@#include "git-compat-util.h" #include "config.h" +#include "repository.h" #include "run-command.h" #include "quote.h" #include "version.h"
trace2/tr2_tgt_perf.c +1 -0
@@ -1,5 +1,6 @@#include "git-compat-util.h" #include "config.h" +#include "repository.h" #include "run-command.h" #include "quote.h" #include "version.h"
tree-walk.h +1 -0
@@ -4,6 +4,7 @@#include "hash.h" struct index_state ; +struct repository ;#define MAX_TRAVERSE_TREES 8
tree.h +1 -0
@@ -3,6 +3,7 @@#include "object.h" +struct pathspec ;struct repository ;struct strbuf ;
wrapper.c +1 -0
@@ -5,6 +5,7 @@#include "abspath.h" #include "config.h" #include "gettext.h" +#include "repository.h" #include "strbuf.h" #include "trace2.h" #include "wrapper.h"
Signature · 1 line
gitgitgadget
PATCH 21/23 object-store.h: reduce unnecessary includes
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- object-file.c | 1 + object-name.c | 1 + object-store.h | 8 ++++---- submodule-config.c | 1 + 4 files changed, 7 insertions(+), 4 deletions(-)
object-file.c +1 -0
@@ -38,6 +38,7 @@#include "packfile.h" #include "object-file.h" #include "object-store.h" +#include "oidtree.h" #include "promisor-remote.h" #include "setup.h" #include "submodule.h"
object-name.c +1 -0
@@ -14,6 +14,7 @@#include "remote.h" #include "dir.h" #include "oid-array.h" +#include "oidtree.h" #include "packfile.h" #include "pretty.h" #include "object-store.h"
object-store.h +4 -4
@@ -2,16 +2,16 @@#define OBJECT_STORE_H #include "object.h" -#include "oidmap.h" #include "list.h" -#include "oid-array.h" -#include "strbuf.h" #include "thread-utils.h" #include "khash.h" #include "dir.h" -#include "oidtree.h" #include "oidset.h" +struct oidmap ; +struct oidtree ; +struct strbuf ; +struct object_directory {struct object_directory *next;
submodule-config.c +1 -0
@@ -12,6 +12,7 @@#include "object-name.h" #include "object-store.h" #include "parse-options.h" +#include "thread-utils.h" #include "tree-walk.h" /*
Signature · 1 line
gitgitgadget
PATCH 20/23 commit.h: reduce unnecessary includes
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- add-interactive.c | 1 + archive.c | 2 ++ bloom.c | 1 + builtin/diff-tree.c | 1 + builtin/diff.c | 1 + builtin/gc.c | 1 + builtin/log.c | 1 + builtin/merge-tree.c | 1 + combine-diff.c | 1 + commit-graph.c | 1 + commit.c | 1 + commit.h | 11 ++++------- dir.c | 1 + fetch-pack.c | 1 + fsck.c | 1 + gpg-interface.c | 1 + grep.c | 1 + http-push.c | 1 + log-tree.c | 1 + merge-ort-wrappers.c | 1 + merge.c | 1 + notes-cache.c | 1 + notes-utils.c | 1 + object-name.c | 1 + pack-bitmap-write.c | 1 + parse-options-cb.c | 1 + parse-options.c | 1 + read-cache.c | 1 + ref-filter.c | 1 + reflog.c | 1 + refs/debug.c | 1 + refspec.c | 1 + revision.h | 1 + send-pack.c | 1 + wt-status.c | 1 + 35 files changed, 39 insertions(+), 7 deletions(-)
add-interactive.c +1 -0
@@ -12,6 +12,7 @@#include "dir.h" #include "run-command.h" #include "prompt.h" +#include "tree.h" static void init_color(struct repository *r, struct add_i_state *s, const char *section_and_slot, char *dst,
archive.c +2 -0
@@ -6,10 +6,12 @@#include "environment.h" #include "gettext.h" #include "hex.h" +#include "pretty.h" #include "setup.h" #include "refs.h" #include "object-store.h" #include "commit.h" +#include "tree.h" #include "tree-walk.h" #include "attr.h" #include "archive.h"
bloom.c +1 -0
@@ -6,6 +6,7 @@#include "hashmap.h" #include "commit-graph.h" #include "commit.h" +#include "commit-slab.h" define_commit_slab(bloom_filter_slab, struct bloom_filter);
builtin/diff-tree.c +1 -0
@@ -9,6 +9,7 @@#include "builtin.h" #include "submodule.h" #include "repository.h" +#include "tree.h" static struct rev_info log_tree_opt;
builtin/diff.c +1 -0
@@ -22,6 +22,7 @@#include "setup.h" #include "submodule.h" #include "oid-array.h" +#include "tree.h" #define DIFF_NO_INDEX_EXPLICIT 1#define DIFF_NO_INDEX_IMPLICIT 2
builtin/gc.c +1 -0
@@ -12,6 +12,7 @@#include "builtin.h" #include "abspath.h" +#include "date.h" #include "environment.h" #include "hex.h" #include "repository.h"
builtin/log.c +1 -0
@@ -44,6 +44,7 @@#include "commit-reach.h" #include "range-diff.h" #include "tmp-objdir.h" +#include "tree.h" #include "write-or-die.h" #define MAIL_DEFAULT_WRAP 72
builtin/merge-tree.c +1 -0
@@ -16,6 +16,7 @@#include "exec-cmd.h" #include "merge-blobs.h" #include "quote.h" +#include "tree.h" static int line_termination ='\n' ;
combine-diff.c +1 -0
@@ -13,6 +13,7 @@#include "xdiff/xmacros.h" #include "log-tree.h" #include "refs.h" +#include "tree.h" #include "userdiff.h" #include "oid-array.h" #include "revision.h"
commit-graph.c +1 -0
@@ -23,6 +23,7 @@#include "shallow.h" #include "json-writer.h" #include "trace2.h" +#include "tree.h" #include "chunk-format.h" #include "wrapper.h"
commit.c +1 -0
@@ -26,6 +26,7 @@#include "run-command.h" #include "setup.h" #include "shallow.h" +#include "tree.h" #include "hook.h" static struct commit_extra_header *read_commit_extra_header_lines (const char *buf,size_t len,const char **);
commit.h +4 -7
@@ -2,13 +2,10 @@#define COMMIT_H #include "object.h" -#include "tree.h" -#include "strbuf.h" -#include "decorate.h" -#include "gpg-interface.h" -#include "string-list.h" -#include "pretty.h" -#include "commit-slab.h" + +struct signature_check ; +struct strbuf ; +struct tree ;#define COMMIT_NOT_FROM_GRAPH 0xFFFFFFFF#define GENERATION_NUMBER_INFINITY ((1ULL << 63) - 1)
dir.c +1 -0
@@ -27,6 +27,7 @@#include "submodule-config.h" #include "symlinks.h" #include "trace2.h" +#include "tree.h" #include "wrapper.h" /*
fetch-pack.c +1 -0
@@ -2,6 +2,7 @@#include "alloc.h" #include "repository.h" #include "config.h" +#include "date.h" #include "environment.h" #include "gettext.h" #include "hex.h"
fsck.c +1 -0
@@ -1,5 +1,6 @@#include "git-compat-util.h" #include "alloc.h" +#include "date.h" #include "hex.h" #include "object-store.h" #include "repository.h"
gpg-interface.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "commit.h" #include "config.h" +#include "date.h" #include "gettext.h" #include "run-command.h" #include "strbuf.h"
grep.c +1 -0
@@ -4,6 +4,7 @@#include "grep.h" #include "hex.h" #include "object-store.h" +#include "pretty.h" #include "userdiff.h" #include "xdiff-interface.h" #include "diff.h"
http-push.c +1 -0
@@ -15,6 +15,7 @@#include "setup.h" #include "sigchain.h" #include "strvec.h" +#include "tree.h" #include "packfile.h" #include "object-store.h" #include "commit-reach.h"
log-tree.c +1 -0
@@ -24,6 +24,7 @@#include "help.h" #include "range-diff.h" #include "strmap.h" +#include "tree.h" #include "write-or-die.h" static struct decoration name_decoration = {"object names" };
merge-ort-wrappers.c +1 -0
@@ -3,6 +3,7 @@#include "merge-ort.h" #include "merge-ort-wrappers.h" #include "repository.h" +#include "tree.h" #include "commit.h"
merge.c +1 -0
@@ -7,6 +7,7 @@#include "commit.h" #include "run-command.h" #include "resolve-undo.h" +#include "tree.h" #include "tree-walk.h" #include "unpack-trees.h" #include "dir.h"
notes-cache.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "notes-cache.h" #include "object-store.h" +#include "pretty.h" #include "repository.h" #include "commit.h" #include "refs.h"
notes-utils.c +1 -0
@@ -6,6 +6,7 @@#include "refs.h" #include "notes-utils.h" #include "repository.h" +#include "strbuf.h" void create_notes_commit(struct repository *r, struct notes_tree *t,
object-name.c +1 -0
@@ -15,6 +15,7 @@#include "dir.h" #include "oid-array.h" #include "packfile.h" +#include "pretty.h" #include "object-store.h" #include "repository.h" #include "setup.h"
pack-bitmap-write.c +1 -0
@@ -18,6 +18,7 @@#include "commit-reach.h" #include "prio-queue.h" #include "trace2.h" +#include "tree.h" struct bitmapped_commit {struct commit *commit;
parse-options-cb.c +1 -0
@@ -3,6 +3,7 @@#include "branch.h" #include "commit.h" #include "color.h" +#include "date.h" #include "environment.h" #include "gettext.h" #include "object-name.h"
parse-options.c +1 -0
@@ -5,6 +5,7 @@#include "commit.h" #include "color.h" #include "gettext.h" +#include "strbuf.h" #include "utf8.h" static int disallow_abbreviated_options;
read-cache.c +1 -0
@@ -6,6 +6,7 @@#include "cache.h" #include "alloc.h" #include "config.h" +#include "date.h" #include "diff.h" #include "diffcore.h" #include "hex.h"
ref-filter.c +1 -0
@@ -2,6 +2,7 @@#include "alloc.h" #include "environment.h" #include "gettext.h" +#include "gpg-interface.h" #include "hex.h" #include "parse-options.h" #include "refs.h"
reflog.c +1 -0
@@ -4,6 +4,7 @@#include "reflog.h" #include "refs.h" #include "revision.h" +#include "tree.h" #include "worktree.h" /* Remember to update object flag allocation in object.h */
refs/debug.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "hex.h" #include "refs-internal.h" +#include "string-list.h" #include "trace.h" static struct trace_key trace_refs =TRACE_KEY_INIT (REFS );
refspec.c +1 -0
@@ -6,6 +6,7 @@#include "refs.h" #include "refspec.h" #include "repository.h" +#include "strbuf.h" static struct refspec_item s_tag_refspec = { .force =0 ,
revision.h +1 -0
@@ -8,6 +8,7 @@#include "pretty.h" #include "diff.h" #include "commit-slab-decl.h" +#include "decorate.h" #include "ident.h" #include "list-objects-filter-options.h"
send-pack.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "config.h" #include "commit.h" +#include "date.h" #include "gettext.h" #include "hex.h" #include "refs.h"
wt-status.c +1 -0
@@ -22,6 +22,7 @@#include "strbuf.h" #include "trace.h" #include "trace2.h" +#include "tree.h" #include "utf8.h" #include "worktree.h" #include "lockfile.h"
Signature · 1 line
gitgitgadget
PATCH 22/23 diff.h: reduce unnecessary includes
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- attr.c | 1 + diff.h | 1 - http-push.c | 1 + line-log.c | 1 + pack-bitmap-write.c | 1 + reflog.c | 1 + tree-diff.c | 1 + 7 files changed, 6 insertions(+), 1 deletion(-)
attr.c +1 -0
@@ -20,6 +20,7 @@#include "object-store.h" #include "setup.h" #include "thread-utils.h" +#include "tree-walk.h" const char git_attr__true[] ="(builtin)true" ;const char git_attr__false[] ="\0(builtin)false" ;
diff.h +0 -1
@@ -4,7 +4,6 @@#ifndef DIFF_H #define DIFF_H -#include "tree-walk.h" #include "pathspec.h" #include "oidset.h" #include "strbuf.h"
http-push.c +1 -0
@@ -16,6 +16,7 @@#include "sigchain.h" #include "strvec.h" #include "tree.h" +#include "tree-walk.h" #include "packfile.h" #include "object-store.h" #include "commit-reach.h"
line-log.c +1 -0
@@ -18,6 +18,7 @@#include "setup.h" #include "strvec.h" #include "bloom.h" +#include "tree-walk.h" static void range_set_grow (struct range_set *rs,size_t extra) {
pack-bitmap-write.c +1 -0
@@ -19,6 +19,7 @@#include "prio-queue.h" #include "trace2.h" #include "tree.h" +#include "tree-walk.h" struct bitmapped_commit {struct commit *commit;
reflog.c +1 -0
@@ -5,6 +5,7 @@#include "refs.h" #include "revision.h" #include "tree.h" +#include "tree-walk.h" #include "worktree.h" /* Remember to update object flag allocation in object.h */
tree-diff.c +1 -0
@@ -5,6 +5,7 @@#include "diff.h" #include "diffcore.h" #include "tree.h" +#include "tree-walk.h" /* * Some mode bits are also used internally for computations.
Signature · 1 line
gitgitgadget
PATCH 23/23 reftable: ensure git-compat-util.h is the first (indirect) include
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- reftable/error.c | 1 + reftable/publicbasics.c | 2 +- reftable/tree.c | 2 +- reftable/tree_test.c | 1 + t/helper/test-reftable.c | 1 + 5 files changed, 5 insertions(+), 2 deletions(-)
reftable/error.c +1 -0
@@ -6,6 +6,7 @@ license that can be found in the LICENSE file or athttps://developers.google.com/open-source/licenses/bsd */ +#include "system.h" #include "reftable-error.h" #include <stdio.h>
reftable/publicbasics.c +1 -1
@@ -6,10 +6,10 @@ license that can be found in the LICENSE file or athttps://developers.google.com/open-source/licenses/bsd */ +#include "system.h" #include "reftable-malloc.h" #include "basics.h" -#include "system.h" static void *(*reftable_malloc_ptr)(size_t sz);static void *(*reftable_realloc_ptr)(void *,size_t );
reftable/tree.c +1 -1
@@ -6,10 +6,10 @@ license that can be found in the LICENSE file or athttps://developers.google.com/open-source/licenses/bsd */ +#include "system.h" #include "tree.h" #include "basics.h" -#include "system.h" struct tree_node *tree_search(void *key, struct tree_node **rootp, int (*compare)(const void *, const void *),
reftable/tree_test.c +1 -0
@@ -6,6 +6,7 @@ license that can be found in the LICENSE file or athttps://developers.google.com/open-source/licenses/bsd */ +#include "system.h" #include "tree.h" #include "basics.h"
t/helper/test-reftable.c +1 -0
@@ -1,3 +1,4 @@ +#include "reftable/system.h" #include "reftable/reftable-tests.h" #include "test-tool.h"
Signature · 1 line
gitgitgadget
Re: [PATCH 14/23] hash.h, repository.h: reverse the order of these dependencies
In reply to Elijah Newren via GitGitGadgetQuoted 9 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
Previously,
hash.hdepended upon and includedrepository.h, due to the definition and use ofthe_hash_algo(defined asthe_repository->hash_algo). Move this #define, and the associated inline functions that depend upon it, fromhash.htorepository.h. Due to that movement, reverse the dependencies sorepository.hincludeshash.h.
Quoted 4 lines
This allows
hash.handobject.hto be fairly small, minimal headers. It also exposes a lot of hidden dependencies on bothpath.h(which was brought in byrepository.h) andrepository.h(which was previously implicitly brought in byobject.h).
This is the first patch in the series where I don't immediately agree with the patch. This is a big list of methods that don't seem like they fit in repository.h:
Quoted 6 lines
repository.h +5
-0+static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2) +static inline int oidcmp(const struct object_id *oid1, const struct object_id *oid2) +static inline int hasheq(const unsigned char *sha1, const unsigned char *sha2) +static inline int oideq(const struct object_id *oid1, const struct object_id *oid2) +static inline int is_null_oid(const struct object_id *oid)
repository.h void prepare_repo_settings(struct repository *r); · line 332
Quoted 10 lines
repository.h +10
-0+static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src) +static inline void oidcpy_with_padding(struct object_id *dst, + const struct object_id *src) +static inline void hashclr(unsigned char *hash) +static inline void oidclr(struct object_id *oid) +static inline void oidread(struct object_id *oid, const unsigned char *hash) +static inline int is_empty_blob_sha1(const unsigned char *sha1) +static inline int is_empty_blob_oid(const struct object_id *oid) +static inline int is_empty_tree_sha1(const unsigned char *sha1) +static inline int is_empty_tree_oid (const struct object_id *oid)
The goal to remove repository.h from hash.h and object.h makes sense as a goal, but is there another way to do it? Can we redefine 'extern struct repository *the_repository;' in hash.h so we have access to that pointer?
Thanks,
-Stolee
Quoted 5 lines · Elijah Newren via GitGitGadget
This series continues to focus on splitting declarations from
cache.hto separate headers. This series also untangles some dependencies betweenhash.handrepository.h, and betweenread-cache.cand tree.[ch], and cleans up a few other headers. At the end of this series the number ofcache.hincludes drops from 189 down to 149.
Thank you for continuing to do this work.
Quoted 2 lines
* Patch 14-16: move functions between hash<->repository and read-cache<->tree to simplify dependencies
My only comment was on patch 14, where I'm not sure I like the methods moving from hash.h to repository.h. If we can find an alternative, that would make me happy.
The rest of the series looked very good.
Thanks,
-Stolee
Re: [PATCH 14/23] hash.h, repository.h: reverse the order of these dependencies
In reply to Derrick StoleeQuoted 20 lines · Derrick Stolee
Quoted 9 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
Previously,
hash.hdepended upon and includedrepository.h, due to the definition and use ofthe_hash_algo(defined asthe_repository->hash_algo). Move this #define, and the associated inline functions that depend upon it, fromhash.htorepository.h. Due to that movement, reverse the dependencies sorepository.hincludeshash.h.Quoted 4 lines
This allows
hash.handobject.hto be fairly small, minimal headers. It also exposes a lot of hidden dependencies on bothpath.h(which was brought in byrepository.h) andrepository.h(which was previously implicitly brought in byobject.h).This is the first patch in the series where I don't immediately agree with the patch. This is a big list of methods that don't seem like they fit in
repository.h:
Quoted 16 lines
Quoted 6 lines
repository.h +5
-0+static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2) +static inline int oidcmp(const struct object_id *oid1, const struct object_id *oid2) +static inline int hasheq(const unsigned char *sha1, const unsigned char *sha2) +static inline int oideq(const struct object_id *oid1, const struct object_id *oid2) +static inline int is_null_oid(const struct object_id *oid)repository.h void prepare_repo_settings(struct repository *r); · line 332
Quoted 10 lines
repository.h +10
-0+static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src) +static inline void oidcpy_with_padding(struct object_id *dst, + const struct object_id *src) +static inline void hashclr(unsigned char *hash) +static inline void oidclr(struct object_id *oid) +static inline void oidread(struct object_id *oid, const unsigned char *hash) +static inline int is_empty_blob_sha1(const unsigned char *sha1) +static inline int is_empty_blob_oid(const struct object_id *oid) +static inline int is_empty_tree_sha1(const unsigned char *sha1) +static inline int is_empty_tree_oid (const struct object_id *oid)
Yeah, their names suggest they in no way depend upon internals of a repository, but that's largely because they are misnamed, similar to our old friends like get_oid() and repo_get_oid().
Quoted 4 lines
The goal to remove
repository.hfromhash.handobject.hmakes sense as a goal, but is there another way to do it? Can we redefine 'extern struct repository*the_repository;' inhash.hso we have access to that pointer?
Having access to the pointer is insufficient. These functions all make use of the_repository->hash_algo, and are inline, so the definition and layout of struct repository is necessary.
An alternate solution might be to just wrap the #define of the_hash_algo, as well as these functions, with NO_THE_REPOSITORY_COMPATIBILITY_MACROS, try to convince Ævar that we put those #ifdefs in before he wrote his series[1] and that he thus missed some uses of that macro, and then watch him transform all of them with a series of cocci changes so these functions just go away. ;-)
But that sounds like a separate big series, and I'm dubious about my ability to hoodwink Ævar.
Any other ideas?
Quoted 8 lines · Derrick Stolee
Quoted 5 lines · Elijah Newren via GitGitGadget
This series continues to focus on splitting declarations from
cache.hto separate headers. This series also untangles some dependencies betweenhash.handrepository.h, and betweenread-cache.cand tree.[ch], and cleans up a few other headers. At the end of this series the number ofcache.hincludes drops from 189 down to 149.
Quoted 8 lines
Thank you for continuing to do this work.
Quoted 2 lines
* Patch 14-16: move functions between hash<->repository and read-cache<->tree to simplify dependencies
My only comment was on patch 14, where I'm not sure I like the methods moving from
hash.htorepository.h. If we can find an alternative, that would make me happy.
I'm not aware of one, but I tried to deviously nerd snipe an expert on cleaning up compatibility macros for the_repository to see if he might have any bright ideas. :-)
Also, if you have any other ideas that might work, I'm all ears.
Quoted 1 line
The rest of the series looked very good.
Thanks for taking a look!
Re: [PATCH 14/23] hash.h, repository.h: reverse the order of these dependencies
In reply to Derrick StoleeQuoted 15 lines · Derrick Stolee
This is the first patch in the series where I don't immediately agree with the patch. This is a big list of methods that don't seem like they fit in
repository.h:Quoted 11 lines
repository.h +10
-0+static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2) +static inline int oidcmp(const struct object_id *oid1, const struct object_id *oid2) +static inline int hasheq(const unsigned char *sha1, const unsigned char *sha2) +static inline int oideq(const struct object_id *oid1, const struct object_id *oid2) +static inline int is_null_oid(const struct object_id *oid) +static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src) +static inline void oidcpy_with_padding(struct object_id *dst, + const struct object_id *src) +static inline void hashclr(unsigned char *hash) +static inline void oidclr(struct object_id *oid)
Quoted 8 lines
repository.h void prepare_repo_settings(struct repository *r); · line 332
Quoted 5 lines
repository.h +5
-0+static inline void oidread(struct object_id *oid, const unsigned char *hash) +static inline int is_empty_blob_sha1(const unsigned char *sha1) +static inline int is_empty_blob_oid(const struct object_id *oid) +static inline int is_empty_tree_sha1(const unsigned char *sha1) +static inline int is_empty_tree_oid (const struct object_id *oid)The goal to remove
repository.hfromhash.handobject.hmakes sense as a goal, but is there another way to do it?
Indeed.
All of the above sit very well in hash simply because they are all about hashes. It does not have much to do with "repository", not more than "well, hashes we use to identify objects, and objects are stored in repositories".
From the point of view of somebody who needs to use these macros, it is utterly unnatural that they have to include "repository.h" (as opposed to, say, "hash.h") just to be able to compare two hash values. Most of our programs interact with only one repository, and it is understandable to include a header "repository.h" if your program needs to interact with an extra repository other than the "current" one. But this feels backwards and not quite satisfactory, even though inlines are special and I can fully sympathize with the author who felt that this patch was necessary.
Re: [PATCH 14/23] hash.h, repository.h: reverse the order of these dependencies
Quoted 34 lines · Junio C Hamano
Quoted 15 lines · Derrick Stolee
This is the first patch in the series where I don't immediately agree with the patch. This is a big list of methods that don't seem like they fit in
repository.h:Quoted 11 lines
repository.h +10
-0+static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2) +static inline int oidcmp(const struct object_id *oid1, const struct object_id *oid2) +static inline int hasheq(const unsigned char *sha1, const unsigned char *sha2) +static inline int oideq(const struct object_id *oid1, const struct object_id *oid2) +static inline int is_null_oid(const struct object_id *oid) +static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src) +static inline void oidcpy_with_padding(struct object_id *dst, + const struct object_id *src) +static inline void hashclr(unsigned char *hash) +static inline void oidclr(struct object_id *oid)Quoted 8 lines
repository.h void prepare_repo_settings(struct repository *r); · line 332
Quoted 5 lines
repository.h +5
-0+static inline void oidread(struct object_id *oid, const unsigned char *hash) +static inline int is_empty_blob_sha1(const unsigned char *sha1) +static inline int is_empty_blob_oid(const struct object_id *oid) +static inline int is_empty_tree_sha1(const unsigned char *sha1) +static inline int is_empty_tree_oid (const struct object_id *oid)The goal to remove
repository.hfromhash.handobject.hmakes sense as a goal, but is there another way to do it?Indeed.
All of the above sit very well in hash simply because they are all about hashes. It does not have much to do with "repository", not more than "well, hashes we use to identify objects, and objects are stored in repositories".
Quoted 9 lines
From the point of view of somebody who needs to use these macros, it is utterly unnatural that they have to include "
repository.h" (as opposed to, say, "hash.h") just to be able to compare two hash values. Most of our programs interact with only one repository, and it is understandable to include a header "repository.h" if your program needs to interact with an extra repository other than the "current" one. But this feels backwards and not quite satisfactory, even though inlines are special and I can fully sympathize with the author who felt that this patch was necessary.
What would you think of either of the two following alternative solutions:
* Move these into a new header, say "hash-repository.h" that folks
could include. People wanting to use these macros would have to include an alternate header, but one that is perhaps more logically named, and would allow other headers to get the basics of hash.h without repository.h
* Move everything else in hash.h to a new header, say
"hash-basics.h", which hash.h will #include. That retains the ability for people to depend on hash.h and use these inline functions, while also giving other headers the option of including the basics of today's hash.h without repository.h.
Re: [PATCH 14/23] hash.h, repository.h: reverse the order of these dependencies
Quoted 8 lines · Elijah Newren
What would you think of either of the two following alternative solutions:
* Move these into a new header, say "
hash-repository.h" that folks
could include. People wanting to use these macros would have to include an alternate header, but one that is perhaps more logically named, and would allow other headers to get the basics ofhash.hwithoutrepository.h
Quoted 5 lines
* Move everything else in
hash.hto a new header, say
"hash-basics.h", whichhash.hwill #include. That retains the ability for people to depend onhash.hand use these inline functions, while also giving other headers the option of including the basics of today'shash.hwithoutrepository.h.
I like both of these options, but prefer the second one.
This is mostly because most consumers in the Git codebase will want these methods, and only the most fundamental hashing code will care about hashing separate from the_hash_algo. So, the most-natural name for "the header file that lets me hash stuff" would be "hash.h" and "hash-basics.h" is for "I'm doing very simple, low-level hashing".
Thanks,
-Stolee
Re: [PATCH 14/23] hash.h, repository.h: reverse the order of these dependencies
Quoted 5 lines · Derrick Stolee
This is mostly because most consumers in the Git codebase will want these methods, and only the most fundamental hashing code will care about hashing separate from
the_hash_algo. So, the most-natural name for "the header file that lets me hash stuff" would be "hash.h" and "hash-basics.h" is for "I'm doing very simple, low-level hashing".
I do agree with the reasoning for "most people want 'hash.h'"; what is called the "basics" sounds more like for advanced users of the low-level machinery, but somehow I expect "basic" would the one to be used in sample programs in tutorials or something. "ll-hash.h" for low-level hash features? I dunno.
But whatever the name for the header file meant to be used by "advanced callers to low-level machinery" would be, I like your choice of the latter variant between the ones Elijah presented.
Thanks.
Re: [PATCH 14/23] hash.h, repository.h: reverse the order of these dependencies
Quoted 14 lines · Junio C Hamano
Quoted 5 lines · Derrick Stolee
This is mostly because most consumers in the Git codebase will want these methods, and only the most fundamental hashing code will care about hashing separate from
the_hash_algo. So, the most-natural name for "the header file that lets me hash stuff" would be "hash.h" and "hash-basics.h" is for "I'm doing very simple, low-level hashing".I do agree with the reasoning for "most people want '
hash.h'"; what is called the "basics" sounds more like for advanced users of the low-level machinery, but somehow I expect "basic" would the one to be used in sample programs in tutorials or something. "ll-hash.h" for low-level hash features? I dunno.
Quoted 3 lines
But whatever the name for the header file meant to be used by "advanced callers to low-level machinery" would be, I like your choice of the latter variant between the ones Elijah presented.
FWIW, I also think this is a good idea. I suspect that a lot of the libification effort will need a similar distinction between "a subsystem supporting the needs of the git binary" (aka high-level) and "basic, reusable functionality that can be its own library" (aka low-level).
PATCH v2 1/22 treewide: be explicit about dependence on strbuf.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- color.c | 1 + common-main.c | 1 + credential.c | 1 + date.c | 1 + ll-merge.c | 1 + split-index.c | 1 + t/helper/test-mergesort.c | 1 + t/helper/test-oid-array.c | 1 + t/helper/test-oidtree.c | 1 + t/helper/test-parse-options.c | 1 + t/helper/test-string-list.c | 1 + wrapper.c | 1 + ws.c | 1 + 13 files changed, 13 insertions(+)
color.c +1 -0
@@ -5,6 +5,7 @@#include "gettext.h" #include "hex.h" #include "pager.h" +#include "strbuf.h" static int git_use_color_default =GIT_COLOR_AUTO ;int color_stdout_is_tty =-1 ;
common-main.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "attr.h" #include "setup.h" +#include "strbuf.h" #include "trace2.h" /*
credential.c +1 -0
@@ -8,6 +8,7 @@#include "url.h" #include "prompt.h" #include "sigchain.h" +#include "strbuf.h" #include "urlmatch.h" #include "git-compat-util.h"
date.c +1 -0
@@ -8,6 +8,7 @@#include "date.h" #include "gettext.h" #include "pager.h" +#include "strbuf.h" /* * This is like mktime, but without normalization of tm_wday and tm_yday.
ll-merge.c +1 -0
@@ -12,6 +12,7 @@#include "run-command.h" #include "ll-merge.h" #include "quote.h" +#include "strbuf.h" #include "wrapper.h" struct ll_merge_driver ;
split-index.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "mem-pool.h" #include "split-index.h" +#include "strbuf.h" #include "ewah/ewok.h" struct split_index *init_split_index (struct index_state *istate)
t/helper/test-mergesort.c +1 -0
@@ -2,6 +2,7 @@#include "cache.h" #include "mem-pool.h" #include "mergesort.h" +#include "strbuf.h" static uint32_t minstd_rand (uint32_t *state) {
t/helper/test-oid-array.c +1 -0
@@ -3,6 +3,7 @@#include "hex.h" #include "oid-array.h" #include "setup.h" +#include "strbuf.h" static int print_oid (const struct object_id *oid,void *data) {
t/helper/test-oidtree.c +1 -0
@@ -3,6 +3,7 @@#include "hex.h" #include "oidtree.h" #include "setup.h" +#include "strbuf.h" static enum cb_next print_oid (const struct object_id *oid,void *data) {
t/helper/test-parse-options.c +1 -0
@@ -1,6 +1,7 @@#include "test-tool.h" #include "cache.h" #include "parse-options.h" +#include "strbuf.h" #include "string-list.h" #include "trace2.h"
t/helper/test-string-list.c +1 -0
@@ -1,5 +1,6 @@#include "test-tool.h" #include "cache.h" +#include "strbuf.h" #include "string-list.h" /*
wrapper.c +1 -0
@@ -5,6 +5,7 @@#include "abspath.h" #include "config.h" #include "gettext.h" +#include "strbuf.h" #include "trace2.h" #include "wrapper.h"
ws.c +1 -0
@@ -5,6 +5,7 @@*/ #include "cache.h" #include "attr.h" +#include "strbuf.h" static struct whitespace_rule { const char *rule_name;
Signature · 1 line
gitgitgadget
PATCH v2 2/22 symlinks.h: move declarations for symlinks.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- apply.c | 1 + builtin/checkout.c | 1 + builtin/update-index.c | 1 + cache.h | 22 ---------------------- compat/mingw.c | 1 + diff-lib.c | 1 + dir.c | 1 + entry.c | 1 + merge-recursive.c | 1 + parallel-checkout.c | 1 + pathspec.c | 1 + preload-index.c | 1 + read-cache.c | 1 + run-command.c | 1 + symlinks.c | 3 ++- symlinks.h | 28 ++++++++++++++++++++++++++++ unpack-trees.c | 1 + 17 files changed, 44 insertions(+), 23 deletions(-) create mode 100644 symlinks.h
apply.c +1 -0
@@ -30,6 +30,7 @@#include "apply.h" #include "entry.h" #include "setup.h" +#include "symlinks.h" #include "wrapper.h" struct gitdiff_data {
builtin/checkout.c +1 -0
@@ -28,6 +28,7 @@#include "setup.h" #include "submodule.h" #include "submodule-config.h" +#include "symlinks.h" #include "trace2.h" #include "tree.h" #include "tree-walk.h"
builtin/update-index.c +1 -0
@@ -23,6 +23,7 @@#include "dir.h" #include "setup.h" #include "split-index.h" +#include "symlinks.h" #include "fsmonitor.h" #include "write-or-die.h"
cache.h +0 -22
@@ -593,28 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -struct cache_def { -struct strbuf path; -int flags; -int track_flags; -int prefix_len_stat_func; -}; -#define CACHE_DEF_INIT { \ - .path = STRBUF_INIT, \ -} -static inline void cache_def_clear (struct cache_def *cache) -{ -strbuf_release (&cache->path); -} - -int has_symlink_leading_path (const char *name,int len); -int threaded_has_symlink_leading_path (struct cache_def *,const char *,int ); -int check_leading_path (const char *name,int len,int warn_on_lstat_err); -int has_dirs_only_path (const char *name,int len,int prefix_len); -void invalidate_lstat_cache (void ); -void schedule_dir_for_removal (const char *name,int len); -void remove_scheduled_dirs (void ); -struct pack_window {struct pack_window *next;unsigned char *base;
compat/mingw.c +1 -0
@@ -13,6 +13,7 @@#include "../config.h" #include "../environment.h" #include "../trace2.h" +#include "../symlinks.h" #include "../wrapper.h" #include "dir.h" #include "gettext.h"
diff-lib.c +1 -0
@@ -14,6 +14,7 @@#include "unpack-trees.h" #include "refs.h" #include "submodule.h" +#include "symlinks.h" #include "trace.h" #include "dir.h" #include "fsmonitor.h"
dir.c +1 -0
@@ -25,6 +25,7 @@#include "fsmonitor.h" #include "setup.h" #include "submodule-config.h" +#include "symlinks.h" #include "trace2.h" #include "wrapper.h"
entry.c +1 -0
@@ -7,6 +7,7 @@#include "hex.h" #include "streaming.h" #include "submodule.h" +#include "symlinks.h" #include "progress.h" #include "fsmonitor.h" #include "entry.h"
merge-recursive.c +1 -0
@@ -30,6 +30,7 @@#include "string-list.h" #include "submodule-config.h" #include "submodule.h" +#include "symlinks.h" #include "tag.h" #include "tree-walk.h" #include "unpack-trees.h"
parallel-checkout.c +1 -0
@@ -10,6 +10,7 @@#include "run-command.h" #include "sigchain.h" #include "streaming.h" +#include "symlinks.h" #include "thread-utils.h" #include "trace2.h" #include "wrapper.h"
pathspec.c +1 -0
@@ -8,6 +8,7 @@#include "attr.h" #include "setup.h" #include "strvec.h" +#include "symlinks.h" #include "quote.h" /*
preload-index.c +1 -0
@@ -11,6 +11,7 @@#include "progress.h" #include "thread-utils.h" #include "repository.h" +#include "symlinks.h" #include "trace2.h" /*
read-cache.c +1 -0
@@ -30,6 +30,7 @@#include "trace2.h" #include "varint.h" #include "split-index.h" +#include "symlinks.h" #include "utf8.h" #include "fsmonitor.h" #include "thread-utils.h"
run-command.c +1 -0
@@ -5,6 +5,7 @@#include "gettext.h" #include "sigchain.h" #include "strvec.h" +#include "symlinks.h" #include "thread-utils.h" #include "strbuf.h" #include "string-list.h"
symlinks.c +2 -1
@@ -1,6 +1,7 @@ -#include "cache.h" +#include "git-compat-util.h" #include "gettext.h" #include "setup.h" +#include "symlinks.h" static int threaded_check_leading_path (struct cache_def *cache,const char *name,int len,int warn_on_lstat_err);
symlinks.h new file +28 -0
@@ -0,0 +1,28 @@ +#ifndef SYMLINKS_H +#define SYMLINKS_H + +#include "strbuf.h" + +struct cache_def { +struct strbuf path; +int flags; +int track_flags; +int prefix_len_stat_func; +}; +#define CACHE_DEF_INIT { \ + .path = STRBUF_INIT, \ +} +static inline void cache_def_clear (struct cache_def *cache) +{ +strbuf_release (&cache->path); +} + +int has_symlink_leading_path (const char *name,int len); +int threaded_has_symlink_leading_path (struct cache_def *,const char *,int ); +int check_leading_path (const char *name,int len,int warn_on_lstat_err); +int has_dirs_only_path (const char *name,int len,int prefix_len); +void invalidate_lstat_cache (void ); +void schedule_dir_for_removal (const char *name,int len); +void remove_scheduled_dirs (void ); + +#endif /* SYMLINKS_H */
unpack-trees.c +1 -0
@@ -18,6 +18,7 @@#include "sparse-index.h" #include "submodule.h" #include "submodule-config.h" +#include "symlinks.h" #include "trace2.h" #include "fsmonitor.h" #include "object-store.h"
Signature · 1 line
gitgitgadget
PATCH v2 3/22 packfile.h: move pack_window and pack_entry from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- cache.h | 14 -------------- packfile.h | 16 ++++++++++++++-- t/helper/test-read-midx.c | 1 + 3 files changed, 15 insertions(+), 16 deletions(-)
cache.h +0 -14
@@ -593,20 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -struct pack_window { -struct pack_window *next; -unsigned char *base; -off_t offset; -size_t len; -unsigned int last_used; -unsigned int inuse_cnt; -}; - -struct pack_entry { -off_t offset; -struct packed_git *p; -}; -/* Dumb servers support */ int update_server_info (int );
packfile.h +14 -2
@@ -6,10 +6,22 @@/* in object-store.h */ struct packed_git ; -struct pack_entry ; -struct pack_window ;struct object_info ; +struct pack_window { +struct pack_window *next; +unsigned char *base; +off_t offset; +size_t len; +unsigned int last_used; +unsigned int inuse_cnt; +}; + +struct pack_entry { +off_t offset; +struct packed_git *p; +}; +/* * Generate the filename to be used for a pack file with checksum "sha1" and * extension "ext". The result is written into the strbuf "buf", overwriting
t/helper/test-read-midx.c +1 -0
@@ -5,6 +5,7 @@#include "repository.h" #include "object-store.h" #include "pack-bitmap.h" +#include "packfile.h" #include "setup.h" static int read_midx_file (const char *object_dir,int show_objects)
Signature · 1 line
gitgitgadget
PATCH v2 7/22 pkt-line.h: move declarations for pkt-line.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- builtin/bundle.c | 1 + builtin/clone.c | 1 + builtin/fetch.c | 1 + builtin/ls-remote.c | 1 + builtin/push.c | 1 + cache.h | 3 --- pkt-line.h | 2 ++ 7 files changed, 7 insertions(+), 3 deletions(-)
builtin/bundle.c +1 -0
@@ -4,6 +4,7 @@#include "setup.h" #include "strvec.h" #include "parse-options.h" +#include "pkt-line.h" #include "cache.h" #include "bundle.h"
builtin/clone.c +1 -0
@@ -39,6 +39,7 @@#include "setup.h" #include "connected.h" #include "packfile.h" +#include "pkt-line.h" #include "list-objects-filter-options.h" #include "hook.h" #include "bundle.h"
builtin/fetch.c +1 -0
@@ -29,6 +29,7 @@#include "utf8.h" #include "packfile.h" #include "pager.h" +#include "pkt-line.h" #include "list-objects-filter-options.h" #include "commit-reach.h" #include "branch.h"
builtin/ls-remote.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "hex.h" #include "transport.h" +#include "pkt-line.h" #include "ref-filter.h" #include "remote.h" #include "refs.h"
builtin/push.c +1 -0
@@ -14,6 +14,7 @@#include "remote.h" #include "transport.h" #include "parse-options.h" +#include "pkt-line.h" #include "submodule.h" #include "submodule-config.h" #include "send-pack.h"
cache.h +0 -3
@@ -593,9 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -/* pkt-line.c */ -void packet_trace_identity (const char *prog); -/* add */ /* * return 0 if success, 1 - if addition of a file failed and
pkt-line.h +2 -0
@@ -246,4 +246,6 @@ void packet_writer_error(struct packet_writer *writer, const char *fmt, ...);void packet_writer_delim (struct packet_writer *writer);void packet_writer_flush (struct packet_writer *writer); +void packet_trace_identity (const char *prog); +#endif
Signature · 1 line
gitgitgadget
PATCH v2 4/22 server-info.h: move declarations for server-info.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- builtin/receive-pack.c | 1 + builtin/repack.c | 1 + builtin/update-server-info.c | 1 + cache.h | 3 --- server-info.c | 3 ++- server-info.h | 7 +++++++ 6 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 server-info.h
builtin/receive-pack.c +1 -0
@@ -33,6 +33,7 @@#include "object-store.h" #include "protocol.h" #include "commit-reach.h" +#include "server-info.h" #include "trace.h" #include "trace2.h" #include "worktree.h"
builtin/repack.c +1 -0
@@ -7,6 +7,7 @@#include "hex.h" #include "parse-options.h" #include "run-command.h" +#include "server-info.h" #include "sigchain.h" #include "strbuf.h" #include "string-list.h"
builtin/update-server-info.c +1 -0
@@ -3,6 +3,7 @@#include "builtin.h" #include "gettext.h" #include "parse-options.h" +#include "server-info.h" static const char *const update_server_info_usage[] = {"git update-server-info [-f | --force]" ,
cache.h +0 -3
@@ -593,9 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -/* Dumb servers support */ -int update_server_info (int ); -#define COPY_READ_ERROR (-2)#define COPY_WRITE_ERROR (-3)int copy_fd (int ifd,int ofd);
server-info.c +2 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "alloc.h" #include "dir.h" #include "environment.h"
@@ -11,6 +11,7 @@#include "packfile.h" #include "object-file.h" #include "object-store.h" +#include "server-info.h" #include "strbuf.h" #include "wrapper.h"
server-info.h new file +7 -0
@@ -0,0 +1,7 @@ +#ifndef SERVER_INFO_H +#define SERVER_INFO_H + +/* Dumb servers support */ +int update_server_info (int ); + +#endif /* SERVER_INFO_H */
Signature · 1 line
gitgitgadget
PATCH v2 5/22 copy.h: move declarations for copy.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- builtin/bisect.c | 1 + builtin/clone.c | 1 + builtin/difftool.c | 1 + builtin/init-db.c | 1 + builtin/worktree.c | 1 + bundle-uri.c | 1 + cache.h | 6 ------ convert.c | 1 + copy.c | 1 + copy.h | 10 ++++++++++ pkt-line.c | 1 + refs/files-backend.c | 1 + rerere.c | 1 + sequencer.c | 1 + 14 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 copy.h
builtin/bisect.c +1 -0
@@ -1,5 +1,6 @@#include "builtin.h" #include "cache.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "hex.h"
builtin/clone.c +1 -0
@@ -13,6 +13,7 @@#include "abspath.h" #include "advice.h" #include "config.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "hex.h"
builtin/difftool.c +1 -0
@@ -15,6 +15,7 @@#include "cache.h" #include "abspath.h" #include "config.h" +#include "copy.h" #include "builtin.h" #include "run-command.h" #include "environment.h"
builtin/init-db.c +1 -0
@@ -6,6 +6,7 @@#include "cache.h" #include "abspath.h" #include "config.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "refs.h"
builtin/worktree.c +1 -0
@@ -2,6 +2,7 @@#include "abspath.h" #include "checkout.h" #include "config.h" +#include "copy.h" #include "builtin.h" #include "dir.h" #include "environment.h"
bundle-uri.c +1 -0
@@ -1,6 +1,7 @@#include "cache.h" #include "bundle-uri.h" #include "bundle.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "object-store.h"
cache.h +0 -6
@@ -593,12 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -#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); -/* base85 */ int decode_85 (char *dst,const char *line,int linelen);void encode_85 (char *buf,const unsigned char *data,int bytes);
convert.c +1 -0
@@ -2,6 +2,7 @@#include "advice.h" #include "config.h" #include "convert.h" +#include "copy.h" #include "gettext.h" #include "hex.h" #include "object-store.h"
copy.c +1 -0
@@ -1,4 +1,5 @@#include "cache.h" +#include "copy.h" #include "wrapper.h" int copy_fd (int ifd,int ofd)
copy.h new file +10 -0
@@ -0,0 +1,10 @@ +#ifndef COPY_H +#define COPY_H + +#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); + +#endif /* COPY_H */
pkt-line.c +1 -0
@@ -1,4 +1,5 @@#include "cache.h" +#include "copy.h" #include "pkt-line.h" #include "gettext.h" #include "hex.h"
refs/files-backend.c +1 -0
@@ -1,5 +1,6 @@#include "../cache.h" #include "../config.h" +#include "../copy.h" #include "../environment.h" #include "../gettext.h" #include "../hex.h"
rerere.c +1 -0
@@ -2,6 +2,7 @@#include "abspath.h" #include "alloc.h" #include "config.h" +#include "copy.h" #include "gettext.h" #include "hex.h" #include "lockfile.h"
sequencer.c +1 -0
@@ -3,6 +3,7 @@#include "advice.h" #include "alloc.h" #include "config.h" +#include "copy.h" #include "environment.h" #include "gettext.h" #include "hex.h"
Signature · 1 line
gitgitgadget
v2 cover Header cleanups (more splitting of cache.h and simplifying a few other deps)
In reply to Elijah Newren via GitGitGadgetChanges since v1:
* dropped the 3rd patch (it was pulled into the series this one depends upon to fix an issue in it)
* redid the old patch 14 (new patch 13); moved the parts of hash.h not depending on repository.h into hash-ll.h so that other headers and files could depend upon just that part. (Are people happy with the hash-ll.h name or have alternate suggestions?)
Maintainer notes: (1) This series is based on en/header-split-cache-h (now in next). (2) Although I've tweaked the series to minimize conflicts, there is a semantic conflict with sl/sparse-write-tree in next; to resolve, add an include of repository.h in builtin/write-tree.c.
This series continues to focus on splitting declarations from cache.h to separate headers. This series also untangles some dependencies between hash.h and repository.h, and between read-cache.c and tree.[ch], and cleans up a few other headers. At the end of this series the number of cache.h includes drops from 189 down to 149.
The series may appear to be long at first glance, but is filled with mostly repetitive and simple changes similar to those from earlier series. An overview:
* Patch 1: files depending on strbuf.h should be explicit about it
* Patches 2-13: move stuff out of cache.h into other more logical headers
* Patch 14-16: move functions between hash<->repository and read-cache<->tree to simplify dependencies
* Patch 17: remove includes of cache.h permitted by the previous 16 patches
* Patches 18-22: clean up now-unnecessary includes in other headers
* Patch 23: start enforcing git-compat-util.h is first include for reftable files as well.
And thanks once again to Dscho for gitgitgadget. Getting multiple platform testing + all the special tests (sparse, cocci, hdr-check, etc.) really helps clean out all the issues that would otherwise hit a series like this.
Elijah Newren (22):
treewide: be explicit about dependence on strbuf.h symlinks.h: move declarations for symlinks.c functions from cache.h packfile.h: move pack_window and pack_entry from cache.h server-info.h: move declarations for server-info.c functions from
cache.h
copy.h: move declarations for copy.c functions from cache.h base85.h: move declarations for base85.c functions from cache.h pkt-line.h: move declarations for pkt-line.c functions from cache.h match-trees.h: move declarations for match-trees.c functions from
cache.h
ws.h: move declarations for ws.c functions from cache.h versioncmp.h: move declarations for versioncmp.c functions from
cache.h
dir.h: move DTYPE defines from cache.h
tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h hash-ll.h: split out of hash.h to remove dependency on repository.h cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c cache,tree: move basic name compare functions from read-cache to tree
treewide: remove cache.h inclusion due to previous changes cache.h: remove unnecessary headers
fsmonitor: reduce includes of cache.h
commit.h: reduce unnecessary includes
object-store.h: reduce unnecessary includes
diff.h: reduce unnecessary includes
reftable: ensure git-compat-util.h is the first (indirect) include
add-interactive.c | 1 + alloc.c | 1 + apply.c | 3 + apply.h | 2 +- archive-zip.c | 2 +- archive.c | 2 + attr.c | 1 + base85.c | 3 +- base85.h | 7 + bloom.c | 1 + branch.c | 1 + builtin/apply.c | 1 + builtin/archive.c | 1 + builtin/bisect.c | 1 + builtin/bundle.c | 2 + builtin/check-attr.c | 1 + builtin/check-ignore.c | 1 + builtin/checkout-index.c | 1 + builtin/checkout.c | 1 + builtin/clean.c | 1 + builtin/clone.c | 2 + builtin/config.c | 1 + builtin/credential-cache.c | 1 + builtin/credential-store.c | 1 + builtin/diff-tree.c | 1 + builtin/diff.c | 1 + builtin/difftool.c | 1 + builtin/fetch.c | 1 + builtin/for-each-repo.c | 2 + builtin/gc.c | 1 + builtin/help.c | 1 + builtin/init-db.c | 2 + builtin/log.c | 1 + builtin/ls-remote.c | 1 + builtin/merge-index.c | 1 + builtin/merge-recursive.c | 2 + builtin/merge-tree.c | 1 + builtin/mv.c | 1 + builtin/push.c | 2 + builtin/read-tree.c | 1 + builtin/receive-pack.c | 1 + builtin/repack.c | 1 + builtin/rerere.c | 1 + builtin/rm.c | 2 + builtin/show-branch.c | 2 + builtin/show-index.c | 2 + builtin/update-index.c | 3 + builtin/update-ref.c | 2 + builtin/update-server-info.c | 1 + builtin/upload-archive.c | 1 + builtin/worktree.c | 2 + bundle-uri.c | 3 +- cache.h | 122 +------- checkout.c | 1 + checkout.h | 2 +- chunk-format.c | 1 + chunk-format.h | 2 +- color.c | 3 +- combine-diff.c | 3 +- commit-graph.c | 1 + commit.c | 1 + commit.h | 11 +- common-main.c | 4 +- compat/fsmonitor/fsm-health-darwin.c | 2 +- compat/fsmonitor/fsm-ipc-darwin.c | 4 +- compat/fsmonitor/fsm-ipc-win32.c | 1 + compat/fsmonitor/fsm-listen-darwin.c | 3 +- compat/mingw.c | 1 + compat/precompose_utf8.c | 1 + compat/win32/trace2_win32_process_info.c | 1 + config.c | 3 +- convert.c | 1 + convert.h | 2 +- copy.c | 4 +- copy.h | 10 + credential.c | 3 +- csum-file.c | 1 + csum-file.h | 2 +- daemon.c | 3 +- date.c | 3 +- diagnose.c | 2 +- diff-lib.c | 1 + diff.c | 2 + diff.h | 1 - diffcore.h | 2 +- dir.c | 2 + dir.h | 15 + editor.c | 1 + entry.c | 1 + environment.c | 3 +- exec-cmd.c | 1 + fetch-pack.c | 1 + fsck.c | 1 + fsmonitor--daemon.h | 1 - fsmonitor-ipc.c | 1 + gpg-interface.c | 2 + grep.c | 1 + hash-ll.h | 276 +++++++++++++++++++ hash-lookup.c | 1 + hash.h | 273 +----------------- hashmap.h | 2 +- hex.c | 1 + hex.h | 2 +- hook.c | 1 + http-push.c | 2 + khash.h | 1 + line-log.c | 1 + ll-merge.c | 3 +- log-tree.c | 1 + ls-refs.c | 1 + match-trees.c | 3 +- match-trees.h | 10 + merge-ort-wrappers.c | 2 + merge-ort.c | 1 + merge-ort.h | 2 +- merge-recursive.c | 2 + merge.c | 1 + midx.c | 2 +- negotiator/default.c | 1 + negotiator/skipping.c | 1 + notes-cache.c | 1 + notes-utils.c | 1 + object-file.c | 3 +- object-file.h | 2 + object-name.c | 2 + object-store.h | 8 +- object.h | 3 +- oidmap.c | 1 + oidtree.h | 2 +- pack-bitmap-write.c | 2 + packfile.c | 2 +- packfile.h | 16 +- parallel-checkout.c | 2 + parse-options-cb.c | 1 + parse-options.c | 1 + pathspec.c | 2 + pkt-line.c | 3 +- pkt-line.h | 2 + preload-index.c | 1 + progress.c | 1 + protocol-caps.c | 2 +- range-diff.c | 2 +- read-cache.c | 81 +----- rebase-interactive.c | 1 + ref-filter.c | 4 +- reflog.c | 2 + refs/debug.c | 1 + refs/files-backend.c | 2 + refs/packed-backend.c | 1 + refs/ref-cache.c | 2 + refs/ref-cache.h | 3 +- refspec.c | 2 + reftable/dump.c | 2 +- reftable/error.c | 1 + reftable/publicbasics.c | 2 +- reftable/system.h | 2 +- reftable/tree.c | 2 +- reftable/tree_test.c | 1 + rerere.c | 1 + reset.h | 2 +- resolve-undo.c | 1 + resolve-undo.h | 2 +- revision.h | 1 + run-command.c | 1 + send-pack.c | 1 + sequencer.c | 1 + server-info.c | 3 +- server-info.h | 7 + split-index.c | 2 + split-index.h | 2 +- strbuf.c | 1 + submodule-config.c | 1 + symlinks.c | 3 +- symlinks.h | 28 ++ t/helper/test-bloom.c | 1 + t/helper/test-cache-tree.c | 1 + t/helper/test-dump-cache-tree.c | 2 + t/helper/test-dump-fsmonitor.c | 1 + t/helper/test-dump-untracked-cache.c | 1 + t/helper/test-example-decorate.c | 1 + t/helper/test-fsmonitor-client.c | 1 + t/helper/test-lazy-init-name-hash.c | 1 + t/helper/test-match-trees.c | 3 +- t/helper/test-mergesort.c | 2 +- t/helper/test-oid-array.c | 2 +- t/helper/test-oidmap.c | 1 + t/helper/test-oidtree.c | 2 +- t/helper/test-parse-options.c | 2 +- t/helper/test-path-utils.c | 1 + t/helper/test-read-cache.c | 1 + t/helper/test-read-midx.c | 2 +- t/helper/test-reftable.c | 1 + t/helper/test-scrap-cache-tree.c | 1 + t/helper/test-string-list.c | 2 +- t/helper/test-submodule-config.c | 2 + t/helper/test-submodule-nested-repo-config.c | 1 + t/helper/test-submodule.c | 1 + t/helper/test-trace2.c | 1 + t/helper/test-write-cache.c | 1 + trace2.c | 1 + trace2/tr2_tgt_event.c | 1 + trace2/tr2_tgt_normal.c | 1 + trace2/tr2_tgt_perf.c | 1 + tree-diff.c | 16 +- tree-walk.c | 2 +- tree-walk.h | 3 +- tree.c | 72 ++++- tree.h | 11 +- unpack-trees.c | 1 + versioncmp.c | 3 +- versioncmp.h | 6 + wrapper.c | 5 +- ws.c | 6 +- ws.h | 33 +++ wt-status.c | 1 + xdiff-interface.h | 2 +- 216 files changed, 785 insertions(+), 545 deletions(-) create mode 100644 base85.h create mode 100644 copy.h create mode 100644 hash-ll.h create mode 100644 match-trees.h create mode 100644 server-info.h create mode 100644 symlinks.h create mode 100644 versioncmp.h create mode 100644 ws.h
base-commit: 331b094eec6d4c937af6e59df2a537112e4d8205
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1517%2Fnewren%2Fheader-cleanup-4-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1517/newren/header-cleanup-4-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1517
Range-diff vs v1:
1: 6d6b8099374 = 1: 1341ae8125e treewide: be explicit about dependence on strbuf.h
2: 9f9a3561295 = 2: 4a1f197e1e0 symlinks.h: move declarations for symlinks.c functions from cache.h
3: 003548de707 < -: ----------- protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
4: cf28ce0ee20 = 3: 99dfc5eb5dc packfile.h: move pack_window and pack_entry from cache.h
5: e22c8f242f3 = 4: b2ce7a17868 server-info.h: move declarations for server-info.c functions from cache.h
6: dbd08e60b58 = 5: 513ffafa597 copy.h: move declarations for copy.c functions from cache.h
7: 9d9672ebf52 = 6: c5831480855 base85.h: move declarations for base85.c functions from cache.h
8: e8efc37ecb2 = 7: 2d829783f30 pkt-line.h: move declarations for pkt-line.c functions from cache.h
9: 11c6cd13e2b = 8: 0a321c41c3f match-trees.h: move declarations for match-trees.c functions from cache.h
10: e600309df1f = 9: 951eff98a4d ws.h: move declarations for ws.c functions from cache.h
11: 07e5da241dc = 10: ff99d0eb207 versioncmp.h: move declarations for versioncmp.c functions from cache.h
12: 4c951a53737 = 11: 673a3ae4fe2 dir.h: move DTYPE defines from cache.h
13: dec377e17f5 = 12: 7b55f82e62e tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
14: 1c6989ae456 ! 13: d95f97f5e90 hash.h, repository.h: reverse the order of these dependencies
@@ Metadata
Author: Elijah Newren <[email protected]>
## Commit message ##
- hash.h, repository.h: reverse the order of these dependencies
+ hash-ll.h: split out of hash.h to remove dependency on repository.h
- Previously, hash.h depended upon and included repository.h, due to
- the definition and use of the_hash_algo (defined as
- the_repository->hash_algo). Move this #define, and the associated
- inline functions that depend upon it, from hash.h to repository.h.
- Due to that movement, reverse the dependencies so repository.h includes
- hash.h.
+ hash.h depends upon and includes repository.h, due to the definition and
+ use of the_hash_algo (defined as the_repository->hash_algo). However,
+ most headers trying to include hash.h are only interested in the layout
+ of the structs like object_id. Move the parts of hash.h that do not
+ depend upon repository.h into a new file hash-ll.h (the "low level"
+ parts of hash.h), and adjust other files to use this new header where
+ the convenience inline functions aren't needed.
This allows hash.h and object.h to be fairly small, minimal headers. It
also exposes a lot of hidden dependencies on both path.h (which was
brought in by repository.h) and repository.h (which was previously
- implicitly brought in by object.h).
+ implicitly brought in by object.h), so also adjust other files to be
+ more explicit about what they depend upon.
Signed-off-by: Elijah Newren <[email protected]>
@@ alloc.c
#include "alloc.h"
+ ## apply.h ##
+@@
+ #ifndef APPLY_H
+ #define APPLY_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+ #include "lockfile.h"
+ #include "string-list.h"
+ #include "strmap.h"
+
## branch.c ##
@@
#include "refs.h"
@@ builtin/clean.c
## builtin/config.c ##
@@
+ #include "ident.h"
#include "parse-options.h"
#include "urlmatch.h"
++#include "path.h"
#include "quote.h"
-+#include "repository.h"
#include "setup.h"
#include "worktree.h"
- #include "wrapper.h"
## builtin/credential-cache.c ##
@@
#include "builtin.h"
#include "gettext.h"
#include "parse-options.h"
-+#include "repository.h"
++#include "path.h"
#include "wrapper.h"
#include "write-or-die.h"
@@ builtin/merge-index.c
## builtin/merge-recursive.c ##
@@
+ #include "advice.h"
+ #include "commit.h"
+ #include "gettext.h"
++#include "hash.h"
#include "tag.h"
#include "merge-recursive.h"
#include "object-name.h"
@@ builtin/rerere.c
## builtin/rm.c ##
@@
+ #include "dir.h"
+ #include "cache-tree.h"
+ #include "gettext.h"
++#include "hash.h"
#include "tree-walk.h"
#include "object-name.h"
#include "parse-options.h"
@@ builtin/rm.c
#include "submodule.h"
## builtin/show-branch.c ##
+@@
+ #include "config.h"
+ #include "environment.h"
+ #include "gettext.h"
++#include "hash.h"
+ #include "hex.h"
+ #include "pretty.h"
+ #include "refs.h"
@@
#include "strvec.h"
#include "object-name.h"
@@ builtin/show-branch.c
## builtin/show-index.c ##
@@
+ #include "builtin.h"
+ #include "cache.h"
+ #include "gettext.h"
++#include "hash.h"
#include "hex.h"
#include "pack.h"
#include "parse-options.h"
@@ builtin/show-index.c
"git show-index [--object-format=<hash-algorithm>]",
## builtin/update-index.c ##
+@@
+ #include "config.h"
+ #include "environment.h"
+ #include "gettext.h"
++#include "hash.h"
+ #include "hex.h"
+ #include "lockfile.h"
+ #include "quote.h"
@@
#include "parse-options.h"
#include "pathspec.h"
@@ builtin/update-index.c
## builtin/update-ref.c ##
@@
+ #include "cache.h"
+ #include "config.h"
+ #include "gettext.h"
++#include "hash.h"
+ #include "refs.h"
+ #include "builtin.h"
#include "object-name.h"
#include "parse-options.h"
#include "quote.h"
@@ checkout.c
#include "config.h"
#include "strbuf.h"
+ ## checkout.h ##
+@@
+ #ifndef CHECKOUT_H
+ #define CHECKOUT_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+
+ /*
+ * Check if the branch name uniquely matches a branch name on a remote
+
## chunk-format.c ##
@@
#include "chunk-format.h"
#include "csum-file.h"
#include "gettext.h"
-+#include "repository.h"
++#include "hash.h"
#include "trace2.h"
/*
+ ## chunk-format.h ##
+@@
+ #ifndef CHUNK_FORMAT_H
+ #define CHUNK_FORMAT_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+
+ struct hashfile;
+ struct chunkfile;
+
## common-main.c ##
@@
#include "exec-cmd.h"
@@ compat/win32/trace2_win32_process_info.c
#include "lazyload.h"
#include <Psapi.h>
+ ## convert.h ##
+@@
+ #ifndef CONVERT_H
+ #define CONVERT_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+ #include "string-list.h"
+
+ struct index_state;
+
## copy.c ##
@@
#include "cache.h"
@@ csum-file.c
#include "git-compat-util.h"
#include "progress.h"
#include "csum-file.h"
-+#include "repository.h"
++#include "hash.h"
#include "wrapper.h"
static void verify_buffer_or_die(struct hashfile *f,
+ ## csum-file.h ##
+@@
+ #ifndef CSUM_FILE_H
+ #define CSUM_FILE_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+ #include "write-or-die.h"
+
+ struct progress;
+
## daemon.c ##
@@
#include "alloc.h"
@@ daemon.c
#include "protocol.h"
#include "run-command.h"
+ ## diffcore.h ##
+@@
+ #ifndef DIFFCORE_H
+ #define DIFFCORE_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+
+ struct diff_options;
+ struct mem_pool;
+
## editor.c ##
@@
#include "environment.h"
@@ gpg-interface.c
#include "tempfile.h"
#include "alias.h"
+ ## hash-ll.h (new) ##
+@@
++#ifndef HASH_LL_H
++#define HASH_LL_H
++
++#if defined(SHA1_APPLE)
++#include <CommonCrypto/CommonDigest.h>
++#elif defined(SHA1_OPENSSL)
++#include <openssl/sha.h>
++#elif defined(SHA1_DC)
++#include "sha1dc_git.h"
++#else /* SHA1_BLK */
++#include "block-sha1/sha1.h"
++#endif
++
++#if defined(SHA256_NETTLE)
++#include "sha256/nettle.h"
++#elif defined(SHA256_GCRYPT)
++#define SHA256_NEEDS_CLONE_HELPER
++#include "sha256/gcrypt.h"
++#elif defined(SHA256_OPENSSL)
++#include <openssl/sha.h>
++#else
++#include "sha256/block/sha256.h"
++#endif
++
++#ifndef platform_SHA_CTX
++/*
++ * platform's underlying implementation of SHA-1; could be OpenSSL,
++ * blk_SHA, Apple CommonCrypto, etc... Note that the relevant
++ * SHA-1 header may have already defined platform_SHA_CTX for our
++ * own implementations like block-sha1, so we list
++ * the default for OpenSSL compatible SHA-1 implementations here.
++ */
++#define platform_SHA_CTX SHA_CTX
++#define platform_SHA1_Init SHA1_Init
++#define platform_SHA1_Update SHA1_Update
++#define platform_SHA1_Final SHA1_Final
++#endif
++
++#define git_SHA_CTX platform_SHA_CTX
++#define git_SHA1_Init platform_SHA1_Init
++#define git_SHA1_Update platform_SHA1_Update
++#define git_SHA1_Final platform_SHA1_Final
++
++#ifndef platform_SHA256_CTX
++#define platform_SHA256_CTX SHA256_CTX
++#define platform_SHA256_Init SHA256_Init
++#define platform_SHA256_Update SHA256_Update
++#define platform_SHA256_Final SHA256_Final
++#endif
++
++#define git_SHA256_CTX platform_SHA256_CTX
++#define git_SHA256_Init platform_SHA256_Init
++#define git_SHA256_Update platform_SHA256_Update
++#define git_SHA256_Final platform_SHA256_Final
++
++#ifdef platform_SHA256_Clone
++#define git_SHA256_Clone platform_SHA256_Clone
++#endif
++
++#ifdef SHA1_MAX_BLOCK_SIZE
++#include "compat/sha1-chunked.h"
++#undef git_SHA1_Update
++#define git_SHA1_Update git_SHA1_Update_Chunked
++#endif
++
++static inline void git_SHA1_Clone(git_SHA_CTX *dst, const git_SHA_CTX *src)
++{
++ memcpy(dst, src, sizeof(*dst));
++}
++
++#ifndef SHA256_NEEDS_CLONE_HELPER
++static inline void git_SHA256_Clone(git_SHA256_CTX *dst, const git_SHA256_CTX *src)
++{
++ memcpy(dst, src, sizeof(*dst));
++}
++#endif
++
++/*
++ * Note that these constants are suitable for indexing the hash_algos array and
++ * comparing against each other, but are otherwise arbitrary, so they should not
++ * be exposed to the user or serialized to disk. To know whether a
++ * git_hash_algo struct points to some usable hash function, test the format_id
++ * field for being non-zero. Use the name field for user-visible situations and
++ * the format_id field for fixed-length fields on disk.
++ */
++/* An unknown hash function. */
++#define GIT_HASH_UNKNOWN 0
++/* SHA-1 */
++#define GIT_HASH_SHA1 1
++/* SHA-256 */
++#define GIT_HASH_SHA256 2
++/* Number of algorithms supported (including unknown). */
++#define GIT_HASH_NALGOS (GIT_HASH_SHA256 + 1)
++
++/* "sha1", big-endian */
++#define GIT_SHA1_FORMAT_ID 0x73686131
++
++/* The length in bytes and in hex digits of an object name (SHA-1 value). */
++#define GIT_SHA1_RAWSZ 20
++#define GIT_SHA1_HEXSZ (2 * GIT_SHA1_RAWSZ)
++/* The block size of SHA-1. */
++#define GIT_SHA1_BLKSZ 64
++
++/* "s256", big-endian */
++#define GIT_SHA256_FORMAT_ID 0x73323536
++
++/* The length in bytes and in hex digits of an object name (SHA-256 value). */
++#define GIT_SHA256_RAWSZ 32
++#define GIT_SHA256_HEXSZ (2 * GIT_SHA256_RAWSZ)
++/* The block size of SHA-256. */
++#define GIT_SHA256_BLKSZ 64
++
++/* The length in byte and in hex digits of the largest possible hash value. */
++#define GIT_MAX_RAWSZ GIT_SHA256_RAWSZ
++#define GIT_MAX_HEXSZ GIT_SHA256_HEXSZ
++/* The largest possible block size for any supported hash. */
++#define GIT_MAX_BLKSZ GIT_SHA256_BLKSZ
++
++struct object_id {
++ unsigned char hash[GIT_MAX_RAWSZ];
++ int algo; /* XXX requires 4-byte alignment */
++};
++
++#define GET_OID_QUIETLY 01
++#define GET_OID_COMMIT 02
++#define GET_OID_COMMITTISH 04
++#define GET_OID_TREE 010
++#define GET_OID_TREEISH 020
++#define GET_OID_BLOB 040
++#define GET_OID_FOLLOW_SYMLINKS 0100
++#define GET_OID_RECORD_PATH 0200
++#define GET_OID_ONLY_TO_DIE 04000
++#define GET_OID_REQUIRE_PATH 010000
++
++#define GET_OID_DISAMBIGUATORS \
++ (GET_OID_COMMIT | GET_OID_COMMITTISH | \
++ GET_OID_TREE | GET_OID_TREEISH | \
++ GET_OID_BLOB)
++
++enum get_oid_result {
++ FOUND = 0,
++ MISSING_OBJECT = -1, /* The requested object is missing */
++ SHORT_NAME_AMBIGUOUS = -2,
++ /* The following only apply when symlinks are followed */
++ DANGLING_SYMLINK = -4, /*
++ * The initial symlink is there, but
++ * (transitively) points to a missing
++ * in-tree file
++ */
++ SYMLINK_LOOP = -5,
++ NOT_DIR = -6, /*
++ * Somewhere along the symlink chain, a path is
++ * requested which contains a file as a
++ * non-final element.
++ */
++};
++
++/* A suitably aligned type for stack allocations of hash contexts. */
++union git_hash_ctx {
++ git_SHA_CTX sha1;
++ git_SHA256_CTX sha256;
++};
++typedef union git_hash_ctx git_hash_ctx;
++
++typedef void (*git_hash_init_fn)(git_hash_ctx *ctx);
++typedef void (*git_hash_clone_fn)(git_hash_ctx *dst, const git_hash_ctx *src);
++typedef void (*git_hash_update_fn)(git_hash_ctx *ctx, const void *in, size_t len);
++typedef void (*git_hash_final_fn)(unsigned char *hash, git_hash_ctx *ctx);
++typedef void (*git_hash_final_oid_fn)(struct object_id *oid, git_hash_ctx *ctx);
++
++struct git_hash_algo {
++ /*
++ * The name of the algorithm, as appears in the config file and in
++ * messages.
++ */
++ const char *name;
++
++ /* A four-byte version identifier, used in pack indices. */
++ uint32_t format_id;
++
++ /* The length of the hash in binary. */
++ size_t rawsz;
++
++ /* The length of the hash in hex characters. */
++ size_t hexsz;
++
++ /* The block size of the hash. */
++ size_t blksz;
++
++ /* The hash initialization function. */
++ git_hash_init_fn init_fn;
++
++ /* The hash context cloning function. */
++ git_hash_clone_fn clone_fn;
++
++ /* The hash update function. */
++ git_hash_update_fn update_fn;
++
++ /* The hash finalization function. */
++ git_hash_final_fn final_fn;
++
++ /* The hash finalization function for object IDs. */
++ git_hash_final_oid_fn final_oid_fn;
++
++ /* The OID of the empty tree. */
++ const struct object_id *empty_tree;
++
++ /* The OID of the empty blob. */
++ const struct object_id *empty_blob;
++
++ /* The all-zeros OID. */
++ const struct object_id *null_oid;
++};
++extern const struct git_hash_algo hash_algos[GIT_HASH_NALGOS];
++
++/*
++ * Return a GIT_HASH_* constant based on the name. Returns GIT_HASH_UNKNOWN if
++ * the name doesn't match a known algorithm.
++ */
++int hash_algo_by_name(const char *name);
++/* Identical, except based on the format ID. */
++int hash_algo_by_id(uint32_t format_id);
++/* Identical, except based on the length. */
++int hash_algo_by_length(int len);
++/* Identical, except for a pointer to struct git_hash_algo. */
++static inline int hash_algo_by_ptr(const struct git_hash_algo *p)
++{
++ return p - hash_algos;
++}
++
++const struct object_id *null_oid(void);
++
++static inline int hashcmp_algop(const unsigned char *sha1, const unsigned char *sha2, const struct git_hash_algo *algop)
++{
++ /*
++ * Teach the compiler that there are only two possibilities of hash size
++ * here, so that it can optimize for this case as much as possible.
++ */
++ if (algop->rawsz == GIT_MAX_RAWSZ)
++ return memcmp(sha1, sha2, GIT_MAX_RAWSZ);
++ return memcmp(sha1, sha2, GIT_SHA1_RAWSZ);
++}
++
++static inline int hasheq_algop(const unsigned char *sha1, const unsigned char *sha2, const struct git_hash_algo *algop)
++{
++ /*
++ * We write this here instead of deferring to hashcmp so that the
++ * compiler can properly inline it and avoid calling memcmp.
++ */
++ if (algop->rawsz == GIT_MAX_RAWSZ)
++ return !memcmp(sha1, sha2, GIT_MAX_RAWSZ);
++ return !memcmp(sha1, sha2, GIT_SHA1_RAWSZ);
++}
++
++static inline void oidcpy(struct object_id *dst, const struct object_id *src)
++{
++ memcpy(dst->hash, src->hash, GIT_MAX_RAWSZ);
++ dst->algo = src->algo;
++}
++
++static inline struct object_id *oiddup(const struct object_id *src)
++{
++ struct object_id *dst = xmalloc(sizeof(struct object_id));
++ oidcpy(dst, src);
++ return dst;
++}
++
++static inline void oid_set_algo(struct object_id *oid, const struct git_hash_algo *algop)
++{
++ oid->algo = hash_algo_by_ptr(algop);
++}
++
++const char *empty_tree_oid_hex(void);
++const char *empty_blob_oid_hex(void);
++
++#endif
+
## hash-lookup.c ##
@@
#include "cache.h"
++#include "hash.h"
#include "hash-lookup.h"
-+#include "repository.h"
static uint32_t take2(const struct object_id *oid, size_t ofs)
- {
## hash.h ##
@@
#ifndef HASH_H
#define HASH_H
--#include "repository.h"
++#include "hash-ll.h"
+ #include "repository.h"
+
+-#if defined(SHA1_APPLE)
+-#include <CommonCrypto/CommonDigest.h>
+-#elif defined(SHA1_OPENSSL)
+-#include <openssl/sha.h>
+-#elif defined(SHA1_DC)
+-#include "sha1dc_git.h"
+-#else /* SHA1_BLK */
+-#include "block-sha1/sha1.h"
+-#endif
-
- #if defined(SHA1_APPLE)
- #include <CommonCrypto/CommonDigest.h>
- #elif defined(SHA1_OPENSSL)
-@@ hash.h: static inline int hash_algo_by_ptr(const struct git_hash_algo *p)
- return p - hash_algos;
- }
-
--#define the_hash_algo the_repository->hash_algo
+-#if defined(SHA256_NETTLE)
+-#include "sha256/nettle.h"
+-#elif defined(SHA256_GCRYPT)
+-#define SHA256_NEEDS_CLONE_HELPER
+-#include "sha256/gcrypt.h"
+-#elif defined(SHA256_OPENSSL)
+-#include <openssl/sha.h>
+-#else
+-#include "sha256/block/sha256.h"
+-#endif
-
- const struct object_id *null_oid(void);
-
- static inline int hashcmp_algop(const unsigned char *sha1, const unsigned char *sha2, const struct git_hash_algo *algop)
-@@ hash.h: static inline int hashcmp_algop(const unsigned char *sha1, const unsigned char *
- return memcmp(sha1, sha2, GIT_SHA1_RAWSZ);
- }
-
--static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2)
--{
-- return hashcmp_algop(sha1, sha2, the_hash_algo);
--}
+-#ifndef platform_SHA_CTX
+-/*
+- * platform's underlying implementation of SHA-1; could be OpenSSL,
+- * blk_SHA, Apple CommonCrypto, etc... Note that the relevant
+- * SHA-1 header may have already defined platform_SHA_CTX for our
+- * own implementations like block-sha1, so we list
+- * the default for OpenSSL compatible SHA-1 implementations here.
+- */
+-#define platform_SHA_CTX SHA_CTX
+-#define platform_SHA1_Init SHA1_Init
+-#define platform_SHA1_Update SHA1_Update
+-#define platform_SHA1_Final SHA1_Final
+-#endif
-
--static inline int oidcmp(const struct object_id *oid1, const struct object_id *oid2)
--{
-- const struct git_hash_algo *algop;
-- if (!oid1->algo)
-- algop = the_hash_algo;
-- else
-- algop = &hash_algos[oid1->algo];
-- return hashcmp_algop(oid1->hash, oid2->hash, algop);
--}
+-#define git_SHA_CTX platform_SHA_CTX
+-#define git_SHA1_Init platform_SHA1_Init
+-#define git_SHA1_Update platform_SHA1_Update
+-#define git_SHA1_Final platform_SHA1_Final
-
- static inline int hasheq_algop(const unsigned char *sha1, const unsigned char *sha2, const struct git_hash_algo *algop)
- {
- /*
-@@ hash.h: static inline int hasheq_algop(const unsigned char *sha1, const unsigned char *s
- return !memcmp(sha1, sha2, GIT_SHA1_RAWSZ);
- }
-
--static inline int hasheq(const unsigned char *sha1, const unsigned char *sha2)
+-#ifndef platform_SHA256_CTX
+-#define platform_SHA256_CTX SHA256_CTX
+-#define platform_SHA256_Init SHA256_Init
+-#define platform_SHA256_Update SHA256_Update
+-#define platform_SHA256_Final SHA256_Final
+-#endif
+-
+-#define git_SHA256_CTX platform_SHA256_CTX
+-#define git_SHA256_Init platform_SHA256_Init
+-#define git_SHA256_Update platform_SHA256_Update
+-#define git_SHA256_Final platform_SHA256_Final
+-
+-#ifdef platform_SHA256_Clone
+-#define git_SHA256_Clone platform_SHA256_Clone
+-#endif
+-
+-#ifdef SHA1_MAX_BLOCK_SIZE
+-#include "compat/sha1-chunked.h"
+-#undef git_SHA1_Update
+-#define git_SHA1_Update git_SHA1_Update_Chunked
+-#endif
+-
+-static inline void git_SHA1_Clone(git_SHA_CTX *dst, const git_SHA_CTX *src)
-{
-- return hasheq_algop(sha1, sha2, the_hash_algo);
+- memcpy(dst, src, sizeof(*dst));
-}
-
--static inline int oideq(const struct object_id *oid1, const struct object_id *oid2)
+-#ifndef SHA256_NEEDS_CLONE_HELPER
+-static inline void git_SHA256_Clone(git_SHA256_CTX *dst, const git_SHA256_CTX *src)
-{
-- const struct git_hash_algo *algop;
-- if (!oid1->algo)
-- algop = the_hash_algo;
-- else
-- algop = &hash_algos[oid1->algo];
-- return hasheq_algop(oid1->hash, oid2->hash, algop);
+- memcpy(dst, src, sizeof(*dst));
-}
+-#endif
+-
+-/*
+- * Note that these constants are suitable for indexing the hash_algos array and
+- * comparing against each other, but are otherwise arbitrary, so they should not
+- * be exposed to the user or serialized to disk. To know whether a
+- * git_hash_algo struct points to some usable hash function, test the format_id
+- * field for being non-zero. Use the name field for user-visible situations and
+- * the format_id field for fixed-length fields on disk.
+- */
+-/* An unknown hash function. */
+-#define GIT_HASH_UNKNOWN 0
+-/* SHA-1 */
+-#define GIT_HASH_SHA1 1
+-/* SHA-256 */
+-#define GIT_HASH_SHA256 2
+-/* Number of algorithms supported (including unknown). */
+-#define GIT_HASH_NALGOS (GIT_HASH_SHA256 + 1)
+-
+-/* "sha1", big-endian */
+-#define GIT_SHA1_FORMAT_ID 0x73686131
+-
+-/* The length in bytes and in hex digits of an object name (SHA-1 value). */
+-#define GIT_SHA1_RAWSZ 20
+-#define GIT_SHA1_HEXSZ (2 * GIT_SHA1_RAWSZ)
+-/* The block size of SHA-1. */
+-#define GIT_SHA1_BLKSZ 64
+-
+-/* "s256", big-endian */
+-#define GIT_SHA256_FORMAT_ID 0x73323536
+-
+-/* The length in bytes and in hex digits of an object name (SHA-256 value). */
+-#define GIT_SHA256_RAWSZ 32
+-#define GIT_SHA256_HEXSZ (2 * GIT_SHA256_RAWSZ)
+-/* The block size of SHA-256. */
+-#define GIT_SHA256_BLKSZ 64
+-
+-/* The length in byte and in hex digits of the largest possible hash value. */
+-#define GIT_MAX_RAWSZ GIT_SHA256_RAWSZ
+-#define GIT_MAX_HEXSZ GIT_SHA256_HEXSZ
+-/* The largest possible block size for any supported hash. */
+-#define GIT_MAX_BLKSZ GIT_SHA256_BLKSZ
+-
+-struct object_id {
+- unsigned char hash[GIT_MAX_RAWSZ];
+- int algo; /* XXX requires 4-byte alignment */
+-};
-
--static inline int is_null_oid(const struct object_id *oid)
+-#define GET_OID_QUIETLY 01
+-#define GET_OID_COMMIT 02
+-#define GET_OID_COMMITTISH 04
+-#define GET_OID_TREE 010
+-#define GET_OID_TREEISH 020
+-#define GET_OID_BLOB 040
+-#define GET_OID_FOLLOW_SYMLINKS 0100
+-#define GET_OID_RECORD_PATH 0200
+-#define GET_OID_ONLY_TO_DIE 04000
+-#define GET_OID_REQUIRE_PATH 010000
+-
+-#define GET_OID_DISAMBIGUATORS \
+- (GET_OID_COMMIT | GET_OID_COMMITTISH | \
+- GET_OID_TREE | GET_OID_TREEISH | \
+- GET_OID_BLOB)
+-
+-enum get_oid_result {
+- FOUND = 0,
+- MISSING_OBJECT = -1, /* The requested object is missing */
+- SHORT_NAME_AMBIGUOUS = -2,
+- /* The following only apply when symlinks are followed */
+- DANGLING_SYMLINK = -4, /*
+- * The initial symlink is there, but
+- * (transitively) points to a missing
+- * in-tree file
+- */
+- SYMLINK_LOOP = -5,
+- NOT_DIR = -6, /*
+- * Somewhere along the symlink chain, a path is
+- * requested which contains a file as a
+- * non-final element.
+- */
+-};
+-
+-/* A suitably aligned type for stack allocations of hash contexts. */
+-union git_hash_ctx {
+- git_SHA_CTX sha1;
+- git_SHA256_CTX sha256;
+-};
+-typedef union git_hash_ctx git_hash_ctx;
+-
+-typedef void (*git_hash_init_fn)(git_hash_ctx *ctx);
+-typedef void (*git_hash_clone_fn)(git_hash_ctx *dst, const git_hash_ctx *src);
+-typedef void (*git_hash_update_fn)(git_hash_ctx *ctx, const void *in, size_t len);
+-typedef void (*git_hash_final_fn)(unsigned char *hash, git_hash_ctx *ctx);
+-typedef void (*git_hash_final_oid_fn)(struct object_id *oid, git_hash_ctx *ctx);
+-
+-struct git_hash_algo {
+- /*
+- * The name of the algorithm, as appears in the config file and in
+- * messages.
+- */
+- const char *name;
+-
+- /* A four-byte version identifier, used in pack indices. */
+- uint32_t format_id;
+-
+- /* The length of the hash in binary. */
+- size_t rawsz;
+-
+- /* The length of the hash in hex characters. */
+- size_t hexsz;
+-
+- /* The block size of the hash. */
+- size_t blksz;
+-
+- /* The hash initialization function. */
+- git_hash_init_fn init_fn;
+-
+- /* The hash context cloning function. */
+- git_hash_clone_fn clone_fn;
+-
+- /* The hash update function. */
+- git_hash_update_fn update_fn;
+-
+- /* The hash finalization function. */
+- git_hash_final_fn final_fn;
+-
+- /* The hash finalization function for object IDs. */
+- git_hash_final_oid_fn final_oid_fn;
+-
+- /* The OID of the empty tree. */
+- const struct object_id *empty_tree;
+-
+- /* The OID of the empty blob. */
+- const struct object_id *empty_blob;
+-
+- /* The all-zeros OID. */
+- const struct object_id *null_oid;
+-};
+-extern const struct git_hash_algo hash_algos[GIT_HASH_NALGOS];
+-
+-/*
+- * Return a GIT_HASH_* constant based on the name. Returns GIT_HASH_UNKNOWN if
+- * the name doesn't match a known algorithm.
+- */
+-int hash_algo_by_name(const char *name);
+-/* Identical, except based on the format ID. */
+-int hash_algo_by_id(uint32_t format_id);
+-/* Identical, except based on the length. */
+-int hash_algo_by_length(int len);
+-/* Identical, except for a pointer to struct git_hash_algo. */
+-static inline int hash_algo_by_ptr(const struct git_hash_algo *p)
-{
-- return oideq(oid, null_oid());
+- return p - hash_algos;
-}
-
--static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src)
+ #define the_hash_algo the_repository->hash_algo
+
+-const struct object_id *null_oid(void);
+-
+-static inline int hashcmp_algop(const unsigned char *sha1, const unsigned char *sha2, const struct git_hash_algo *algop)
-{
-- memcpy(sha_dst, sha_src, the_hash_algo->rawsz);
+- /*
+- * Teach the compiler that there are only two possibilities of hash size
+- * here, so that it can optimize for this case as much as possible.
+- */
+- if (algop->rawsz == GIT_MAX_RAWSZ)
+- return memcmp(sha1, sha2, GIT_MAX_RAWSZ);
+- return memcmp(sha1, sha2, GIT_SHA1_RAWSZ);
-}
-
- static inline void oidcpy(struct object_id *dst, const struct object_id *src)
+ static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2)
{
- memcpy(dst->hash, src->hash, GIT_MAX_RAWSZ);
- dst->algo = src->algo;
+ return hashcmp_algop(sha1, sha2, the_hash_algo);
+@@ hash.h: static inline int oidcmp(const struct object_id *oid1, const struct object_id *o
+ return hashcmp_algop(oid1->hash, oid2->hash, algop);
}
--/* Like oidcpy() but zero-pads the unused bytes in dst's hash array. */
--static inline void oidcpy_with_padding(struct object_id *dst,
-- const struct object_id *src)
+-static inline int hasheq_algop(const unsigned char *sha1, const unsigned char *sha2, const struct git_hash_algo *algop)
-{
-- size_t hashsz;
--
-- if (!src->algo)
-- hashsz = the_hash_algo->rawsz;
-- else
-- hashsz = hash_algos[src->algo].rawsz;
--
-- memcpy(dst->hash, src->hash, hashsz);
-- memset(dst->hash + hashsz, 0, GIT_MAX_RAWSZ - hashsz);
-- dst->algo = src->algo;
+- /*
+- * We write this here instead of deferring to hashcmp so that the
+- * compiler can properly inline it and avoid calling memcmp.
+- */
+- if (algop->rawsz == GIT_MAX_RAWSZ)
+- return !memcmp(sha1, sha2, GIT_MAX_RAWSZ);
+- return !memcmp(sha1, sha2, GIT_SHA1_RAWSZ);
-}
-
- static inline struct object_id *oiddup(const struct object_id *src)
+ static inline int hasheq(const unsigned char *sha1, const unsigned char *sha2)
{
- struct object_id *dst = xmalloc(sizeof(struct object_id));
-@@ hash.h: static inline struct object_id *oiddup(const struct object_id *src)
- return dst;
+ return hasheq_algop(sha1, sha2, the_hash_algo);
+@@ hash.h: static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src)
+ memcpy(sha_dst, sha_src, the_hash_algo->rawsz);
}
--static inline void hashclr(unsigned char *hash)
--{
-- memset(hash, 0, the_hash_algo->rawsz);
--}
--
--static inline void oidclr(struct object_id *oid)
--{
-- memset(oid->hash, 0, GIT_MAX_RAWSZ);
-- oid->algo = hash_algo_by_ptr(the_hash_algo);
--}
--
--static inline void oidread(struct object_id *oid, const unsigned char *hash)
--{
-- memcpy(oid->hash, hash, the_hash_algo->rawsz);
-- oid->algo = hash_algo_by_ptr(the_hash_algo);
--}
--
--static inline int is_empty_blob_sha1(const unsigned char *sha1)
+-static inline void oidcpy(struct object_id *dst, const struct object_id *src)
-{
-- return hasheq(sha1, the_hash_algo->empty_blob->hash);
+- memcpy(dst->hash, src->hash, GIT_MAX_RAWSZ);
+- dst->algo = src->algo;
-}
-
--static inline int is_empty_blob_oid(const struct object_id *oid)
+ /* Like oidcpy() but zero-pads the unused bytes in dst's hash array. */
+ static inline void oidcpy_with_padding(struct object_id *dst,
+ const struct object_id *src)
+@@ hash.h: static inline void oidcpy_with_padding(struct object_id *dst,
+ dst->algo = src->algo;
+ }
+
+-static inline struct object_id *oiddup(const struct object_id *src)
-{
-- return oideq(oid, the_hash_algo->empty_blob);
+- struct object_id *dst = xmalloc(sizeof(struct object_id));
+- oidcpy(dst, src);
+- return dst;
-}
-
--static inline int is_empty_tree_sha1(const unsigned char *sha1)
+ static inline void hashclr(unsigned char *hash)
+ {
+ memset(hash, 0, the_hash_algo->rawsz);
+@@ hash.h: static inline int is_empty_tree_oid(const struct object_id *oid)
+ return oideq(oid, the_hash_algo->empty_tree);
+ }
+
+-static inline void oid_set_algo(struct object_id *oid, const struct git_hash_algo *algop)
-{
-- return hasheq(sha1, the_hash_algo->empty_tree->hash);
+- oid->algo = hash_algo_by_ptr(algop);
-}
-
--static inline int is_empty_tree_oid(const struct object_id *oid)
--{
-- return oideq(oid, the_hash_algo->empty_tree);
--}
+-const char *empty_tree_oid_hex(void);
+-const char *empty_blob_oid_hex(void);
-
- static inline void oid_set_algo(struct object_id *oid, const struct git_hash_algo *algop)
- {
- oid->algo = hash_algo_by_ptr(algop);
+ #endif
+
+ ## hashmap.h ##
+@@
+ #ifndef HASHMAP_H
+ #define HASHMAP_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+
+ /*
+ * Generic implementation of hash-based key-value mappings.
## hex.c ##
@@
#include "git-compat-util.h"
++#include "hash.h"
#include "hex.h"
-+#include "repository.h"
const signed char hexval_table[256] = {
- -1, -1, -1, -1, -1, -1, -1, -1, /* 00-07 */
+
+ ## hex.h ##
+@@
+ #ifndef HEX_H
+ #define HEX_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+
+ extern const signed char hexval_table[256];
+ static inline unsigned int hexval(unsigned char c)
## hook.c ##
@@
@@ khash.h
#define __AC_KHASH_H
#include "hashmap.h"
-+#include "repository.h"
++#include "hash.h"
#define AC_VERSION_KHASH_H "0.2.8"
+ ## ls-refs.c ##
+@@
+ #include "git-compat-util.h"
+ #include "environment.h"
+ #include "gettext.h"
++#include "hash.h"
+ #include "hex.h"
+ #include "repository.h"
+ #include "refs.h"
+
## merge-ort-wrappers.c ##
@@
+ #include "cache.h"
#include "gettext.h"
++#include "hash.h"
#include "merge-ort.h"
#include "merge-ort-wrappers.h"
-+#include "repository.h"
- #include "commit.h"
+
+ ## merge-ort.h ##
+@@
+ #define MERGE_ORT_H
+
+ #include "merge-recursive.h"
+-#include "hash.h"
++#include "hash-ll.h"
+ struct commit;
+ struct tree;
## negotiator/default.c ##
@@
@@ object-file.h
## object.h ##
@@
- #include "hash.h"
+ #ifndef OBJECT_H
+ #define OBJECT_H
+
+-#include "hash.h"
++#include "hash-ll.h"
struct buffer_slab;
+struct repository;
@@ object.h
struct parsed_object_pool {
struct object **obj_hash;
- ## oid-array.h ##
-@@
- #define OID_ARRAY_H
-
- #include "hash.h"
-+#include "repository.h"
-
- /**
- * The API provides storage and manipulation of sets of object identifiers.
-
## oidmap.c ##
@@
#include "git-compat-util.h"
++#include "hash.h"
#include "oidmap.h"
-+#include "repository.h"
static int oidmap_neq(const void *hashmap_cmp_fn_data UNUSED,
- const struct hashmap_entry *e1,
- ## oidtree.c ##
+ ## oidtree.h ##
@@
- #include "oidtree.h"
- #include "alloc.h"
- #include "hash.h"
-+#include "repository.h"
+ #define OIDTREE_H
+
+ #include "cbtree.h"
+-#include "hash.h"
++#include "hash-ll.h"
+ #include "mem-pool.h"
- struct oidtree_iter_data {
- oidtree_iter fn;
+ struct oidtree {
## parallel-checkout.c ##
@@
+ #include "config.h"
+ #include "entry.h"
+ #include "gettext.h"
++#include "hash.h"
+ #include "hex.h"
#include "parallel-checkout.h"
#include "pkt-line.h"
- #include "progress.h"
-+#include "repository.h"
- #include "run-command.h"
- #include "sigchain.h"
- #include "streaming.h"
## pathspec.c ##
@@
@@ progress.c
#include "trace.h"
#include "trace2.h"
+ ## protocol-caps.c ##
+@@
+ #include "hex.h"
+ #include "pkt-line.h"
+ #include "strvec.h"
+-#include "hash.h"
++#include "hash-ll.h"
+ #include "hex.h"
+ #include "object.h"
+ #include "object-store.h"
+
## rebase-interactive.c ##
@@
#include "gettext.h"
@@ rebase-interactive.c
## refs/files-backend.c ##
@@
- #include "../lockfile.h"
- #include "../object.h"
- #include "../object-file.h"
-+#include "../repository.h"
- #include "../dir.h"
- #include "../chdir-notify.h"
- #include "../setup.h"
+ #include "../copy.h"
+ #include "../environment.h"
+ #include "../gettext.h"
++#include "../hash.h"
+ #include "../hex.h"
+ #include "../refs.h"
+ #include "refs-internal.h"
## refs/packed-backend.c ##
@@
- #include "../iterator.h"
- #include "../lockfile.h"
- #include "../chdir-notify.h"
-+#include "../repository.h"
- #include "../wrapper.h"
- #include "../write-or-die.h"
-
+ #include "../alloc.h"
+ #include "../config.h"
+ #include "../gettext.h"
++#include "../hash.h"
+ #include "../hex.h"
+ #include "../refs.h"
+ #include "refs-internal.h"
## refs/ref-cache.c ##
@@
+ #include "../git-compat-util.h"
+ #include "../alloc.h"
++#include "../hash.h"
+ #include "../refs.h"
++#include "../repository.h"
#include "refs-internal.h"
#include "ref-cache.h"
#include "../iterator.h"
-+#include "../repository.h"
-
- void add_entry_to_dir(struct ref_dir *dir, struct ref_entry *entry)
- {
## refs/ref-cache.h ##
@@
+ #ifndef REFS_REF_CACHE_H
+ #define REFS_REF_CACHE_H
+
+-#include "hash.h"
++#include "hash-ll.h"
struct ref_dir;
struct ref_store;
@@ refs/ref-cache.h
## refspec.c ##
@@
+ #include "git-compat-util.h"
+ #include "alloc.h"
+ #include "gettext.h"
++#include "hash.h"
+ #include "hex.h"
#include "strvec.h"
#include "refs.h"
- #include "refspec.h"
-+#include "repository.h"
+
+ ## reftable/dump.c ##
+@@ reftable/dump.c: https://developers.google.com/open-source/licenses/bsd
+ */
- static struct refspec_item s_tag_refspec = {
- .force = 0,
+ #include "git-compat-util.h"
+-#include "hash.h"
++#include "hash-ll.h"
+
+ #include "reftable-blocksource.h"
+ #include "reftable-error.h"
- ## repository.h ##
-@@
- #ifndef REPOSITORY_H
- #define REPOSITORY_H
+ ## reftable/system.h ##
+@@ reftable/system.h: https://developers.google.com/open-source/licenses/bsd
-+#include "hash.h"
- #include "path.h"
+ #include "git-compat-util.h"
+ #include "strbuf.h"
+-#include "hash.h" /* hash ID, sizes.*/
++#include "hash-ll.h" /* hash ID, sizes.*/
+ #include "dir.h" /* remove_dir_recursively, for tests.*/
- struct config_set;
-@@ repository.h: void prepare_repo_settings(struct repository *r);
- */
- int upgrade_repository_format(int target_version);
+ int hash_size(uint32_t id);
+
+ ## reset.h ##
+@@
+ #ifndef RESET_H
+ #define RESET_H
-+#define the_hash_algo the_repository->hash_algo
-+
-+static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2)
-+{
-+ return hashcmp_algop(sha1, sha2, the_hash_algo);
-+}
-+
-+static inline int oidcmp(const struct object_id *oid1, const struct object_id *oid2)
-+{
-+ const struct git_hash_algo *algop;
-+ if (!oid1->algo)
-+ algop = the_hash_algo;
-+ else
-+ algop = &hash_algos[oid1->algo];
-+ return hashcmp_algop(oid1->hash, oid2->hash, algop);
-+}
-+
-+static inline int hasheq(const unsigned char *sha1, const unsigned char *sha2)
-+{
-+ return hasheq_algop(sha1, sha2, the_hash_algo);
-+}
-+
-+static inline int oideq(const struct object_id *oid1, const struct object_id *oid2)
-+{
-+ const struct git_hash_algo *algop;
-+ if (!oid1->algo)
-+ algop = the_hash_algo;
-+ else
-+ algop = &hash_algos[oid1->algo];
-+ return hasheq_algop(oid1->hash, oid2->hash, algop);
-+}
-+
-+static inline int is_null_oid(const struct object_id *oid)
-+{
-+ return oideq(oid, null_oid());
-+}
-+
-+static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src)
-+{
-+ memcpy(sha_dst, sha_src, the_hash_algo->rawsz);
-+}
-+
-+/* Like oidcpy() but zero-pads the unused bytes in dst's hash array. */
-+static inline void oidcpy_with_padding(struct object_id *dst,
-+ const struct object_id *src)
-+{
-+ size_t hashsz;
-+
-+ if (!src->algo)
-+ hashsz = the_hash_algo->rawsz;
-+ else
-+ hashsz = hash_algos[src->algo].rawsz;
-+
-+ memcpy(dst->hash, src->hash, hashsz);
-+ memset(dst->hash + hashsz, 0, GIT_MAX_RAWSZ - hashsz);
-+ dst->algo = src->algo;
-+}
-+
-+static inline void hashclr(unsigned char *hash)
-+{
-+ memset(hash, 0, the_hash_algo->rawsz);
-+}
-+
-+static inline void oidclr(struct object_id *oid)
-+{
-+ memset(oid->hash, 0, GIT_MAX_RAWSZ);
-+ oid->algo = hash_algo_by_ptr(the_hash_algo);
-+}
-+
-+static inline void oidread(struct object_id *oid, const unsigned char *hash)
-+{
-+ memcpy(oid->hash, hash, the_hash_algo->rawsz);
-+ oid->algo = hash_algo_by_ptr(the_hash_algo);
-+}
-+
-+static inline int is_empty_blob_sha1(const unsigned char *sha1)
-+{
-+ return hasheq(sha1, the_hash_algo->empty_blob->hash);
-+}
-+
-+static inline int is_empty_blob_oid(const struct object_id *oid)
-+{
-+ return oideq(oid, the_hash_algo->empty_blob);
-+}
-+
-+static inline int is_empty_tree_sha1(const unsigned char *sha1)
-+{
-+ return hasheq(sha1, the_hash_algo->empty_tree->hash);
-+}
-+
-+static inline int is_empty_tree_oid(const struct object_id *oid)
-+{
-+ return oideq(oid, the_hash_algo->empty_tree);
-+}
-+
- #endif /* REPOSITORY_H */
+-#include "hash.h"
++#include "hash-ll.h"
+ #include "repository.h"
+
+ #define GIT_REFLOG_ACTION_ENVIRONMENT "GIT_REFLOG_ACTION"
## resolve-undo.c ##
@@
#include "cache.h"
#include "dir.h"
++#include "hash.h"
#include "resolve-undo.h"
-+#include "repository.h"
#include "string-list.h"
- /* The only error case is to run out of memory in string-list */
+
+ ## resolve-undo.h ##
+@@ resolve-undo.h: struct index_state;
+ struct pathspec;
+ struct string_list;
+
+-#include "hash.h"
++#include "hash-ll.h"
+
+ struct resolve_undo_info {
+ unsigned int mode[3];
## split-index.c ##
@@
+ #include "cache.h"
#include "alloc.h"
#include "gettext.h"
++#include "hash.h"
#include "mem-pool.h"
-+#include "repository.h"
#include "split-index.h"
#include "strbuf.h"
- #include "ewah/ewok.h"
+
+ ## split-index.h ##
+@@
+ #ifndef SPLIT_INDEX_H
+ #define SPLIT_INDEX_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+
+ struct index_state;
+ struct strbuf;
## strbuf.c ##
@@
@@ t/helper/test-cache-tree.c
## t/helper/test-dump-cache-tree.c ##
@@
+ #define USE_THE_INDEX_VARIABLE
+ #include "test-tool.h"
+ #include "cache.h"
++#include "hash.h"
#include "hex.h"
#include "tree.h"
#include "cache-tree.h"
@@ t/helper/test-submodule-config.c
@@
#include "test-tool.h"
#include "config.h"
++#include "hash.h"
#include "object-name.h"
+#include "repository.h"
#include "setup.h"
@@ trace2/tr2_tgt_perf.c
## tree-walk.h ##
@@
- #include "hash.h"
+ #ifndef TREE_WALK_H
+ #define TREE_WALK_H
+
+-#include "hash.h"
++#include "hash-ll.h"
struct index_state;
+struct repository;
@@ wrapper.c
#include "strbuf.h"
#include "trace2.h"
#include "wrapper.h"
+
+ ## xdiff-interface.h ##
+@@
+ #ifndef XDIFF_INTERFACE_H
+ #define XDIFF_INTERFACE_H
+
+-#include "hash.h"
++#include "hash-ll.h"
+ #include "xdiff/xdiff.h"
+
+ /*
15: e1983d51c05 = 14: 5ef0e17d0aa cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
16: c72cc0dab90 = 15: cc286133513 cache,tree: move basic name compare functions from read-cache to tree
17: 1edd8fd72a7 = 16: 960b5438ce4 treewide: remove cache.h inclusion due to previous changes
18: 34c9034e8ed = 17: b459b60de89 cache.h: remove unnecessary headers
19: 8e747e889fb = 18: 80ebd46c862 fsmonitor: reduce includes of cache.h
20: c6d58573661 ! 19: 7479e72ffd6 commit.h: reduce unnecessary includes
@@ log-tree.c
## merge-ort-wrappers.c ##
@@
+ #include "hash.h"
#include "merge-ort.h"
#include "merge-ort-wrappers.h"
- #include "repository.h"
+#include "tree.h"
#include "commit.h"
@@ refs/debug.c
## refspec.c ##
@@
+ #include "strvec.h"
#include "refs.h"
#include "refspec.h"
- #include "repository.h"
+#include "strbuf.h"
static struct refspec_item s_tag_refspec = {
21: 1aa36d91b59 = 20: 7705cbc2733 object-store.h: reduce unnecessary includes
22: d70e3b99dae = 21: b7a96a08d14 diff.h: reduce unnecessary includes
23: f32d4fa3dbf = 22: 67d52c6e751 reftable: ensure git-compat-util.h is the first (indirect) includeSignature · 1 line
gitgitgadget
PATCH v2 8/22 match-trees.h: move declarations for match-trees.c functions from cache.h
From: Elijah Newren <[email protected]>
--- cache.h | 4 ---- match-trees.c | 1 + match-trees.h | 10 ++++++++++ merge-ort.c | 1 + merge-recursive.c | 1 + t/helper/test-match-trees.c | 1 + 6 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 match-trees.h
cache.h +0 -4
@@ -603,10 +603,6 @@ int add_files_to_cache(const char *prefix, const struct pathspec *pathspec, int/* diff.c */ extern int diff_auto_refresh_index; -/* match-trees.c */ -void shift_tree (struct repository *,const struct object_id *,const struct object_id *,struct object_id *,int ); -void shift_tree_by (struct repository *,const struct object_id *,const struct object_id *,struct object_id *,const char *); -/* * whitespace rules. * used by both diff and apply
match-trees.c +1 -0
@@ -1,5 +1,6 @@#include "cache.h" #include "hex.h" +#include "match-trees.h" #include "tree.h" #include "tree-walk.h" #include "object-store.h"
match-trees.h new file +10 -0
@@ -0,0 +1,10 @@ +#ifndef MATCH_TREES_H +#define MATCH_TREES_H + +struct object_id ; +struct repository ; + +void shift_tree (struct repository *,const struct object_id *,const struct object_id *,struct object_id *,int ); +void shift_tree_by (struct repository *,const struct object_id *,const struct object_id *,struct object_id *,const char *); + +#endif /* MATCH_TREES_H */
merge-ort.c +1 -0
@@ -31,6 +31,7 @@#include "hex.h" #include "entry.h" #include "ll-merge.h" +#include "match-trees.h" #include "mem-pool.h" #include "object-name.h" #include "object-store.h"
merge-recursive.c +1 -0
@@ -22,6 +22,7 @@#include "hex.h" #include "ll-merge.h" #include "lockfile.h" +#include "match-trees.h" #include "object-file.h" #include "object-name.h" #include "object-store.h"
t/helper/test-match-trees.c +1 -0
@@ -1,6 +1,7 @@#include "test-tool.h" #include "cache.h" #include "hex.h" +#include "match-trees.h" #include "object-name.h" #include "setup.h" #include "tree.h"
Signature · 1 line
gitgitgadget
PATCH v2 6/22 base85.h: move declarations for base85.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- apply.c | 1 + base85.c | 3 ++- base85.h | 7 +++++++ cache.h | 4 ---- diff.c | 1 + 5 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 base85.h
apply.c +1 -0
@@ -10,6 +10,7 @@#include "cache.h" #include "abspath.h" #include "alloc.h" +#include "base85.h" #include "config.h" #include "object-store.h" #include "blob.h"
base85.c +2 -1
@@ -1,4 +1,5 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "base85.h" #undef DEBUG_85
base85.h new file +7 -0
@@ -0,0 +1,7 @@ +#ifndef BASE85_H +#define BASE85_H + +int decode_85 (char *dst,const char *line,int linelen); +void encode_85 (char *buf,const unsigned char *data,int bytes); + +#endif /* BASE85_H */
cache.h +0 -4
@@ -593,10 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); -/* base85 */ -int decode_85 (char *dst,const char *line,int linelen); -void encode_85 (char *buf,const unsigned char *data,int bytes); -/* pkt-line.c */ void packet_trace_identity (const char *prog);
diff.c +1 -0
@@ -4,6 +4,7 @@#include "cache.h" #include "abspath.h" #include "alloc.h" +#include "base85.h" #include "config.h" #include "convert.h" #include "environment.h"
Signature · 1 line
gitgitgadget
PATCH v2 9/22 ws.h: move declarations for ws.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- apply.c | 1 + cache.h | 26 -------------------------- config.c | 1 + diff.c | 1 + environment.c | 1 - ws.c | 5 ++++- ws.h | 33 +++++++++++++++++++++++++++++++++ 7 files changed, 40 insertions(+), 28 deletions(-) create mode 100644 ws.h
apply.c +1 -0
@@ -32,6 +32,7 @@#include "entry.h" #include "setup.h" #include "symlinks.h" +#include "ws.h" #include "wrapper.h" struct gitdiff_data {
cache.h +0 -26
@@ -603,32 +603,6 @@ int add_files_to_cache(const char *prefix, const struct pathspec *pathspec, int/* diff.c */ extern int diff_auto_refresh_index; -/* -* whitespace rules. -* used by both diff and apply -* last two digits are tab width -*/ -#define WS_BLANK_AT_EOL 0100 -#define WS_SPACE_BEFORE_TAB 0200 -#define WS_INDENT_WITH_NON_TAB 0400 -#define WS_CR_AT_EOL 01000 -#define WS_BLANK_AT_EOF 02000 -#define WS_TAB_IN_INDENT 04000 -#define WS_TRAILING_SPACE (WS_BLANK_AT_EOL|WS_BLANK_AT_EOF) -#define WS_DEFAULT_RULE (WS_TRAILING_SPACE|WS_SPACE_BEFORE_TAB|8) -#define WS_TAB_WIDTH_MASK 077 -/* All WS_* -- when extended, adapt diff.c emit_symbol */ -#define WS_RULE_MASK 07777 -extern unsigned whitespace_rule_cfg; -unsigned whitespace_rule (struct index_state *,const char *); -unsigned parse_whitespace_rule (const char *); -unsigned ws_check (const char *line,int len,unsigned ws_rule); -void ws_check_emit (const char *line,int len,unsigned ws_rule,FILE *stream,const char *set,const char *reset,const char *ws); -char *whitespace_error_string (unsigned ws); -void ws_fix_copy (struct strbuf *,const char *,int ,unsigned ,int *); -int ws_blank_line (const char *line,int len); -#define ws_tab_width (rule) ((rule) & WS_TAB_WIDTH_MASK) -/* ls-files */ void overlay_tree_on_index (struct index_state *istate,const char *tree_name,const char *prefix);
config.c +1 -0
@@ -35,6 +35,7 @@#include "setup.h" #include "trace2.h" #include "worktree.h" +#include "ws.h" #include "wrapper.h" #include "write-or-die.h"
diff.c +1 -0
@@ -41,6 +41,7 @@#include "object-name.h" #include "setup.h" #include "strmap.h" +#include "ws.h" #include "wrapper.h" #ifdef NO_FAST_WORKING_DIRECTORY
environment.c +0 -1
@@ -67,7 +67,6 @@ int read_replace_refs = 1;enum eol core_eol =EOL_UNSET ;int global_conv_flags_eol =CONV_EOL_RNDTRP_WARN ;char *check_roundtrip_encoding ="SHIFT-JIS" ; -unsigned whitespace_rule_cfg =WS_DEFAULT_RULE ;enum branch_track git_branch_track =BRANCH_TRACK_REMOTE ;enum rebase_setup_type autorebase =AUTOREBASE_NEVER ;enum push_default_type push_default =PUSH_DEFAULT_UNSPECIFIED ;
ws.c +4 -1
@@ -3,9 +3,12 @@* * Copyright (c) 2007 Junio C Hamano */ -#include "cache.h" +#include "git-compat-util.h" #include "attr.h" #include "strbuf.h" +#include "ws.h" + +unsigned whitespace_rule_cfg =WS_DEFAULT_RULE ; static struct whitespace_rule { const char *rule_name;
ws.h new file +33 -0
@@ -0,0 +1,33 @@ +#ifndef WS_H +#define WS_H + +struct index_state ; +struct strbuf ; + +/* +* whitespace rules. +* used by both diff and apply +* last two digits are tab width +*/ +#define WS_BLANK_AT_EOL 0100 +#define WS_SPACE_BEFORE_TAB 0200 +#define WS_INDENT_WITH_NON_TAB 0400 +#define WS_CR_AT_EOL 01000 +#define WS_BLANK_AT_EOF 02000 +#define WS_TAB_IN_INDENT 04000 +#define WS_TRAILING_SPACE (WS_BLANK_AT_EOL|WS_BLANK_AT_EOF) +#define WS_DEFAULT_RULE (WS_TRAILING_SPACE|WS_SPACE_BEFORE_TAB|8) +#define WS_TAB_WIDTH_MASK 077 +/* All WS_* -- when extended, adapt diff.c emit_symbol */ +#define WS_RULE_MASK 07777 +extern unsigned whitespace_rule_cfg; +unsigned whitespace_rule (struct index_state *,const char *); +unsigned parse_whitespace_rule (const char *); +unsigned ws_check (const char *line,int len,unsigned ws_rule); +void ws_check_emit (const char *line,int len,unsigned ws_rule,FILE *stream,const char *set,const char *reset,const char *ws); +char *whitespace_error_string (unsigned ws); +void ws_fix_copy (struct strbuf *,const char *,int ,unsigned ,int *); +int ws_blank_line (const char *line,int len); +#define ws_tab_width (rule) ((rule) & WS_TAB_WIDTH_MASK) + +#endif /* WS_H */
Signature · 1 line
gitgitgadget
PATCH v2 10/22 versioncmp.h: move declarations for versioncmp.c functions from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- cache.h | 2 -- ref-filter.c | 1 + versioncmp.c | 3 ++- versioncmp.h | 6 ++++++ 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 versioncmp.h
cache.h +0 -2
@@ -648,6 +648,4 @@ int stat_validity_check(struct stat_validity *sv, const char *path);*/ void stat_validity_update (struct stat_validity *sv,int fd); -int versioncmp (const char *s1,const char *s2); -#endif /* CACHE_H */
ref-filter.c +1 -0
@@ -19,6 +19,7 @@#include "revision.h" #include "utf8.h" #include "version.h" +#include "versioncmp.h" #include "trailer.h" #include "wt-status.h" #include "commit-slab.h"
versioncmp.c +2 -1
@@ -1,6 +1,7 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "string-list.h" +#include "versioncmp.h" /* * versioncmp(): copied from string/strverscmp.c in glibc commit
versioncmp.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef VERSIONCMP_H +#define VERSIONCMP_H + +int versioncmp (const char *s1,const char *s2); + +#endif /* VERSIONCMP_H */
Signature · 1 line
gitgitgadget
PATCH v2 11/22 dir.h: move DTYPE defines from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- cache.h | 14 -------------- dir.h | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 14 deletions(-)
cache.h +0 -14
@@ -10,20 +10,6 @@#include "object.h" #include "statinfo.h" -#if defined(DT_UNKNOWN ) && !defined(NO_D_TYPE_IN_DIRENT ) -#define DTYPE (de) ((de)->d_type) -#else -#undef DT_UNKNOWN -#undef DT_DIR -#undef DT_REG -#undef DT_LNK -#define DT_UNKNOWN 0 -#define DT_DIR 1 -#define DT_REG 2 -#define DT_LNK 3 -#define DTYPE (de) DT_UNKNOWN -#endif -/* * Some mode bits are also used internally for computations. *
dir.h +15 -0
@@ -640,4 +640,19 @@ static inline int starts_with_dot_dot_slash_native(const char *const path) return path_match_flags(path, what | PATH_MATCH_NATIVE); } + +#if defined(DT_UNKNOWN ) && !defined(NO_D_TYPE_IN_DIRENT ) +#define DTYPE (de) ((de)->d_type) +#else +#undef DT_UNKNOWN +#undef DT_DIR +#undef DT_REG +#undef DT_LNK +#define DT_UNKNOWN 0 +#define DT_DIR 1 +#define DT_REG 2 +#define DT_LNK 3 +#define DTYPE (de) DT_UNKNOWN +#endif +#endif
Signature · 1 line
gitgitgadget
PATCH v2 14/22 cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
Since cmp_cache_name_compare() was comparing cache_entry structs, it was associated with the cache rather than with trees. Move the function. As a side effect, we can make cache_name_stage_compare() static as well.
--- cache.h | 2 +- read-cache.c | 13 ++++++++++++- tree.c | 10 ---------- tree.h | 1 - 4 files changed, 13 insertions(+), 13 deletions(-)
cache.h +1 -1
@@ -562,7 +562,7 @@ int base_name_compare(const char *name1, size_t len1, int mode1,int df_name_compare (const char *name1,size_t len1,int mode1,const char *name2,size_t len2,int mode2);int name_compare (const char *name1,size_t len1,const char *name2,size_t len2); -int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2); +int cmp_cache_name_compare (const void *a_,const void *b_);/* add */ /*
read-cache.c +12 -1
@@ -567,7 +567,8 @@ int name_compare(const char *name1, size_t len1, const char *name2, size_t len2)return 0 ; } -int cache_name_stage_compare (const char *name1,int len1,int stage1,const char *name2,int len2,int stage2) +static int cache_name_stage_compare (const char *name1,int len1,int stage1, +const char *name2,int len2,int stage2) {int cmp;
@@ -582,6 +583,16 @@ int cache_name_stage_compare(const char *name1, int len1, int stage1, const charreturn 0 ; } +int cmp_cache_name_compare (const void *a_,const void *b_) +{ +const struct cache_entry *ce1, *ce2; + + ce1 = *((const struct cache_entry **)a_); + ce2 = *((const struct cache_entry **)b_); +return cache_name_stage_compare (ce1->name, ce1->ce_namelen,ce_stage (ce1), + ce2->name, ce2->ce_namelen,ce_stage (ce2)); +} + static int index_name_stage_pos(struct index_state *istate, const char *name, int namelen, int stage,
tree.c +0 -10
@@ -94,16 +94,6 @@ int read_tree(struct repository *r,return ret; } -int cmp_cache_name_compare (const void *a_,const void *b_) -{ -const struct cache_entry *ce1, *ce2; - - ce1 = *((const struct cache_entry **)a_); - ce2 = *((const struct cache_entry **)b_); -return cache_name_stage_compare (ce1->name, ce1->ce_namelen,ce_stage (ce1), - ce2->name, ce2->ce_namelen,ce_stage (ce2)); -} -struct tree *lookup_tree (struct repository *r,const struct object_id *oid) {struct object *obj =lookup_object (r, oid);
tree.h +0 -1
@@ -29,7 +29,6 @@ void free_tree_buffer(struct tree *tree);/* Parses and returns the tree in the given ent, chasing tags and commits. */ struct tree *parse_tree_indirect (const struct object_id *oid); -int cmp_cache_name_compare (const void *a_,const void *b_);#define READ_TREE_RECURSIVE 1typedef int (*read_tree_fn_t )(const struct object_id *,struct strbuf *,const char *,unsigned int ,void *);
Signature · 1 line
gitgitgadget
PATCH v2 15/22 cache,tree: move basic name compare functions from read-cache to tree
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
None of base_name_compare(), df_name_compare(), or name_compare() depended upon a cache_entry or index_state in any way. By moving these functions to tree.h, half a dozen other files can stop depending upon cache.h (though that change will be made in a later commit).
--- cache.h | 5 ---- read-cache.c | 68 ---------------------------------------------------- tree.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tree.h | 9 +++++++ 4 files changed, 77 insertions(+), 73 deletions(-)
cache.h +0 -5
@@ -557,11 +557,6 @@ extern int verify_ce_order;#define DATA_CHANGED 0x0020#define TYPE_CHANGED 0x0040 -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, -const char *name2,size_t len2,int mode2); -int name_compare (const char *name1,size_t len1,const char *name2,size_t len2);int cmp_cache_name_compare (const void *a_,const void *b_);/* add */
read-cache.c +0 -68
74 lines not on this page · raw message
tree.c +68 -0
74 lines not on this page · raw message
tree.h +9 -0
@@ -29,6 +29,15 @@ void free_tree_buffer(struct tree *tree);/* Parses and returns the tree in the given ent, chasing tags and commits. */ struct tree *parse_tree_indirect (const struct object_id *oid); +/* +* Functions for comparing pathnames +*/ +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, +const char *name2,size_t len2,int mode2); +int name_compare (const char *name1,size_t len1, +const char *name2,size_t len2);#define READ_TREE_RECURSIVE 1typedef int (*read_tree_fn_t )(const struct object_id *,struct strbuf *,const char *,unsigned int ,void *);
Signature · 1 line
gitgitgadget
PATCH v2 12/22 tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
S_DIFFTREE_IFXMIN_NEQ is *only* used in tree-diff.c, so there is no point exposing it in cache.h. Move it to tree-diff.c.
--- cache.h | 15 --------------- tree-diff.c | 13 +++++++++++++ 2 files changed, 13 insertions(+), 15 deletions(-)
cache.h +0 -15
@@ -10,21 +10,6 @@#include "object.h" #include "statinfo.h" -/* -* Some mode bits are also used internally for computations. -* -* They *must* not overlap with any valid modes, and they *must* not be emitted -* to outside world - i.e. appear on disk or network. In other words, it's just -* temporary fields, which we internally use, but they have to stay in-house. -* -* ( such approach is valid, as standard S_IF* fits into 16 bits, and in Git -* codebase mode is `unsigned int` which is assumed to be at least 32 bits ) -*/ - -/* used internally in tree-diff */ -#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 - -/* * Basic data structures for the directory cache */
tree-diff.c +13 -0
@@ -6,6 +6,19 @@#include "diffcore.h" #include "tree.h" +/* +* Some mode bits are also used internally for computations. +* +* They *must* not overlap with any valid modes, and they *must* not be emitted +* to outside world - i.e. appear on disk or network. In other words, it's just +* temporary fields, which we internally use, but they have to stay in-house. +* +* ( such approach is valid, as standard S_IF* fits into 16 bits, and in Git +* codebase mode is `unsigned int` which is assumed to be at least 32 bits ) +*/ + +#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 +/* * internal mode marker, saying a tree entry != entry of tp[imin] * (see ll_diff_tree_paths for what it means there)
Signature · 1 line
gitgitgadget
PATCH v2 16/22 treewide: remove cache.h inclusion due to previous changes
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- archive-zip.c | 2 +- bundle-uri.c | 2 +- color.c | 2 +- combine-diff.c | 2 +- common-main.c | 2 +- config.c | 2 +- copy.c | 2 +- credential.c | 2 +- daemon.c | 2 +- date.c | 2 +- diagnose.c | 2 +- environment.c | 2 +- ll-merge.c | 2 +- match-trees.c | 2 +- midx.c | 2 +- object-file.c | 2 +- packfile.c | 2 +- pkt-line.c | 2 +- range-diff.c | 2 +- ref-filter.c | 2 +- t/helper/test-match-trees.c | 1 - t/helper/test-mergesort.c | 1 - t/helper/test-oid-array.c | 1 - t/helper/test-oidtree.c | 1 - t/helper/test-parse-options.c | 1 - t/helper/test-read-midx.c | 1 - t/helper/test-string-list.c | 1 - tree-diff.c | 2 +- tree-walk.c | 2 +- tree.c | 2 +- wrapper.c | 3 ++- 31 files changed, 25 insertions(+), 31 deletions(-)
archive-zip.c +1 -1
@@ -1,7 +1,7 @@/* * Copyright (c) 2006 Rene Scharfe */ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "archive.h" #include "gettext.h"
bundle-uri.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "bundle-uri.h" #include "bundle.h" #include "copy.h"
color.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "color.h" #include "editor.h"
combine-diff.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "object-store.h" #include "commit.h" #include "convert.h"
common-main.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "exec-cmd.h" #include "gettext.h" #include "attr.h"
config.c +1 -1
@@ -5,7 +5,7 @@* Copyright (C) Johannes Schindelin, 2005 * */ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "advice.h" #include "alloc.h"
copy.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "copy.h" #include "path.h" #include "wrapper.h"
credential.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "config.h" #include "credential.h"
daemon.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "alloc.h" #include "config.h"
date.c +1 -1
@@ -4,7 +4,7 @@* Copyright (C) Linus Torvalds, 2005 */ -#include "cache.h" +#include "git-compat-util.h" #include "date.h" #include "gettext.h" #include "pager.h"
diagnose.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "diagnose.h" #include "compat/disk.h" #include "archive.h"
environment.c +1 -1
@@ -7,7 +7,7 @@* even if you might want to know where the git directory etc * are. */ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "branch.h" #include "convert.h"
ll-merge.c +1 -1
@@ -4,7 +4,7 @@* Copyright (c) 2007 Junio C Hamano */ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "convert.h" #include "attr.h"
match-trees.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "hex.h" #include "match-trees.h" #include "tree.h"
midx.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "alloc.h" #include "config.h"
object-file.c +1 -1
@@ -6,7 +6,7 @@* This handles basic git object files - packing, unpacking, * creation etc. */ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "alloc.h" #include "config.h"
packfile.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "alloc.h" #include "environment.h" #include "gettext.h"
pkt-line.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "copy.h" #include "pkt-line.h" #include "gettext.h"
range-diff.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "environment.h" #include "gettext.h" #include "range-diff.h"
ref-filter.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "alloc.h" #include "environment.h" #include "gettext.h"
t/helper/test-match-trees.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "hex.h" #include "match-trees.h" #include "object-name.h"
t/helper/test-mergesort.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "mem-pool.h" #include "mergesort.h" #include "strbuf.h"
t/helper/test-oid-array.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "hex.h" #include "oid-array.h" #include "setup.h"
t/helper/test-oidtree.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "hex.h" #include "oidtree.h" #include "setup.h"
t/helper/test-parse-options.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "parse-options.h" #include "strbuf.h" #include "string-list.h"
t/helper/test-read-midx.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "hex.h" #include "midx.h" #include "repository.h"
t/helper/test-string-list.c +0 -1
@@ -1,5 +1,4 @@#include "test-tool.h" -#include "cache.h" #include "strbuf.h" #include "string-list.h"
tree-diff.c +1 -1
@@ -1,7 +1,7 @@/* * Helper functions for tree diff generation */ -#include "cache.h" +#include "git-compat-util.h" #include "diff.h" #include "diffcore.h" #include "tree.h"
tree-walk.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "tree-walk.h" #include "alloc.h" #include "dir.h"
tree.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "cache-tree.h" #include "hex.h" #include "tree.h"
wrapper.c +2 -1
@@ -1,10 +1,11 @@/* * Various trivial helper wrappers around standard functions */ -#include "cache.h" +#include "git-compat-util.h" #include "abspath.h" #include "config.h" #include "gettext.h" +#include "object.h" #include "repository.h" #include "strbuf.h" #include "trace2.h"
Signature · 1 line
gitgitgadget
PATCH v2 17/22 cache.h: remove unnecessary headers
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- cache.h | 2 -- compat/fsmonitor/fsm-ipc-darwin.c | 1 + compat/fsmonitor/fsm-listen-darwin.c | 1 + 3 files changed, 2 insertions(+), 2 deletions(-)
cache.h +0 -2
@@ -4,8 +4,6 @@#include "git-compat-util.h" #include "strbuf.h" #include "hashmap.h" -#include "gettext.h" -#include "string-list.h" #include "pathspec.h" #include "object.h" #include "statinfo.h"
compat/fsmonitor/fsm-ipc-darwin.c +1 -0
@@ -1,5 +1,6 @@#include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "strbuf.h"
compat/fsmonitor/fsm-listen-darwin.c +1 -0
@@ -29,6 +29,7 @@#include "fsmonitor--daemon.h" #include "fsmonitor-path-utils.h" #include "gettext.h" +#include "string-list.h" struct fsm_listen_data {
Signature · 1 line
gitgitgadget
PATCH v2 18/22 fsmonitor: reduce includes of cache.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- compat/fsmonitor/fsm-health-darwin.c | 2 +- compat/fsmonitor/fsm-ipc-darwin.c | 2 +- compat/fsmonitor/fsm-listen-darwin.c | 2 +- fsmonitor--daemon.h | 1 - 4 files changed, 3 insertions(+), 4 deletions(-)
compat/fsmonitor/fsm-health-darwin.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "fsmonitor.h" #include "fsm-health.h"
compat/fsmonitor/fsm-ipc-darwin.c +1 -1
@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "gettext.h" #include "hex.h"
compat/fsmonitor/fsm-listen-darwin.c +1 -1
@@ -23,7 +23,7 @@#endif #endif -#include "cache.h" +#include "git-compat-util.h" #include "fsmonitor.h" #include "fsm-listen.h" #include "fsmonitor--daemon.h"
fsmonitor--daemon.h +0 -1
@@ -3,7 +3,6 @@#ifdef HAVE_FSMONITOR_DAEMON_BACKEND -#include "cache.h" #include "dir.h" #include "run-command.h" #include "simple-ipc.h"
Signature · 1 line
gitgitgadget
PATCH v2 20/22 object-store.h: reduce unnecessary includes
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- object-file.c | 1 + object-name.c | 1 + object-store.h | 8 ++++---- submodule-config.c | 1 + 4 files changed, 7 insertions(+), 4 deletions(-)
object-file.c +1 -0
@@ -38,6 +38,7 @@#include "packfile.h" #include "object-file.h" #include "object-store.h" +#include "oidtree.h" #include "promisor-remote.h" #include "setup.h" #include "submodule.h"
object-name.c +1 -0
@@ -14,6 +14,7 @@#include "remote.h" #include "dir.h" #include "oid-array.h" +#include "oidtree.h" #include "packfile.h" #include "pretty.h" #include "object-store.h"
object-store.h +4 -4
@@ -2,16 +2,16 @@#define OBJECT_STORE_H #include "object.h" -#include "oidmap.h" #include "list.h" -#include "oid-array.h" -#include "strbuf.h" #include "thread-utils.h" #include "khash.h" #include "dir.h" -#include "oidtree.h" #include "oidset.h" +struct oidmap ; +struct oidtree ; +struct strbuf ; +struct object_directory {struct object_directory *next;
submodule-config.c +1 -0
@@ -12,6 +12,7 @@#include "object-name.h" #include "object-store.h" #include "parse-options.h" +#include "thread-utils.h" #include "tree-walk.h" /*
Signature · 1 line
gitgitgadget
PATCH v2 13/22 hash-ll.h: split out of hash.h to remove dependency on repository.h
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
hash.h depends upon and includes repository.h, due to the definition and use of the_hash_algo (defined as the_repository->hash_algo). However, most headers trying to include hash.h are only interested in the layout of the structs like object_id. Move the parts of hash.h that do not depend upon repository.h into a new file hash-ll.h (the "low level" parts of hash.h), and adjust other files to use this new header where the convenience inline functions aren't needed.
This allows hash.h and object.h to be fairly small, minimal headers. It also exposes a lot of hidden dependencies on both path.h (which was brought in by repository.h) and repository.h (which was previously implicitly brought in by object.h), so also adjust other files to be more explicit about what they depend upon.
--- alloc.c | 1 + apply.h | 2 +- branch.c | 1 + builtin/apply.c | 1 + builtin/archive.c | 1 + builtin/bundle.c | 1 + builtin/check-attr.c | 1 + builtin/check-ignore.c | 1 + builtin/checkout-index.c | 1 + builtin/clean.c | 1 + builtin/config.c | 1 + builtin/credential-cache.c | 1 + builtin/credential-store.c | 1 + builtin/for-each-repo.c | 2 + builtin/help.c | 1 + builtin/init-db.c | 1 + builtin/merge-index.c | 1 + builtin/merge-recursive.c | 2 + builtin/mv.c | 1 + builtin/push.c | 1 + builtin/read-tree.c | 1 + builtin/rerere.c | 1 + builtin/rm.c | 2 + builtin/show-branch.c | 2 + builtin/show-index.c | 2 + builtin/update-index.c | 2 + builtin/update-ref.c | 2 + builtin/upload-archive.c | 1 + builtin/worktree.c | 1 + checkout.c | 1 + checkout.h | 2 +- chunk-format.c | 1 + chunk-format.h | 2 +- common-main.c | 1 + compat/fsmonitor/fsm-ipc-darwin.c | 1 + compat/fsmonitor/fsm-ipc-win32.c | 1 + compat/precompose_utf8.c | 1 + compat/win32/trace2_win32_process_info.c | 1 + convert.h | 2 +- copy.c | 1 + csum-file.c | 1 + csum-file.h | 2 +- daemon.c | 1 + diffcore.h | 2 +- editor.c | 1 + exec-cmd.c | 1 + fsmonitor-ipc.c | 1 + gpg-interface.c | 1 + hash-ll.h | 276 +++++++++++++++++++ hash-lookup.c | 1 + hash.h | 273 +----------------- hashmap.h | 2 +- hex.c | 1 + hex.h | 2 +- hook.c | 1 + khash.h | 1 + ls-refs.c | 1 + merge-ort-wrappers.c | 1 + merge-ort.h | 2 +- negotiator/default.c | 1 + negotiator/skipping.c | 1 + object-file.h | 2 + object.h | 3 +- oidmap.c | 1 + oidtree.h | 2 +- parallel-checkout.c | 1 + pathspec.c | 1 + progress.c | 1 + protocol-caps.c | 2 +- rebase-interactive.c | 1 + refs/files-backend.c | 1 + refs/packed-backend.c | 1 + refs/ref-cache.c | 2 + refs/ref-cache.h | 3 +- refspec.c | 1 + reftable/dump.c | 2 +- reftable/system.h | 2 +- reset.h | 2 +- resolve-undo.c | 1 + resolve-undo.h | 2 +- split-index.c | 1 + split-index.h | 2 +- strbuf.c | 1 + t/helper/test-bloom.c | 1 + t/helper/test-cache-tree.c | 1 + t/helper/test-dump-cache-tree.c | 2 + t/helper/test-dump-fsmonitor.c | 1 + t/helper/test-dump-untracked-cache.c | 1 + t/helper/test-example-decorate.c | 1 + t/helper/test-fsmonitor-client.c | 1 + t/helper/test-lazy-init-name-hash.c | 1 + t/helper/test-match-trees.c | 1 + t/helper/test-oidmap.c | 1 + t/helper/test-path-utils.c | 1 + t/helper/test-read-cache.c | 1 + t/helper/test-scrap-cache-tree.c | 1 + t/helper/test-submodule-config.c | 2 + t/helper/test-submodule-nested-repo-config.c | 1 + t/helper/test-submodule.c | 1 + t/helper/test-trace2.c | 1 + t/helper/test-write-cache.c | 1 + trace2.c | 1 + trace2/tr2_tgt_event.c | 1 + trace2/tr2_tgt_normal.c | 1 + trace2/tr2_tgt_perf.c | 1 + tree-walk.h | 3 +- tree.h | 1 + wrapper.c | 1 + xdiff-interface.h | 2 +- 109 files changed, 398 insertions(+), 292 deletions(-) create mode 100644 hash-ll.h
alloc.c +1 -0
@@ -13,6 +13,7 @@#include "blob.h" #include "tree.h" #include "commit.h" +#include "repository.h" #include "tag.h" #include "alloc.h"
apply.h +1 -1
@@ -1,7 +1,7 @@#ifndef APPLY_H #define APPLY_H -#include "hash.h" +#include "hash-ll.h" #include "lockfile.h" #include "string-list.h" #include "strmap.h"
branch.c +1 -0
@@ -9,6 +9,7 @@#include "refs.h" #include "refspec.h" #include "remote.h" +#include "repository.h" #include "sequencer.h" #include "commit.h" #include "worktree.h"
builtin/apply.c +1 -0
@@ -2,6 +2,7 @@#include "builtin.h" #include "gettext.h" #include "parse-options.h" +#include "repository.h" #include "apply.h" static const char *const apply_usage[] = {
builtin/archive.c +1 -0
@@ -9,6 +9,7 @@#include "transport.h" #include "parse-options.h" #include "pkt-line.h" +#include "repository.h" #include "sideband.h" static void create_output_file (const char *output_file)
builtin/bundle.c +1 -0
@@ -5,6 +5,7 @@#include "strvec.h" #include "parse-options.h" #include "pkt-line.h" +#include "repository.h" #include "cache.h" #include "bundle.h"
builtin/check-attr.c +1 -0
@@ -7,6 +7,7 @@#include "gettext.h" #include "object-name.h" #include "quote.h" +#include "repository.h" #include "setup.h" #include "parse-options.h" #include "write-or-die.h"
builtin/check-ignore.c +1 -0
@@ -7,6 +7,7 @@#include "quote.h" #include "pathspec.h" #include "parse-options.h" +#include "repository.h" #include "submodule.h" #include "write-or-die.h"
builtin/checkout-index.c +1 -0
@@ -11,6 +11,7 @@#include "gettext.h" #include "lockfile.h" #include "quote.h" +#include "repository.h" #include "cache-tree.h" #include "parse-options.h" #include "entry.h"
builtin/clean.c +1 -0
@@ -14,6 +14,7 @@#include "dir.h" #include "gettext.h" #include "parse-options.h" +#include "repository.h" #include "setup.h" #include "string-list.h" #include "quote.h"
builtin/config.c +1 -0
@@ -9,6 +9,7 @@#include "ident.h" #include "parse-options.h" #include "urlmatch.h" +#include "path.h" #include "quote.h" #include "setup.h" #include "worktree.h"
builtin/credential-cache.c +1 -0
@@ -1,6 +1,7 @@#include "builtin.h" #include "gettext.h" #include "parse-options.h" +#include "path.h" #include "wrapper.h" #include "write-or-die.h"
builtin/credential-store.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "lockfile.h" #include "credential.h" +#include "path.h" #include "string-list.h" #include "parse-options.h" #include "write-or-die.h"
builtin/for-each-repo.c +2 -0
@@ -3,6 +3,8 @@#include "builtin.h" #include "gettext.h" #include "parse-options.h" +#include "path.h" +#include "repository.h" #include "run-command.h" #include "string-list.h"
builtin/help.c +1 -0
@@ -8,6 +8,7 @@#include "gettext.h" #include "pager.h" #include "parse-options.h" +#include "path.h" #include "run-command.h" #include "config-list.h" #include "help.h"
builtin/init-db.c +1 -0
@@ -14,6 +14,7 @@#include "exec-cmd.h" #include "object-file.h" #include "parse-options.h" +#include "path.h" #include "setup.h" #include "worktree.h" #include "wrapper.h"
builtin/merge-index.c +1 -0
@@ -1,6 +1,7 @@#define USE_THE_INDEX_VARIABLE #include "builtin.h" #include "hex.h" +#include "repository.h" #include "run-command.h" static const char *pgm;
builtin/merge-recursive.c +2 -0
@@ -3,9 +3,11 @@#include "advice.h" #include "commit.h" #include "gettext.h" +#include "hash.h" #include "tag.h" #include "merge-recursive.h" #include "object-name.h" +#include "repository.h" #include "xdiff-interface.h" static const char builtin_merge_recursive_usage[] =
builtin/mv.c +1 -0
@@ -18,6 +18,7 @@#include "cache-tree.h" #include "string-list.h" #include "parse-options.h" +#include "repository.h" #include "setup.h" #include "submodule.h" #include "entry.h"
builtin/push.c +1 -0
@@ -15,6 +15,7 @@#include "transport.h" #include "parse-options.h" #include "pkt-line.h" +#include "repository.h" #include "submodule.h" #include "submodule-config.h" #include "send-pack.h"
builtin/read-tree.c +1 -0
@@ -19,6 +19,7 @@#include "dir.h" #include "builtin.h" #include "parse-options.h" +#include "repository.h" #include "resolve-undo.h" #include "setup.h" #include "submodule.h"
builtin/rerere.c +1 -0
@@ -4,6 +4,7 @@#include "dir.h" #include "gettext.h" #include "parse-options.h" +#include "repository.h" #include "string-list.h" #include "rerere.h" #include "wrapper.h"
builtin/rm.c +2 -0
@@ -12,9 +12,11 @@#include "dir.h" #include "cache-tree.h" #include "gettext.h" +#include "hash.h" #include "tree-walk.h" #include "object-name.h" #include "parse-options.h" +#include "repository.h" #include "string-list.h" #include "setup.h" #include "submodule.h"
builtin/show-branch.c +2 -0
@@ -2,6 +2,7 @@#include "config.h" #include "environment.h" #include "gettext.h" +#include "hash.h" #include "hex.h" #include "pretty.h" #include "refs.h"
@@ -10,6 +11,7 @@#include "strvec.h" #include "object-name.h" #include "parse-options.h" +#include "repository.h" #include "dir.h" #include "commit-slab.h" #include "date.h"
builtin/show-index.c +2 -0
@@ -1,9 +1,11 @@#include "builtin.h" #include "cache.h" #include "gettext.h" +#include "hash.h" #include "hex.h" #include "pack.h" #include "parse-options.h" +#include "repository.h" static const char *const show_index_usage[] = {"git show-index [--object-format=<hash-algorithm>]" ,
builtin/update-index.c +2 -0
@@ -9,6 +9,7 @@#include "config.h" #include "environment.h" #include "gettext.h" +#include "hash.h" #include "hex.h" #include "lockfile.h" #include "quote.h"
@@ -21,6 +22,7 @@#include "parse-options.h" #include "pathspec.h" #include "dir.h" +#include "repository.h" #include "setup.h" #include "split-index.h" #include "symlinks.h"
builtin/update-ref.c +2 -0
@@ -1,11 +1,13 @@#include "cache.h" #include "config.h" #include "gettext.h" +#include "hash.h" #include "refs.h" #include "builtin.h" #include "object-name.h" #include "parse-options.h" #include "quote.h" +#include "repository.h" #include "strvec.h" static const char *const git_update_ref_usage[] = {
builtin/upload-archive.c +1 -0
@@ -6,6 +6,7 @@#include "archive.h" #include "pkt-line.h" #include "sideband.h" +#include "repository.h" #include "run-command.h" #include "strvec.h"
builtin/worktree.c +1 -0
@@ -14,6 +14,7 @@#include "strvec.h" #include "branch.h" #include "refs.h" +#include "repository.h" #include "run-command.h" #include "hook.h" #include "sigchain.h"
checkout.c +1 -0
@@ -2,6 +2,7 @@#include "object-name.h" #include "remote.h" #include "refspec.h" +#include "repository.h" #include "checkout.h" #include "config.h" #include "strbuf.h"
checkout.h +1 -1
@@ -1,7 +1,7 @@#ifndef CHECKOUT_H #define CHECKOUT_H -#include "hash.h" +#include "hash-ll.h" /* * Check if the branch name uniquely matches a branch name on a remote
chunk-format.c +1 -0
@@ -3,6 +3,7 @@#include "chunk-format.h" #include "csum-file.h" #include "gettext.h" +#include "hash.h" #include "trace2.h" /*
chunk-format.h +1 -1
@@ -1,7 +1,7 @@#ifndef CHUNK_FORMAT_H #define CHUNK_FORMAT_H -#include "hash.h" +#include "hash-ll.h" struct hashfile ;struct chunkfile ;
common-main.c +1 -0
@@ -2,6 +2,7 @@#include "exec-cmd.h" #include "gettext.h" #include "attr.h" +#include "repository.h" #include "setup.h" #include "strbuf.h" #include "trace2.h"
compat/fsmonitor/fsm-ipc-darwin.c +1 -0
@@ -1,6 +1,7 @@#include "cache.h" #include "config.h" #include "hex.h" +#include "repository.h" #include "strbuf.h" #include "fsmonitor.h" #include "fsmonitor-ipc.h"
compat/fsmonitor/fsm-ipc-win32.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "config.h" #include "fsmonitor-ipc.h" +#include "path.h" const char *fsmonitor_ipc__get_path (struct repository *r) {static char *ret;
compat/precompose_utf8.c +1 -0
@@ -9,6 +9,7 @@#include "config.h" #include "environment.h" #include "gettext.h" +#include "path.h" #include "utf8.h" #include "precompose_utf8.h"
compat/win32/trace2_win32_process_info.c +1 -0
@@ -1,5 +1,6 @@#include "../../cache.h" #include "../../json-writer.h" +#include "../../repository.h" #include "../../trace2.h" #include "lazyload.h" #include <Psapi.h>
convert.h +1 -1
@@ -4,7 +4,7 @@#ifndef CONVERT_H #define CONVERT_H -#include "hash.h" +#include "hash-ll.h" #include "string-list.h" struct index_state ;
copy.c +1 -0
@@ -1,5 +1,6 @@#include "cache.h" #include "copy.h" +#include "path.h" #include "wrapper.h" int copy_fd (int ifd,int ofd)
csum-file.c +1 -0
@@ -10,6 +10,7 @@#include "git-compat-util.h" #include "progress.h" #include "csum-file.h" +#include "hash.h" #include "wrapper.h" static void verify_buffer_or_die(struct hashfile *f,
csum-file.h +1 -1
@@ -1,7 +1,7 @@#ifndef CSUM_FILE_H #define CSUM_FILE_H -#include "hash.h" +#include "hash-ll.h" #include "write-or-die.h" struct progress ;
daemon.c +1 -0
@@ -3,6 +3,7 @@#include "alloc.h" #include "config.h" #include "environment.h" +#include "path.h" #include "pkt-line.h" #include "protocol.h" #include "run-command.h"
diffcore.h +1 -1
@@ -4,7 +4,7 @@#ifndef DIFFCORE_H #define DIFFCORE_H -#include "hash.h" +#include "hash-ll.h" struct diff_options ;struct mem_pool ;
editor.c +1 -0
@@ -6,6 +6,7 @@#include "environment.h" #include "gettext.h" #include "pager.h" +#include "path.h" #include "strbuf.h" #include "strvec.h" #include "run-command.h"
exec-cmd.c +1 -0
@@ -3,6 +3,7 @@#include "environment.h" #include "exec-cmd.h" #include "gettext.h" +#include "path.h" #include "quote.h" #include "strvec.h" #include "trace.h"
fsmonitor-ipc.c +1 -0
@@ -3,6 +3,7 @@#include "gettext.h" #include "simple-ipc.h" #include "fsmonitor-ipc.h" +#include "repository.h" #include "run-command.h" #include "strbuf.h" #include "trace2.h"
gpg-interface.c +1 -0
@@ -7,6 +7,7 @@#include "dir.h" #include "ident.h" #include "gpg-interface.h" +#include "path.h" #include "sigchain.h" #include "tempfile.h" #include "alias.h"
hash-ll.h new file +276 -0
276 lines not on this page · raw message
hash-lookup.c +1 -0
@@ -1,4 +1,5 @@#include "cache.h" +#include "hash.h" #include "hash-lookup.h" static uint32_t take2 (const struct object_id *oid,size_t ofs)
hash.h +1 -272
305 lines not on this page · raw message
hashmap.h +1 -1
@@ -1,7 +1,7 @@#ifndef HASHMAP_H #define HASHMAP_H -#include "hash.h" +#include "hash-ll.h" /* * Generic implementation of hash-based key-value mappings.
hex.c +1 -0
@@ -1,4 +1,5 @@#include "git-compat-util.h" +#include "hash.h" #include "hex.h" const signed char hexval_table[256 ] = {
hex.h +1 -1
@@ -1,7 +1,7 @@#ifndef HEX_H #define HEX_H -#include "hash.h" +#include "hash-ll.h" extern const signed char hexval_table[256 ];static inline unsigned int hexval (unsigned char c)
hook.c +1 -0
@@ -2,6 +2,7 @@#include "advice.h" #include "gettext.h" #include "hook.h" +#include "path.h" #include "run-command.h" #include "config.h" #include "strbuf.h"
khash.h +1 -0
@@ -27,6 +27,7 @@#define __AC_KHASH_H#include "hashmap.h" +#include "hash.h" #define AC_VERSION_KHASH_H "0.2.8"
ls-refs.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "environment.h" #include "gettext.h" +#include "hash.h" #include "hex.h" #include "repository.h" #include "refs.h"
merge-ort-wrappers.c +1 -0
@@ -1,5 +1,6 @@#include "cache.h" #include "gettext.h" +#include "hash.h" #include "merge-ort.h" #include "merge-ort-wrappers.h"
merge-ort.h +1 -1
@@ -2,7 +2,7 @@#define MERGE_ORT_H #include "merge-recursive.h" -#include "hash.h" +#include "hash-ll.h" struct commit ;struct tree ;
negotiator/default.c +1 -0
@@ -4,6 +4,7 @@#include "../fetch-negotiator.h" #include "../prio-queue.h" #include "../refs.h" +#include "../repository.h" #include "../tag.h" /* Remember to update object flag allocation in object.h */
negotiator/skipping.c +1 -0
@@ -5,6 +5,7 @@#include "../hex.h" #include "../prio-queue.h" #include "../refs.h" +#include "../repository.h" #include "../tag.h" /* Remember to update object flag allocation in object.h */
object-file.h +2 -0
@@ -4,6 +4,8 @@#include "git-zlib.h" #include "object.h" +struct index_state ; +/* * Set this to 0 to prevent oid_object_info_extended() from fetching missing * blobs. This has a difference only if extensions.partialClone is set.
object.h +2 -1
@@ -1,9 +1,10 @@ #ifndef OBJECT_H #define OBJECT_H -#include "hash.h" +#include "hash-ll.h" struct buffer_slab; +struct repository; struct parsed_object_pool { struct object **obj_hash;
oidmap.c +1 -0
@@ -1,4 +1,5 @@#include "git-compat-util.h" +#include "hash.h" #include "oidmap.h" static int oidmap_neq(const void *hashmap_cmp_fn_data UNUSED,
oidtree.h +1 -1
@@ -2,7 +2,7 @@#define OIDTREE_H #include "cbtree.h" -#include "hash.h" +#include "hash-ll.h" #include "mem-pool.h" struct oidtree {
parallel-checkout.c +1 -0
@@ -3,6 +3,7 @@#include "config.h" #include "entry.h" #include "gettext.h" +#include "hash.h" #include "hex.h" #include "parallel-checkout.h" #include "pkt-line.h"
pathspec.c +1 -0
@@ -6,6 +6,7 @@#include "gettext.h" #include "pathspec.h" #include "attr.h" +#include "repository.h" #include "setup.h" #include "strvec.h" #include "symlinks.h"
progress.c +1 -0
@@ -12,6 +12,7 @@#include "git-compat-util.h" #include "pager.h" #include "progress.h" +#include "repository.h" #include "strbuf.h" #include "trace.h" #include "trace2.h"
protocol-caps.c +1 -1
@@ -4,7 +4,7 @@#include "hex.h" #include "pkt-line.h" #include "strvec.h" -#include "hash.h" +#include "hash-ll.h" #include "hex.h" #include "object.h" #include "object-store.h"
rebase-interactive.c +1 -0
@@ -5,6 +5,7 @@#include "gettext.h" #include "sequencer.h" #include "rebase-interactive.h" +#include "repository.h" #include "strbuf.h" #include "commit-slab.h" #include "config.h"
refs/files-backend.c +1 -0
@@ -3,6 +3,7 @@#include "../copy.h" #include "../environment.h" #include "../gettext.h" +#include "../hash.h" #include "../hex.h" #include "../refs.h" #include "refs-internal.h"
refs/packed-backend.c +1 -0
@@ -2,6 +2,7 @@#include "../alloc.h" #include "../config.h" #include "../gettext.h" +#include "../hash.h" #include "../hex.h" #include "../refs.h" #include "refs-internal.h"
refs/ref-cache.c +2 -0
@@ -1,6 +1,8 @@#include "../git-compat-util.h" #include "../alloc.h" +#include "../hash.h" #include "../refs.h" +#include "../repository.h" #include "refs-internal.h" #include "ref-cache.h" #include "../iterator.h"
refs/ref-cache.h +2 -1
@@ -1,10 +1,11 @@#ifndef REFS_REF_CACHE_H #define REFS_REF_CACHE_H -#include "hash.h" +#include "hash-ll.h" struct ref_dir ;struct ref_store ; +struct repository ;/* * If this ref_cache is filled lazily, this function is used to load
refspec.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "alloc.h" #include "gettext.h" +#include "hash.h" #include "hex.h" #include "strvec.h" #include "refs.h"
reftable/dump.c +1 -1
@@ -7,7 +7,7 @@ https://developers.google.com/open-source/licenses/bsd*/ #include "git-compat-util.h" -#include "hash.h" +#include "hash-ll.h" #include "reftable-blocksource.h" #include "reftable-error.h"
reftable/system.h +1 -1
@@ -13,7 +13,7 @@ https://developers.google.com/open-source/licenses/bsd#include "git-compat-util.h" #include "strbuf.h" -#include "hash.h" /* hash ID, sizes.*/ +#include "hash-ll.h" /* hash ID, sizes.*/ #include "dir.h" /* remove_dir_recursively, for tests.*/ int hash_size (uint32_t id);
reset.h +1 -1
@@ -1,7 +1,7 @@#ifndef RESET_H #define RESET_H -#include "hash.h" +#include "hash-ll.h" #include "repository.h" #define GIT_REFLOG_ACTION_ENVIRONMENT "GIT_REFLOG_ACTION"
resolve-undo.c +1 -0
@@ -1,5 +1,6 @@#include "cache.h" #include "dir.h" +#include "hash.h" #include "resolve-undo.h" #include "string-list.h"
resolve-undo.h +1 -1
@@ -6,7 +6,7 @@ struct index_state;struct pathspec ;struct string_list ; -#include "hash.h" +#include "hash-ll.h" struct resolve_undo_info {unsigned int mode[3 ];
split-index.c +1 -0
@@ -1,6 +1,7 @@#include "cache.h" #include "alloc.h" #include "gettext.h" +#include "hash.h" #include "mem-pool.h" #include "split-index.h" #include "strbuf.h"
split-index.h +1 -1
@@ -1,7 +1,7 @@#ifndef SPLIT_INDEX_H #define SPLIT_INDEX_H -#include "hash.h" +#include "hash-ll.h" struct index_state ;struct strbuf ;
strbuf.c +1 -0
@@ -6,6 +6,7 @@#include "hex.h" #include "object-name.h" #include "refs.h" +#include "repository.h" #include "string-list.h" #include "utf8.h" #include "date.h"
t/helper/test-bloom.c +1 -0
@@ -2,6 +2,7 @@#include "bloom.h" #include "hex.h" #include "commit.h" +#include "repository.h" #include "setup.h" static struct bloom_filter_settings settings =DEFAULT_BLOOM_FILTER_SETTINGS ;
t/helper/test-cache-tree.c +1 -0
@@ -6,6 +6,7 @@#include "tree.h" #include "cache-tree.h" #include "parse-options.h" +#include "repository.h" #include "setup.h" static char const *const test_cache_tree_usage[] = {
t/helper/test-dump-cache-tree.c +2 -0
@@ -1,9 +1,11 @@#define USE_THE_INDEX_VARIABLE #include "test-tool.h" #include "cache.h" +#include "hash.h" #include "hex.h" #include "tree.h" #include "cache-tree.h" +#include "repository.h" #include "setup.h" static void dump_one (struct cache_tree *it,const char *pfx,const char *x)
t/helper/test-dump-fsmonitor.c +1 -0
@@ -1,5 +1,6 @@#include "test-tool.h" #include "cache.h" +#include "repository.h" #include "setup.h" int cmd__dump_fsmonitor (int ac,const char **av)
t/helper/test-dump-untracked-cache.c +1 -0
@@ -3,6 +3,7 @@#include "cache.h" #include "dir.h" #include "hex.h" +#include "repository.h" #include "setup.h" static int compare_untracked (const void *a_,const void *b_)
t/helper/test-example-decorate.c +1 -0
@@ -2,6 +2,7 @@#include "git-compat-util.h" #include "object.h" #include "decorate.h" +#include "repository.h" int cmd__example_decorate (int argc,const char **argv) {
t/helper/test-fsmonitor-client.c +1 -0
@@ -7,6 +7,7 @@#include "cache.h" #include "parse-options.h" #include "fsmonitor-ipc.h" +#include "repository.h" #include "setup.h" #include "thread-utils.h" #include "trace2.h"
t/helper/test-lazy-init-name-hash.c +1 -0
@@ -3,6 +3,7 @@#include "cache.h" #include "environment.h" #include "parse-options.h" +#include "repository.h" #include "setup.h" #include "trace.h"
t/helper/test-match-trees.c +1 -0
@@ -3,6 +3,7 @@#include "hex.h" #include "match-trees.h" #include "object-name.h" +#include "repository.h" #include "setup.h" #include "tree.h"
t/helper/test-oidmap.c +1 -0
@@ -2,6 +2,7 @@#include "hex.h" #include "object-name.h" #include "oidmap.h" +#include "repository.h" #include "setup.h" #include "strbuf.h"
t/helper/test-path-utils.c +1 -0
@@ -2,6 +2,7 @@#include "cache.h" #include "abspath.h" #include "environment.h" +#include "path.h" #include "setup.h" #include "string-list.h" #include "trace.h"
t/helper/test-read-cache.c +1 -0
@@ -2,6 +2,7 @@#include "test-tool.h" #include "cache.h" #include "config.h" +#include "repository.h" #include "setup.h" #include "wrapper.h"
t/helper/test-scrap-cache-tree.c +1 -0
@@ -2,6 +2,7 @@#include "test-tool.h" #include "cache.h" #include "lockfile.h" +#include "repository.h" #include "setup.h" #include "tree.h" #include "cache-tree.h"
t/helper/test-submodule-config.c +2 -0
@@ -1,6 +1,8 @@#include "test-tool.h" #include "config.h" +#include "hash.h" #include "object-name.h" +#include "repository.h" #include "setup.h" #include "submodule-config.h" #include "submodule.h"
t/helper/test-submodule-nested-repo-config.c +1 -0
@@ -1,4 +1,5 @@#include "test-tool.h" +#include "repository.h" #include "setup.h" #include "submodule-config.h"
t/helper/test-submodule.c +1 -0
@@ -2,6 +2,7 @@#include "test-tool-utils.h" #include "parse-options.h" #include "remote.h" +#include "repository.h" #include "setup.h" #include "submodule-config.h" #include "submodule.h"
t/helper/test-trace2.c +1 -0
@@ -3,6 +3,7 @@#include "run-command.h" #include "exec-cmd.h" #include "config.h" +#include "repository.h" #include "trace2.h" typedef int (fn_unit_test )(int argc,const char **argv);
t/helper/test-write-cache.c +1 -0
@@ -2,6 +2,7 @@#include "test-tool.h" #include "cache.h" #include "lockfile.h" +#include "repository.h" #include "setup.h" int cmd__write_cache (int argc,const char **argv)
trace2.c +1 -0
@@ -2,6 +2,7 @@#include "config.h" #include "json-writer.h" #include "quote.h" +#include "repository.h" #include "run-command.h" #include "sigchain.h" #include "thread-utils.h"
trace2/tr2_tgt_event.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "config.h" #include "json-writer.h" +#include "repository.h" #include "run-command.h" #include "version.h" #include "trace2/tr2_dst.h"
trace2/tr2_tgt_normal.c +1 -0
@@ -1,5 +1,6 @@#include "git-compat-util.h" #include "config.h" +#include "repository.h" #include "run-command.h" #include "quote.h" #include "version.h"
trace2/tr2_tgt_perf.c +1 -0
@@ -1,5 +1,6 @@#include "git-compat-util.h" #include "config.h" +#include "repository.h" #include "run-command.h" #include "quote.h" #include "version.h"
tree-walk.h +2 -1
@@ -1,9 +1,10 @@#ifndef TREE_WALK_H #define TREE_WALK_H -#include "hash.h" +#include "hash-ll.h" struct index_state ; +struct repository ;#define MAX_TRAVERSE_TREES 8
tree.h +1 -0
@@ -3,6 +3,7 @@#include "object.h" +struct pathspec ;struct repository ;struct strbuf ;
wrapper.c +1 -0
@@ -5,6 +5,7 @@#include "abspath.h" #include "config.h" #include "gettext.h" +#include "repository.h" #include "strbuf.h" #include "trace2.h" #include "wrapper.h"
xdiff-interface.h +1 -1
@@ -1,7 +1,7 @@#ifndef XDIFF_INTERFACE_H #define XDIFF_INTERFACE_H -#include "hash.h" +#include "hash-ll.h" #include "xdiff/xdiff.h" /*
Signature · 1 line
gitgitgadget
PATCH v2 19/22 commit.h: reduce unnecessary includes
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- add-interactive.c | 1 + archive.c | 2 ++ bloom.c | 1 + builtin/diff-tree.c | 1 + builtin/diff.c | 1 + builtin/gc.c | 1 + builtin/log.c | 1 + builtin/merge-tree.c | 1 + combine-diff.c | 1 + commit-graph.c | 1 + commit.c | 1 + commit.h | 11 ++++------- dir.c | 1 + fetch-pack.c | 1 + fsck.c | 1 + gpg-interface.c | 1 + grep.c | 1 + http-push.c | 1 + log-tree.c | 1 + merge-ort-wrappers.c | 1 + merge.c | 1 + notes-cache.c | 1 + notes-utils.c | 1 + object-name.c | 1 + pack-bitmap-write.c | 1 + parse-options-cb.c | 1 + parse-options.c | 1 + read-cache.c | 1 + ref-filter.c | 1 + reflog.c | 1 + refs/debug.c | 1 + refspec.c | 1 + revision.h | 1 + send-pack.c | 1 + wt-status.c | 1 + 35 files changed, 39 insertions(+), 7 deletions(-)
add-interactive.c +1 -0
@@ -12,6 +12,7 @@#include "dir.h" #include "run-command.h" #include "prompt.h" +#include "tree.h" static void init_color(struct repository *r, struct add_i_state *s, const char *section_and_slot, char *dst,
archive.c +2 -0
@@ -6,10 +6,12 @@#include "environment.h" #include "gettext.h" #include "hex.h" +#include "pretty.h" #include "setup.h" #include "refs.h" #include "object-store.h" #include "commit.h" +#include "tree.h" #include "tree-walk.h" #include "attr.h" #include "archive.h"
bloom.c +1 -0
@@ -6,6 +6,7 @@#include "hashmap.h" #include "commit-graph.h" #include "commit.h" +#include "commit-slab.h" define_commit_slab(bloom_filter_slab, struct bloom_filter);
builtin/diff-tree.c +1 -0
@@ -9,6 +9,7 @@#include "builtin.h" #include "submodule.h" #include "repository.h" +#include "tree.h" static struct rev_info log_tree_opt;
builtin/diff.c +1 -0
@@ -22,6 +22,7 @@#include "setup.h" #include "submodule.h" #include "oid-array.h" +#include "tree.h" #define DIFF_NO_INDEX_EXPLICIT 1#define DIFF_NO_INDEX_IMPLICIT 2
builtin/gc.c +1 -0
@@ -12,6 +12,7 @@#include "builtin.h" #include "abspath.h" +#include "date.h" #include "environment.h" #include "hex.h" #include "repository.h"
builtin/log.c +1 -0
@@ -44,6 +44,7 @@#include "commit-reach.h" #include "range-diff.h" #include "tmp-objdir.h" +#include "tree.h" #include "write-or-die.h" #define MAIL_DEFAULT_WRAP 72
builtin/merge-tree.c +1 -0
@@ -16,6 +16,7 @@#include "exec-cmd.h" #include "merge-blobs.h" #include "quote.h" +#include "tree.h" static int line_termination ='\n' ;
combine-diff.c +1 -0
@@ -13,6 +13,7 @@#include "xdiff/xmacros.h" #include "log-tree.h" #include "refs.h" +#include "tree.h" #include "userdiff.h" #include "oid-array.h" #include "revision.h"
commit-graph.c +1 -0
@@ -23,6 +23,7 @@#include "shallow.h" #include "json-writer.h" #include "trace2.h" +#include "tree.h" #include "chunk-format.h" #include "wrapper.h"
commit.c +1 -0
@@ -26,6 +26,7 @@#include "run-command.h" #include "setup.h" #include "shallow.h" +#include "tree.h" #include "hook.h" static struct commit_extra_header *read_commit_extra_header_lines (const char *buf,size_t len,const char **);
commit.h +4 -7
@@ -2,13 +2,10 @@#define COMMIT_H #include "object.h" -#include "tree.h" -#include "strbuf.h" -#include "decorate.h" -#include "gpg-interface.h" -#include "string-list.h" -#include "pretty.h" -#include "commit-slab.h" + +struct signature_check ; +struct strbuf ; +struct tree ;#define COMMIT_NOT_FROM_GRAPH 0xFFFFFFFF#define GENERATION_NUMBER_INFINITY ((1ULL << 63) - 1)
dir.c +1 -0
@@ -27,6 +27,7 @@#include "submodule-config.h" #include "symlinks.h" #include "trace2.h" +#include "tree.h" #include "wrapper.h" /*
fetch-pack.c +1 -0
@@ -2,6 +2,7 @@#include "alloc.h" #include "repository.h" #include "config.h" +#include "date.h" #include "environment.h" #include "gettext.h" #include "hex.h"
fsck.c +1 -0
@@ -1,5 +1,6 @@#include "git-compat-util.h" #include "alloc.h" +#include "date.h" #include "hex.h" #include "object-store.h" #include "repository.h"
gpg-interface.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "commit.h" #include "config.h" +#include "date.h" #include "gettext.h" #include "run-command.h" #include "strbuf.h"
grep.c +1 -0
@@ -4,6 +4,7 @@#include "grep.h" #include "hex.h" #include "object-store.h" +#include "pretty.h" #include "userdiff.h" #include "xdiff-interface.h" #include "diff.h"
http-push.c +1 -0
@@ -15,6 +15,7 @@#include "setup.h" #include "sigchain.h" #include "strvec.h" +#include "tree.h" #include "packfile.h" #include "object-store.h" #include "commit-reach.h"
log-tree.c +1 -0
@@ -24,6 +24,7 @@#include "help.h" #include "range-diff.h" #include "strmap.h" +#include "tree.h" #include "write-or-die.h" static struct decoration name_decoration = {"object names" };
merge-ort-wrappers.c +1 -0
@@ -3,6 +3,7 @@#include "hash.h" #include "merge-ort.h" #include "merge-ort-wrappers.h" +#include "tree.h" #include "commit.h"
merge.c +1 -0
@@ -7,6 +7,7 @@#include "commit.h" #include "run-command.h" #include "resolve-undo.h" +#include "tree.h" #include "tree-walk.h" #include "unpack-trees.h" #include "dir.h"
notes-cache.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "notes-cache.h" #include "object-store.h" +#include "pretty.h" #include "repository.h" #include "commit.h" #include "refs.h"
notes-utils.c +1 -0
@@ -6,6 +6,7 @@#include "refs.h" #include "notes-utils.h" #include "repository.h" +#include "strbuf.h" void create_notes_commit(struct repository *r, struct notes_tree *t,
object-name.c +1 -0
@@ -15,6 +15,7 @@#include "dir.h" #include "oid-array.h" #include "packfile.h" +#include "pretty.h" #include "object-store.h" #include "repository.h" #include "setup.h"
pack-bitmap-write.c +1 -0
@@ -18,6 +18,7 @@#include "commit-reach.h" #include "prio-queue.h" #include "trace2.h" +#include "tree.h" struct bitmapped_commit {struct commit *commit;
parse-options-cb.c +1 -0
@@ -3,6 +3,7 @@#include "branch.h" #include "commit.h" #include "color.h" +#include "date.h" #include "environment.h" #include "gettext.h" #include "object-name.h"
parse-options.c +1 -0
@@ -5,6 +5,7 @@#include "commit.h" #include "color.h" #include "gettext.h" +#include "strbuf.h" #include "utf8.h" static int disallow_abbreviated_options;
read-cache.c +1 -0
@@ -6,6 +6,7 @@#include "cache.h" #include "alloc.h" #include "config.h" +#include "date.h" #include "diff.h" #include "diffcore.h" #include "hex.h"
ref-filter.c +1 -0
@@ -2,6 +2,7 @@#include "alloc.h" #include "environment.h" #include "gettext.h" +#include "gpg-interface.h" #include "hex.h" #include "parse-options.h" #include "refs.h"
reflog.c +1 -0
@@ -4,6 +4,7 @@#include "reflog.h" #include "refs.h" #include "revision.h" +#include "tree.h" #include "worktree.h" /* Remember to update object flag allocation in object.h */
refs/debug.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "hex.h" #include "refs-internal.h" +#include "string-list.h" #include "trace.h" static struct trace_key trace_refs =TRACE_KEY_INIT (REFS );
refspec.c +1 -0
@@ -6,6 +6,7 @@#include "strvec.h" #include "refs.h" #include "refspec.h" +#include "strbuf.h" static struct refspec_item s_tag_refspec = { .force =0 ,
revision.h +1 -0
@@ -8,6 +8,7 @@#include "pretty.h" #include "diff.h" #include "commit-slab-decl.h" +#include "decorate.h" #include "ident.h" #include "list-objects-filter-options.h"
send-pack.c +1 -0
@@ -1,6 +1,7 @@#include "git-compat-util.h" #include "config.h" #include "commit.h" +#include "date.h" #include "gettext.h" #include "hex.h" #include "refs.h"
wt-status.c +1 -0
@@ -22,6 +22,7 @@#include "strbuf.h" #include "trace.h" #include "trace2.h" +#include "tree.h" #include "utf8.h" #include "worktree.h" #include "lockfile.h"
Signature · 1 line
gitgitgadget
PATCH v2 22/22 reftable: ensure git-compat-util.h is the first (indirect) include
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- reftable/error.c | 1 + reftable/publicbasics.c | 2 +- reftable/tree.c | 2 +- reftable/tree_test.c | 1 + t/helper/test-reftable.c | 1 + 5 files changed, 5 insertions(+), 2 deletions(-)
reftable/error.c +1 -0
@@ -6,6 +6,7 @@ license that can be found in the LICENSE file or athttps://developers.google.com/open-source/licenses/bsd */ +#include "system.h" #include "reftable-error.h" #include <stdio.h>
reftable/publicbasics.c +1 -1
@@ -6,10 +6,10 @@ license that can be found in the LICENSE file or athttps://developers.google.com/open-source/licenses/bsd */ +#include "system.h" #include "reftable-malloc.h" #include "basics.h" -#include "system.h" static void *(*reftable_malloc_ptr)(size_t sz);static void *(*reftable_realloc_ptr)(void *,size_t );
reftable/tree.c +1 -1
@@ -6,10 +6,10 @@ license that can be found in the LICENSE file or athttps://developers.google.com/open-source/licenses/bsd */ +#include "system.h" #include "tree.h" #include "basics.h" -#include "system.h" struct tree_node *tree_search(void *key, struct tree_node **rootp, int (*compare)(const void *, const void *),
reftable/tree_test.c +1 -0
@@ -6,6 +6,7 @@ license that can be found in the LICENSE file or athttps://developers.google.com/open-source/licenses/bsd */ +#include "system.h" #include "tree.h" #include "basics.h"
t/helper/test-reftable.c +1 -0
@@ -1,3 +1,4 @@ +#include "reftable/system.h" #include "reftable/reftable-tests.h" #include "test-tool.h"
Signature · 1 line
gitgitgadget
PATCH v2 21/22 diff.h: reduce unnecessary includes
In reply to Elijah Newren via GitGitGadgetFrom: Elijah Newren <[email protected]>
--- attr.c | 1 + diff.h | 1 - http-push.c | 1 + line-log.c | 1 + pack-bitmap-write.c | 1 + reflog.c | 1 + tree-diff.c | 1 + 7 files changed, 6 insertions(+), 1 deletion(-)
attr.c +1 -0
@@ -20,6 +20,7 @@#include "object-store.h" #include "setup.h" #include "thread-utils.h" +#include "tree-walk.h" const char git_attr__true[] ="(builtin)true" ;const char git_attr__false[] ="\0(builtin)false" ;
diff.h +0 -1
@@ -4,7 +4,6 @@#ifndef DIFF_H #define DIFF_H -#include "tree-walk.h" #include "pathspec.h" #include "oidset.h" #include "strbuf.h"
http-push.c +1 -0
@@ -16,6 +16,7 @@#include "sigchain.h" #include "strvec.h" #include "tree.h" +#include "tree-walk.h" #include "packfile.h" #include "object-store.h" #include "commit-reach.h"
line-log.c +1 -0
@@ -18,6 +18,7 @@#include "setup.h" #include "strvec.h" #include "bloom.h" +#include "tree-walk.h" static void range_set_grow (struct range_set *rs,size_t extra) {
pack-bitmap-write.c +1 -0
@@ -19,6 +19,7 @@#include "prio-queue.h" #include "trace2.h" #include "tree.h" +#include "tree-walk.h" struct bitmapped_commit {struct commit *commit;
reflog.c +1 -0
@@ -5,6 +5,7 @@#include "refs.h" #include "revision.h" #include "tree.h" +#include "tree-walk.h" #include "worktree.h" /* Remember to update object flag allocation in object.h */
tree-diff.c +1 -0
@@ -5,6 +5,7 @@#include "diff.h" #include "diffcore.h" #include "tree.h" +#include "tree-walk.h" /* * Some mode bits are also used internally for computations.
Signature · 1 line
gitgitgadget
Quoted 8 lines · Elijah Newren via GitGitGadget
Changes since v1:
* dropped the 3rd patch (it was pulled into the series this one depends upon to fix an issue in it)
* redid the old patch 14 (new patch 13); moved the parts ofhash.hnot depending onrepository.hintohash-ll.hso that other headers and files could depend upon just that part. (Are people happy with thehash-ll.hname or have alternate suggestions?)
Thank you for this change. I looked at patch 13 and was pleased to see several uses of hash-ll.h (more than I expected). I'm also happy with the name.
v2 LGTM.
Thanks,
-Stolee
Re: [PATCH v2 13/22] hash-ll.h: split out of hash.h to remove dependency on repository.h
In reply to Elijah Newren via GitGitGadgetQuoted 4 lines · Elijah Newren via GitGitGadget
Move the parts of
hash.hthat do not
depend uponrepository.hinto a new filehash-ll.h(the "low level" parts ofhash.h), and adjust other files to use this new header where the convenience inline functions aren't needed.
Suggestion: To maintain this property, it might be helpful to capture the rules of hash-ll.h vs hash.h in a top-level comment.
hash-ll.h line 274
Quoted 9 lines
hash-ll.h new file +3
-0+const struct object_id *null_oid (void ); +const char *empty_tree_oid_hex (void ); +const char *empty_blob_oid_hex (void );
hash-ll.h doesn't depend on repository.h, but these functions' bodies use the_hash_algo. Does it matter?
Moving the functions to hash.h requires changing 8 files to #include "hash.h", all of which seem to be because they were getting hash-ll.h indirectly via object-name.h.
Quoted 4 lines · Elijah Newren via GitGitGadget
Changes since v1:
* dropped the 3rd patch (it was pulled into the series this one depends upon to fix an issue in it)
Thanks.
Quoted 4 lines
* redid the old patch 14 (new patch 13); moved the parts of
hash.hnot depending onrepository.hintohash-ll.hso that other headers and files could depend upon just that part. (Are people happy with thehash-ll.hname or have alternate suggestions?)
We have precedence of abbreviating low-level to ll in ll-merge.c already.
Re: [PATCH v2 13/22] hash-ll.h: split out of hash.h to remove dependency on repository.h
In reply to Elijah Newren via GitGitGadgetQuoted 5 lines · Elijah Newren via GitGitGadget
This allows
hash.handobject.hto be fairly small, minimal headers. It also exposes a lot of hidden dependencies on bothpath.h(which was brought in byrepository.h) andrepository.h(which was previously implicitly brought in byobject.h), so also adjust other files to be more explicit about what they depend upon.
Yeah, <hash.h> becomes pleasantly small.
Will queue.
Re: [PATCH v2 13/22] hash-ll.h: split out of hash.h to remove dependency on repository.h
In reply to Glen ChooQuoted 11 lines · Glen Choo
Quoted 4 lines · Elijah Newren via GitGitGadget
Move the parts of
hash.hthat do not
depend uponrepository.hinto a new filehash-ll.h(the "low level" parts ofhash.h), and adjust other files to use this new header where the convenience inline functions aren't needed.Suggestion: To maintain this property, it might be helpful to capture the rules of
hash-ll.hvshash.hin a top-level comment.
Quoted 12 lines
hash-ll.h line 274
Quoted 9 lines
hash-ll.h new file +3
-0+const struct object_id *null_oid (void ); +const char *empty_tree_oid_hex (void ); +const char *empty_blob_oid_hex (void );
hash-ll.hdoesn't depend onrepository.h, but these functions' bodies usethe_hash_algo. Does it matter?
That's a good point. I think eventually moving these functions from hash-ll.h to hash.h on this basis makes sense. But I kind of view this series (and its predecessors) as focusing on cleaning up header dependencies, with the idea that hopefully we'd go through and do further cleanup of dependencies of C files that would likely result in further changes to some of the headers. I suspect this isn't the only change we'd need to make for that kind of consistency, which might lengthen this already sizable series, and I've probably missed a few similar cases in my previous series as well.
Quoted 3 lines
Moving the functions to
hash.hrequires changing 8 files to #include "hash.h", all of which seem to be because they were gettinghash-ll.hindirectly viaobject-name.h.
Yeah, seems like a reasonable further change. Are you okay with that being in a future series, or do you think it should be included in this one?
Re: [PATCH v2 13/22] hash-ll.h: split out of hash.h to remove dependency on repository.h
Quoted 9 lines · Elijah Newren
Quoted 2 lines
hash-ll.hdoesn't depend onrepository.h, but these functions' bodies usethe_hash_algo. Does it matter?That's a good point. I think eventually moving these functions from
hash-ll.htohash.hon this basis makes sense. But I kind of view this series (and its predecessors) as focusing on cleaning up header dependencies, with the idea that hopefully we'd go through and do further cleanup of dependencies of C files that would likely result in further changes to some of the headers.
Yeah, for simplicity, keeping this series header-only makes sense.
Quoted 7 lines
Quoted 3 lines
Moving the functions to
hash.hrequires changing 8 files to #include "hash.h", all of which seem to be because they were gettinghash-ll.hindirectly viaobject-name.h.Yeah, seems like a reasonable further change. Are you okay with that being in a future series, or do you think it should be included in this one?
Let's do this in a later series. As you mentioned, there are probably a lot of other clean ups that make sense, but this series is already a good step forward, and keeping those clean ups out makes this easier to review.
Quoted 5 lines · Elijah Newren via GitGitGadget
This series continues to focus on splitting declarations from
cache.hto separate headers. This series also untangles some dependencies betweenhash.handrepository.h, and betweenread-cache.cand tree.[ch], and cleans up a few other headers. At the end of this series the number ofcache.hincludes drops from 189 down to 149.
I looked over all of the patches briefly and didn't spot any issues, though not deeply enough for a Reviewed-by.
FWIW I am quite happy with the direction of this series. I find the result much easier to understand compared to the cache.h status quo.
Quoted 8 lines · Glen Choo
Quoted 5 lines · Elijah Newren via GitGitGadget
This series continues to focus on splitting declarations from
cache.hto separate headers. This series also untangles some dependencies betweenhash.handrepository.h, and betweenread-cache.cand tree.[ch], and cleans up a few other headers. At the end of this series the number ofcache.hincludes drops from 189 down to 149.
Quoted 5 lines
I looked over all of the patches briefly and didn't spot any issues, though not deeply enough for a Reviewed-by.
FWIW I am quite happy with the direction of this series. I find the result much easier to understand compared to the
cache.hstatus quo.
Anything that shrinks the kitchen-sinks would be good ;-)
Thanks.
Re: [PATCH v2 12/22] tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
In reply to Elijah Newren via GitGitGadgetQuoted 51 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
S_DIFFTREE_IFXMIN_NEQis *only* used intree-diff.c, so there is no point exposing it incache.h. Move it totree-diff.c.Signed-off-by Elijah Newren <[email protected]>--- cache.h | 15 --------------- tree-diff.c | 13 +++++++++++++ 2 files changed, 13 insertions(+), 15 deletions(-)cache.h +0
-15@@ -10,21 +10,6 @@#include "object.h" #include "statinfo.h" -/* -* Some mode bits are also used internally for computations. -* -* They *must* not overlap with any valid modes, and they *must* not be emitted -* to outside world - i.e. appear on disk or network. In other words, it's just -* temporary fields, which we internally use, but they have to stay in-house. -* -* ( such approach is valid, as standard S_IF* fits into 16 bits, and in Git -* codebase mode is `unsigned int` which is assumed to be at least 32 bits ) -*/ - -/* used internally in tree-diff */ -#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 - -/* * Basic data structures for the directory cache */ tree-diff.c +6
-0@@ -6,6 +6,19 @@#include "diffcore.h" #include "tree.h" +/* +* Some mode bits are also used internally for computations. +* +* They *must* not overlap with any valid modes, and they *must* not be emitted +* to outside world - i.e. appear on disk or network. In other words, it's just +* temporary fields, which we internally use, but they have to stay in-house.
tree-diff.c line 24
Quoted 10 lines
tree-diff.c +7
-0+* +* ( such approach is valid, as standard S_IF* fits into 16 bits, and in Git +* codebase mode is `unsigned int` which is assumed to be at least 32 bits ) +*/ + +#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 +/* * internal mode marker, saying a tree entry != entry of tp[imin] * (see ll_diff_tree_paths for what it means there)
As it's only used in tree-diff.c, should this change not be instead changing how we define S_IFXMIN_NEQ itself, and combining the two comments seen here (the latter only partially, in the context).
Not that this makes things worse or anything...
Re: [PATCH v2 12/22] tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
Quoted 9 lines · Ævar Arnfjörð Bjarmason
tree-diff.c line 24
Quoted 5 lines
tree-diff.c +2
-0+#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 +/* * internal mode marker, saying a tree entry != entry of tp[imin] * (see ll_diff_tree_paths for what it means there) As it's only used in
tree-diff.c, should this change not be instead changing how we defineS_IFXMIN_NEQitself, and combining the two comments seen here (the latter only partially, in the context).
Yup, the end result should look cleaner with this extra bit of tweak. Thanks for carefully reading the patch.
Re: [PATCH v2 16/22] treewide: remove cache.h inclusion due to previous changes
In reply to Elijah Newren via GitGitGadgetOn Sat, Apr 22 2023, Elijah Newren via GitGitGadget wrote:
The "Subject" says "due to previous changes", but...
Quoted 42 lines
From: Elijah Newren <[email protected]>
Signed-off-by Elijah Newren <[email protected]>--- archive-zip.c | 2 +- bundle-uri.c | 2 +- color.c | 2 +- combine-diff.c | 2 +- common-main.c | 2 +- config.c | 2 +- copy.c | 2 +- credential.c | 2 +- daemon.c | 2 +- date.c | 2 +- diagnose.c | 2 +- environment.c | 2 +- ll-merge.c | 2 +- match-trees.c | 2 +- midx.c | 2 +- object-file.c | 2 +- packfile.c | 2 +- pkt-line.c | 2 +- range-diff.c | 2 +- ref-filter.c | 2 +- t/helper/test-match-trees.c | 1 - t/helper/test-mergesort.c | 1 - t/helper/test-oid-array.c | 1 - t/helper/test-oidtree.c | 1 - t/helper/test-parse-options.c | 1 - t/helper/test-read-midx.c | 1 - t/helper/test-string-list.c | 1 - tree-diff.c | 2 +- tree-walk.c | 2 +- tree.c | 2 +- wrapper.c | 3 ++- 31 files changed, 25 insertions(+), 31 deletions(-)archive-zip.c +0
-0
archive-zip.c line 7
Quoted 8 lines
archive-zip.c +1
-1@@ -1,7 +1,7 @@/* * Copyright (c) 2006 Rene Scharfe */ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "archive.h" #include "gettext.h"
I tried making this change before this series was applied, and everything compiled...
bundle-uri.c line 4
Quoted 10 lines
bundle-uri.c +1
-1@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "bundle-uri.h" #include "bundle.h" #include "copy.h"
That's not the case here, but this could instead be squashed into the 05/22 in this series, i.e. as soon as we add this copy.h, we don't need cache.h anymore.
color.c line 4
Quoted 10 lines
color.c +1
-1@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "color.h" #include "editor.h"
I did not look further, but all of the rest of these look like they'd be better off squashed into the respective "split this out" commit. I don't think keeping the "move declarations for ..." as "move-only" commits is worth it, as opposed to getting rid of this one, and making those atomic.
Re: [PATCH v2 17/22] cache.h: remove unnecessary headers
In reply to Elijah Newren via GitGitGadgetQuoted 38 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
Signed-off-by Elijah Newren <[email protected]>--- cache.h | 2 -- compat/fsmonitor/fsm-ipc-darwin.c | 1 + compat/fsmonitor/fsm-listen-darwin.c | 1 + 3 files changed, 2 insertions(+), 2 deletions(-)cache.h +0
-2@@ -4,8 +4,6 @@#include "git-compat-util.h" #include "strbuf.h" #include "hashmap.h" -#include "gettext.h" -#include "string-list.h" #include "pathspec.h" #include "object.h" #include "statinfo.h" compat/fsmonitor/fsm-ipc-darwin.c +1
-0@@ -1,5 +1,6 @@#include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "strbuf.h" compat/fsmonitor/fsm-listen-darwin.c +0
-0
compat/fsmonitor/fsm-listen-darwin.c line 35
Quoted 7 lines
compat/fsmonitor/fsm-listen-darwin.c +1
-0@@ -29,6 +29,7 @@#include "fsmonitor--daemon.h" #include "fsmonitor-path-utils.h" #include "gettext.h" +#include "string-list.h" struct fsm_listen_data {
If I rebase this topic to make this the first commit everything compiles, i.e. nothing here relies on what came before.
Given the extensive earlier moves I think it would be better to first remove unnecessary includes from cache.h, before starting to split it up.
Re: [PATCH v2 19/22] commit.h: reduce unnecessary includes
In reply to Elijah Newren via GitGitGadgetQuoted 1 line · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
Re earlier comments: If I rebase to make this the first commit everything compiles, i.e. nothing here relied on the earlier split-offs of cache.h into other headers.
You need to make a choice of whether to first split out cache.h, and then do commits like these, or the other way around.
I'm not sure whether it's better to do it the other way around. If you do that it's clear e.g. add-interactive.c's implicit dependency on tree.h via commit.h has nothing to do with what would be the subsequent split-up of cache.h.
Or maybe this is fine. I'm just trying to get some picture of what depends on what in this series...
Re: [PATCH v2 20/22] object-store.h: reduce unnecessary includes
In reply to Elijah Newren via GitGitGadgetQuoted 39 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
Signed-off-by Elijah Newren <[email protected]>--- object-file.c | 1 + object-name.c | 1 + object-store.h | 8 ++++---- submodule-config.c | 1 + 4 files changed, 7 insertions(+), 4 deletions(-)object-file.c +1
-0@@ -38,6 +38,7 @@#include "packfile.h" #include "object-file.h" #include "object-store.h" +#include "oidtree.h" #include "promisor-remote.h" #include "setup.h" #include "submodule.h" object-name.c +1
-0@@ -14,6 +14,7 @@#include "remote.h" #include "dir.h" #include "oid-array.h" +#include "oidtree.h" #include "packfile.h" #include "pretty.h" #include "object-store.h" object-store.h +0
-0
object-store.h line 7
Quoted 6 lines
object-store.h +0
-2@@ -2,16 +2,16 @@#define OBJECT_STORE_H #include "object.h" -#include "oidmap.h" #include "list.h" -#include "oid-array.h"
It seems to me that this should be split up, there does seem to be an unnecessary include here, as the subject claims, at least the "oid-array.h include in object-store.h seems to qualify.
Maybe the same applies to thread-utils.h below?
object-store.h line 13
Quoted 10 lines
object-store.h +3
-2-#include "strbuf.h" #include "thread-utils.h" #include "khash.h" #include "dir.h" -#include "oidtree.h" #include "oidset.h" +struct oidmap ; +struct oidtree ; +struct strbuf ;
But as this shows at least three of these weren't unnecessary, you're just replacing them with forward-decls.
I think that's probably sensible, but I think it should at least be discussed.
It's also not clear why we want to just stop at forward-declaring structs, maybe replacing the dir.h include with:
int fspatheq(const char *a, const char *b); unsigned int fspathhash(const char *str);
Would be too verbose, but if we did that we'd spot that
e.g. match-trees.c is relying on this header to get its "struct strbuf" definition.
I'm perfectly fine to leave that can of worms for some later date though...
Re: [PATCH v2 21/22] diff.h: reduce unnecessary includes
In reply to Elijah Newren via GitGitGadgetQuoted 90 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
Signed-off-by Elijah Newren <[email protected]>--- attr.c | 1 + diff.h | 1 - http-push.c | 1 + line-log.c | 1 + pack-bitmap-write.c | 1 + reflog.c | 1 + tree-diff.c | 1 + 7 files changed, 6 insertions(+), 1 deletion(-)attr.c +1
-0@@ -20,6 +20,7 @@#include "object-store.h" #include "setup.h" #include "thread-utils.h" +#include "tree-walk.h" const char git_attr__true[] ="(builtin)true" ;const char git_attr__false[] ="\0(builtin)false" ;diff.h +0
-1@@ -4,7 +4,6 @@#ifndef DIFF_H #define DIFF_H -#include "tree-walk.h" #include "pathspec.h" #include "oidset.h" #include "strbuf.h" http-push.c +1
-0@@ -16,6 +16,7 @@#include "sigchain.h" #include "strvec.h" #include "tree.h" +#include "tree-walk.h" #include "packfile.h" #include "object-store.h" #include "commit-reach.h" line-log.c +1
-0@@ -18,6 +18,7 @@#include "setup.h" #include "strvec.h" #include "bloom.h" +#include "tree-walk.h" static void range_set_grow (struct range_set *rs,size_t extra) {pack-bitmap-write.c +1
-0@@ -19,6 +19,7 @@#include "prio-queue.h" #include "trace2.h" #include "tree.h" +#include "tree-walk.h" struct bitmapped_commit {struct commit *commit;reflog.c +1
-0@@ -5,6 +5,7 @@#include "refs.h" #include "revision.h" #include "tree.h" +#include "tree-walk.h" #include "worktree.h" /* Remember to update object flag allocation in object.h */ tree-diff.c +0
-0
tree-diff.c line 11
Quoted 7 lines
tree-diff.c +1
-0@@ -5,6 +5,7 @@#include "diff.h" #include "diffcore.h" #include "tree.h" +#include "tree-walk.h" /* * Some mode bits are also used internally for computations.
This, unlike the preceding 20/22 really does seem to strictly match its $subject, i.e. diff.h didn't need tree-walk.h, but some stuff using it needed it, so we're moving the include to those users themselves.
Re: [PATCH v2 13/22] hash-ll.h: split out of hash.h to remove dependency on repository.h
In reply to Elijah Newren via GitGitGadgetcheckout.h line 4
Quoted 13 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
[...]
checkout.h +1
-1@@ -1,7 +1,7 @@#ifndef CHECKOUT_H #define CHECKOUT_H -#include "hash.h" +#include "hash-ll.h"
The end-state of this topic is oddly inconsistent in when it uses includes, and when it uses forward declarations.
As I note in a reply to 20/22 you're adding forward declares there, I think that's fine, but if you opdet for that why not do that here. The body of this header only defines one function, which takes a pointer to a "struct object_id".
Whereas above you did this change:
apply.h line 7
Quoted 13 lines
apply.h +1
-1@@ -1,7 +1,7 @@#ifndef APPLY_H #define APPLY_H -#include "hash.h" +#include "hash-ll.h" #include "lockfile.h" #include "string-list.h" #include "strmap.h"
There we really should include it, as we're not dealing with a pointer to the "struct object_id", but the struct itself, so we need its definition, and don't want to find it implicitly.
chunk-format.h line 7
Quoted 13 lines
chunk-format.h +1
-1@@ -1,7 +1,7 @@#ifndef CHUNK_FORMAT_H #define CHUNK_FORMAT_H -#include "hash.h" +#include "hash-ll.h" struct hashfile ;struct chunkfile ;
Then we have this, where we seemingly could avoid the include as well, and just add a:
struct git_hash_algo;
Anyway, I'm not saying one is better than the other, I'm just wondering why you're picking one, but not the other.
Is it because you know that hash-ll.h doesn't bring in other headers, so its inclusion is OK, whereas later in e.g. 20/22 you avoid including strbuf.h, because you know that'll bring in string-list.h?
If that's the case maybe we should just move strbuf_add_separated_string_list() into some "used by merge-ort.c and merge-recursive.c" file, remove the string-list.h includion from strbuf.h, and then include "strbuf.h" without fearing the side-effects elsewhere?
Re: [PATCH v2 12/22] tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
In reply to Ævar Arnfjörð BjarmasonQuoted 2 lines · Ævar Arnfjörð Bjarmason
On Sat, Apr 22 2023, Elijah Newren via GitGitGadget wrote:
[...]
Quoted 27 lines
Quoted 12 lines
tree-diff.c +6
-0@@ -6,6 +6,19 @@#include "diffcore.h" #include "tree.h" +/* +* Some mode bits are also used internally for computations. +* +* They *must* not overlap with any valid modes, and they *must* not be emitted +* to outside world - i.e. appear on disk or network. In other words, it's just +* temporary fields, which we internally use, but they have to stay in-house. tree-diff.c line 24
Quoted 10 lines
tree-diff.c +7
-0+* +* ( such approach is valid, as standard S_IF* fits into 16 bits, and in Git +* codebase mode is `unsigned int` which is assumed to be at least 32 bits ) +*/ + +#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 +/* * internal mode marker, saying a tree entry != entry of tp[imin] * (see ll_diff_tree_paths for what it means there) As it's only used in
tree-diff.c, should this change not be instead changing how we defineS_IFXMIN_NEQitself, and combining the two comments seen here (the latter only partially, in the context).
Quoted 1 line
Not that this makes things worse or anything...
Hmm, that makes sense; I'll make the tweak. Thanks for the suggestion.
Re: [PATCH v2 16/22] treewide: remove cache.h inclusion due to previous changes
In reply to Ævar Arnfjörð BjarmasonQuoted 42 lines · Ævar Arnfjörð Bjarmason
On Sat, Apr 22 2023, Elijah Newren via GitGitGadget wrote:
The "Subject" says "due to previous changes", but...
Quoted 37 lines
From: Elijah Newren <[email protected]>
Signed-off-by Elijah Newren <[email protected]>--- archive-zip.c | 2 +- bundle-uri.c | 2 +- color.c | 2 +- combine-diff.c | 2 +- common-main.c | 2 +- config.c | 2 +- copy.c | 2 +- credential.c | 2 +- daemon.c | 2 +- date.c | 2 +- diagnose.c | 2 +- environment.c | 2 +- ll-merge.c | 2 +- match-trees.c | 2 +- midx.c | 2 +- object-file.c | 2 +- packfile.c | 2 +- pkt-line.c | 2 +- range-diff.c | 2 +- ref-filter.c | 2 +- t/helper/test-match-trees.c | 1 - t/helper/test-mergesort.c | 1 - t/helper/test-oid-array.c | 1 - t/helper/test-oidtree.c | 1 - t/helper/test-parse-options.c | 1 - t/helper/test-read-midx.c | 1 - t/helper/test-string-list.c | 1 - tree-diff.c | 2 +- tree-walk.c | 2 +- tree.c | 2 +- wrapper.c | 3 ++- 31 files changed, 25 insertions(+), 31 deletions(-)
Quoted 16 lines
archive-zip.c line 7
Quoted 13 lines
archive-zip.c +1
-1@@ -1,7 +1,7 @@/* * Copyright (c) 2006 Rene Scharfe */ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "archive.h" #include "gettext.h" I tried making this change before this series was applied, and everything compiled...
Yeah, this actually could have been done as part of b7b189cd5ae ("treewide: reduce includes of cache.h in other headers", 2023-04-11), which was from the series before this one.
Quoted 15 lines
bundle-uri.c line 4
Quoted 10 lines
bundle-uri.c +1
-1@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "bundle-uri.h" #include "bundle.h" #include "copy.h" That's not the case here, but this could instead be squashed into the 05/22 in this series, i.e. as soon as we add this
copy.h, we don't needcache.hanymore.
Quoted 16 lines
color.c line 4
Quoted 10 lines
color.c +1
-1@@ -1,4 +1,4 @@ -#include "cache.h" +#include "git-compat-util.h" #include "config.h" #include "color.h" #include "editor.h" I did not look further, but all of the rest of these look like they'd be better off squashed into the respective "split this out" commit. I don't think keeping the "move declarations for ..." as "move-only" commits is worth it, as opposed to getting rid of this one, and making those atomic.
So, while that could be done, I found it harder to review my own changes personally, and thought others would as well. If you're looking through several dozen files for a single change (add one new header), it's easy to fly through and be confident you didn't miss anything, but when there are sometimes two changes (also replace cache.h with git-compat-util.h, or just outright remove it if git-compat-util.h is already included), then that slows review down dramatically.
In the previous series, I addressed this by splitting each patch into two -- (1) move declarations to new header and add new relevant include, (2) remove the cache.h includes that was allowed by that change. See patches 7-18 at
https://lore.kernel.org/git/[email protected]/#r
.
But having half a dozen commits labelled "treewide: remove cache.h inclusion due to header changes in previous patch", seemed like a bit of a pain too. So I instead batched them up and did them all at once. I could revert back to how I did it in the previous series, but I think I'd want to keep the commits that are adding a new header separate from the ones that remove includes of cache.h.
Re: [PATCH v2 17/22] cache.h: remove unnecessary headers
In reply to Ævar Arnfjörð BjarmasonQuoted 52 lines · Ævar Arnfjörð Bjarmason
Quoted 38 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
Signed-off-by Elijah Newren <[email protected]>--- cache.h | 2 -- compat/fsmonitor/fsm-ipc-darwin.c | 1 + compat/fsmonitor/fsm-listen-darwin.c | 1 + 3 files changed, 2 insertions(+), 2 deletions(-)cache.h +0
-2@@ -4,8 +4,6 @@#include "git-compat-util.h" #include "strbuf.h" #include "hashmap.h" -#include "gettext.h" -#include "string-list.h" #include "pathspec.h" #include "object.h" #include "statinfo.h" compat/fsmonitor/fsm-ipc-darwin.c +1
-0@@ -1,5 +1,6 @@#include "cache.h" #include "config.h" +#include "gettext.h" #include "hex.h" #include "repository.h" #include "strbuf.h" compat/fsmonitor/fsm-listen-darwin.c +0
-0compat/fsmonitor/fsm-listen-darwin.c line 35
Quoted 7 lines
compat/fsmonitor/fsm-listen-darwin.c +1
-0@@ -29,6 +29,7 @@#include "fsmonitor--daemon.h" #include "fsmonitor-path-utils.h" #include "gettext.h" +#include "string-list.h" struct fsm_listen_data {If I rebase this topic to make this the first commit everything compiles, i.e. nothing here relies on what came before.
Quoted 3 lines
Given the extensive earlier moves I think it would be better to first remove unnecessary includes from
cache.h, before starting to split it up.
Interesting. I originally had this patch earlier as you proposed, but in writing the cover letter found it made it simpler to explain the high level overview by moving it. It's really nice to be able to say, "this series continues to focus on splitting declarations from cache.h to separate headers...and then makes other cleanups I found while doing that", which naturally suggested the opposite ordering from what I originally had.
Re: [PATCH v2 19/22] commit.h: reduce unnecessary includes
In reply to Ævar Arnfjörð BjarmasonQuoted 12 lines · Ævar Arnfjörð Bjarmason
Quoted 1 line · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
Re earlier comments: If I rebase to make this the first commit everything compiles, i.e. nothing here relied on the earlier split-offs of
cache.hinto other headers.You need to make a choice of whether to first split out
cache.h, and then do commits like these, or the other way around.
Quoted 7 lines
I'm not sure whether it's better to do it the other way around. If you do that it's clear e.g. add-interactive.c's implicit dependency on
tree.hviacommit.hhas nothing to do with what would be the subsequent split-up ofcache.h.Or maybe this is fine. I'm just trying to get some picture of what depends on what in this series...
Yes, there is some freedom about the ordering of patches, and I had to make a choice.
I found a number of the cleanups like this one for commit.h interspersed with the other changes, but I intentionally grouped them at the end to get a good high level overview, namely:
(A) Continue splitting declarations from cache.h to separate headers
(B) Do other header cleanups found during that work
I could have reversed the order, but since the series was motivated and organized around (A), it made more sense to me to put those patches first.
Besides, the last time I moved a few miscellaneous cleanup patches to the front of the series, someone else responded thinking the purpose and motivation was about those first few patches[1], so I wanted to avoid a repeat of that problem. ;-)
[1] https://lore.kernel.org/git/CABPp-BFZBWTG1VF6N8teVMYxoUdOeciKGwPq1g-G1K5--My5uQ@mail.gmail.com/
Re: [PATCH v2 20/22] object-store.h: reduce unnecessary includes
In reply to Ævar Arnfjörð BjarmasonQuoted 53 lines · Ævar Arnfjörð Bjarmason
Quoted 39 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
Signed-off-by Elijah Newren <[email protected]>--- object-file.c | 1 + object-name.c | 1 + object-store.h | 8 ++++---- submodule-config.c | 1 + 4 files changed, 7 insertions(+), 4 deletions(-)object-file.c +1
-0@@ -38,6 +38,7 @@#include "packfile.h" #include "object-file.h" #include "object-store.h" +#include "oidtree.h" #include "promisor-remote.h" #include "setup.h" #include "submodule.h" object-name.c +1
-0@@ -14,6 +14,7 @@#include "remote.h" #include "dir.h" #include "oid-array.h" +#include "oidtree.h" #include "packfile.h" #include "pretty.h" #include "object-store.h" object-store.h +0
-0object-store.h line 7
Quoted 6 lines
object-store.h +0
-2@@ -2,16 +2,16 @@#define OBJECT_STORE_H #include "object.h" -#include "oidmap.h" #include "list.h" -#include "oid-array.h" It seems to me that this should be split up, there does seem to be an unnecessary include here, as the subject claims, at least the "
oid-array.hinclude inobject-store.hseems to qualify.
Quoted 1 line
Maybe the same applies to
thread-utils.hbelow?
Removing the thread-utils.h inclusion from object-store.h will break compilation on non-linux platforms; that header is needed for the definition of pthread_mutex_t used later in the file.
Quoted 7 lines
Quoted 7 lines
object-store.h +0
-2-#include "strbuf.h" #include "thread-utils.h" #include "khash.h" #include "dir.h" -#include "oidtree.h" #include "oidset.h"
Quoted 6 lines
object-store.h line 13
Quoted 3 lines
object-store.h +3
-0+struct oidmap ; +struct oidtree ; +struct strbuf ;But as this shows at least three of these weren't unnecessary, you're just replacing them with forward-decls.
Something was necessary, yes, but an #include statement certainly wasn't. Here, nothing would need to be recompiled if those other headers changed, so the include is unnecessary.
Quoted 2 lines
I think that's probably sensible, but I think it should at least be discussed.
We have now discussed it. :-)
Did you want a simple call-out in the commit message, e.g. "Replace the includes with simple forward declarations of the relevant structs." ?
Quoted 5 lines
It's also not clear why we want to just stop at forward-declaring structs, maybe replacing the
dir.hinclude with:int fspatheq(const char *a, const char *b); unsigned int fspathhash(const char *str);
I don't like the idea of having to update function signatures in 3 or more places when we need to make changes. In contrast, forward declarations of structs aren't susceptible to the same need to update while making other changes.
We have hundreds of forward declarations of structs in the code; everyone seems to be fine with them.
Whenever we've had duplicate declarations of functions, it's been treated as a code smell that we've gotten rid of when possible. In fact, in v2.40.0, by my search we only had two of these -- xdl_emit_diff() and read_in_full(). And we've since gotten rid of one of those (namely, read_in_full()).
Quoted 6 lines
Would be too verbose, but if we did that we'd spot that
e.g.match-trees.cis relying on this header to get its "struct strbuf" definition.I'm perfectly fine to leave that can of worms for some later date though...
That's a good find; I also found it separately later in some follow-on patches so I'll also vote for leaving that can of worms for a later date. :-)
And thanks for carefully reading through this series!
Re: [PATCH v2 13/22] hash-ll.h: split out of hash.h to remove dependency on repository.h
In reply to Ævar Arnfjörð BjarmasonQuoted 62 lines · Ævar Arnfjörð Bjarmason
checkout.h line 4
Quoted 13 lines · Elijah Newren via GitGitGadget
From: Elijah Newren <[email protected]>
[...]
checkout.h +1
-1@@ -1,7 +1,7 @@#ifndef CHECKOUT_H #define CHECKOUT_H -#include "hash.h" +#include "hash-ll.h" The end-state of this topic is oddly inconsistent in when it uses includes, and when it uses forward declarations.
As I note in a reply to 20/22 you're adding forward declares there, I think that's fine, but if you opdet for that why not do that here. The body of this header only defines one function, which takes a pointer to a "struct
object_id".Whereas above you did this change:
apply.h line 7
Quoted 13 lines
apply.h +1
-1@@ -1,7 +1,7 @@#ifndef APPLY_H #define APPLY_H -#include "hash.h" +#include "hash-ll.h" #include "lockfile.h" #include "string-list.h" #include "strmap.h" There we really should include it, as we're not dealing with a pointer to the "struct
object_id", but the struct itself, so we need its definition, and don't want to find it implicitly.chunk-format.h line 7
Quoted 13 lines
chunk-format.h +1
-1@@ -1,7 +1,7 @@#ifndef CHUNK_FORMAT_H #define CHUNK_FORMAT_H -#include "hash.h" +#include "hash-ll.h" struct hashfile ;struct chunkfile ;Then we have this, where we seemingly could avoid the include as well, and just add a:
Quoted 4 lines
struct git_hash_algo;Anyway, I'm not saying one is better than the other, I'm just wondering why you're picking one, but not the other.
Basically, just because I updated all the includes through:
$ git grep include..hash.h | xargs sed -i s/hash.h/hash-ll.h/ and then tried to compile and fixed up the files that had errors (usually by making it include hash.h rather than hash-ll.h). Every once in a while I might have noticed that a simpler forward-declare was sufficient but I didn't always look for it.
Anyway, thanks for looking closely and pointing this one out! Switching this to a forward declaration is another nice cleanup to add (though perhaps to a future series, as this one is long enough).
Quoted 3 lines
Is it because you know that
hash-ll.hdoesn't bring in other headers, so its inclusion is OK, whereas later in e.g. 20/22 you avoid includingstrbuf.h, because you know that'll bring instring-list.h?
No, it's more "we gotta start somewhere, and stop well short of complete for the series to be reviewable".
It's really easy to look at pieces of this series and notice all kinds of additional cleanups that are possible:
* Emily pointed out that if we're moving a global to a new header,
why not update the code to just delete the global?
* Calvin pointed out that git-compat-util.h had become a dumping
ground too and needed cleaning.
* Glen pointed out that some of my reasons for splitting betweenhash-ll.h and hash.h would suggest, based on function definitions, that 2 of the declarations should move back to hash.h.
* You've pointed out multiple good additional cleanups in your review so far
* I had an ongoing list of dozens of types of changes to make while
working on this and prior series.
Anyone who looks at this series is going to spot additional "what about this?" things. They're all great. But I picked some cleanups to make, and carried those through. Because of how I did those cleanups (note my grep & sed command above, followed by recompile/edit/repeat cycle), I noticed some additional cleanups that are likely different than what someone else reviewing them will notice. Some of the additional cleanups I noticed are in this series, but most are delayed for some future series.
Quoted 5 lines
If that's the case maybe we should just move
strbuf_add_separated_string_list()into some "used bymerge-ort.candmerge-recursive.c" file, remove thestring-list.hincludion fromstrbuf.h, and then include "strbuf.h" without fearing the side-effects elsewhere?
Ooh, nice catch. If that function is only used by those two files, it should be moved to merge-recursive.h (merge-ort.c includes that currently). However, Calvin is doing a bunch of work refactoring strbuf.[ch], and I told him I'd avoid touching it to reduce conflicts with his in-progress work. So, I'll let him tackle this one in his series.
Re: [PATCH v2 12/22] tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
In reply to Elijah NewrenQuoted 32 lines · Elijah Newren
Quoted 2 lines · Ævar Arnfjörð Bjarmason
On Sat, Apr 22 2023, Elijah Newren via GitGitGadget wrote:
[...]
Quoted 27 lines
Quoted 12 lines
tree-diff.c +6
-0@@ -6,6 +6,19 @@#include "diffcore.h" #include "tree.h" +/* +* Some mode bits are also used internally for computations. +* +* They *must* not overlap with any valid modes, and they *must* not be emitted +* to outside world - i.e. appear on disk or network. In other words, it's just +* temporary fields, which we internally use, but they have to stay in-house. tree-diff.c line 24
Quoted 10 lines
tree-diff.c +7
-0+* +* ( such approach is valid, as standard S_IF* fits into 16 bits, and in Git +* codebase mode is `unsigned int` which is assumed to be at least 32 bits ) +*/ + +#define S_DIFFTREE_IFXMIN_NEQ 0x80000000 +/* * internal mode marker, saying a tree entry != entry of tp[imin] * (see ll_diff_tree_paths for what it means there) As it's only used in
tree-diff.c, should this change not be instead changing how we defineS_IFXMIN_NEQitself, and combining the two comments seen here (the latter only partially, in the context).
Quoted 3 lines
Quoted 1 line
Not that this makes things worse or anything...
Hmm, that makes sense; I'll make the tweak. Thanks for the suggestion.
Although maybe I'll have to do it in a follow-on series? Junio merged the series to next today, so...I guess I'll just add it to my "header cleanups" notes.
Re: [PATCH v2 12/22] tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
Quoted 3 lines · Elijah Newren
Although maybe I'll have to do it in a follow-on series? Junio merged the series to next today, so...I guess I'll just add it to my "header cleanups" notes.
I am not Ævar, but it is so small a thing that is local to a single file, we can wait until the dust settles to avoid distraction.
Re: [PATCH v2 12/22] tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
Quoted 9 lines · Junio C Hamano
Quoted 3 lines · Elijah Newren
Although maybe I'll have to do it in a follow-on series? Junio merged the series to next today, so...I guess I'll just add it to my "header cleanups" notes.
I am not Ævar, but it is so small a thing that is local to a single file, we can wait until the dust settles to avoid distraction.
Yup, sounds good to me. :-)
I've got it on my todo list for continued cleanups.