Modified: subversion/branches/svn_mutex/subversion/libsvn_wc/wc-queries.sql URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/subversion/libsvn_wc/wc-queries.sql?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/subversion/libsvn_wc/wc-queries.sql (original) +++ subversion/branches/svn_mutex/subversion/libsvn_wc/wc-queries.sql Tue Oct 11 19:08:23 2011 @@ -581,7 +581,10 @@ WHERE wc_id = ?1 AND local_relpath = ?2 -- STMT_DELETE_ACTUAL_NODE_RECURSIVE DELETE FROM actual_node -WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) -- STMT_DELETE_ACTUAL_NODE_WITHOUT_CONFLICT DELETE FROM actual_node @@ -590,21 +593,23 @@ WHERE wc_id = ?1 AND local_relpath = ?2 -- STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST DELETE FROM actual_node -WHERE wc_id = ?1 AND local_relpath = ?2 - AND (changelist IS NULL - OR local_relpath NOT IN (SELECT local_relpath FROM nodes_current - WHERE wc_id = ?1 AND local_relpath = ?2 - AND kind = 'file')) +WHERE wc_id = ?1 + AND local_relpath = ?2 + AND (changelist IS NULL + OR NOT EXISTS (SELECT 1 FROM nodes_current c + WHERE c.wc_id = ?1 AND c.local_relpath = local_relpath + AND kind = 'file')) -- STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE DELETE FROM actual_node -WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') - AND (changelist IS NULL - OR local_relpath NOT IN (SELECT local_relpath FROM nodes_current - WHERE wc_id = ?1 - AND (local_relpath = ?2 - OR local_relpath LIKE ?3 ESCAPE '#') - AND kind = 'file')) +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + AND (changelist IS NULL + OR NOT EXISTS (SELECT 1 FROM nodes_current c + WHERE c.wc_id = ?1 AND c.local_relpath = local_relpath + AND kind = 'file')) -- STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST UPDATE actual_node @@ -632,7 +637,10 @@ SET properties = NULL, older_checksum = NULL, left_checksum = NULL, right_checksum = NULL -WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) -- STMT_UPDATE_NODE_BASE_DEPTH UPDATE nodes SET depth = ?3 @@ -762,10 +770,12 @@ AND NOT EXISTS (SELECT 1 FROM nodes -- STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE DELETE FROM wc_lock WHERE wc_id = ?1 -AND (local_dir_relpath = ?2 OR local_dir_relpath LIKE ?3 ESCAPE '#') -AND NOT EXISTS (SELECT 1 FROM nodes - WHERE nodes.wc_id = ?1 - AND nodes.local_relpath = wc_lock.local_dir_relpath) + AND (?2 = '' + OR local_dir_relpath = ?2 + OR (local_dir_relpath > ?2 || '/' AND local_dir_relpath < ?2 || '0')) + AND NOT EXISTS (SELECT 1 FROM nodes + WHERE nodes.wc_id = ?1 + AND nodes.local_relpath = wc_lock.local_dir_relpath) -- STMT_APPLY_CHANGES_TO_BASE_NODE /* translated_size and last_mod_time are not mentioned here because they will @@ -823,7 +833,10 @@ WHERE wc_id = ?1 AND local_relpath = ?2 -- STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE UPDATE nodes SET op_depth = ?3 + 1 -WHERE wc_id = ?1 AND local_relpath LIKE ?2 ESCAPE '#' AND op_depth = ?3 +WHERE wc_id = ?1 + AND (?2 = '' + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + AND op_depth = ?3 -- STMT_DOES_NODE_EXIST SELECT 1 FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2 @@ -831,14 +844,22 @@ LIMIT 1 -- STMT_HAS_ABSENT_NODES SELECT local_relpath FROM nodes -WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') - AND op_depth = 0 AND presence = 'absent' LIMIT 1 +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + AND op_depth = 0 AND presence = 'absent' +LIMIT 1 /* ### Select all absent nodes. */ -- STMT_SELECT_ALL_ABSENT_NODES SELECT local_relpath FROM nodes -WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') - AND op_depth = 0 AND presence = 'absent' +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + AND op_depth = 0 + AND presence = 'absent' -- STMT_INSERT_WORKING_NODE_COPY_FROM_BASE INSERT OR REPLACE INTO nodes ( @@ -1177,14 +1198,19 @@ DROP TABLE IF EXISTS delete_list SELECT MIN(revision), MAX(revision), MIN(changed_revision), MAX(changed_revision) FROM nodes WHERE wc_id = ?1 - AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') - AND presence IN ('normal', 'incomplete') - AND file_external IS NULL - AND op_depth = 0 + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + AND presence IN ('normal', 'incomplete') + AND file_external IS NULL + AND op_depth = 0 -- STMT_HAS_SPARSE_NODES SELECT 1 FROM nodes -WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) AND op_depth = 0 AND (presence IN ('absent', 'excluded') OR depth NOT IN ('infinity', 'unknown')) @@ -1193,13 +1219,19 @@ LIMIT 1 -- STMT_SUBTREE_HAS_TREE_MODIFICATIONS SELECT 1 FROM nodes -WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) AND op_depth > 0 LIMIT 1 -- STMT_SUBTREE_HAS_PROP_MODIFICATIONS SELECT 1 FROM actual_node -WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) AND properties IS NOT NULL LIMIT 1 @@ -1275,7 +1307,9 @@ LIMIT 1 -- STMT_SELECT_BASE_FILES_RECURSIVE SELECT local_relpath, translated_size, last_mod_time FROM nodes AS n WHERE wc_id = ?1 - AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#') + AND (?2 = '' + OR local_relpath = ?2 + OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) AND op_depth = 0 AND kind='file' AND presence='normal'
Modified: subversion/branches/svn_mutex/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/subversion/libsvn_wc/wc_db.c?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/subversion/libsvn_wc/wc_db.c (original) +++ subversion/branches/svn_mutex/subversion/libsvn_wc/wc_db.c Tue Oct 11 19:08:23 2011 @@ -1212,17 +1212,17 @@ gather_repo_children(const apr_array_hea } -/* Return TRUE if CHILD_ABSPATH is an immediate child of PARENT_ABSPATH - * which has PARENT_COMPONENT_COUNT path components. +/* Return TRUE if CHILD_ABSPATH is an immediate child of PARENT_ABSPATH. * Else, return FALSE. */ static svn_boolean_t -is_immediate_child_path(const char *parent_abspath, - apr_size_t parent_component_count, - const char *child_abspath) -{ - return (svn_dirent_is_ancestor(parent_abspath, child_abspath) && - parent_component_count == - svn_path_component_count(child_abspath) - 1); +is_immediate_child_path(const char *parent_abspath, const char *child_abspath) +{ + const char *local_relpath = svn_dirent_skip_ancestor(parent_abspath, + child_abspath); + + /* To be an immediate child local_relpath should have one (not empty) + component */ + return local_relpath && *local_relpath && !strchr(local_relpath, '/'); } @@ -1263,7 +1263,6 @@ flush_entries(svn_wc__db_wcroot_t *wcroo if (depth > svn_depth_empty) { apr_hash_index_t *hi; - apr_size_t component_count = svn_path_component_count(local_abspath); /* Flush access batons of children within the specified depth. */ for (hi = apr_hash_first(scratch_pool, wcroot->access_cache); @@ -1273,8 +1272,7 @@ flush_entries(svn_wc__db_wcroot_t *wcroo const char *item_abspath = svn__apr_hash_index_key(hi); if ((depth == svn_depth_files || depth == svn_depth_immediates) && - is_immediate_child_path(local_abspath, component_count, - item_abspath)) + is_immediate_child_path(local_abspath, item_abspath)) { remove_from_access_cache(wcroot->access_cache, item_abspath); } @@ -4035,11 +4033,9 @@ catch_copy_of_absent(svn_wc__db_wcroot_t SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_HAS_ABSENT_NODES)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, - local_relpath, - construct_like_arg(local_relpath, - scratch_pool))); + local_relpath)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); if (have_row) absent_relpath = svn_sqlite__column_text(stmt, 0, scratch_pool); @@ -5243,8 +5239,7 @@ op_revert_txn(void *baton, SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE)); SVN_ERR(svn_sqlite__bindf(stmt, "isi", wcroot->wc_id, - construct_like_arg(local_relpath, - scratch_pool), + local_relpath, op_depth)); SVN_ERR(svn_sqlite__step_done(stmt)); @@ -5287,7 +5282,6 @@ op_revert_recursive_txn(void *baton, svn_boolean_t have_row; apr_int64_t op_depth; int affected_rows; - const char *like_arg = construct_like_arg(local_relpath, scratch_pool); /* ### Similar structure to op_revert_txn, should they be combined? */ @@ -5302,8 +5296,8 @@ op_revert_recursive_txn(void *baton, SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_DELETE_ACTUAL_NODE_RECURSIVE)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, - local_relpath, like_arg)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, + local_relpath)); SVN_ERR(svn_sqlite__step(&affected_rows, stmt)); if (affected_rows) @@ -5338,21 +5332,21 @@ op_revert_recursive_txn(void *baton, SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, - local_relpath, like_arg)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, + local_relpath)); SVN_ERR(svn_sqlite__step_done(stmt)); SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, - local_relpath, like_arg)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, + local_relpath)); SVN_ERR(svn_sqlite__step_done(stmt)); /* ### This removes the locks, but what about the access batons? */ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, - local_relpath, like_arg)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, + local_relpath)); SVN_ERR(svn_sqlite__step_done(stmt)); return SVN_NO_ERROR; @@ -5741,8 +5735,6 @@ remove_node_txn(void *baton, apr_int64_t repos_id; const char *repos_relpath; - const char *like_arg = construct_like_arg(local_relpath, scratch_pool); - SVN_ERR_ASSERT(*local_relpath != '\0'); /* Never on a wcroot */ /* Need info for not_present node? */ @@ -5765,9 +5757,8 @@ remove_node_txn(void *baton, STMT_DELETE_ACTUAL_NODE_RECURSIVE)); /* Delete all actual nodes at or below local_relpath */ - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, - local_relpath, - like_arg)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, + local_relpath)); SVN_ERR(svn_sqlite__step_done(stmt)); /* Should we leave a not-present node? */ @@ -6041,7 +6032,6 @@ op_delete_txn(void *baton, svn_boolean_t have_row, op_root; svn_boolean_t add_work = FALSE; svn_sqlite__stmt_t *stmt; - const char *like_arg; apr_int64_t select_depth; /* Depth of what is to be deleted */ svn_boolean_t refetch_depth = FALSE; @@ -6059,12 +6049,10 @@ op_delete_txn(void *baton, || status == svn_wc__db_status_not_present) return SVN_NO_ERROR; - like_arg = construct_like_arg(local_relpath, scratch_pool); - SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_HAS_ABSENT_NODES)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", - wcroot->wc_id, local_relpath, like_arg)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", + wcroot->wc_id, local_relpath)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); if (have_row) { @@ -6126,20 +6114,20 @@ op_delete_txn(void *baton, and a NODES row. */ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", - wcroot->wc_id, local_relpath, like_arg)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", + wcroot->wc_id, local_relpath)); SVN_ERR(svn_sqlite__step_done(stmt)); SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", - wcroot->wc_id, local_relpath, like_arg)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", + wcroot->wc_id, local_relpath)); SVN_ERR(svn_sqlite__step_done(stmt)); SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, - local_relpath, like_arg)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, + local_relpath)); SVN_ERR(svn_sqlite__step_done(stmt)); if (add_work) @@ -11518,8 +11506,7 @@ get_min_max_revisions(svn_revnum_t *min_ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_SELECT_MIN_MAX_REVISIONS)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, local_relpath, - construct_like_arg(local_relpath, scratch_pool))); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); if (have_row) { @@ -11591,11 +11578,9 @@ is_sparse_checkout_internal(svn_boolean_ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_HAS_SPARSE_NODES)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, - local_relpath, - construct_like_arg(local_relpath, - scratch_pool))); + local_relpath)); /* If this query returns a row, the working copy is sparse. */ SVN_ERR(svn_sqlite__step(&have_row, stmt)); *is_sparse_checkout = have_row; @@ -11756,11 +11741,9 @@ svn_wc__db_get_absent_subtrees(apr_hash_ VERIFY_USABLE_WCROOT(wcroot); SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_SELECT_ALL_ABSENT_NODES)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, - local_relpath, - construct_like_arg(local_relpath, - scratch_pool))); + local_relpath)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); if (have_row) @@ -11799,8 +11782,7 @@ has_local_mods(svn_boolean_t *is_modifie /* Check for additions or deletions. */ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_SUBTREE_HAS_TREE_MODIFICATIONS)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, local_relpath, - construct_like_arg(local_relpath, scratch_pool))); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath)); /* If this query returns a row, the working copy is modified. */ SVN_ERR(svn_sqlite__step(is_modified, stmt)); SVN_ERR(svn_sqlite__reset(stmt)); @@ -11813,9 +11795,7 @@ has_local_mods(svn_boolean_t *is_modifie /* Check for property modifications. */ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_SUBTREE_HAS_PROP_MODIFICATIONS)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, local_relpath, - construct_like_arg(local_relpath, - scratch_pool))); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath)); /* If this query returns a row, the working copy is modified. */ SVN_ERR(svn_sqlite__step(is_modified, stmt)); SVN_ERR(svn_sqlite__reset(stmt)); @@ -11832,9 +11812,7 @@ has_local_mods(svn_boolean_t *is_modifie /* Check for text modifications. */ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_SELECT_BASE_FILES_RECURSIVE)); - SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, local_relpath, - construct_like_arg(local_relpath, - scratch_pool))); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); if (have_row) iterpool = svn_pool_create(scratch_pool); Modified: subversion/branches/svn_mutex/subversion/libsvn_wc/workqueue.c URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/subversion/libsvn_wc/workqueue.c?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/subversion/libsvn_wc/workqueue.c (original) +++ subversion/branches/svn_mutex/subversion/libsvn_wc/workqueue.c Tue Oct 11 19:08:23 2011 @@ -737,7 +737,35 @@ run_file_install(svn_wc__db_t *db, /* All done. Move the file into place. */ /* ### fix this. we should delay the rename. */ - SVN_ERR(svn_io_file_rename(dst_abspath, local_abspath, scratch_pool)); + + { + svn_error_t *err; + + err = svn_io_file_rename(dst_abspath, local_abspath, scratch_pool); + + /* With a single db we might want to install files in a missing directory. + Simply trying this scenario on error won't do any harm and at least + one user reported this problem on IRC. */ + if (err && APR_STATUS_IS_ENOENT(err->apr_err)) + { + svn_error_t *err2; + + err2 = svn_io_make_dir_recursively(svn_dirent_dirname(dst_abspath, + scratch_pool), + scratch_pool); + + if (err2) + /* Creating directory didn't work: Return all errors */ + return svn_error_trace(svn_error_compose_create(err, err2)); + else + /* We could create a directory: retry install */ + svn_error_clear(err); + + SVN_ERR(svn_io_file_rename(dst_abspath, local_abspath, scratch_pool)); + } + else + SVN_ERR(err); + } /* Tweak the on-disk file according to its properties. */ if (props Modified: subversion/branches/svn_mutex/subversion/mod_dav_svn/reports/mergeinfo.c URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/subversion/mod_dav_svn/reports/mergeinfo.c?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/subversion/mod_dav_svn/reports/mergeinfo.c (original) +++ subversion/branches/svn_mutex/subversion/mod_dav_svn/reports/mergeinfo.c Tue Oct 11 19:08:23 2011 @@ -213,22 +213,6 @@ dav_svn__get_mergeinfo_report(const dav_ } } - if (validate_inherited_mergeinfo) - { - serr = dav_svn__brigade_puts(bb, output, - "<S:" SVN_DAV__VALIDATE_INHERITED ">" - "yes" - "</S:" SVN_DAV__VALIDATE_INHERITED ">" - DEBUG_CR); - if (serr) - { - derr = dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR, - "Error ending REPORT response.", - resource->pool); - goto cleanup; - } - } - if ((serr = dav_svn__brigade_puts(bb, output, "</S:" SVN_DAV__MERGEINFO_REPORT ">" DEBUG_CR))) Modified: subversion/branches/svn_mutex/subversion/mod_dav_svn/version.c URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/subversion/mod_dav_svn/version.c?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/subversion/mod_dav_svn/version.c (original) +++ subversion/branches/svn_mutex/subversion/mod_dav_svn/version.c Tue Oct 11 19:08:23 2011 @@ -147,8 +147,8 @@ get_vsn_options(apr_pool_t *p, apr_text_ apr_text_append(p, phdr, SVN_DAV_NS_DAV_SVN_ATOMIC_REVPROPS); apr_text_append(p, phdr, SVN_DAV_NS_DAV_SVN_PARTIAL_REPLAY); /* Mergeinfo is a special case: here we merely say that the server - * knows how to handle mergeinfo -- whether the repository does too - * is a separate matter. + * knows how to handle mergeinfo and validate inherited + * mergeinfo -- whether the repository does too is a separate matter. * * Think of it as offering the client an early out: if the server * can't do merge-tracking, there's no point finding out of the @@ -159,6 +159,7 @@ get_vsn_options(apr_pool_t *p, apr_text_ * server capability and remain agnostic about the repository). */ apr_text_append(p, phdr, SVN_DAV_NS_DAV_SVN_MERGEINFO); + apr_text_append(p, phdr, SVN_DAV_NS_DAV_SVN_MERGEINFO_VALIDATION); /* ### fork-control? */ } Modified: subversion/branches/svn_mutex/subversion/svnserve/serve.c URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/subversion/svnserve/serve.c?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/subversion/svnserve/serve.c (original) +++ subversion/branches/svn_mutex/subversion/svnserve/serve.c Tue Oct 11 19:08:23 2011 @@ -1903,8 +1903,7 @@ static svn_error_t *get_mergeinfo(svn_ra mergeinfo_string)); } svn_pool_destroy(iterpool); - SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!)b)", - validate_inherited_mergeinfo)); + SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!))")); return SVN_NO_ERROR; } @@ -3230,7 +3229,12 @@ svn_error_t *serve(svn_ra_svn_conn_t *co SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "w(cc(!", "success", uuid, b.repos_url)); if (supports_mergeinfo) - SVN_ERR(svn_ra_svn_write_word(conn, pool, SVN_RA_SVN_CAP_MERGEINFO)); + { + SVN_ERR(svn_ra_svn_write_word(conn, pool, SVN_RA_SVN_CAP_MERGEINFO)); + SVN_ERR(svn_ra_svn_write_word( + conn, pool, SVN_RA_SVN_CAP_VALIDATE_INHERITED_MERGEINFO)); + } + SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!))")); } Propchange: subversion/branches/svn_mutex/subversion/tests/cmdline/redirect_tests.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/subversion/tests/cmdline/svntest/err.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/subversion/tests/cmdline/svntest/objects.py ------------------------------------------------------------------------------ svn:eol-style = native Modified: subversion/branches/svn_mutex/subversion/tests/cmdline/upgrade_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/subversion/tests/cmdline/upgrade_tests.py?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/subversion/tests/cmdline/upgrade_tests.py (original) +++ subversion/branches/svn_mutex/subversion/tests/cmdline/upgrade_tests.py Tue Oct 11 19:08:23 2011 @@ -1076,6 +1076,7 @@ def upgrade_with_missing_subdir(sbox): # And now perform an update. (This used to fail with an assertion) expected_output = svntest.wc.State(wc_dir, { + 'A/B' : Item(verb='Restored'), 'A/B/E' : Item(status='A '), 'A/B/E/alpha' : Item(status='A '), 'A/B/E/beta' : Item(status='A '), Propchange: subversion/branches/svn_mutex/subversion/tests/manual/tree-conflicts-add-vs-add.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/buildbot/master/Feeder.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/buildbot/master/SVNMailNotifier.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/buildbot/master/private-sample.py ------------------------------------------------------------------------------ svn:eol-style = native Modified: subversion/branches/svn_mutex/tools/buildbot/slaves/ubuntu-x64/svncheck.sh URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/tools/buildbot/slaves/ubuntu-x64/svncheck.sh?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/tools/buildbot/slaves/ubuntu-x64/svncheck.sh (original) +++ subversion/branches/svn_mutex/tools/buildbot/slaves/ubuntu-x64/svncheck.sh Tue Oct 11 19:08:23 2011 @@ -29,9 +29,9 @@ if test -z "$1" ; then fi echo "========= mount RAM disc" -# ignore the result: if it fails, the test will just take longer... -mkdir -p subversion/tests/cmdline/svn-test-work -test -e ../mount-ramdrive && ../mount-ramdrive +test ! -e /dev/shm/svn-test-work && mkdir /dev/shm/svn-test-work +test -e subversion/tests/cmdline/svn-test-work && rm -rf subversion/tests/cmdline/svn-test-work +ln -s /dev/shm/svn-test-work subversion/tests/cmdline/ echo "========= make check" make check FS_TYPE=$1 CLEANUP=1 || exit $? Modified: subversion/branches/svn_mutex/tools/buildbot/slaves/ubuntu-x64/svnclean.sh URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/tools/buildbot/slaves/ubuntu-x64/svnclean.sh?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/tools/buildbot/slaves/ubuntu-x64/svnclean.sh (original) +++ subversion/branches/svn_mutex/tools/buildbot/slaves/ubuntu-x64/svnclean.sh Tue Oct 11 19:08:23 2011 @@ -22,10 +22,6 @@ set -x -echo "========= unmount RAM disc" -# ignore the result: if there was no ramdisc, that's fine -test -e ../unmount-ramdrive && ../unmount-ramdrive - echo "========= make extraclean" cd build test -e Makefile && (make extraclean || exit $?) Propchange: subversion/branches/svn_mutex/tools/dev/benchmarks/suite1/benchmark.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dev/gen-py-errors.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dev/gen_junit_report.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dev/log_revnum_change_asf.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dev/mklog.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dev/wc-format.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dev/wc-ng/bump-to-19.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dev/wc-ng/count-progress.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dev/wc-ng/graph-data.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dev/wc-ng/populate-pristine.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/dist/release.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/svn_mutex/tools/hook-scripts/validate-extensions.py ------------------------------------------------------------------------------ svn:eol-style = native Modified: subversion/branches/svn_mutex/win-tests.py URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/win-tests.py?rev=1182027&r1=1182026&r2=1182027&view=diff ============================================================================== --- subversion/branches/svn_mutex/win-tests.py (original) +++ subversion/branches/svn_mutex/win-tests.py Tue Oct 11 19:08:23 2011 @@ -496,6 +496,9 @@ class Httpd: fp.write('ServerName localhost\n') fp.write('PidFile pid\n') fp.write('ErrorLog log\n') + fp.write('LogFormat "%h %l %u %t \\"%r\\" %>s %b" common\n') + fp.write('Customlog log common\n') + fp.write('LogLevel Debug\n') fp.write('Listen ' + str(self.httpd_port) + '\n') # Write LoadModule for minimal system module @@ -529,7 +532,6 @@ class Httpd: 'REDIRECT-TEMP-(.*)$ /svn-test-work/repositories/$1\n') fp.write('TypesConfig ' + self._quote(self.httpd_mime_types) + '\n') - fp.write('LogLevel Debug\n') fp.write('HostNameLookups Off\n') fp.close()