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)

| DEPRECATED – please use APIs from svn_client.h. More...

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. More...

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. More...
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. More...
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. More...
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`. More...
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. More...
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`. More...
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. More...
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. More...
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. More...
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`. More...
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. More...
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. More...

## Detailed Description

## Function Documentation

## svn_wc_diff()

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_wc_diff2()

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_wc_diff3()

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_wc_diff4()

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_wc_diff5()

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_wc_diff6()

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_wc_get_diff_editor()

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_wc_get_diff_editor2()

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_wc_get_diff_editor3()

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_wc_get_diff_editor4()

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_wc_get_diff_editor5()

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_wc_get_diff_editor6()

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
| ) |  |

DEPRECATED – please use APIs from svn_client.h.

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. show_copies_as_adds implies not ignore_ancestry.

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. use_git_diff_format implies show_copies_as_adds, and as such implies not ignore_ancestry.

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.

Deprecated:
  Provided for backward compatibility with the 1.7 API.

## svn_wc_get_prop_diffs()

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_wc_get_prop_diffs2()

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.