# Diffs
[Working copy management]

## Functions
svn_error_t * | svn_wc_get_diff_editor6 (const svn_delta_editor_t **editor, void **edit_baton, svn_wc_context_t *wc_ctx, const char *anchor_abspath, const char *target, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t show_copies_as_adds, svn_boolean_t use_git_diff_format, svn_boolean_t use_text_base, svn_boolean_t reverse_order, svn_boolean_t server_performs_filtering, const apr_array_header_t *changelist_filter, const svn_wc_diff_callbacks4_t *callbacks, void *callback_baton, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Return an editor/edit_baton for diffing a working copy against the repository.
svn_error_t * | svn_wc_get_diff_editor5 (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks3_t *callbacks, void *callback_baton, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t use_text_base, svn_boolean_t reverse_order, svn_cancel_func_t cancel_func, void *cancel_baton, const apr_array_header_t *changelist_filter, const svn_delta_editor_t **editor, void **edit_baton, apr_pool_t *pool)
| Similar to svn_wc_get_diff_editor6(), but with an access baton and relative path.
svn_error_t * | svn_wc_get_diff_editor4 (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks2_t *callbacks, void *callback_baton, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t use_text_base, svn_boolean_t reverse_order, svn_cancel_func_t cancel_func, void *cancel_baton, const apr_array_header_t *changelist_filter, const svn_delta_editor_t **editor, void **edit_baton, apr_pool_t *pool)
| Similar to svn_wc_get_diff_editor5(), but with an svn_wc_diff_callbacks2_t instead of svn_wc_diff_callbacks3_t.
svn_error_t * | svn_wc_get_diff_editor3 (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks2_t *callbacks, void *callback_baton, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t use_text_base, svn_boolean_t reverse_order, svn_cancel_func_t cancel_func, void *cancel_baton, const svn_delta_editor_t **editor, void **edit_baton, apr_pool_t *pool)
| Similar to svn_wc_get_diff_editor4(), but with changelist_filter passed as `NULL`, and depth set to svn_depth_infinity if recurse is TRUE, or svn_depth_files if recurse is FALSE.
svn_error_t * | svn_wc_get_diff_editor2 (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks_t *callbacks, void *callback_baton, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t use_text_base, svn_boolean_t reverse_order, svn_cancel_func_t cancel_func, void *cancel_baton, const svn_delta_editor_t **editor, void **edit_baton, apr_pool_t *pool)
| Similar to svn_wc_get_diff_editor3(), but with an svn_wc_diff_callbacks_t instead of svn_wc_diff_callbacks2_t.
svn_error_t * | svn_wc_get_diff_editor (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks_t *callbacks, void *callback_baton, svn_boolean_t recurse, svn_boolean_t use_text_base, svn_boolean_t reverse_order, svn_cancel_func_t cancel_func, void *cancel_baton, const svn_delta_editor_t **editor, void **edit_baton, apr_pool_t *pool)
| Similar to svn_wc_get_diff_editor2(), but with ignore_ancestry always set to `FALSE`.
svn_error_t * | svn_wc_diff6 (svn_wc_context_t *wc_ctx, const char *target_abspath, const svn_wc_diff_callbacks4_t *callbacks, void *callback_baton, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t show_copies_as_adds, svn_boolean_t use_git_diff_format, const apr_array_header_t *changelist_filter, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *scratch_pool)
| Compare working copy against the text-base.
svn_error_t * | svn_wc_diff5 (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks3_t *callbacks, void *callback_baton, svn_depth_t depth, svn_boolean_t ignore_ancestry, const apr_array_header_t *changelist_filter, apr_pool_t *pool)
| Similar to svn_wc_diff6(), but with a svn_wc_diff_callbacks3_t argument instead of svn_wc_diff_callbacks4_t, show_copies_as_adds, and use_git_diff_format set to * `FALSE`.
svn_error_t * | svn_wc_diff4 (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks2_t *callbacks, void *callback_baton, svn_depth_t depth, svn_boolean_t ignore_ancestry, const apr_array_header_t *changelist_filter, apr_pool_t *pool)
| Similar to svn_wc_diff5(), but with a svn_wc_diff_callbacks2_t argument instead of svn_wc_diff_callbacks3_t.
svn_error_t * | svn_wc_diff3 (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks2_t *callbacks, void *callback_baton, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, apr_pool_t *pool)
| Similar to svn_wc_diff4(), but with changelist_filter passed `NULL`, and depth set to svn_depth_infinity if recurse is TRUE, or svn_depth_files if recurse is FALSE.
svn_error_t * | svn_wc_diff2 (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks_t *callbacks, void *callback_baton, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, apr_pool_t *pool)
| Similar to svn_wc_diff3(), but with a svn_wc_diff_callbacks_t argument instead of svn_wc_diff_callbacks2_t.
svn_error_t * | svn_wc_diff (svn_wc_adm_access_t *anchor, const char *target, const svn_wc_diff_callbacks_t *callbacks, void *callback_baton, svn_boolean_t recurse, apr_pool_t *pool)
| Similar to svn_wc_diff2(), but with ignore_ancestry always set to `FALSE`.
svn_error_t * | svn_wc_get_prop_diffs2 (apr_array_header_t **propchanges, apr_hash_t **original_props, svn_wc_context_t *wc_ctx, const char *local_abspath, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Given a local_abspath to a file or directory under version control, discover any local changes made to properties and/or the set of 'pristine' properties.
svn_error_t * | svn_wc_get_prop_diffs (apr_array_header_t **propchanges, apr_hash_t **original_props, const char *path, svn_wc_adm_access_t *adm_access, apr_pool_t *pool)
| Similar to svn_wc_get_prop_diffs2(), but with a svn_wc_adm_access_t / relative path parameter pair.

## Function Documentation

svn_error_t* svn_wc_diff | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks_t * | callbacks,
|  | void * | callback_baton,
|  | svn_boolean_t | recurse,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_diff2(), but with ignore_ancestry always set to `FALSE`.

Deprecated:
  Provided for backward compatibility with the 1.0 API.

svn_error_t* svn_wc_diff2 | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks_t * | callbacks,
|  | void * | callback_baton,
|  | svn_boolean_t | recurse,
|  | svn_boolean_t | ignore_ancestry,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_diff3(), but with a svn_wc_diff_callbacks_t argument instead of svn_wc_diff_callbacks2_t.

Since:
  New in 1.1.

Deprecated:
  Provided for backward compatibility with the 1.1 API.

svn_error_t* svn_wc_diff3 | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks2_t * | callbacks,
|  | void * | callback_baton,
|  | svn_boolean_t | recurse,
|  | svn_boolean_t | ignore_ancestry,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_diff4(), but with changelist_filter passed `NULL`, and depth set to svn_depth_infinity if recurse is TRUE, or svn_depth_files if recurse is FALSE.

Since:
  New in 1.2.

Deprecated:
  Provided for backward compatibility with the 1.4 API.

svn_error_t* svn_wc_diff4 | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks2_t * | callbacks,
|  | void * | callback_baton,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | const apr_array_header_t * | changelist_filter,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_diff5(), but with a svn_wc_diff_callbacks2_t argument instead of svn_wc_diff_callbacks3_t.

Since:
  New in 1.5.

Deprecated:
  Provided for backward compatibility with the 1.5 API.

svn_error_t* svn_wc_diff5 | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks3_t * | callbacks,
|  | void * | callback_baton,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | const apr_array_header_t * | changelist_filter,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_diff6(), but with a svn_wc_diff_callbacks3_t argument instead of svn_wc_diff_callbacks4_t, show_copies_as_adds, and use_git_diff_format set to * `FALSE`.

It also doesn't allow specifying a cancel function.

Since:
  New in 1.6.

Deprecated:
  Provided for backward compatibility with the 1.6 API.

svn_error_t* svn_wc_diff6 | ( | svn_wc_context_t * | wc_ctx,
|  | const char * | target_abspath,
|  | const svn_wc_diff_callbacks4_t * | callbacks,
|  | void * | callback_baton,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | show_copies_as_adds,
|  | svn_boolean_t | use_git_diff_format,
|  | const apr_array_header_t * | changelist_filter,
|  | svn_cancel_func_t | cancel_func,
|  | void * | cancel_baton,
|  | apr_pool_t * | scratch_pool |
| ) |  |  |

Compare working copy against the text-base.

target_abspath represents the base of the hierarchy to be compared.

callbacks/callback_baton is the callback table to use when two files are to be compared.

If depth is svn_depth_empty, just diff exactly target_path. If svn_depth_files then do the same and for top-level file entries as well (if any). If svn_depth_immediates, do the same as svn_depth_files but also diff top-level subdirectories at svn_depth_empty. If svn_depth_infinity, then diff fully recursively.

ignore_ancestry determines whether paths that have discontinuous node ancestry are treated as delete/add or as simple modifications. If ignore_ancestry is `FALSE`, then any discontinuous node ancestry will result in the diff given as a full delete followed by an add.

show_copies_as_adds determines whether paths added with history will appear as a diff against their copy source, or whether such paths will appear as if they were newly added in their entirety.

If use_git_diff_format is TRUE, copied paths will be treated as added if they weren't modified after being copied. This allows the callbacks to generate appropriate --git diff headers for such files.

changelist_filter is an array of `const char *` changelist names, used as a restrictive filter on items whose differences are reported; that is, don't generate diffs about any item unless it's a member of one of those changelists. If changelist_filter is empty (or altogether `NULL`), no changelist filtering occurs.

If cancel_func is non-NULL, invoke it with cancel_baton at various points during the operation. If it returns an error (typically SVN_ERR_CANCELLED), return that error immediately.

Since:
  New in 1.7.

svn_error_t* svn_wc_get_diff_editor | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks_t * | callbacks,
|  | void * | callback_baton,
|  | svn_boolean_t | recurse,
|  | svn_boolean_t | use_text_base,
|  | svn_boolean_t | reverse_order,
|  | svn_cancel_func_t | cancel_func,
|  | void * | cancel_baton,
|  | const svn_delta_editor_t ** | editor,
|  | void ** | edit_baton,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_get_diff_editor2(), but with ignore_ancestry always set to `FALSE`.

Deprecated:
  Provided for backward compatibility with the 1.0 API.

svn_error_t* svn_wc_get_diff_editor2 | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks_t * | callbacks,
|  | void * | callback_baton,
|  | svn_boolean_t | recurse,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | use_text_base,
|  | svn_boolean_t | reverse_order,
|  | svn_cancel_func_t | cancel_func,
|  | void * | cancel_baton,
|  | const svn_delta_editor_t ** | editor,
|  | void ** | edit_baton,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_get_diff_editor3(), but with an svn_wc_diff_callbacks_t instead of svn_wc_diff_callbacks2_t.

Deprecated:
  Provided for backward compatibility with the 1.1 API.

svn_error_t* svn_wc_get_diff_editor3 | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks2_t * | callbacks,
|  | void * | callback_baton,
|  | svn_boolean_t | recurse,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | use_text_base,
|  | svn_boolean_t | reverse_order,
|  | svn_cancel_func_t | cancel_func,
|  | void * | cancel_baton,
|  | const svn_delta_editor_t ** | editor,
|  | void ** | edit_baton,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_get_diff_editor4(), but with changelist_filter passed as `NULL`, and depth set to svn_depth_infinity if recurse is TRUE, or svn_depth_files if recurse is FALSE.

Deprecated:
  Provided for backward compatibility with the 1.4 API.

Since:
  New in 1.2.

svn_error_t* svn_wc_get_diff_editor4 | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks2_t * | callbacks,
|  | void * | callback_baton,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | use_text_base,
|  | svn_boolean_t | reverse_order,
|  | svn_cancel_func_t | cancel_func,
|  | void * | cancel_baton,
|  | const apr_array_header_t * | changelist_filter,
|  | const svn_delta_editor_t ** | editor,
|  | void ** | edit_baton,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_get_diff_editor5(), but with an svn_wc_diff_callbacks2_t instead of svn_wc_diff_callbacks3_t.

Deprecated:
  Provided for backward compatibility with the 1.5 API.

svn_error_t* svn_wc_get_diff_editor5 | ( | svn_wc_adm_access_t * | anchor,
|  | const char * | target,
|  | const svn_wc_diff_callbacks3_t * | callbacks,
|  | void * | callback_baton,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | use_text_base,
|  | svn_boolean_t | reverse_order,
|  | svn_cancel_func_t | cancel_func,
|  | void * | cancel_baton,
|  | const apr_array_header_t * | changelist_filter,
|  | const svn_delta_editor_t ** | editor,
|  | void ** | edit_baton,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_get_diff_editor6(), but with an access baton and relative path.

server_performs_filtering always true and with a svn_wc_diff_callbacks3_t instead of svn_wc_diff_callbacks4_t, show_copies_as_adds, and use_git_diff_format set to `FALSE`.

Diffs will be reported as below the relative path stored in anchor.

Since:
  New in 1.6.

Deprecated:
  Provided for backward compatibility with the 1.6 API.

svn_error_t* svn_wc_get_diff_editor6 | ( | const svn_delta_editor_t ** | editor,
|  | void ** | edit_baton,
|  | svn_wc_context_t * | wc_ctx,
|  | const char * | anchor_abspath,
|  | const char * | target,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | show_copies_as_adds,
|  | svn_boolean_t | use_git_diff_format,
|  | svn_boolean_t | use_text_base,
|  | svn_boolean_t | reverse_order,
|  | svn_boolean_t | server_performs_filtering,
|  | const apr_array_header_t * | changelist_filter,
|  | const svn_wc_diff_callbacks4_t * | callbacks,
|  | void * | callback_baton,
|  | svn_cancel_func_t | cancel_func,
|  | void * | cancel_baton,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool |
| ) |  |  |

Return an editor/edit_baton for diffing a working copy against the repository.

The editor is allocated in result_pool; temporary calculations are performed in scratch_pool.

This editor supports diffing either the actual files and properties in the working copy (when use_text_base is FALSE), or the current pristine information (when use_text_base is TRUE) against the editor driver.

anchor_abspath/target represent the base of the hierarchy to be compared. The diff callback paths will be relative to this path.

Diffs will be reported as valid relpaths, with anchor_abspath being the root ("").

callbacks/callback_baton is the callback table to use.

If depth is svn_depth_empty, just diff exactly target or anchor_path if target is empty. If svn_depth_files then do the same and for top-level file entries as well (if any). If svn_depth_immediates, do the same as svn_depth_files but also diff top-level subdirectories at svn_depth_empty. If svn_depth_infinity, then diff fully recursively.

ignore_ancestry determines whether paths that have discontinuous node ancestry are treated as delete/add or as simple modifications. If ignore_ancestry is `FALSE`, then any discontinuous node ancestry will result in the diff given as a full delete followed by an add.

show_copies_as_adds determines whether paths added with history will appear as a diff against their copy source, or whether such paths will appear as if they were newly added in their entirety.

If use_git_diff_format is TRUE, copied paths will be treated as added if they weren't modified after being copied. This allows the callbacks to generate appropriate --git diff headers for such files.

Normally, the difference from repository->working_copy is shown. If reverse_order is TRUE, then show working_copy->repository diffs.

If cancel_func is non-NULL, it will be used along with cancel_baton to periodically check if the client has canceled the operation.

changelist_filter is an array of `const char *` changelist names, used as a restrictive filter on items whose differences are reported; that is, don't generate diffs about any item unless it's a member of one of those changelists. If changelist_filter is empty (or altogether `NULL`), no changelist filtering occurs.

If server_performs_filtering is TRUE, assume that the server handles the ambient depth filtering, so this doesn't have to be handled in the editor.

Since:
  New in 1.7.

svn_error_t* svn_wc_get_prop_diffs | ( | apr_array_header_t ** | propchanges,
|  | apr_hash_t ** | original_props,
|  | const char * | path,
|  | svn_wc_adm_access_t * | adm_access,
|  | apr_pool_t * | pool |
| ) |  |  |

Similar to svn_wc_get_prop_diffs2(), but with a svn_wc_adm_access_t / relative path parameter pair.

Deprecated:
  Provided for backwards compatibility with the 1.6 API.

svn_error_t* svn_wc_get_prop_diffs2 | ( | apr_array_header_t ** | propchanges,
|  | apr_hash_t ** | original_props,
|  | svn_wc_context_t * | wc_ctx,
|  | const char * | local_abspath,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool |
| ) |  |  |

Given a local_abspath to a file or directory under version control, discover any local changes made to properties and/or the set of 'pristine' properties.

wc_ctx will be used to access the working copy.

If propchanges is non-`NULL`, return these changes as an array of svn_prop_t structures stored in *propchanges. The structures and array will be allocated in result_pool. If there are no local property modifications on local_abspath, then set *propchanges will be empty.

If original_props is non-`NULL`, then set *original_props to hashtable (`const char *name` -> `const svn_string_t *value`) that represents the 'pristine' property list of path. This hashtable is allocated in result_pool.

Use scratch_pool for temporary allocations.

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines