pub unsafe extern "C" fn svn_client_diff7(
diff_options: *const apr_array_header_t,
path_or_url1: *const c_char,
revision1: *const svn_opt_revision_t,
path_or_url2: *const c_char,
revision2: *const svn_opt_revision_t,
relative_to_dir: *const c_char,
depth: svn_depth_t,
ignore_ancestry: svn_boolean_t,
no_diff_added: svn_boolean_t,
no_diff_deleted: svn_boolean_t,
show_copies_as_adds: svn_boolean_t,
ignore_content_type: svn_boolean_t,
ignore_properties: svn_boolean_t,
properties_only: svn_boolean_t,
use_git_diff_format: svn_boolean_t,
pretty_print_mergeinfo: svn_boolean_t,
header_encoding: *const c_char,
outstream: *mut svn_stream_t,
errstream: *mut svn_stream_t,
changelists: *const apr_array_header_t,
ctx: *mut svn_client_ctx_t,
pool: *mut apr_pool_t,
) -> *mut svn_error_t
Expand description
Produce diff output which describes the delta between @a path_or_url1/@a revision1 and @a path_or_url2/@a revision2. Print the output of the diff to @a outstream, and any errors to @a errstream. @a path_or_url1 and @a path_or_url2 can be either working-copy paths or URLs.
If @a relative_to_dir is not @c NULL, the original path and modified path will have the @a relative_to_dir stripped from the front of the respective paths. If @a relative_to_dir is @c NULL, paths will not be modified. If @a relative_to_dir is not @c NULL but @a relative_to_dir is not a parent path of the target, an error is returned. Finally, if @a relative_to_dir is a URL, an error will be returned.
If either @a revision1 or @a revision2 has an unspecified' or unrecognized
kind’, return #SVN_ERR_CLIENT_BAD_REVISION.
@a path_or_url1 and @a path_or_url2 must both represent the same node kind – that is, if @a path_or_url1 is a directory, @a path_or_url2 must also be, and if @a path_or_url1 is a file, @a path_or_url2 must also be.
If @a depth is #svn_depth_infinity, diff fully recursively. Else if it is #svn_depth_immediates, diff the named paths and their file children (if any), and diff properties of subdirectories, but do not descend further into the subdirectories. Else if #svn_depth_files, behave as if for #svn_depth_immediates except don’t diff properties of subdirectories. If #svn_depth_empty, diff exactly the named paths but nothing underneath them.
Use @a ignore_ancestry to control whether or not items being diffed will be checked for relatedness first. Unrelated items are typically transmitted to the editor as a deletion of one thing and the addition of another, but if this flag is TRUE, unrelated items will be diffed as if they were related.
If @a no_diff_added is TRUE, then no diff output will be generated on added files.
If @a no_diff_deleted is TRUE, then no diff output will be generated on deleted files.
If @a show_copies_as_adds is TRUE, then copied files will not be diffed against their copyfrom source, and will appear in the diff output in their entirety, as if they were newly added.
§BUGS: For a repos-repos diff, this is ignored. Instead, a file is
diffed against its copyfrom source iff the file is the diff target
and not if some parent directory is the diff target. For a repos-WC
diff, this is ignored if the file is the diff target.
If @a use_git_diff_format is TRUE, then the git’s extended diff format will be used.
§Do we need to say more about the format? A reference perhaps?
If @a ignore_properties is TRUE, do not show property differences. If @a properties_only is TRUE, show only property changes. The above two options are mutually exclusive. It is an error to set both to TRUE.
If @a pretty_print_mergeinfo is true, then describe ‘svn:mergeinfo’ property changes in a human-readable form that says what changes were merged or reverse merged; otherwise (or if the mergeinfo property values don’t parse correctly) display them just like any other property.
Generated headers are encoded using @a header_encoding.
If either side has an svn:mime-type property that indicates ‘binary’ content, then if @a ignore_content_type is set, attempt to produce the diff in the usual way, otherwise produce a ‘GIT binary diff’ in git mode or print a warning message in non-git mode.
@a diff_options (an array of const char *) is used to pass additional command line options to the diff processes invoked to compare files. @a diff_options is allowed to be @c NULL, in which case a value for this option might still be obtained from the Subversion configuration file via client context @a ctx.
The authentication baton cached in @a ctx is used to communicate with the repository.
@a changelists 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 @a changelists is empty (or altogether @c NULL), no changelist filtering occurs.
@note Changelist filtering only applies to diffs in which at least one side of the diff represents working copy data.
@note @a header_encoding doesn’t affect headers generated by external diff programs.
@note @a relative_to_dir doesn’t affect the path index generated by external diff programs.
@since New in 1.11.