> -----Original Message-----
> From: Philip Martin [mailto:philip.mar...@wandisco.com]
> Sent: woensdag 14 september 2011 16:15
> To: dev@subversion.apache.org
> Subject: update_editor.c:close_edit setting "un-incomplete"
> 
> Looking a issue 3993, a serf/googlecode oddity
> http://subversion.tigris.org/issues/show_bug.cgi?id=3993
> leads me to this code in libsvn_wc/update_editor.c:close_edit
> 
>   /* The editor didn't even open the root; we have to take care of
>      some cleanup stuffs. */
>   if (! eb->root_opened
>       && *eb->target_basename == '\0')
>     {
>       /* We need to "un-incomplete" the root directory. */
>       SVN_ERR(svn_wc__db_temp_op_end_directory_update(eb->db,
>                                                       eb->anchor_abspath,
>                                                       scratch_pool));
>     }
> 
> That's WCNG code, but the concept has been present since 1.0.  The
> "un-incomplete" state is presence=normal in WCNG terms.
> 
> 
> Why do we do that?  If we don't call open_root and the directory is
> incomplete then it must have been incomplete before the update started.
> Is it correct for a drive that doesn't call open_root to change such a
> directory to normal?  I think leaving the directory incomplete is the
> correct action.

We shouldn't un-incomplete the root directory, because we didn't mark it
complete in the first place.

But when just removing these lines we introduce a new problem:
We will still bump the revisions of all nodes to revisions in which they
don't exist. (At least that is what that example targetting google code
does).

As I have been unable to reproduce this code path I'm thinking that we
should never get here in the first place: the fs api should have reported a
PATH not found much earlier on Google's side.

So this code should probably return an error indicating what went wrong...
(And I have no idea what went wrong, because I can't reproduce it on any
standard ra implementation)

        Bert 

Reply via email to