unpack-trees: clean up some flow control

The update_sparsity() function was introduced in commit 7af7a25853 ("unpack-trees: add a new update_sparsity() function", 2020-03-27). Prior to that, unpack_trees() was used, but that had a few bugs because the needs of the caller were different, and different enough that unpack_trees() could not easily be modified to handle both usecases. The implementation detail that update_sparsity() was written by copying unpack_trees() and then streamlining it, and then modifying it in the needed ways still shows through in that there are leftover vestiges in both functions that are no longer needed. Clean them up. In particular: * update_sparsity() allows a pattern list to be passed in, but unpack_trees() never should use a different pattern list. Add a check and a BUG() if this gets violated. * update_sparsity() has a check early on that will BUG() if o->skip_sparse_checkout is set; as such, there's no need to check for that condition again later in the code. We can simply remove the check and its corresponding goto label. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Elijah Newren committed Feb 27, 2023 at 15:28 UTC 5d4f4a592e99e8fb220b2db410f0d81203f3762e
1 file changed +3 -4
unpack-trees.c
+3 -4
@@ -1873,6 +1873,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
1873 die("unpack_trees takes at most %d trees", MAX_UNPACK_TREES);
1874 if (o->dir)
1875 BUG("o->dir is for internal use only");
1876 + if (o->pl)
1877 + BUG("o->pl is for internal use only");
1878
1879 trace_performance_enter();
1880 trace2_region_enter("unpack_trees", "unpack_trees", the_repository);
@@ -1899,7 +1901,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
1901
1902 if (!core_apply_sparse_checkout || !o->update)
1903 o->skip_sparse_checkout = 1;
1902 - if (!o->skip_sparse_checkout && !o->pl) {
1904 + if (!o->skip_sparse_checkout) {
1905 memset(&pl, 0, sizeof(pl));
1906 free_pattern_list = 1;
1907 populate_from_existing_patterns(o, &pl);
@@ -2113,8 +2115,6 @@ enum update_sparsity_result update_sparsity(struct unpack_trees_options *o)
2115 memset(&pl, 0, sizeof(pl));
2116 free_pattern_list = 1;
2117 populate_from_existing_patterns(o, &pl);
2116 - if (o->skip_sparse_checkout)
2117 - goto skip_sparse_checkout;
2118 }
2119
2120 /* Expand sparse directories as needed */
@@ -2142,7 +2142,6 @@ enum update_sparsity_result update_sparsity(struct unpack_trees_options *o)
2142 ret = UPDATE_SPARSITY_WARNINGS;
2143 }
2144
2145 -skip_sparse_checkout:
2145 if (check_updates(o, o->src_index))
2146 ret = UPDATE_SPARSITY_WORKTREE_UPDATE_FAILURES;
2147