Author: rhuijben
Date: Thu Jan 24 18:54:31 2013
New Revision: 1438125
URL: http://svn.apache.org/viewvc?rev=1438125&view=rev
Log:
Resolve issue #4304, by detecting some kinds of shadowed nodes before trying to
set a file read only.
* subversion/libsvn_wc/adm_ops.c
(svn_wc_remove_lock2): Handle invalid status err.
* subversion/tests/cmdline/lock_tests.py
(lock_unlock_deleted): Remove XFail marker.
Modified:
subversion/trunk/subversion/libsvn_wc/adm_ops.c
subversion/trunk/subversion/tests/cmdline/lock_tests.py
Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_ops.c?rev=1438125&r1=1438124&r2=1438125&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Thu Jan 24 18:54:31 2013
@@ -1249,9 +1249,19 @@ svn_wc_remove_lock2(svn_wc_context_t *wc
}
/* if svn:needs-lock is present, then make the file read-only. */
- SVN_ERR(svn_wc__internal_propget(&needs_lock, wc_ctx->db, local_abspath,
- SVN_PROP_NEEDS_LOCK, scratch_pool,
- scratch_pool));
+ err = svn_wc__internal_propget(&needs_lock, wc_ctx->db, local_abspath,
+ SVN_PROP_NEEDS_LOCK, scratch_pool,
+ scratch_pool);
+ if (err)
+ {
+ if (err->apr_err != SVN_ERR_WC_PATH_UNEXPECTED_STATUS)
+ return svn_error_trace(err);
+
+ svn_error_clear(err);
+ return SVN_NO_ERROR; /* Node is shadowed and/or deleted,
+ so we shouldn't apply its lock */
+ }
+
if (needs_lock)
SVN_ERR(svn_io_set_file_read_only(local_abspath, FALSE, scratch_pool));
Modified: subversion/trunk/subversion/tests/cmdline/lock_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/lock_tests.py?rev=1438125&r1=1438124&r2=1438125&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/lock_tests.py Thu Jan 24 18:54:31
2013
@@ -1787,8 +1787,6 @@ def locks_stick_over_switch(sbox):
repo_url + '/A',
expected_output, None, expected_status)
-
-@XFail()
@Issue(4304)
def lock_unlock_deleted(sbox):
"lock/unlock a deleted file"