[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Sparse directories unbackwardly compatible over ra_dav

From: Daniel Rall <dlr_at_collab.net>
Date: 2007-06-11 22:48:20 CEST

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'
> >>
> >>Regards,
> >>Malcolm
> >>
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
> >For additional commands, e-mail: dev-help@subversion.tigris.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
> (dav_svn__update_report):
> 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)
>

  • application/pgp-signature attachment: stored
Received on Mon Jun 11 22:48:31 2007

This is an archived mail posted to the Subversion Dev mailing list.