Ok, fourth time lucky? Linus ---- diff --git a/revision.c b/revision.c index 0f98960..2061ca8 100644 --- a/revision.c +++ b/revision.c @@ -246,7 +246,7 @@ int rev_compare_tree(struct rev_info *re return REV_TREE_DIFFERENT; tree_difference = REV_TREE_SAME; if (diff_tree_sha1(t1->object.sha1, t2->object.sha1, "", - &revs->diffopt) < 0) + &revs->pruning) < 0) return REV_TREE_DIFFERENT; return tree_difference; } @@ -269,7 +269,7 @@ int rev_same_tree_as_empty(struct rev_in empty.size = 0; tree_difference = 0; - retval = diff_tree(&empty, &real, "", &revs->diffopt); + retval = diff_tree(&empty, &real, "", &revs->pruning); free(tree); return retval >= 0 && !tree_difference; @@ -476,9 +476,9 @@ static void handle_all(struct rev_info * void init_revisions(struct rev_info *revs) { memset(revs, 0, sizeof(*revs)); - revs->diffopt.recursive = 1; - revs->diffopt.add_remove = file_add_remove; - revs->diffopt.change = file_change; + revs->pruning.recursive = 1; + revs->pruning.add_remove = file_add_remove; + revs->pruning.change = file_change; revs->lifo = 1; revs->dense = 1; revs->prefix = setup_git_directory(); @@ -780,8 +780,10 @@ int setup_revisions(int argc, const char revs->limited = 1; if (revs->prune_data) { - diff_tree_setup_paths(revs->prune_data, &revs->diffopt); + diff_tree_setup_paths(revs->prune_data, &revs->pruning); revs->prune_fn = try_to_simplify_commit; + if (!revs->full_diff) + diff_tree_setup_paths(revs->prune_data, &revs->diffopt); } if (revs->combine_merges) { revs->ignore_merges = 0; @@ -790,8 +792,6 @@ int setup_revisions(int argc, const char } if (revs->diffopt.output_format == DIFF_FORMAT_PATCH) revs->diffopt.recursive = 1; - if (!revs->full_diff && revs->prune_data) - diff_tree_setup_paths(revs->prune_data, &revs->diffopt); diff_setup_done(&revs->diffopt); return left; diff --git a/revision.h b/revision.h index 9a45986..6eaa904 100644 --- a/revision.h +++ b/revision.h @@ -61,8 +61,9 @@ struct rev_info { unsigned long max_age; unsigned long min_age; - /* paths limiting */ + /* diff info for patches and for paths limiting */ struct diff_options diffopt; + struct diff_options pruning; topo_sort_set_fn_t topo_setter; topo_sort_get_fn_t topo_getter; - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html