Skip to content

Commit 5c377d3

Browse files
rscharfegitster
authored andcommitted
tree-walk: convert fill_tree_descriptor() to object_id
All callers of fill_tree_descriptor() have been converted to object_id already, so convert that function as well. As a nice side-effect we get rid of NULL checks in tree-diff.c, as fill_tree_descriptor() already does them for us. Helped-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Rene Scharfe <l.s.r@web.de> Reviewed-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent b3622a4 commit 5c377d3

File tree

8 files changed

+23
-23
lines changed

8 files changed

+23
-23
lines changed

Documentation/technical/api-tree-walking.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ Initializing
5555

5656
`fill_tree_descriptor`::
5757

58-
Initialize a `tree_desc` and decode its first entry given the sha1 of
59-
a tree. Returns the `buffer` member if the sha1 is a valid tree
60-
identifier and NULL otherwise.
58+
Initialize a `tree_desc` and decode its first entry given the
59+
object ID of a tree. Returns the `buffer` member if the latter
60+
is a valid tree identifier and NULL otherwise.
6161

6262
`setup_traverse_info`::
6363

builtin/merge-tree.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,11 @@ static void unresolved_directory(const struct traverse_info *info,
213213

214214
newbase = traverse_path(info, p);
215215

216-
#define ENTRY_SHA1(e) (((e)->mode && S_ISDIR((e)->mode)) ? (e)->oid->hash : NULL)
217-
buf0 = fill_tree_descriptor(t+0, ENTRY_SHA1(n + 0));
218-
buf1 = fill_tree_descriptor(t+1, ENTRY_SHA1(n + 1));
219-
buf2 = fill_tree_descriptor(t+2, ENTRY_SHA1(n + 2));
220-
#undef ENTRY_SHA1
216+
#define ENTRY_OID(e) (((e)->mode && S_ISDIR((e)->mode)) ? (e)->oid : NULL)
217+
buf0 = fill_tree_descriptor(t + 0, ENTRY_OID(n + 0));
218+
buf1 = fill_tree_descriptor(t + 1, ENTRY_OID(n + 1));
219+
buf2 = fill_tree_descriptor(t + 2, ENTRY_OID(n + 2));
220+
#undef ENTRY_OID
221221

222222
merge_trees(t, newbase);
223223

@@ -352,7 +352,7 @@ static void *get_tree_descriptor(struct tree_desc *desc, const char *rev)
352352

353353
if (get_oid(rev, &oid))
354354
die("unknown rev %s", rev);
355-
buf = fill_tree_descriptor(desc, oid.hash);
355+
buf = fill_tree_descriptor(desc, &oid);
356356
if (!buf)
357357
die("%s is not a tree", rev);
358358
return buf;

builtin/reset.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,13 @@ static int reset_index(const struct object_id *oid, int reset_type, int quiet)
7575
struct object_id head_oid;
7676
if (get_oid("HEAD", &head_oid))
7777
return error(_("You do not have a valid HEAD."));
78-
if (!fill_tree_descriptor(desc, head_oid.hash))
78+
if (!fill_tree_descriptor(desc, &head_oid))
7979
return error(_("Failed to find tree of HEAD."));
8080
nr++;
8181
opts.fn = twoway_merge;
8282
}
8383

84-
if (!fill_tree_descriptor(desc + nr - 1, oid->hash))
84+
if (!fill_tree_descriptor(desc + nr - 1, oid))
8585
return error(_("Failed to find tree of %s."), oid_to_hex(oid));
8686
if (unpack_trees(nr, desc, &opts))
8787
return -1;

notes.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree,
425425
unsigned char type;
426426
struct leaf_node *l;
427427

428-
buf = fill_tree_descriptor(&desc, subtree->val_oid.hash);
428+
buf = fill_tree_descriptor(&desc, &subtree->val_oid);
429429
if (!buf)
430430
die("Could not read %s for notes-index",
431431
oid_to_hex(&subtree->val_oid));

tree-diff.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -421,9 +421,8 @@ static struct combine_diff_path *ll_diff_tree_paths(
421421
* diff_tree_oid(parent, commit) )
422422
*/
423423
for (i = 0; i < nparent; ++i)
424-
tptree[i] = fill_tree_descriptor(&tp[i],
425-
parents_oid[i] ? parents_oid[i]->hash : NULL);
426-
ttree = fill_tree_descriptor(&t, oid ? oid->hash : NULL);
424+
tptree[i] = fill_tree_descriptor(&tp[i], parents_oid[i]);
425+
ttree = fill_tree_descriptor(&t, oid);
427426

428427
/* Enable recursion indefinitely */
429428
opt->pathspec.recursive = DIFF_OPT_TST(opt, RECURSIVE);

tree-walk.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,16 @@ int init_tree_desc_gently(struct tree_desc *desc, const void *buffer, unsigned l
7878
return result;
7979
}
8080

81-
void *fill_tree_descriptor(struct tree_desc *desc, const unsigned char *sha1)
81+
void *fill_tree_descriptor(struct tree_desc *desc, const struct object_id *oid)
8282
{
8383
unsigned long size = 0;
8484
void *buf = NULL;
8585

86-
if (sha1) {
87-
buf = read_object_with_reference(sha1, tree_type, &size, NULL);
86+
if (oid) {
87+
buf = read_object_with_reference(oid->hash, tree_type, &size,
88+
NULL);
8889
if (!buf)
89-
die("unable to read tree %s", sha1_to_hex(sha1));
90+
die("unable to read tree %s", oid_to_hex(oid));
9091
}
9192
init_tree_desc(desc, buf, size);
9293
return buf;

tree-walk.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ int init_tree_desc_gently(struct tree_desc *desc, const void *buf, unsigned long
4242
int tree_entry(struct tree_desc *, struct name_entry *);
4343
int tree_entry_gently(struct tree_desc *, struct name_entry *);
4444

45-
void *fill_tree_descriptor(struct tree_desc *desc, const unsigned char *sha1);
45+
void *fill_tree_descriptor(struct tree_desc *desc, const struct object_id *oid);
4646

4747
struct traverse_info;
4848
typedef int (*traverse_callback_t)(int n, unsigned long mask, unsigned long dirmask, struct name_entry *entry, struct traverse_info *);

unpack-trees.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -662,10 +662,10 @@ static int traverse_trees_recursive(int n, unsigned long dirmask,
662662
else if (i > 1 && are_same_oid(&names[i], &names[i - 2]))
663663
t[i] = t[i - 2];
664664
else {
665-
const unsigned char *sha1 = NULL;
665+
const struct object_id *oid = NULL;
666666
if (dirmask & 1)
667-
sha1 = names[i].oid->hash;
668-
buf[nr_buf++] = fill_tree_descriptor(t+i, sha1);
667+
oid = names[i].oid;
668+
buf[nr_buf++] = fill_tree_descriptor(t + i, oid);
669669
}
670670
}
671671

0 commit comments

Comments
 (0)