Commit aed794d0 by Ben Straub

Checkout: only walk tree once while checking out.

parent f2d42eea
......@@ -53,15 +53,6 @@ typedef struct tree_walk_data
} tree_walk_data;
/* TODO: murder this */
static int count_walker(const char *path, git_tree_entry *entry, void *payload)
{
GIT_UNUSED(path);
GIT_UNUSED(entry);
((tree_walk_data*)payload)->stats->total++;
return 0;
}
static int apply_filters(git_buf *out,
git_vector *filters,
const void *data,
......@@ -166,13 +157,12 @@ int git_checkout_force(git_repository *repo, git_indexer_stats *stats)
payload.stats = stats;
payload.repo = repo;
/* TODO: stats->total is never calculated. */
if (!get_head_tree(&tree, repo)) {
/* Count all the tree nodes for progress information */
if (!git_tree_walk(tree, count_walker, GIT_TREEWALK_POST, &payload)) {
/* Checkout the files */
if (!git_tree_walk(tree, checkout_walker, GIT_TREEWALK_POST, &payload)) {
retcode = 0;
}
/* Checkout the files */
if (!git_tree_walk(tree, checkout_walker, GIT_TREEWALK_POST, &payload)) {
retcode = 0;
}
git_tree_free(tree);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment