summaryrefslogtreecommitdiff
path: root/subversion/libsvn_client/shelve.c
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/libsvn_client/shelve.c')
-rw-r--r--subversion/libsvn_client/shelve.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/subversion/libsvn_client/shelve.c b/subversion/libsvn_client/shelve.c
index af8dd67..4eeb4dd 100644
--- a/subversion/libsvn_client/shelve.c
+++ b/subversion/libsvn_client/shelve.c
@@ -188,13 +188,18 @@ shelf_write_patch(const char *name,
for (i = 0; i < paths->nelts; i++)
{
const char *path = APR_ARRAY_IDX(paths, i, const char *);
+ apr_hash_t *old_config;
+ svn_error_t *err;
if (svn_path_is_url(path))
return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
_("'%s' is not a local path"), path);
SVN_ERR(svn_dirent_get_absolute(&path, path, scratch_pool));
- SVN_ERR(svn_client_diff_peg6(
+ /* Ensure we use internal diff, not any configured external diff-cmd. */
+ old_config = ctx->config;
+ ctx->config = NULL;
+ err = svn_client_diff_peg6(
NULL /*options*/,
path,
&peg_revision,
@@ -214,8 +219,11 @@ shelf_write_patch(const char *name,
outstream,
errstream,
changelists,
- ctx, iterpool));
+ ctx, iterpool);
+ ctx->config = old_config;
+ SVN_ERR(err);
}
+
SVN_ERR(svn_stream_close(outstream));
SVN_ERR(svn_stream_close(errstream));