in subversion/bindings/javahl/native/SVNClient.cpp [1010:1095]
void SVNClient::diff(const char *target1, Revision &revision1,
const char *target2, Revision &revision2,
Revision *pegRevision, const char *relativeToDir,
OutputStream &outputStream, svn_depth_t depth,
StringArray &changelists,
bool ignoreAncestry, bool noDiffDelete, bool force,
bool showCopiesAsAdds, bool ignoreProps, bool propsOnly,
DiffOptions const& options)
{
SVN::Pool subPool(pool);
const char *c_relToDir = relativeToDir ?
svn_dirent_canonicalize(relativeToDir, subPool.getPool()) :
relativeToDir;
bool noDiffAdded = false; /* ### Promote to argument */
SVN_JNI_NULL_PTR_EX(target1, "target", );
// target2 is ignored when pegRevision is provided.
if (pegRevision == NULL)
SVN_JNI_NULL_PTR_EX(target2, "target2", );
svn_client_ctx_t *ctx = context.getContext(NULL, subPool);
if (ctx == NULL)
return;
Path path1(target1, subPool);
SVN_JNI_ERR(path1.error_occurred(), );
apr_array_header_t *diffOptions = options.optionsArray(subPool);
if (pegRevision)
{
SVN_JNI_ERR(svn_client_diff_peg6(diffOptions,
path1.c_str(),
pegRevision->revision(),
revision1.revision(),
revision2.revision(),
c_relToDir,
depth,
ignoreAncestry,
noDiffAdded,
noDiffDelete,
showCopiesAsAdds,
force,
ignoreProps,
propsOnly,
options.useGitDiffFormat(),
SVN_APR_LOCALE_CHARSET,
outputStream.getStream(subPool),
// Discard stderr; TODO: Update JavaHL API
svn_stream_empty(subPool.getPool()),
changelists.array(subPool),
ctx,
subPool.getPool()),
);
}
else
{
// "Regular" diff (without a peg revision).
Path path2(target2, subPool);
SVN_JNI_ERR(path2.error_occurred(), );
SVN_JNI_ERR(svn_client_diff6(diffOptions,
path1.c_str(),
revision1.revision(),
path2.c_str(),
revision2.revision(),
c_relToDir,
depth,
ignoreAncestry,
noDiffAdded,
noDiffDelete,
showCopiesAsAdds,
force,
ignoreProps,
propsOnly,
options.useGitDiffFormat(),
SVN_APR_LOCALE_CHARSET,
outputStream.getStream(subPool),
// Discard stderr; TODO: Update JavaHL API
svn_stream_empty(subPool.getPool()),
changelists.array(subPool),
ctx,
subPool.getPool()),
);
}
}