v2: * Fixed the return type to be unsigned in patch 4. This replaces origin/rs/unpack-trees-reduce-file-scope-global, the first patch has the following diff to that branch diff --git a/unpack-trees.c b/unpack-trees.c index edf9fa2f6c..8e6768f283 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -221,10 +221,11 @@ static void unlink_entry(const struct cache_entry *ce) static int check_updates(struct unpack_trees_options *o) { unsigned cnt = 0, total = 0; + int i, errs = 0; + struct progress *progress = NULL; struct index_state *index = &o->result; struct checkout state = CHECKOUT_INIT; - int i, errs = 0; state.force = 1; state.quiet = 1; Thanks, Stefan v1: unpack-trees is a central file needed for the understanding of working tree manipulation. To help with the understanding refactor the code to be more readable. The first patch was a standalone patch 8 days ago; now incorporated into this series as a v3, reducing the scope of the checkout state. The second patch removes a single continue statement; it needed some digging to explain, but looks trivial. The last 3 patches shorten the check_updates function by adding more functions. If we ever want to parallelize file IO then these smaller functions would be the scope to do it, keeping the check_updates as a high level function guiding through the steps what is happening during a working tree update. Thanks, Stefan Stefan Beller (5): unpack-trees: move checkout state into check_updates unpack-trees: remove unneeded continue unpack-trees: factor progress setup out of check_updates unpack-trees: factor file removal out of check_updates unpack-trees: factor working tree update out of check_updates unpack-trees.c | 96 ++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 64 insertions(+), 32 deletions(-) -- 2.11.0.31.g919a8d0.dirty