You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2011/12/02 14:54:15 UTC
svn commit: r1209483 - in /subversion/trunk/subversion: libsvn_wc/wc_db.c
libsvn_wc/wc_db.h tests/cmdline/copy_tests.py tests/libsvn_wc/db-test.c
Author: philip
Date: Fri Dec 2 13:54:15 2011
New Revision: 1209483
URL: http://svn.apache.org/viewvc?rev=1209483&view=rev
Log:
Change the scan_deletion function so that BASE_DEL_ABSPATH doesn't
depend on NODES.moved_to. This fixes one regression test.
Note: NODES.moved_to was never set in 1.7 so this means that
scan_deletion reports the same BASE_DEL_ABSPATH as 1.7 (apart
from artificial test cases).
* subversion/libsvn_wc/wc_db.h
(svn_wc__db_scan_addition): Tweak docstring.
* subversion/libsvn_wc/wc_db.c
(scan_deletion_txn): Don't use moved_to to set BASE_DEL_ABSPATH.
* subversion/tests/cmdline/copy_tests.py
(three_nested_moves): Remove XFAIL.
* subversion/tests/libsvn_wc/db-test.c
(test_scan_deletion): Adjust BASE_DEL_ABSPATH expectations.
Modified:
subversion/trunk/subversion/libsvn_wc/wc_db.c
subversion/trunk/subversion/libsvn_wc/wc_db.h
subversion/trunk/subversion/tests/cmdline/copy_tests.py
subversion/trunk/subversion/tests/libsvn_wc/db-test.c
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1209483&r1=1209482&r2=1209483&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Fri Dec 2 13:54:15 2011
@@ -10225,12 +10225,6 @@ scan_deletion_txn(void *baton,
apr_pstrdup(sd_baton->result_pool, moved_to_relpath) : NULL;
}
- /* CURRENT_RELPATH is the op_root of the delete-half of the move,
- * so it's the BASE_DEL_RELPATH. */
- if (sd_baton->base_del_relpath)
- *sd_baton->base_del_relpath =
- apr_pstrdup(sd_baton->result_pool, current_relpath);
-
if (sd_baton->moved_to_op_root_relpath)
*sd_baton->moved_to_op_root_relpath = moved_to_op_root_relpath ?
apr_pstrdup(sd_baton->result_pool, moved_to_op_root_relpath)
@@ -10238,7 +10232,8 @@ scan_deletion_txn(void *baton,
/* If all other out parameters are irrelevant, stop scanning.
* Happens to be only WORK_DEL_RELPATH. */
- if (sd_baton->work_del_relpath == NULL)
+ if (sd_baton->work_del_relpath == NULL
+ && sd_baton->base_del_relpath == NULL)
break;
found_moved_to = TRUE;
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.h?rev=1209483&r1=1209482&r2=1209483&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.h Fri Dec 2 13:54:15 2011
@@ -2564,7 +2564,8 @@ svn_wc__db_scan_addition(svn_wc__db_stat
If the user moves-away B/W/D from the WORKING tree, then behavior is
again dependent upon the origination of B/W. For a plain add, the nodes
- simply move to the destination. For a copy, a deletion is made at B/W/D,
+ simply move to the destination; this means that B/W/D ceases to be a
+ node and so cannot be scanned. For a copy, a deletion is made at B/W/D,
and a new copy (of a subtree of the original source) is made at the
destination. For a move-here, a deletion is made, and a copy is made at
the destination (we do not track multiple moves; the source is moved to
@@ -2574,13 +2575,6 @@ svn_wc__db_scan_addition(svn_wc__db_stat
There are three further considerations when resolving a deleted node:
- If the BASE B/W/D was moved-away, then BASE_DEL_ABSPATH will specify
- B/W/D as the root of the BASE deletion (not necessarily B/W as an
- implicit delete caused by a replacement; only the closest ancestor is
- reported). The other parameters will operate as normal, based on what
- is happening in the WORKING tree. Also note that ancestors of B/W/D
- may report additional, explicit moved-away status.
-
If the BASE B/W/D was deleted explicitly *and* B/W is a replacement,
then the explicit deletion is subsumed by the implicit deletion that
occurred with the B/W replacement. Thus, BASE_DEL_ABSPATH will point
Modified: subversion/trunk/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/copy_tests.py?rev=1209483&r1=1209482&r2=1209483&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/copy_tests.py Fri Dec 2 13:54:15 2011
@@ -5621,7 +5621,6 @@ def wc_wc_copy_incomplete(sbox):
None,
expected_status)
-@XFail()
def three_nested_moves(sbox):
"three nested moves"
Modified: subversion/trunk/subversion/tests/libsvn_wc/db-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/db-test.c?rev=1209483&r1=1209482&r2=1209483&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_wc/db-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/db-test.c Fri Dec 2 13:54:15 2011
@@ -1053,7 +1053,7 @@ test_scan_deletion(apr_pool_t *pool)
©_op_root_abspath,
db, svn_dirent_join(local_abspath, "J/J-e", pool),
pool, pool));
- SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-e",
+ SVN_TEST_ASSERT(validate_abspath(local_abspath, "J",
base_del_abspath, pool));
SVN_TEST_ASSERT(validate_abspath(local_abspath, "other/place",
moved_to_abspath, pool));
@@ -1070,7 +1070,7 @@ test_scan_deletion(apr_pool_t *pool)
©_op_root_abspath,
db, svn_dirent_join(local_abspath, "J/J-e/J-e-a", pool),
pool, pool));
- SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-e",
+ SVN_TEST_ASSERT(validate_abspath(local_abspath, "J",
base_del_abspath, pool));
SVN_TEST_ASSERT(validate_abspath(local_abspath, "other/place/J-e-a",
moved_to_abspath, pool));
@@ -1120,7 +1120,7 @@ test_scan_deletion(apr_pool_t *pool)
/* ### I don't understand this. "J/J-e/J-e-b/Jeba" is a deleted
base node that is not overlayed by the replacement rooted at "J".
Why does base_del_abspath refer to "J-e"? */
- SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-e",
+ SVN_TEST_ASSERT(validate_abspath(local_abspath, "J",
base_del_abspath, pool));
SVN_TEST_ASSERT(validate_abspath(local_abspath, "other/place/J-e-b/Jeba",
moved_to_abspath, pool));
@@ -1174,7 +1174,7 @@ test_scan_deletion(apr_pool_t *pool)
©_op_root_abspath,
db, svn_dirent_join(local_abspath, "K/K-b", pool),
pool, pool));
- SVN_TEST_ASSERT(validate_abspath(local_abspath, "K/K-b",
+ SVN_TEST_ASSERT(validate_abspath(local_abspath, "K",
base_del_abspath, pool));
SVN_TEST_ASSERT(validate_abspath(local_abspath, "moved/away",
moved_to_abspath, pool));