After more testing and some debugging I found one small problem
(trivially fixed) with the patch.
When getting the non-recursive status of a child of the working copy
directory, the anchor selected is the parent of the target directory.
This means the depth passed on down needs to be 2 rather than 1 so that
it can find the status of the target's children that are themselves
directories.
This will preserve the current behavior of the API which is slightly
altered if you use a depth of 1 -- the child directories' status entries
are not fully filled out (cmt_rev and revision are -1, for example).
So, the call to 'svn_wc_adm_probe_open_depth' on line 126 of
'subversion/libsvn_client/status.c' needs to pass 2 rather than 1 if
'descend' is true (tweaked portion of previous patch):
Index: subversion/libsvn_client/status.c
===================================================================
--- subversion/libsvn_client/status.c (revision 8870)
+++ subversion/libsvn_client/status.c (working copy)
@@ -121,10 +121,11 @@
/* Close up our ADM area. We'll be re-opening soon. */
SVN_ERR (svn_wc_adm_close (adm_access));
- /* Need to lock the tree as even a non-recursive status requires the
- immediate directories to be locked. */
- SVN_ERR (svn_wc_adm_probe_open (&adm_access, NULL, anchor,
- FALSE, TRUE, pool));
+ /* Need to lock the tree. A non-recursive status requires the
+ immediate subdirectories to be locked. A recursive status
+ requires us to lock the whole tree. */
+ SVN_ERR (svn_wc_adm_probe_open_depth (&adm_access, NULL, anchor,
+ FALSE, (descend ? -1 : 2), pool));
/* Get the status edit, and use our wrapping status function/baton
as the callback pair. */
DJ
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Mar 2 03:29:42 2004