On Thu, Oct 1, 2009 at 08:44, Bert Huijben <rhuijben_at_sharpsvn.net> wrote:
>...
> +++ trunk/subversion/libsvn_client/merge.c Thu Oct 1 05:44:40 2009 (r39733)
> @@ -417,13 +417,14 @@ obstructed_or_missing(const char *path,
> svn_error_t *err;
> const svn_wc_entry_t *entry;
> svn_node_kind_t kind_expected, kind_on_disk;
> + svn_boolean_t obstructed;
> const char *local_abspath;
>
> err = svn_dirent_get_absolute(&local_abspath, path, pool);
>
> if (!err)
> err = svn_wc__maybe_get_entry(&entry, merge_b->ctx->wc_ctx, local_abspath,
> - svn_node_unknown, TRUE, FALSE, pool, pool);
> + svn_node_unknown, FALSE, FALSE, pool, pool);
Why did you change the SHOW_HIDDEN parameter here? That seems quite
unrelated to the obstructed/missing question.
> if (err)
> {
> svn_error_clear(err);
> @@ -433,6 +434,19 @@ obstructed_or_missing(const char *path,
> if (entry && entry->absent)
> return svn_wc_notify_state_missing;
>
> + /* svn_wc__maybe_get_entry ignores node kind errors, so check if we
> + didn't get the parent stub */
> + if (entry && entry->kind == svn_node_dir && *entry->name != '\0')
> + return svn_wc_notify_state_missing; /* Only found parent entry */
> +
> + err = svn_wc__temp_node_obstructed(&obstructed, merge_b->ctx->wc_ctx,
> + local_abspath, pool);
> +
> + if (err)
> + svn_error_clear(err);
> + else if (obstructed)
> + return svn_wc_notify_state_obstructed;
I'm not sure why you need a whole new API here. Can't you just look at
the node on the disk?
The "Only found parent entry" solves two cases: the subdir is missing,
or the subdir is obstructed by a file.
So you only need to test for: file is missing or obstructed by a
directory. Which is a simple svn_io_check_path().
>...
Cheers,
-g
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2402513
Received on 2009-10-01 15:31:05 CEST