On Wed, May 28, 2008 at 11:42 PM, Stefan Küng <tortoisesvn_at_gmail.com> wrote:
> David Glasser wrote:
>>
>> I can reproduce this with 1.4.x svnserve but not trunk svnserve.
>>
>> Note that the actual over-the-wire communication seems identical,
>> which is kind of wacky. But maybe the lack of depth capability is
>> triggering some compat code, which is broken?
>
> Finally got the svn.exe built here.
> I can reproduce the problem from here too (on XP SP3) with svn.exe built
> from the 1.5.x branch.
>
> Since you already got a reproduction recipe, I'm not trying to create
> another one. But just as an additional info: my repository is on apache, not
> svnserve (svn version 1.4.6 on the apache server). So it's nothing to do
> with svnserve.
The same problem code is in all three remote ra layers. This fixes
the issue; currently running tests to see if it does any harm.
cmpilato, any insight into why you wrote the code this way originally?
(Also, why libsvn_ra_svn/client.c(ra_svn_get_reporter) uses
svn_error_clear in its call to svn_delta_depth_filter_editor?)
[[[
When using the depth filter editor to filter out entries that are
deeper than requested,
make sure not to filter out a file which is the target of a
depth-empty edit; otherwise
the working copy will be corrupted when the target's revision is
updated but nothing else
is changed.
(This bit of code is run when doing an update --depth=empty against a
1.4.x or older
server, which interprets recurse=False like depth-files.)
* subversion/libsvn_delta/depth_filter_editor.c
(okay_to_edit): Don't special-case directories when figuring out
whether or not to filter
with requested depth empty.
]]]
Index: subversion/libsvn_delta/depth_filter_editor.c
===================================================================
--- subversion/libsvn_delta/depth_filter_editor.c (revision 31453)
+++ subversion/libsvn_delta/depth_filter_editor.c (working copy)
@@ -68,7 +68,7 @@
switch (eb->requested_depth)
{
case svn_depth_empty:
- return (kind == svn_node_dir && effective_depth <= 0);
+ return (effective_depth <= 0);
case svn_depth_files:
return ((effective_depth <= 0)
|| (kind == svn_node_file && effective_depth == 1));
--
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-05-29 08:51:54 CEST