Author: hwright
Date: Wed Apr 21 21:13:44 2010
New Revision: 936517
URL: http://svn.apache.org/viewvc?rev=936517&view=rev
Log:
Make the ambient depth filter use absolute paths.
* subversion/libsvn_wc/ambient_depth_filter_editor.c
(edit_baton): Remove the relative anchor path.
(dir_baton): Use an absolute path.
(make_dir_baton): Create an absolute path, and use it.
(make_file_baton, delete_entry, open_directory): Use the absolute path.
(svn_wc__ambient_depth_filter_editor): Use the absolute path, and assert that
it is.
* subversion/libsvn_wc/wc.h
(svn_wc__ambiend_depth_filter_editor): Rename parameter.
* subversion/libsvn_wc/diff.c
(svn_wc_get_diff_editor6): Create and use an absolute path to use with the
ambient depth editor.
Modified:
subversion/trunk/subversion/libsvn_wc/ambient_depth_filter_editor.c
subversion/trunk/subversion/libsvn_wc/diff.c
subversion/trunk/subversion/libsvn_wc/wc.h
Modified: subversion/trunk/subversion/libsvn_wc/ambient_depth_filter_editor.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/ambient_depth_filter_editor.c?rev=936517&r1=936516&r2=936517&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/ambient_depth_filter_editor.c
(original)
+++ subversion/trunk/subversion/libsvn_wc/ambient_depth_filter_editor.c Wed Apr
21 21:13:44 2010
@@ -95,7 +95,6 @@ struct edit_baton
void *wrapped_edit_baton;
svn_wc__db_t *db;
const char *anchor_abspath;
- const char *anchor;
const char *target;
};
@@ -111,7 +110,7 @@ struct dir_baton
svn_boolean_t ambiently_excluded;
svn_depth_t ambient_depth;
struct edit_baton *edit_baton;
- const char *path;
+ const char *abspath;
void *wrapped_baton;
};
@@ -138,9 +137,9 @@ make_dir_baton(struct dir_baton **d_p,
/* Okay, no easy out, so allocate and initialize a dir baton. */
d = apr_pcalloc(pool, sizeof(*d));
- d->path = apr_pstrdup(pool, eb->anchor);
+ d->abspath = apr_pstrdup(pool, eb->anchor_abspath);
if (path)
- d->path = svn_dirent_join(d->path, path, pool);
+ d->abspath = svn_dirent_join(d->abspath, path, pool);
/* The svn_depth_unknown means that: 1) pb is the anchor; 2) there
is an non-null target, for which we are preparing the baton.
@@ -154,7 +153,8 @@ make_dir_baton(struct dir_baton **d_p,
svn_boolean_t exists = TRUE;
abspath = svn_dirent_join(eb->anchor_abspath,
- svn_dirent_skip_ancestor(eb->anchor, path),
+ svn_dirent_skip_ancestor(eb->anchor_abspath,
+ path),
pool);
err = svn_wc__db_read_info(&status, NULL, NULL, NULL, NULL, NULL, NULL,
@@ -237,7 +237,8 @@ make_file_baton(struct file_baton **f_p,
const char *abspath;
abspath = svn_dirent_join(eb->anchor_abspath,
- svn_dirent_skip_ancestor(eb->anchor, path),
+ svn_dirent_skip_ancestor(eb->anchor_abspath,
+ path),
pool);
SVN_ERR(svn_wc__db_read_kind(&kind, pb->edit_baton->db, abspath, TRUE,
@@ -349,7 +350,8 @@ delete_entry(const char *path,
const char *abspath;
abspath = svn_dirent_join(eb->anchor_abspath,
- svn_dirent_skip_ancestor(eb->anchor, path),
+ svn_dirent_skip_ancestor(eb->anchor_abspath,
+ path),
pool);
SVN_ERR(svn_wc__db_read_kind(&kind, eb->db, abspath, TRUE, pool));
@@ -441,7 +443,8 @@ open_directory(const char *path,
this svn_wc_entry call. */
local_abspath = svn_dirent_join(eb->anchor_abspath,
- svn_dirent_skip_ancestor(eb->anchor, path),
+ svn_dirent_skip_ancestor(eb->anchor_abspath,
+ path),
pool);
@@ -644,7 +647,7 @@ svn_wc__ambient_depth_filter_editor(cons
void **edit_baton,
const svn_delta_editor_t *wrapped_editor,
void *wrapped_edit_baton,
- const char *anchor,
+ const char *anchor_abspath,
const char *target,
svn_wc__db_t *db,
apr_pool_t *pool)
@@ -652,6 +655,8 @@ svn_wc__ambient_depth_filter_editor(cons
svn_delta_editor_t *depth_filter_editor;
struct edit_baton *eb;
+ SVN_ERR_ASSERT(svn_dirent_is_absolute(anchor_abspath));
+
depth_filter_editor = svn_delta_default_editor(pool);
depth_filter_editor->set_target_revision = set_target_revision;
depth_filter_editor->open_root = open_root;
@@ -673,8 +678,7 @@ svn_wc__ambient_depth_filter_editor(cons
eb->wrapped_editor = wrapped_editor;
eb->wrapped_edit_baton = wrapped_edit_baton;
eb->db = db;
- SVN_ERR(svn_dirent_get_absolute(&eb->anchor_abspath, anchor, pool));
- eb->anchor = anchor;
+ eb->anchor_abspath = anchor_abspath;
eb->target = target;
*editor = depth_filter_editor;
Modified: subversion/trunk/subversion/libsvn_wc/diff.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/diff.c?rev=936517&r1=936516&r2=936517&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/diff.c (original)
+++ subversion/trunk/subversion/libsvn_wc/diff.c Wed Apr 21 21:13:44 2010
@@ -1823,6 +1823,7 @@ svn_wc_get_diff_editor6(const svn_delta_
void *inner_baton;
svn_delta_editor_t *tree_editor;
const svn_delta_editor_t *inner_editor;
+ const char *anchor_abspath;
SVN_ERR(make_edit_baton(&eb,
wc_ctx->db,
@@ -1852,12 +1853,14 @@ svn_wc_get_diff_editor6(const svn_delta_
inner_editor = tree_editor;
inner_baton = eb;
+ SVN_ERR(svn_dirent_get_absolute(&anchor_abspath, anchor_path, result_pool));
+
if (depth == svn_depth_unknown)
SVN_ERR(svn_wc__ambient_depth_filter_editor(&inner_editor,
&inner_baton,
inner_editor,
inner_baton,
- anchor_path,
+ anchor_abspath,
target,
wc_ctx->db,
result_pool));
Modified: subversion/trunk/subversion/libsvn_wc/wc.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc.h?rev=936517&r1=936516&r2=936517&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc.h (original)
+++ subversion/trunk/subversion/libsvn_wc/wc.h Wed Apr 21 21:13:44 2010
@@ -473,7 +473,7 @@ svn_wc__ambient_depth_filter_editor(cons
void **edit_baton,
const svn_delta_editor_t *wrapped_editor,
void *wrapped_edit_baton,
- const char *anchor,
+ const char *anchor_abspath,
const char *target,
svn_wc__db_t *db,
apr_pool_t *pool);