diff options
Diffstat (limited to 'subversion/libsvn_wc/diff_local.c')
-rw-r--r-- | subversion/libsvn_wc/diff_local.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/subversion/libsvn_wc/diff_local.c b/subversion/libsvn_wc/diff_local.c index 04d4c48..22b498f 100644 --- a/subversion/libsvn_wc/diff_local.c +++ b/subversion/libsvn_wc/diff_local.c @@ -92,9 +92,6 @@ struct diff_baton /* Should this diff not compare copied files with their source? */ svn_boolean_t show_copies_as_adds; - /* Hash whose keys are const char * changelist names. */ - apr_hash_t *changelist_hash; - /* Cancel function/baton */ svn_cancel_func_t cancel_func; void *cancel_baton; @@ -252,11 +249,6 @@ diff_status_callback(void *baton, if (eb->cur && eb->cur->skip_children) return SVN_NO_ERROR; - if (eb->changelist_hash != NULL - && (!status->changelist - || ! svn_hash_gets(eb->changelist_hash, status->changelist))) - return SVN_NO_ERROR; /* Filtered via changelist */ - /* This code does about the same thing as the inner body of walk_local_nodes_diff() in diff_editor.c, except that it is already filtered by the status walker, doesn't have to @@ -361,7 +353,6 @@ diff_status_callback(void *baton, SVN_ERR(svn_wc__diff_base_working_diff(db, child_abspath, child_relpath, SVN_INVALID_REVNUM, - eb->changelist_hash, eb->processor, eb->cur ? eb->cur->baton @@ -405,7 +396,6 @@ diff_status_callback(void *baton, child_relpath, eb->processor, eb->cur ? eb->cur->baton : NULL, - eb->changelist_hash, FALSE, eb->cancel_func, eb->cancel_baton, @@ -415,7 +405,6 @@ diff_status_callback(void *baton, child_relpath, depth_below_here, eb->processor, eb->cur ? eb->cur->baton : NULL, - eb->changelist_hash, FALSE, eb->cancel_func, eb->cancel_baton, @@ -482,16 +471,24 @@ svn_wc_diff6(svn_wc_context_t *wc_ctx, processor = svn_diff__tree_processor_copy_as_changed_create(processor, scratch_pool); + /* Apply changelist filtering to the output */ + if (changelist_filter && changelist_filter->nelts) + { + apr_hash_t *changelist_hash; + + SVN_ERR(svn_hash_from_cstring_keys(&changelist_hash, changelist_filter, + scratch_pool)); + processor = svn_wc__changelist_filter_tree_processor_create( + processor, wc_ctx, local_abspath, + changelist_hash, scratch_pool); + } + eb.db = wc_ctx->db; eb.processor = processor; eb.ignore_ancestry = ignore_ancestry; eb.show_copies_as_adds = show_copies_as_adds; eb.pool = scratch_pool; - if (changelist_filter && changelist_filter->nelts) - SVN_ERR(svn_hash_from_cstring_keys(&eb.changelist_hash, changelist_filter, - scratch_pool)); - if (show_copies_as_adds || use_git_diff_format || !ignore_ancestry) get_all = TRUE; /* We need unmodified descendants of copies */ else |