Skip to content

Commit 1ca13dd

Browse files
newrengitster
authored andcommitted
unpack-trees: special case read-tree debugging as internal usage
builtin/read-tree.c has some special functionality explicitly designed for debugging unpack-trees.[ch]. Associated with that is two fields that no other external caller would or should use. Mark these as internal to unpack-trees, but allow builtin/read-tree to read or write them for this special case. Signed-off-by: Elijah Newren <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 0d680a7 commit 1ca13dd

File tree

3 files changed

+19
-19
lines changed

3 files changed

+19
-19
lines changed

builtin/read-tree.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ static int debug_merge(const struct cache_entry * const *stages,
8787
{
8888
int i;
8989

90-
printf("* %d-way merge\n", o->merge_size);
90+
printf("* %d-way merge\n", o->internal.merge_size);
9191
debug_stage("index", stages[0], o);
92-
for (i = 1; i <= o->merge_size; i++) {
92+
for (i = 1; i <= o->internal.merge_size; i++) {
9393
char buf[24];
9494
xsnprintf(buf, sizeof(buf), "ent#%d", i);
9595
debug_stage(buf, stages[i], o);
@@ -144,7 +144,7 @@ int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix)
144144
OPT__DRY_RUN(&opts.dry_run, N_("don't update the index or the work tree")),
145145
OPT_BOOL(0, "no-sparse-checkout", &opts.skip_sparse_checkout,
146146
N_("skip applying sparse checkout filter")),
147-
OPT_BOOL(0, "debug-unpack", &opts.debug_unpack,
147+
OPT_BOOL(0, "debug-unpack", &opts.internal.debug_unpack,
148148
N_("debug unpack-trees")),
149149
OPT_CALLBACK_F(0, "recurse-submodules", NULL,
150150
"checkout", "control recursive updating of submodules",
@@ -247,7 +247,7 @@ int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix)
247247
opts.head_idx = 1;
248248
}
249249

250-
if (opts.debug_unpack)
250+
if (opts.internal.debug_unpack)
251251
opts.fn = debug_merge;
252252

253253
/* If we're going to prime_cache_tree later, skip cache tree update */
@@ -263,7 +263,7 @@ int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix)
263263
if (unpack_trees(nr_trees, t, &opts))
264264
return 128;
265265

266-
if (opts.debug_unpack || opts.dry_run)
266+
if (opts.internal.debug_unpack || opts.dry_run)
267267
return 0; /* do not write the index out */
268268

269269
/*

unpack-trees.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -839,7 +839,7 @@ static int traverse_by_cache_tree(int pos, int nr_entries, int nr_names,
839839
mark_ce_used(src[0], o);
840840
}
841841
free(tree_ce);
842-
if (o->debug_unpack)
842+
if (o->internal.debug_unpack)
843843
printf("Unpacked %d entries from %s to %s using cache-tree\n",
844844
nr_entries,
845845
o->src_index->cache[pos]->name,
@@ -1488,7 +1488,7 @@ static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, str
14881488
while (!p->mode)
14891489
p++;
14901490

1491-
if (o->debug_unpack)
1491+
if (o->internal.debug_unpack)
14921492
debug_unpack_callback(n, mask, dirmask, names, info);
14931493

14941494
/* Are we supposed to look at the index too? */
@@ -1929,7 +1929,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
19291929
init_split_index(&o->internal.result);
19301930
}
19311931
oidcpy(&o->internal.result.oid, &o->src_index->oid);
1932-
o->merge_size = len;
1932+
o->internal.merge_size = len;
19331933
mark_all_ce_unused(o->src_index);
19341934

19351935
o->internal.result.fsmonitor_last_update =
@@ -2882,9 +2882,9 @@ int twoway_merge(const struct cache_entry * const *src,
28822882
const struct cache_entry *oldtree = src[1];
28832883
const struct cache_entry *newtree = src[2];
28842884

2885-
if (o->merge_size != 2)
2885+
if (o->internal.merge_size != 2)
28862886
return error("Cannot do a twoway merge of %d trees",
2887-
o->merge_size);
2887+
o->internal.merge_size);
28882888

28892889
if (oldtree == o->df_conflict_entry)
28902890
oldtree = NULL;
@@ -2964,9 +2964,9 @@ int bind_merge(const struct cache_entry * const *src,
29642964
const struct cache_entry *old = src[0];
29652965
const struct cache_entry *a = src[1];
29662966

2967-
if (o->merge_size != 1)
2967+
if (o->internal.merge_size != 1)
29682968
return error("Cannot do a bind merge of %d trees",
2969-
o->merge_size);
2969+
o->internal.merge_size);
29702970
if (a && old)
29712971
return o->quiet ? -1 :
29722972
error(ERRORMSG(o, ERROR_BIND_OVERLAP),
@@ -2990,9 +2990,9 @@ int oneway_merge(const struct cache_entry * const *src,
29902990
const struct cache_entry *old = src[0];
29912991
const struct cache_entry *a = src[1];
29922992

2993-
if (o->merge_size != 1)
2993+
if (o->internal.merge_size != 1)
29942994
return error("Cannot do a oneway merge of %d trees",
2995-
o->merge_size);
2995+
o->internal.merge_size);
29962996

29972997
if (!a || a == o->df_conflict_entry)
29982998
return deleted_entry(old, old, o);
@@ -3027,8 +3027,8 @@ int stash_worktree_untracked_merge(const struct cache_entry * const *src,
30273027
const struct cache_entry *worktree = src[1];
30283028
const struct cache_entry *untracked = src[2];
30293029

3030-
if (o->merge_size != 2)
3031-
BUG("invalid merge_size: %d", o->merge_size);
3030+
if (o->internal.merge_size != 2)
3031+
BUG("invalid merge_size: %d", o->internal.merge_size);
30323032

30333033
if (worktree && untracked)
30343034
return error(_("worktree and untracked commit have duplicate entries: %s"),

unpack-trees.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ struct unpack_trees_options {
6565
skip_unmerged,
6666
initial_checkout,
6767
diff_index_cached,
68-
debug_unpack,
6968
skip_sparse_checkout,
7069
quiet,
7170
exiting_early,
@@ -78,7 +77,6 @@ struct unpack_trees_options {
7877
merge_fn_t fn;
7978

8079
int head_idx;
81-
int merge_size;
8280

8381
struct cache_entry *df_conflict_entry;
8482
void *unpack_data;
@@ -90,8 +88,10 @@ struct unpack_trees_options {
9088

9189
struct unpack_trees_options_internal {
9290
unsigned int nontrivial_merge,
93-
show_all_errors;
91+
show_all_errors,
92+
debug_unpack; /* used by read-tree debugging */
9493

94+
int merge_size; /* used by read-tree debugging */
9595
int cache_bottom;
9696
const char *msgs[NB_UNPACK_TREES_WARNING_TYPES];
9797
struct strvec msgs_to_free;

0 commit comments

Comments
 (0)