[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: Kamesh Jayachandran <kamesh_at_collab.net>
Date: 2007-05-29 13:13:41 CEST

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)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue May 29 14:48:12 2007

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.