Author: danielsh Date: Mon Oct 18 04:08:24 2010 New Revision: 1023647 URL: http://svn.apache.org/viewvc?rev=1023647&view=rev Log: More non-marking as read-only of locally-added files. This time, for repos->wc copy with the copy source a file. (The case of the copy source being a directory is not yet handled.)
Found by: Paul Maier <[email protected]> * subversion/tests/cmdline/lock_tests.py (cp_isnt_ro): Extend test, and tweak comments. * subversion/libsvn_wc/translate.c (svn_wc__maybe_set_read_only): Don't set read-only for status_added files. Modified: subversion/trunk/subversion/libsvn_wc/translate.c subversion/trunk/subversion/tests/cmdline/lock_tests.py Modified: subversion/trunk/subversion/libsvn_wc/translate.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/translate.c?rev=1023647&r1=1023646&r2=1023647&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_wc/translate.c (original) +++ subversion/trunk/subversion/libsvn_wc/translate.c Mon Oct 18 04:08:24 2010 @@ -376,6 +376,7 @@ svn_wc__maybe_set_read_only(svn_boolean_ apr_pool_t *scratch_pool) { const svn_string_t *needs_lock; + svn_wc__db_status_t status; svn_wc__db_lock_t *lock; svn_error_t *err; @@ -384,7 +385,7 @@ svn_wc__maybe_set_read_only(svn_boolean_ SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath)); - err = svn_wc__db_read_info(NULL, NULL, NULL, NULL, NULL, NULL, + err = svn_wc__db_read_info(&status, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @@ -399,6 +400,11 @@ svn_wc__maybe_set_read_only(svn_boolean_ else if (err) return svn_error_return(err); else if (lock) + /* ### Is this "we have the lock?" */ + return SVN_NO_ERROR; + + /* Files that aren't in the repository yet should be left writable. */ + if (status == svn_wc__db_status_added) return SVN_NO_ERROR; SVN_ERR(svn_wc__internal_propget(&needs_lock, db, local_abspath, Modified: subversion/trunk/subversion/tests/cmdline/lock_tests.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/lock_tests.py?rev=1023647&r1=1023646&r2=1023647&view=diff ============================================================================== --- subversion/trunk/subversion/tests/cmdline/lock_tests.py (original) +++ subversion/trunk/subversion/tests/cmdline/lock_tests.py Mon Oct 18 04:08:24 2010 @@ -1598,31 +1598,40 @@ def cp_isnt_ro(sbox): sbox.build() wc_dir = sbox.wc_dir + mu_URL = sbox.repo_url + '/A/mu' mu_path = os.path.join(wc_dir, 'A', 'mu') mu2_path = os.path.join(wc_dir, 'A', 'mu2') + mu3_path = os.path.join(wc_dir, 'A', 'mu3') kappa_path = os.path.join(wc_dir, 'kappa') open(kappa_path, 'w').write("This is the file 'kappa'.\n") - # added file + ## added file sbox.simple_add(kappa_path) svntest.actions.set_prop('svn:needs-lock', 'yes', kappa_path) is_writable(kappa_path) sbox.simple_commit(kappa_path) is_readonly(kappa_path) - # versioned file + ## versioned file svntest.actions.set_prop('svn:needs-lock', 'yes', mu_path) is_writable(mu_path) sbox.simple_commit(mu_path) is_readonly(mu_path) - # added-with-history file (aka uncommitted copied file) - svntest.actions.set_prop('svn:needs-lock', 'yes', mu_path) + # At this point, mu has 'svn:needs-lock' set + + ## wc->wc copied file svntest.main.run_svn(None, 'copy', mu_path, mu2_path) is_writable(mu2_path) sbox.simple_commit(mu2_path) is_readonly(mu2_path) + ## URL->wc copied file + svntest.main.run_svn(None, 'copy', mu_URL, mu3_path) + is_writable(mu3_path) + sbox.simple_commit(mu3_path) + is_readonly(mu3_path) + ######################################################################## # Run the tests
