mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
tree.h API: expose read_tree_1() as read_tree_at()
Rename the static read_tree_1() function to read_tree_at(). This function works just like read_tree_recursive(), except you provide your own strbuf. This step doesn't make much sense now, but in follow-up commits I'll remove the base/baselen/stage arguments to read_tree_recursive(). At that point an anticipated in-tree user[1] for the old read_tree_recursive() couldn't provide a path to start the traversal. Let's give them a function to do so with an API that makes more sense for them, by taking a strbuf we should be able to avoid more casting and/or reallocations in the future. 1. https://lore.kernel.org/git/xmqqft106sok.fsf@gitster.g Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
7367d88261
commit
6c9fc42e9f
17
tree.c
17
tree.c
@@ -11,10 +11,11 @@
|
|||||||
|
|
||||||
const char *tree_type = "tree";
|
const char *tree_type = "tree";
|
||||||
|
|
||||||
static int read_tree_1(struct repository *r,
|
int read_tree_at(struct repository *r,
|
||||||
struct tree *tree, struct strbuf *base,
|
struct tree *tree, struct strbuf *base,
|
||||||
int stage, const struct pathspec *pathspec,
|
int stage,
|
||||||
read_tree_fn_t fn, void *context)
|
const struct pathspec *pathspec,
|
||||||
|
read_tree_fn_t fn, void *context)
|
||||||
{
|
{
|
||||||
struct tree_desc desc;
|
struct tree_desc desc;
|
||||||
struct name_entry entry;
|
struct name_entry entry;
|
||||||
@@ -71,9 +72,9 @@ static int read_tree_1(struct repository *r,
|
|||||||
len = tree_entry_len(&entry);
|
len = tree_entry_len(&entry);
|
||||||
strbuf_add(base, entry.path, len);
|
strbuf_add(base, entry.path, len);
|
||||||
strbuf_addch(base, '/');
|
strbuf_addch(base, '/');
|
||||||
retval = read_tree_1(r, lookup_tree(r, &oid),
|
retval = read_tree_at(r, lookup_tree(r, &oid),
|
||||||
base, stage, pathspec,
|
base, stage, pathspec,
|
||||||
fn, context);
|
fn, context);
|
||||||
strbuf_setlen(base, oldlen);
|
strbuf_setlen(base, oldlen);
|
||||||
if (retval)
|
if (retval)
|
||||||
return -1;
|
return -1;
|
||||||
@@ -91,7 +92,7 @@ int read_tree_recursive(struct repository *r,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
strbuf_add(&sb, base, baselen);
|
strbuf_add(&sb, base, baselen);
|
||||||
ret = read_tree_1(r, tree, &sb, stage, pathspec, fn, context);
|
ret = read_tree_at(r, tree, &sb, stage, pathspec, fn, context);
|
||||||
strbuf_release(&sb);
|
strbuf_release(&sb);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
6
tree.h
6
tree.h
@@ -33,6 +33,12 @@ int cmp_cache_name_compare(const void *a_, const void *b_);
|
|||||||
#define READ_TREE_RECURSIVE 1
|
#define READ_TREE_RECURSIVE 1
|
||||||
typedef int (*read_tree_fn_t)(const struct object_id *, struct strbuf *, const char *, unsigned int, int, void *);
|
typedef int (*read_tree_fn_t)(const struct object_id *, struct strbuf *, const char *, unsigned int, int, void *);
|
||||||
|
|
||||||
|
int read_tree_at(struct repository *r,
|
||||||
|
struct tree *tree, struct strbuf *base,
|
||||||
|
int stage,
|
||||||
|
const struct pathspec *pathspec,
|
||||||
|
read_tree_fn_t fn, void *context);
|
||||||
|
|
||||||
int read_tree_recursive(struct repository *r,
|
int read_tree_recursive(struct repository *r,
|
||||||
struct tree *tree,
|
struct tree *tree,
|
||||||
const char *base, int baselen,
|
const char *base, int baselen,
|
||||||
|
|||||||
Reference in New Issue
Block a user