This patch is functionally solid.
Initializing depth to svn_depth_infinity (instead of
svn_depth_unknown) would achieve nearly the same behavior, but
wouldn't handle the case where the client did send svn_depth_unknown
over the wire. I'm +1 on this patch.
Nitpick: Extraneous whitespace above the line starting with
"if (!saw_depth && ..."
On Tue, 29 May 2007, Kamesh Jayachandran wrote:
> Attached patch fixes the issue.
> All tests that pass over ra_dav.
> Somehow I think initialing 'depth' to 'svn_depth_infinity' is a much
> simpler way to solve this problem.
> With regards
> Kamesh Jayachandran
> Kamesh Jayachandran wrote:
> >r24968 has attempted to fix that only for non-recursive case '-N switch'.
> >With regards
> >Kamesh Jayachandran
> >Malcolm Rowe wrote:
> >>Hi all,
> >>I haven't got time to look into this at the moment, but I thought I'd
> >>post to the list in case someone else does (or in case it is/was a known
> >>problem at the moment).
> >>It appears that the sparse-directory protocol changes aren't backward
> >>compatible; attempts to checkout or update from a 1.4.3 (e.g.) client
> >>against a trunk server (r25053) give something like:
> >> svn: REPORT request failed on '/foo/!svn/vcc/default'
> >> svn: Unsupported report depth 'unknown'
> >To unsubscribe, e-mail: email@example.com
> >For additional commands, e-mail: firstname.lastname@example.org
> Checkout and Update only sends 'recursive' tag to 'update-report' when invoked
> in a non-recursive fashion with a '-N' switch.
> * subversion/mod_dav_svn/reports/update.c
> When 'recursive' and 'depth' tag does not exist set depth to 'infinity'.
> Patch by: kameshj
> Found by: malcolm
> Index: subversion/mod_dav_svn/reports/update.c
> --- subversion/mod_dav_svn/reports/update.c (revision 25175)
> +++ subversion/mod_dav_svn/reports/update.c (working copy)
> @@ -918,6 +918,7 @@
> svn_boolean_t text_deltas = TRUE;
> svn_depth_t depth = svn_depth_unknown;
> svn_boolean_t saw_depth = FALSE;
> + svn_boolean_t saw_recursive = FALSE;
> svn_boolean_t resource_walk = FALSE;
> svn_boolean_t ignore_ancestry = FALSE;
> dav_svn__authz_read_baton arb;
> @@ -1048,6 +1049,7 @@
> When both "depth" and "recursive" are sent, we don't
> bother to check if they're mutually consistent, we just
> let depth dominate. */
> + saw_recursive = TRUE;
> if (child->ns == ns && strcmp(child->name, "ignore-ancestry") == 0)
> @@ -1074,7 +1076,10 @@
> text_deltas = FALSE;
> + if (!saw_depth && !saw_recursive && (depth == svn_depth_unknown))
> + depth = svn_depth_infinity;
> /* If the client never sent a <src-path> element, it's old and
> sending a style of report that we no longer allow. */
> if (! src_path)
Received on Mon Jun 11 22:48:31 2007
- application/pgp-signature attachment: stored