You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by jc...@apache.org on 2011/05/19 01:52:46 UTC
svn commit: r1124469 - in /subversion/trunk/subversion:
libsvn_client/cmdline.c tests/cmdline/copy_tests.py
Author: jcorvel
Date: Wed May 18 23:52:46 2011
New Revision: 1124469
URL: http://svn.apache.org/viewvc?rev=1124469&view=rev
Log:
With rhuijben, fix issue #3865: 'svn' on Windows cannot address
scheduled-for-delete file, if another file differing only in case is present
on disk.
* subversion/libsvn_client/cmdline.c
(svn_client_args_to_target_array): After calling
svn_opt__arg_canonicalize_path, check if it returned a path different from
the original one (indicating a change due to truepath conversion). If so,
perform an additional check to see if the original path has an exact match
to an entry in the wc-db. If that is the case, use the original path
instead of the truepath-converted one.
* subversion/tests/cmdline/copy_tests.py
(deleted_file_with_case_clash): Remove XFail marker.
Modified:
subversion/trunk/subversion/libsvn_client/cmdline.c
subversion/trunk/subversion/tests/cmdline/copy_tests.py
Modified: subversion/trunk/subversion/libsvn_client/cmdline.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/cmdline.c?rev=1124469&r1=1124468&r2=1124469&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/cmdline.c (original)
+++ subversion/trunk/subversion/libsvn_client/cmdline.c Wed May 18 23:52:46 2011
@@ -254,10 +254,41 @@ svn_client_args_to_target_array(apr_arra
else /* not a url, so treat as a path */
{
const char *base_name;
+ const char *original_target;
+ original_target = svn_dirent_internal_style(true_target, pool);
SVN_ERR(svn_opt__arg_canonicalize_path(&true_target,
true_target, pool));
+ /* If there was a truepath-conversion (which can happen on
+ case-insensitive filesystems), check if there is an exact
+ match in the wc-db (e.g. a scheduled-for-delete file only
+ differing in case from an on-disk file). If so, use that
+ instead of the truepath converted variant. */
+ if (strcmp(original_target, true_target) != 0)
+ {
+ const char *target_abspath;
+ svn_node_kind_t kind;
+ svn_error_t *err2;
+
+ SVN_ERR(svn_dirent_get_absolute(&target_abspath,
+ original_target, pool));
+ err2 = svn_wc_read_kind(&kind, ctx->wc_ctx, target_abspath,
+ FALSE, pool);
+ if (err2 && err2->apr_err == SVN_ERR_WC_NOT_WORKING_COPY)
+ {
+ svn_error_clear(err2);
+ }
+ else
+ {
+ SVN_ERR(err2);
+ /* We successfully did a lookup in the wc-db. Now see
+ if it's something interesting. */
+ if (kind == svn_node_file || kind == svn_node_dir)
+ true_target = original_target;
+ }
+ }
+
/* If the target has the same name as a Subversion
working copy administrative dir, skip it. */
base_name = svn_dirent_basename(true_target, pool);
Modified: subversion/trunk/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/copy_tests.py?rev=1124469&r1=1124468&r2=1124469&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/copy_tests.py Wed May 18 23:52:46 2011
@@ -5123,7 +5123,6 @@ def copy_url_shortcut(sbox):
# Regression test for issue #3865: 'svn' on Windows cannot address
# scheduled-for-delete file, if another file differing only in case is
# present on disk
-@XFail(svntest.main.is_fs_case_insensitive)
@Issue(3865)
def deleted_file_with_case_clash(sbox):
"""address a deleted file hidden by case clash"""