diff options
author | Jeff King <peff@peff.net> | 2019-07-31 06:38:15 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-07-31 22:34:25 +0200 |
commit | 9055384710dd8963b125f4f87c24d8f67d9fa24f (patch) | |
tree | 927c9d4670548c932c3b13e1bfcee33ca431943c /tree-walk.h | |
parent | setup_traverse_info(): stop copying oid (diff) | |
download | git-9055384710dd8963b125f4f87c24d8f67d9fa24f.tar.xz git-9055384710dd8963b125f4f87c24d8f67d9fa24f.zip |
tree-walk: drop oid from traverse_info
As the previous commit shows, the presence of an oid in each level of
the traverse_info is confusing and ultimately not necessary. Let's drop
it to make it clear that it will not always be set (as well as convince
us that it's unused, and let the compiler catch any merges with other
branches that do add new uses).
Since the oid is part of name_entry, we'll actually stop embedding a
name_entry entirely, and instead just separately hold the pathname, its
length, and the mode.
This makes the resulting code slightly more verbose as we have to pass
those elements around individually. But it also makes it more clear what
each code path is going to use (and in most of the paths, we really only
care about the pathname itself).
A few of these conversions are noisier than they need to be, as they
also take the opportunity to rename "len" to "namelen" for clarity
(especially where we also have "pathlen" or "ce_len" alongside).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'tree-walk.h')
-rw-r--r-- | tree-walk.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/tree-walk.h b/tree-walk.h index 161e2400f4..baa2aa62c7 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -56,7 +56,10 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct object_id *tree_oid, c struct traverse_info { const char *traverse_path; struct traverse_info *prev; - struct name_entry name; + const char *name; + size_t namelen; + unsigned mode; + int pathlen; struct pathspec *pathspec; @@ -67,7 +70,8 @@ struct traverse_info { }; int get_tree_entry(const struct object_id *, const char *, struct object_id *, unsigned short *); -char *make_traverse_path(char *path, const struct traverse_info *info, const struct name_entry *n); +char *make_traverse_path(char *path, const struct traverse_info *info, + const char *name, size_t namelen); void setup_traverse_info(struct traverse_info *info, const char *base); static inline int traverse_path_len(const struct traverse_info *info, const struct name_entry *n) |