static svn_error_t * cb_file_changed(svn_wc_notify_state_t *contentstate, svn_wc_notify_state_t *propstate, svn_boolean_t *tree_conflicted, const char *path, const char *tmpfile1, const char *tmpfile2, svn_revnum_t rev1, svn_revnum_t rev2, const char *mimetype1, const char *mimetype2, const apr_array_header_t *propchanges, apr_hash_t *originalprops, void *diff_baton, apr_pool_t *scratch_pool) { struct summarize_baton_t *b = diff_baton; svn_boolean_t text_change = (tmpfile2 != NULL); svn_boolean_t prop_change = props_changed(propchanges, scratch_pool); if (text_change || prop_change) SVN_ERR(send_summary(b, path, text_change ? svn_client_diff_summarize_kind_modified : svn_client_diff_summarize_kind_normal, prop_change, svn_node_file, scratch_pool)); if (contentstate) *contentstate = svn_wc_notify_state_inapplicable; if (propstate) *propstate = svn_wc_notify_state_inapplicable; if (tree_conflicted) *tree_conflicted = FALSE; return SVN_NO_ERROR; }
static svn_error_t * cb_file_added(svn_wc_notify_state_t *contentstate, svn_wc_notify_state_t *propstate, svn_boolean_t *tree_conflicted, const char *path, const char *tmpfile1, const char *tmpfile2, svn_revnum_t rev1, svn_revnum_t rev2, const char *mimetype1, const char *mimetype2, const char *copyfrom_path, svn_revnum_t copyfrom_revision, const apr_array_header_t *propchanges, apr_hash_t *originalprops, void *diff_baton, apr_pool_t *scratch_pool) { struct summarize_baton_t *b = diff_baton; SVN_ERR(send_summary(b, path, svn_client_diff_summarize_kind_added, props_changed(propchanges, scratch_pool), svn_node_file, scratch_pool)); if (contentstate) *contentstate = svn_wc_notify_state_inapplicable; if (propstate) *propstate = svn_wc_notify_state_inapplicable; if (tree_conflicted) *tree_conflicted = FALSE; return SVN_NO_ERROR; }
static svn_error_t * cb_dir_props_changed(svn_wc_notify_state_t *propstate, svn_boolean_t *tree_conflicted, const char *path, svn_boolean_t dir_was_added, const apr_array_header_t *propchanges, apr_hash_t *original_props, void *diff_baton, apr_pool_t *scratch_pool) { struct summarize_baton_t *b = diff_baton; if (props_changed(propchanges, scratch_pool)) apr_hash_set(b->prop_changes, path, APR_HASH_KEY_STRING, path); if (propstate) *propstate = svn_wc_notify_state_inapplicable; if (tree_conflicted) *tree_conflicted = FALSE; return SVN_NO_ERROR; }
/* svn_diff_tree_processor_t callback */ static svn_error_t * diff_file_changed(const char *relpath, const svn_diff_source_t *left_source, const svn_diff_source_t *right_source, const char *left_file, const char *right_file, /*const*/ apr_hash_t *left_props, /*const*/ apr_hash_t *right_props, svn_boolean_t file_modified, const apr_array_header_t *prop_changes, void *file_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *scratch_pool) { struct summarize_baton_t *b = processor->baton; SVN_ERR(send_summary(b, relpath, file_modified ? svn_client_diff_summarize_kind_modified : svn_client_diff_summarize_kind_normal, props_changed(prop_changes, scratch_pool), svn_node_file, scratch_pool)); return SVN_NO_ERROR; }