Hi,
Currently it is possible to compare arbitrary versioned or unversioned files or
directories using the 'svn diff --old A --new B' command [1]. Running this
command may produce errors and on my Windows machine the
corresponding error messages contain paths with incorrect separators.
- For example, running 'svn diff --old doc --new win-tests.py' on a fresh
subversion/trunk checkout produces the following message:
[[[
svn: E145001: 'C:/Projects/Subversion/doc' is not the same node kind as
'C:/Projects/Subversion/win-tests.py'
]]]
- Running 'svn diff --old DOES-NOT-EXIST --new DOES-NOT-EXIST' in the same case
produces the following message:
[[[
svn: E145001: 'C:/Projects/Subversion/DOES-NOT-EXIST' is not a file or directory
]]]
I've attached a patch that fixes the described problems (we should use
'svn_dirent_local_style' for path formatting in the error messages produced by
the 'svn_client__arbitrary_nodes_diff' function).
[1] http://svn.apache.org/viewvc?view=revision&revision=1310291
Thanks and regards,
Evgeny Kotkov
Index: subversion/libsvn_client/diff_local.c
===================================================================
--- subversion/libsvn_client/diff_local.c (revision 1500633)
+++ subversion/libsvn_client/diff_local.c (working copy)
@@ -607,7 +607,10 @@ svn_client__arbitrary_nodes_diff(const char *local
if (kind1 != kind2)
return svn_error_createf(SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
_("'%s' is not the same node kind as '%s'"),
- local_abspath1, local_abspath2);
+ svn_dirent_local_style(local_abspath1,
+ scratch_pool),
+ svn_dirent_local_style(local_abspath2,
+ scratch_pool));
if (depth == svn_depth_unknown)
depth = svn_depth_infinity;
@@ -627,7 +630,10 @@ svn_client__arbitrary_nodes_diff(const char *local
else
return svn_error_createf(SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
_("'%s' is not a file or directory"),
- kind1 == svn_node_none ?
- local_abspath1 : local_abspath2);
+ kind1 == svn_node_none
+ ? svn_dirent_local_style(local_abspath1,
+ scratch_pool)
+ : svn_dirent_local_style(local_abspath2,
+ scratch_pool));
return SVN_NO_ERROR;
}
Use local style for paths when formatting error messages from the
'svn diff --old A --new B' commands. Follow-up to r1310291.
* subversion/libsvn_client/diff_local.c
(svn_client__arbitrary_nodes_diff): Use local style for paths when formatting
the "not the same node kind" and "not a file or directory" messages.
Patch by: Evgeny Kotkov <evgeny.kotkov{_AT_}visualsvn.com>