I've rethreaded this to get the words "data corruption" in the subject,
as it seems to be that kind of bug. As glasser pointed out in
http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=139319
Message-ID: <1ea387f60805282312v7f03d297w208cda44ba8ec438_at_mail.gmail.com>
in this thread, at the end of his repro recipe a file is left thinking
it's at r1 but has the r2 working content *and* r2 text-base. Even if
later we reliably check base-checksum on commit (thus preventing bad
file content from entering the repository), there may still be the
possibility of property corruption being committed... I haven't had
time to analyze it deeply enough to know one way or the other (hey, it's
3am and I just saw this thread).
If we can determine that there is no way for corruption to enter the
repository with this bug, then I think it's okay to fix this in 1.5.1.
Not ideal, but okay: a broken working copy is annoying, but it's not the
same as bad data. If there *is* a way, though, then we kind of have to
fix this in 1.5.0.
I seem to have a gift for disappearing at awkward moments, but: I'll be
offline tomorrow and most of Friday. (Anyone who feels like chatting
about this or anything else, feel free to call my cell phone -- I could
probably use the company on US I-80 :-) )
-Karl
"David Glasser" <glasser_at_davidglasser.net> writes:
> 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
---------------------------------------------------------------------
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 10:03:21 CEST