Hi,
attached you'll find a patch for issue 2486, which describes a problem
where svn status -uN wc/A fails to show remote changes in the folder A.
I see that all current stat_tests pass, so that's good. Problem is that
I don't understand the impact of the changes I made.
By looking at the patch you'll notice that at least part of it is caused
by an extra check that was added for issue 2122. While looking at the
code I just removed that test expecting issue 2122 to reappear, but that
didn't happen. So I'm wondering whether issue 2122 was solved somewhere
auto magically or I'm just not seeing that issue on my machine(?)
regards,
Lieven.
Index: subversion/libsvn_wc/status.c
===================================================================
--- subversion/libsvn_wc/status.c (revision 21597)
+++ subversion/libsvn_wc/status.c (working copy)
@@ -1029,22 +1029,8 @@
/* If not, make it so. */
if (! statstruct)
{
- /* If this item isn't being added, then we're most likely
- dealing with a non-recursive (or at least partially
- non-recursive) working copy. Due to bugs in how the client
- reports the state of non-recursive working copies, the
- repository can send back responses about paths that don't
- even exist locally. Our best course here is just to ignore
- those responses. After all, if the client had reported
- correctly in the first, that path would either be mentioned
- as an 'add' or not mentioned at all, depending on how we
- eventually fix the bugs in non-recursivity. See issue
- #2122 for details. */
- if (repos_text_status != svn_wc_status_added)
- return SVN_NO_ERROR;
-
/* Use the public API to get a statstruct, and put it into the hash. */
- SVN_ERR(svn_wc_status2(&statstruct, path, NULL, pool));
+ SVN_ERR(svn_wc_status2(&statstruct, path, adm_access, pool));
statstruct->repos_lock = repos_lock;
apr_hash_set(statushash, apr_pstrdup(pool, path),
APR_HASH_KEY_STRING, statstruct);
@@ -1593,7 +1579,7 @@
/* Handle this directory's statuses, and then note in the parent
that this has been done. */
- if (pb && eb->descend)
+ if (pb)
{
svn_boolean_t was_deleted = FALSE;
@@ -1606,13 +1592,13 @@
/* Now do the status reporting. */
SVN_ERR(handle_statii(eb, dir_status ? dir_status->entry : NULL,
- db->path, db->statii, was_deleted, TRUE, pool));
+ db->path, db->statii, was_deleted, eb->descend,
+ pool));
if (dir_status && is_sendable_status(dir_status, eb))
(eb->status_func)(eb->status_baton, db->path, dir_status);
apr_hash_set(pb->statii, db->path, APR_HASH_KEY_STRING, NULL);
}
- else if (! pb)
- {
+ else {
/* If this is the top-most directory, and the operation had a
target, we should only report the target. */
if (*eb->target)
Index: subversion/tests/cmdline/stat_tests.py
===================================================================
--- subversion/tests/cmdline/stat_tests.py (revision 21597)
+++ subversion/tests/cmdline/stat_tests.py (working copy)
@@ -1141,7 +1141,7 @@
status_add_plus_conflict,
inconsistent_eol,
XFail(status_update_with_incoming_props),
- XFail(status_nonrecursive_update),
+ status_nonrecursive_update,
]
if __name__ == '__main__':
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Sep 21 23:01:16 2006