tree-walk.c: remove the_repo from fill_tree_descriptor()
While at there, clean up the_repo usage in builtin/merge-tree.c a tiny bit. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy committed
Jun 27, 2019 at 16:28 UTC
5e575807337d15dbecf88767e709df08304e3b94
9 files changed
+29
-21
builtin/merge-tree.c
+13
-9
@@ -205,6 +205,7 @@ static void resolve(const struct traverse_info *info, struct name_entry *ours, s
205
static void unresolved_directory(const struct traverse_info *info,
206
struct name_entry n[3])
207
{
208
+ struct repository *r = the_repository;
209
char *newbase;
210
struct name_entry *p;
211
struct tree_desc t[3];
@@ -220,9 +221,9 @@ static void unresolved_directory(const struct traverse_info *info,
221
newbase = traverse_path(info, p);
222
223
#define ENTRY_OID(e) (((e)->mode && S_ISDIR((e)->mode)) ? &(e)->oid : NULL)
223
- buf0 = fill_tree_descriptor(t + 0, ENTRY_OID(n + 0));
224
- buf1 = fill_tree_descriptor(t + 1, ENTRY_OID(n + 1));
225
- buf2 = fill_tree_descriptor(t + 2, ENTRY_OID(n + 2));
224
+ buf0 = fill_tree_descriptor(r, t + 0, ENTRY_OID(n + 0));
225
+ buf1 = fill_tree_descriptor(r, t + 1, ENTRY_OID(n + 1));
226
+ buf2 = fill_tree_descriptor(r, t + 2, ENTRY_OID(n + 2));
227
#undef ENTRY_OID
228
229
merge_trees(t, newbase);
@@ -351,14 +352,16 @@ static void merge_trees(struct tree_desc t[3], const char *base)
352
traverse_trees(&the_index, 3, t, &info);
353
}
354
354
-static void *get_tree_descriptor(struct tree_desc *desc, const char *rev)
355
+static void *get_tree_descriptor(struct repository *r,
356
+ struct tree_desc *desc,
357
+ const char *rev)
358
{
359
struct object_id oid;
360
void *buf;
361
359
- if (get_oid(rev, &oid))
362
+ if (repo_get_oid(r, rev, &oid))
363
die("unknown rev %s", rev);
361
- buf = fill_tree_descriptor(desc, &oid);
364
+ buf = fill_tree_descriptor(r, desc, &oid);
365
if (!buf)
366
die("%s is not a tree", rev);
367
return buf;
@@ -366,15 +369,16 @@ static void *get_tree_descriptor(struct tree_desc *desc, const char *rev)
369
370
int cmd_merge_tree(int argc, const char **argv, const char *prefix)
371
{
372
+ struct repository *r = the_repository;
373
struct tree_desc t[3];
374
void *buf1, *buf2, *buf3;
375
376
if (argc != 4)
377
usage(merge_tree_usage);
378
375
- buf1 = get_tree_descriptor(t+0, argv[1]);
376
- buf2 = get_tree_descriptor(t+1, argv[2]);
377
- buf3 = get_tree_descriptor(t+2, argv[3]);
379
+ buf1 = get_tree_descriptor(r, t+0, argv[1]);
380
+ buf2 = get_tree_descriptor(r, t+1, argv[2]);
381
+ buf3 = get_tree_descriptor(r, t+2, argv[3]);
382
merge_trees(t, "");
383
free(buf1);
384
free(buf2);
builtin/rebase.c
+2
-2
@@ -840,13 +840,13 @@ static int reset_head(struct object_id *oid, const char *action,
840
goto leave_reset_head;
841
}
842
843
- if (!reset_hard && !fill_tree_descriptor(&desc[nr++], &head_oid)) {
843
+ if (!reset_hard && !fill_tree_descriptor(the_repository, &desc[nr++], &head_oid)) {
844
ret = error(_("failed to find tree of %s"),
845
oid_to_hex(&head_oid));
846
goto leave_reset_head;
847
}
848
849
- if (!fill_tree_descriptor(&desc[nr++], oid)) {
849
+ if (!fill_tree_descriptor(the_repository, &desc[nr++], oid)) {
850
ret = error(_("failed to find tree of %s"), oid_to_hex(oid));
851
goto leave_reset_head;
852
}
builtin/reset.c
+2
-2
@@ -79,13 +79,13 @@ static int reset_index(const struct object_id *oid, int reset_type, int quiet)
79
struct object_id head_oid;
80
if (get_oid("HEAD", &head_oid))
81
return error(_("You do not have a valid HEAD."));
82
- if (!fill_tree_descriptor(desc + nr, &head_oid))
82
+ if (!fill_tree_descriptor(the_repository, desc + nr, &head_oid))
83
return error(_("Failed to find tree of HEAD."));
84
nr++;
85
opts.fn = twoway_merge;
86
}
87
88
- if (!fill_tree_descriptor(desc + nr, oid)) {
88
+ if (!fill_tree_descriptor(the_repository, desc + nr, oid)) {
89
error(_("Failed to find tree of %s."), oid_to_hex(oid));
90
goto out;
91
}
notes.c
+1
-1
@@ -397,7 +397,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree,
397
struct name_entry entry;
398
const unsigned hashsz = the_hash_algo->rawsz;
399
400
- buf = fill_tree_descriptor(&desc, &subtree->val_oid);
400
+ buf = fill_tree_descriptor(the_repository, &desc, &subtree->val_oid);
401
if (!buf)
402
die("Could not read %s for notes-index",
403
oid_to_hex(&subtree->val_oid));
sequencer.c
+1
-1
@@ -3194,7 +3194,7 @@ static int do_reset(struct repository *r,
3194
return error_resolve_conflict(_(action_name(opts)));
3195
}
3196
3197
- if (!fill_tree_descriptor(&desc, &oid)) {
3197
+ if (!fill_tree_descriptor(r, &desc, &oid)) {
3198
error(_("failed to find tree of %s"), oid_to_hex(&oid));
3199
rollback_lock_file(&lock);
3200
free((void *)desc.buffer);
tree-diff.c
+2
-2
@@ -422,8 +422,8 @@ static struct combine_diff_path *ll_diff_tree_paths(
422
* diff_tree_oid(parent, commit) )
423
*/
424
for (i = 0; i < nparent; ++i)
425
- tptree[i] = fill_tree_descriptor(&tp[i], parents_oid[i]);
426
- ttree = fill_tree_descriptor(&t, oid);
425
+ tptree[i] = fill_tree_descriptor(opt->repo, &tp[i], parents_oid[i]);
426
+ ttree = fill_tree_descriptor(opt->repo, &t, oid);
427
428
/* Enable recursion indefinitely */
429
opt->pathspec.recursive = opt->flags.recursive;
tree-walk.c
+4
-2
@@ -81,13 +81,15 @@ int init_tree_desc_gently(struct tree_desc *desc, const void *buffer, unsigned l
81
return result;
82
}
83
84
-void *fill_tree_descriptor(struct tree_desc *desc, const struct object_id *oid)
84
+void *fill_tree_descriptor(struct repository *r,
85
+ struct tree_desc *desc,
86
+ const struct object_id *oid)
87
{
88
unsigned long size = 0;
89
void *buf = NULL;
90
91
if (oid) {
90
- buf = read_object_with_reference(the_repository, oid, tree_type, &size, NULL);
92
+ buf = read_object_with_reference(r, oid, tree_type, &size, NULL);
93
if (!buf)
94
die("unable to read tree %s", oid_to_hex(oid));
95
}
tree-walk.h
+3
-1
@@ -45,7 +45,9 @@ int init_tree_desc_gently(struct tree_desc *desc, const void *buf, unsigned long
45
int tree_entry(struct tree_desc *, struct name_entry *);
46
int tree_entry_gently(struct tree_desc *, struct name_entry *);
47
48
-void *fill_tree_descriptor(struct tree_desc *desc, const struct object_id *oid);
48
+void *fill_tree_descriptor(struct repository *r,
49
+ struct tree_desc *desc,
50
+ const struct object_id *oid);
51
52
struct traverse_info;
53
typedef int (*traverse_callback_t)(int n, unsigned long mask, unsigned long dirmask, struct name_entry *entry, struct traverse_info *);
unpack-trees.c
+1
-1
@@ -840,7 +840,7 @@ static int traverse_trees_recursive(int n, unsigned long dirmask,
840
const struct object_id *oid = NULL;
841
if (dirmask & 1)
842
oid = &names[i].oid;
843
- buf[nr_buf++] = fill_tree_descriptor(t + i, oid);
843
+ buf[nr_buf++] = fill_tree_descriptor(the_repository, t + i, oid);
844
}
845
}
846