Modified: subversion/branches/javahl-ra/subversion/libsvn_wc/update_editor.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_wc/update_editor.c?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/libsvn_wc/update_editor.c (original) +++ subversion/branches/javahl-ra/subversion/libsvn_wc/update_editor.c Sun Dec 23 05:42:30 2012 @@ -1302,6 +1302,7 @@ create_tree_conflict(svn_wc_conflict_des apr_pool_t *result_pool, apr_pool_t *scratch_pool) { const char *repos_root_url = NULL; + const char *repos_uuid = NULL; const char *left_repos_relpath; svn_revnum_t left_revision; svn_node_kind_t left_kind; @@ -1348,7 +1349,8 @@ create_tree_conflict(svn_wc_conflict_des SVN_ERR(svn_wc__db_scan_addition(&added_status, NULL, &added_repos_relpath, &repos_root_url, - NULL, NULL, NULL, NULL, NULL, NULL, + &repos_uuid, + NULL, NULL, NULL, NULL, NULL, NULL, eb->db, local_abspath, result_pool, scratch_pool)); @@ -1365,6 +1367,7 @@ create_tree_conflict(svn_wc_conflict_des left_revision = SVN_INVALID_REVNUM; left_repos_relpath = NULL; repos_root_url = eb->repos_root; + repos_uuid = eb->repos_uuid; } else { @@ -1384,12 +1387,11 @@ create_tree_conflict(svn_wc_conflict_des &left_revision, &left_repos_relpath, &repos_root_url, - NULL, NULL, NULL, NULL, NULL, NULL, + &repos_uuid, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - eb->db, - local_abspath, - result_pool, - scratch_pool)); + eb->db, local_abspath, + result_pool, scratch_pool)); /* Translate the node kind. */ if (base_kind == svn_kind_file || base_kind == svn_kind_symlink) @@ -1441,18 +1443,20 @@ create_tree_conflict(svn_wc_conflict_des * Send an 'empty' left revision. */ src_left_version = NULL; else - src_left_version = svn_wc_conflict_version_create(repos_root_url, - left_repos_relpath, - left_revision, - left_kind, + src_left_version = svn_wc_conflict_version_create2(repos_root_url, + repos_uuid, + left_repos_relpath, + left_revision, + left_kind, + result_pool); + + src_right_version = svn_wc_conflict_version_create2(repos_root_url, + repos_uuid, + right_repos_relpath, + *eb->target_revision, + their_node_kind, result_pool); - src_right_version = svn_wc_conflict_version_create(repos_root_url, - right_repos_relpath, - *eb->target_revision, - their_node_kind, - result_pool); - *pconflict = svn_wc_conflict_description_create_tree2( local_abspath, conflict_node_kind, eb->switch_relpath ?
Modified: subversion/branches/javahl-ra/subversion/libsvn_wc/util.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_wc/util.c?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/libsvn_wc/util.c (original) +++ subversion/branches/javahl-ra/subversion/libsvn_wc/util.c Sun Dec 23 05:42:30 2012 @@ -285,24 +285,27 @@ svn_wc__conflict_description2_dup(const } svn_wc_conflict_version_t * -svn_wc_conflict_version_create(const char *repos_url, - const char *path_in_repos, - svn_revnum_t peg_rev, - svn_node_kind_t node_kind, - apr_pool_t *pool) +svn_wc_conflict_version_create2(const char *repos_url, + const char *repos_uuid, + const char *repos_relpath, + svn_revnum_t revision, + svn_node_kind_t kind, + apr_pool_t *result_pool) { svn_wc_conflict_version_t *version; - version = apr_pcalloc(pool, sizeof(*version)); + version = apr_pcalloc(result_pool, sizeof(*version)); - SVN_ERR_ASSERT_NO_RETURN(svn_uri_is_canonical(repos_url, pool) && - svn_relpath_is_canonical(path_in_repos) && - SVN_IS_VALID_REVNUM(peg_rev)); + SVN_ERR_ASSERT_NO_RETURN(svn_uri_is_canonical(repos_url, result_pool) + && svn_relpath_is_canonical(repos_relpath) + && SVN_IS_VALID_REVNUM(revision) + /* ### repos_uuid can be NULL :( */); version->repos_url = repos_url; - version->peg_rev = peg_rev; - version->path_in_repos = path_in_repos; - version->node_kind = node_kind; + version->peg_rev = revision; + version->path_in_repos = repos_relpath; + version->node_kind = kind; + version->repos_uuid = repos_uuid; return version; } @@ -310,7 +313,7 @@ svn_wc_conflict_version_create(const cha svn_wc_conflict_version_t * svn_wc_conflict_version_dup(const svn_wc_conflict_version_t *version, - apr_pool_t *pool) + apr_pool_t *result_pool) { svn_wc_conflict_version_t *new_version; @@ -318,16 +321,20 @@ svn_wc_conflict_version_dup(const svn_wc if (version == NULL) return NULL; - new_version = apr_pcalloc(pool, sizeof(*new_version)); + new_version = apr_pcalloc(result_pool, sizeof(*new_version)); /* Shallow copy all members. */ *new_version = *version; if (version->repos_url) - new_version->repos_url = apr_pstrdup(pool, version->repos_url); + new_version->repos_url = apr_pstrdup(result_pool, version->repos_url); if (version->path_in_repos) - new_version->path_in_repos = apr_pstrdup(pool, version->path_in_repos); + new_version->path_in_repos = apr_pstrdup(result_pool, + version->path_in_repos); + + if (version->repos_uuid) + new_version->repos_uuid = apr_pstrdup(result_pool, version->repos_uuid); return new_version; } Modified: subversion/branches/javahl-ra/subversion/libsvn_wc/wc-metadata.sql URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_wc/wc-metadata.sql?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/libsvn_wc/wc-metadata.sql (original) +++ subversion/branches/javahl-ra/subversion/libsvn_wc/wc-metadata.sql Sun Dec 23 05:42:30 2012 @@ -107,7 +107,8 @@ CREATE TABLE PRISTINE ( md5_checksum TEXT NOT NULL ); - +CREATE INDEX I_PRISTINE_MD5 ON PRISTINE (md5_checksum); + /* ------------------------------------------------------------------------- */ /* The ACTUAL_NODE table describes text changes and property changes @@ -778,6 +779,8 @@ PRAGMA user_version = 29; CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth); +CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum); + /* Just to be sure clear out file external skels from pre 1.7.0 development working copies that were never updated by 1.7.0+ style clients */ UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL; Modified: subversion/branches/javahl-ra/subversion/svn/main.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/svn/main.c?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/svn/main.c (original) +++ subversion/branches/javahl-ra/subversion/svn/main.c Sun Dec 23 05:42:30 2012 @@ -1049,6 +1049,11 @@ const svn_opt_subcommand_desc2_t svn_cl_ " specified by the --show-revs option. If --show-revs isn't passed,\n" " it defaults to --show-revs='merged'.\n" "\n" + " If --revision (-r) is provided, filter the displayed information to\n" + " show only that which is associated with the revisions within the\n" + " specified range. Revision numbers, dates, and the 'HEAD' keyword are\n" + " valid range values.\n" + "\n" " The depth can be 'empty' or 'infinity'; the default is 'empty'.\n"), {'r', 'R', opt_depth, opt_show_revs} }, @@ -2463,6 +2468,7 @@ main(int argc, const char *argv[]) if (subcommand->cmd_func != svn_cl__blame && subcommand->cmd_func != svn_cl__diff && subcommand->cmd_func != svn_cl__log + && subcommand->cmd_func != svn_cl__mergeinfo && subcommand->cmd_func != svn_cl__merge) { if (opt_state.end_revision.kind != svn_opt_revision_unspecified) Modified: subversion/branches/javahl-ra/subversion/svn/mergeinfo-cmd.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/svn/mergeinfo-cmd.c?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/svn/mergeinfo-cmd.c (original) +++ subversion/branches/javahl-ra/subversion/svn/mergeinfo-cmd.c Sun Dec 23 05:42:30 2012 @@ -122,19 +122,23 @@ svn_cl__mergeinfo(apr_getopt_t *os, /* Do the real work, depending on the requested data flavor. */ if (opt_state->show_revs == svn_cl__show_revs_merged) { - SVN_ERR(svn_client_mergeinfo_log(TRUE, target, &tgt_peg_revision, - source, &src_peg_revision, - print_log_rev, NULL, - TRUE, depth, NULL, ctx, - pool)); + SVN_ERR(svn_client_mergeinfo_log2(TRUE, target, &tgt_peg_revision, + source, &src_peg_revision, + &(opt_state->start_revision), + &(opt_state->end_revision), + print_log_rev, NULL, + TRUE, depth, NULL, ctx, + pool)); } else if (opt_state->show_revs == svn_cl__show_revs_eligible) { - SVN_ERR(svn_client_mergeinfo_log(FALSE, target, &tgt_peg_revision, - source, &src_peg_revision, - print_log_rev, NULL, - TRUE, depth, NULL, ctx, - pool)); + SVN_ERR(svn_client_mergeinfo_log2(FALSE, target, &tgt_peg_revision, + source, &src_peg_revision, + &(opt_state->start_revision), + &(opt_state->end_revision), + print_log_rev, NULL, + TRUE, depth, NULL, ctx, + pool)); } return SVN_NO_ERROR; } Modified: subversion/branches/javahl-ra/subversion/svndumpfilter/main.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/svndumpfilter/main.c?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/svndumpfilter/main.c (original) +++ subversion/branches/javahl-ra/subversion/svndumpfilter/main.c Sun Dec 23 05:42:30 2012 @@ -110,6 +110,28 @@ write_prop_to_stringbuf(svn_stringbuf_t } +/* Writes a property deletion in dumpfile format to given stringbuf. */ +static void +write_propdel_to_stringbuf(svn_stringbuf_t **strbuf, + const char *name) +{ + int bytes_used; + size_t namelen; + char buf[SVN_KEYLINE_MAXLEN]; + + /* Output name length, then name. */ + namelen = strlen(name); + svn_stringbuf_appendbytes(*strbuf, "D ", 2); + + bytes_used = apr_snprintf(buf, sizeof(buf), "%" APR_SIZE_T_FMT, namelen); + svn_stringbuf_appendbytes(*strbuf, buf, bytes_used); + svn_stringbuf_appendbyte(*strbuf, '\n'); + + svn_stringbuf_appendbytes(*strbuf, name, namelen); + svn_stringbuf_appendbyte(*strbuf, '\n'); +} + + /* Compare the node-path PATH with the (const char *) prefixes in PFXLIST. * Return TRUE if any prefix is a prefix of PATH (matching whole path * components); FALSE otherwise. @@ -187,6 +209,7 @@ struct parse_baton_t svn_boolean_t do_renumber_revs; svn_boolean_t preserve_revprops; svn_boolean_t skip_missing_merge_sources; + svn_boolean_t allow_deltas; apr_array_header_t *prefixes; /* Input and output streams. */ @@ -250,6 +273,13 @@ struct node_baton_t /* Pointers to dumpfile data. */ svn_stringbuf_t *header; svn_stringbuf_t *props; + + /* Expect deltas? */ + svn_boolean_t has_prop_delta; + svn_boolean_t has_text_delta; + + /* We might need the node path in a parse error message. */ + char *node_path; }; @@ -261,6 +291,10 @@ static svn_error_t * magic_header_record(int version, void *parse_baton, apr_pool_t *pool) { struct parse_baton_t *pb = parse_baton; + + if (version >= SVN_REPOS_DUMPFILE_FORMAT_VERSION_DELTAS) + pb->allow_deltas = TRUE; + SVN_ERR(svn_stream_printf(pb->out_stream, pool, SVN_REPOS_DUMPFILE_MAGIC_HEADER ": %d\n\n", version)); @@ -566,10 +600,13 @@ new_node_record(void **node_baton, nb->has_props = FALSE; nb->has_text = FALSE; + nb->has_prop_delta = FALSE; + nb->has_text_delta = FALSE; nb->writing_begun = FALSE; nb->tcl = tcl ? svn__atoui64(tcl) : 0; nb->header = svn_stringbuf_create_empty(pool); nb->props = svn_stringbuf_create_empty(pool); + nb->node_path = apr_pstrdup(pool, node_path); /* Now we know for sure that we have a node that will not be skipped, flush the revision if it has not already been done. */ @@ -582,6 +619,14 @@ new_node_record(void **node_baton, const char *key = svn__apr_hash_index_key(hi); const char *val = svn__apr_hash_index_val(hi); + if ((!strcmp(key, SVN_REPOS_DUMPFILE_PROP_DELTA)) + && (!strcmp(val, "true"))) + nb->has_prop_delta = TRUE; + + if ((!strcmp(key, SVN_REPOS_DUMPFILE_TEXT_DELTA)) + && (!strcmp(val, "true"))) + nb->has_text_delta = TRUE; + if ((!strcmp(key, SVN_REPOS_DUMPFILE_CONTENT_LENGTH)) || (!strcmp(key, SVN_REPOS_DUMPFILE_PROP_CONTENT_LENGTH)) || (!strcmp(key, SVN_REPOS_DUMPFILE_TEXT_CONTENT_LENGTH))) @@ -804,10 +849,12 @@ set_node_property(void *node_baton, if (nb->do_skip) return SVN_NO_ERROR; - if (!nb->has_props) - return svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, NULL, - _("Delta property block detected - " - "not supported by svndumpfilter")); + if (! (nb->has_props || nb->has_prop_delta)) + return svn_error_createf(SVN_ERR_STREAM_MALFORMED_DATA, NULL, + _("Delta property block detected, but deltas " + "are not enabled for node '%s' in original " + "revision %ld"), + nb->node_path, rb->rev_orig); if (strcmp(name, SVN_PROP_MERGEINFO) == 0) { @@ -817,6 +864,7 @@ set_node_property(void *node_baton, value = filtered_mergeinfo; } + nb->has_props = TRUE; write_prop_to_stringbuf(nb->props, name, value); return SVN_NO_ERROR; @@ -824,6 +872,29 @@ set_node_property(void *node_baton, static svn_error_t * +delete_node_property(void *node_baton, const char *name) +{ + struct node_baton_t *nb = node_baton; + struct revision_baton_t *rb = nb->rb; + + if (nb->do_skip) + return SVN_NO_ERROR; + + if (!nb->has_prop_delta) + return svn_error_createf(SVN_ERR_STREAM_MALFORMED_DATA, NULL, + _("Delta property block detected, but deltas " + "are not enabled for node '%s' in original" + "revision %ld"), + nb->node_path, rb->rev_orig); + + nb->has_props = TRUE; + write_propdel_to_stringbuf(&(nb->props), name); + + return SVN_NO_ERROR; +} + + +static svn_error_t * remove_node_props(void *node_baton) { struct node_baton_t *nb = node_baton; @@ -899,7 +970,7 @@ svn_repos_parse_fns3_t filtering_vtable new_node_record, set_revision_property, set_node_property, - NULL, + delete_node_property, remove_node_props, set_fulltext, NULL, @@ -1045,6 +1116,7 @@ parse_baton_initialize(struct parse_bato baton->renumber_history = apr_hash_make(pool); baton->last_live_revision = SVN_INVALID_REVNUM; baton->oldest_original_rev = SVN_INVALID_REVNUM; + baton->allow_deltas = FALSE; *pb = baton; return SVN_NO_ERROR; Modified: subversion/branches/javahl-ra/subversion/tests/cmdline/svnadmin_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/tests/cmdline/svnadmin_tests.py?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/tests/cmdline/svnadmin_tests.py (original) +++ subversion/branches/javahl-ra/subversion/tests/cmdline/svnadmin_tests.py Sun Dec 23 05:42:30 2012 @@ -184,11 +184,12 @@ def get_txns(repo_dir): return txns def load_and_verify_dumpstream(sbox, expected_stdout, expected_stderr, - revs, dump, *varargs): - """Load the array of lines passed in 'dump' into the - current tests' repository and verify the repository content - using the array of wc.States passed in revs. VARARGS are optional - arguments passed to the 'load' command""" + revs, check_props, dump, *varargs): + """Load the array of lines passed in DUMP into the current tests' + repository and verify the repository content using the array of + wc.States passed in REVS. If CHECK_PROPS is True, check properties + of each rev's items. VARARGS are optional arguments passed to the + 'load' command.""" if isinstance(dump, str): dump = [ dump ] @@ -223,7 +224,7 @@ def load_and_verify_dumpstream(sbox, exp "update", "-r%s" % (rev+1), sbox.wc_dir) - wc_tree = svntest.tree.build_tree_from_wc(sbox.wc_dir) + wc_tree = svntest.tree.build_tree_from_wc(sbox.wc_dir, check_props) rev_tree = revs[rev].old_tree() try: @@ -232,6 +233,10 @@ def load_and_verify_dumpstream(sbox, exp svntest.verify.display_trees(None, 'WC TREE', wc_tree, rev_tree) raise +def load_dumpstream(sbox, dump, *varargs): + "Load dump text without verification." + return load_and_verify_dumpstream(sbox, None, None, None, False, dump, + *varargs) ###################################################################### # Tests @@ -308,7 +313,7 @@ def extra_headers(sbox): dumpfile[3:3] = \ [ "X-Comment-Header: Ignored header normally not in dump stream\n" ] - load_and_verify_dumpstream(sbox,[],[], dumpfile_revisions, dumpfile, + load_and_verify_dumpstream(sbox,[],[], dumpfile_revisions, False, dumpfile, '--ignore-uuid') #---------------------------------------------------------------------- @@ -327,7 +332,7 @@ def extra_blockcontent(sbox): # Insert the extra content after "PROPS-END\n" dumpfile[11] = dumpfile[11][:-2] + "extra text\n\n\n" - load_and_verify_dumpstream(sbox,[],[], dumpfile_revisions, dumpfile, + load_and_verify_dumpstream(sbox,[],[], dumpfile_revisions, False, dumpfile, '--ignore-uuid') #---------------------------------------------------------------------- @@ -341,7 +346,7 @@ def inconsistent_headers(sbox): dumpfile[-2] = "Content-length: 30\n\n" load_and_verify_dumpstream(sbox, [], svntest.verify.AnyOutput, - dumpfile_revisions, dumpfile) + dumpfile_revisions, False, dumpfile) #---------------------------------------------------------------------- # Test for issue #2729: Datestamp-less revisions in dump streams do @@ -361,7 +366,7 @@ def empty_date(sbox): "K 7\nsvn:log\nV 0\n\nK 10\nsvn:author\nV 4\nerik\nPROPS-END\n\n\n" ] - load_and_verify_dumpstream(sbox,[],[], dumpfile_revisions, dumpfile, + load_and_verify_dumpstream(sbox,[],[], dumpfile_revisions, False, dumpfile, '--ignore-uuid') # Verify that the revision still lacks the svn:date property. @@ -808,8 +813,7 @@ def load_with_parent_dir(sbox): ['\n', 'Committed revision 1.\n'], [], "mkdir", sbox.repo_url + "/sample", "-m", "Create sample dir") - load_and_verify_dumpstream(sbox, [], [], None, dumpfile, '--parent-dir', - '/sample') + load_dumpstream(sbox, dumpfile, '--parent-dir', '/sample') # Verify the svn:mergeinfo properties for '--parent-dir' svntest.actions.run_and_verify_svn(None, @@ -831,8 +835,7 @@ def load_with_parent_dir(sbox): ['\n', 'Committed revision 11.\n'], [], "mkdir", sbox.repo_url + "/sample-2", "-m", "Create sample-2 dir") - load_and_verify_dumpstream(sbox, [], [], None, dumpfile, '--parent-dir', - 'sample-2') + load_dumpstream(sbox, dumpfile, '--parent-dir', 'sample-2') # Verify the svn:mergeinfo properties for '--parent-dir'. svntest.actions.run_and_verify_svn(None, @@ -907,11 +910,10 @@ def reflect_dropped_renumbered_revs(sbox "-m", "Create toplevel dir") # Load the dump stream in sbox.repo_url - load_and_verify_dumpstream(sbox,[],[], None, dumpfile) + load_dumpstream(sbox, dumpfile) # Load the dump stream in toplevel dir - load_and_verify_dumpstream(sbox,[],[], None, dumpfile, '--parent-dir', - '/toplevel') + load_dumpstream(sbox, dumpfile, '--parent-dir', '/toplevel') # Verify the svn:mergeinfo properties url = sbox.repo_url @@ -1142,7 +1144,7 @@ def dont_drop_valid_mergeinfo_during_inc dumpfile_full = open(os.path.join(os.path.dirname(sys.argv[0]), 'svnadmin_tests_data', 'mergeinfo_included_full.dump')).read() - load_and_verify_dumpstream(sbox, [], [], None, dumpfile_full, '--ignore-uuid') + load_dumpstream(sbox, dumpfile_full, '--ignore-uuid') # Check that the mergeinfo is as expected. url = sbox.repo_url + '/branches/' @@ -1184,15 +1186,9 @@ def dont_drop_valid_mergeinfo_during_inc test_create(sbox) # Load the three incremental dump files in sequence. - load_and_verify_dumpstream(sbox, [], [], None, - open(dump_file_r1_10).read(), - '--ignore-uuid') - load_and_verify_dumpstream(sbox, [], [], None, - open(dump_file_r11_13).read(), - '--ignore-uuid') - load_and_verify_dumpstream(sbox, [], [], None, - open(dump_file_r14_15).read(), - '--ignore-uuid') + load_dumpstream(sbox, open(dump_file_r1_10).read(), '--ignore-uuid') + load_dumpstream(sbox, open(dump_file_r11_13).read(), '--ignore-uuid') + load_dumpstream(sbox, open(dump_file_r14_15).read(), '--ignore-uuid') # Check the mergeinfo, we use the same expected output as before, # as it (duh!) should be exactly the same as when we loaded the @@ -1221,13 +1217,11 @@ def dont_drop_valid_mergeinfo_during_inc dumpfile_skeleton = open(os.path.join(os.path.dirname(sys.argv[0]), 'svnadmin_tests_data', 'skeleton_repos.dump')).read() - load_and_verify_dumpstream(sbox, [], [], None, dumpfile_skeleton, - '--ignore-uuid') + load_dumpstream(sbox, dumpfile_skeleton, '--ignore-uuid') # Load 'svnadmin_tests_data/mergeinfo_included_full.dump' in one shot: - load_and_verify_dumpstream(sbox, [], [], None, dumpfile_full, - '--parent-dir', 'Projects/Project-X', - '--ignore-uuid') + load_dumpstream(sbox, dumpfile_full, '--parent-dir', 'Projects/Project-X', + '--ignore-uuid') # Check that the mergeinfo is as expected. This is exactly the # same expected mergeinfo we previously checked, except that the @@ -1263,22 +1257,15 @@ def dont_drop_valid_mergeinfo_during_inc test_create(sbox) # Load this skeleton repos into the empty target: - load_and_verify_dumpstream(sbox, [], [], None, dumpfile_skeleton, - '--ignore-uuid') + load_dumpstream(sbox, dumpfile_skeleton, '--ignore-uuid') # Load the three incremental dump files in sequence. - load_and_verify_dumpstream(sbox, [], [], None, - open(dump_file_r1_10).read(), - '--parent-dir', 'Projects/Project-X', - '--ignore-uuid') - load_and_verify_dumpstream(sbox, [], [], None, - open(dump_file_r11_13).read(), - '--parent-dir', 'Projects/Project-X', - '--ignore-uuid') - load_and_verify_dumpstream(sbox, [], [], None, - open(dump_file_r14_15).read(), - '--parent-dir', 'Projects/Project-X', - '--ignore-uuid') + load_dumpstream(sbox, open(dump_file_r1_10).read(), + '--parent-dir', 'Projects/Project-X', '--ignore-uuid') + load_dumpstream(sbox, open(dump_file_r11_13).read(), + '--parent-dir', 'Projects/Project-X', '--ignore-uuid') + load_dumpstream(sbox, open(dump_file_r14_15).read(), + '--parent-dir', 'Projects/Project-X', '--ignore-uuid') # Check the resulting mergeinfo. We expect the exact same results # as Part 3. @@ -1402,7 +1389,7 @@ text # Try to load the dumpstream, expecting a failure (because of mixed EOLs). load_and_verify_dumpstream(sbox, [], svntest.verify.AnyOutput, - dumpfile_revisions, dump_str, + dumpfile_revisions, False, dump_str, '--ignore-uuid') # Now try it again bypassing prop validation. (This interface takes @@ -1423,8 +1410,8 @@ def verify_non_utf8_paths(sbox): test_create(sbox) # Load the dumpstream - load_and_verify_dumpstream(sbox, [], [], dumpfile_revisions, dumpfile, - '--ignore-uuid') + load_and_verify_dumpstream(sbox, [], [], dumpfile_revisions, False, + dumpfile, '--ignore-uuid') # Replace the path 'A' in revision 1 with a non-UTF-8 sequence. # This has been observed in repositories in the wild, though Subversion @@ -1590,13 +1577,13 @@ def load_ranges(sbox): # Load our dumpfile, 2 revisions at a time, verifying that we have # the correct youngest revision after each load. - load_and_verify_dumpstream(sbox, [], [], None, dumpdata, '-r0:2') + load_dumpstream(sbox, dumpdata, '-r0:2') svntest.actions.run_and_verify_svnlook("Unexpected output", ['2\n'], None, 'youngest', sbox.repo_dir) - load_and_verify_dumpstream(sbox, [], [], None, dumpdata, '-r3:4') + load_dumpstream(sbox, dumpdata, '-r3:4') svntest.actions.run_and_verify_svnlook("Unexpected output", ['4\n'], None, 'youngest', sbox.repo_dir) - load_and_verify_dumpstream(sbox, [], [], None, dumpdata, '-r5:6') + load_dumpstream(sbox, dumpdata, '-r5:6') svntest.actions.run_and_verify_svnlook("Unexpected output", ['6\n'], None, 'youngest', sbox.repo_dir) Modified: subversion/branches/javahl-ra/subversion/tests/cmdline/svndumpfilter_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/tests/cmdline/svndumpfilter_tests.py?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/tests/cmdline/svndumpfilter_tests.py (original) +++ subversion/branches/javahl-ra/subversion/tests/cmdline/svndumpfilter_tests.py Sun Dec 23 05:42:30 2012 @@ -34,7 +34,8 @@ import svntest from svntest.verify import SVNExpectedStdout, SVNExpectedStderr # Get some helper routines -from svnadmin_tests import load_and_verify_dumpstream, test_create +from svnadmin_tests import (load_and_verify_dumpstream, load_dumpstream, + test_create) from svntest.main import run_svn, run_svnadmin # (abbreviation) @@ -104,8 +105,7 @@ def reflect_dropped_renumbered_revs(sbox "--drop-empty-revs", "--renumber-revs", "--quiet") - load_and_verify_dumpstream(sbox, [], [], None, filtered_out, - "--ignore-uuid") + load_dumpstream(sbox, filtered_out, "--ignore-uuid") # Verify the svn:mergeinfo properties url = sbox.repo_url @@ -125,8 +125,7 @@ def reflect_dropped_renumbered_revs(sbox "--drop-empty-revs", "--renumber-revs", "--quiet") - load_and_verify_dumpstream(sbox, [], [], None, filtered_out, - "--ignore-uuid") + load_dumpstream(sbox, filtered_out, "--ignore-uuid") # Verify the svn:mergeinfo properties expected_output = svntest.verify.UnorderedOutput([ @@ -152,7 +151,7 @@ def svndumpfilter_loses_mergeinfo(sbox): filtered_out, filtered_err = filter_and_return_output(dumpfile, 0, "include", "trunk", "branch1", "--quiet") - load_and_verify_dumpstream(sbox, [], [], None, filtered_out) + load_dumpstream(sbox, filtered_out) # Verify the svn:mergeinfo properties url = sbox.repo_url @@ -175,8 +174,7 @@ def _simple_dumpfilter_test(sbox, dumpfi *dumpargs) # Setup our expectations - load_and_verify_dumpstream(sbox, [], [], None, filtered_output, - '--ignore-uuid') + load_dumpstream(sbox, filtered_output, '--ignore-uuid') expected_disk = svntest.main.greek_state.copy() expected_disk.remove('A/B/E/alpha') expected_disk.remove('A/B/E/beta') @@ -350,8 +348,7 @@ def filter_mergeinfo_revs_outside_of_dum "include", "trunk", "branches", "--skip-missing-merge-sources", "--quiet") - load_and_verify_dumpstream(sbox, [], [], None, filtered_dumpfile2, - '--ignore-uuid') + load_dumpstream(sbox, filtered_dumpfile2, '--ignore-uuid') # Check the resulting mergeinfo. url = sbox.repo_url + "/branches" expected_output = svntest.verify.UnorderedOutput([ @@ -378,8 +375,7 @@ def filter_mergeinfo_revs_outside_of_dum skeleton_dumpfile = open(os.path.join(os.path.dirname(sys.argv[0]), 'svnadmin_tests_data', 'skeleton_repos.dump')).read() - load_and_verify_dumpstream(sbox, [], [], None, skeleton_dumpfile, - '--ignore-uuid') + load_dumpstream(sbox, skeleton_dumpfile, '--ignore-uuid') partial_dump2 = os.path.join(os.path.dirname(sys.argv[0]), 'svndumpfilter_tests_data', 'mergeinfo_included_partial.dump') @@ -481,9 +477,8 @@ def filter_mergeinfo_revs_outside_of_dum # Now actually load the filtered dump into the skeleton repository # and then check the resulting mergeinfo. - load_and_verify_dumpstream(sbox, [], [], None, filtered_dumpfile2, - '--parent-dir', '/Projects/Project-X', - '--ignore-uuid') + load_dumpstream(sbox, filtered_dumpfile2, + '--parent-dir', '/Projects/Project-X', '--ignore-uuid') url = sbox.repo_url + "/Projects/Project-X/branches" expected_output = svntest.verify.UnorderedOutput([ @@ -569,8 +564,7 @@ def dropped_but_not_renumbered_empty_rev "--skip-missing-merge-sources", "--drop-empty-revs") # Now load the filtered dump into an empty repository. - load_and_verify_dumpstream(sbox, [], [], None, filtered_dumpfile, - '--ignore-uuid') + load_dumpstream(sbox, filtered_dumpfile, '--ignore-uuid') # The mergeinfo in the newly loaded repos should have no references to the # dropped branch and the remaining merge source revs should be remapped to @@ -623,8 +617,7 @@ def match_empty_prefix(sbox): # Load the filtered dump into a repo and check the result test_create(sbox) - load_and_verify_dumpstream(sbox, [], [], None, filtered_output, - '--ignore-uuid') + load_dumpstream(sbox, filtered_output, '--ignore-uuid') svntest.actions.run_and_verify_update(sbox.wc_dir, expected_output, expected_disk, @@ -661,11 +654,28 @@ def accepts_deltas(sbox): dumpfile_location = os.path.join(os.path.dirname(sys.argv[0]), 'svndumpfilter_tests_data', 'simple_v3.dump') - dumpfile = open(dumpfile_location).read() + dump_in = open(dumpfile_location).read() - filtered_out, filtered_err = filter_and_return_output(dumpfile, 0, "include", + dump_out, err = filter_and_return_output(dump_in, 0, "include", "trunk", "--quiet") - load_and_verify_dumpstream(sbox, [], [], None, filtered_out) + + expected_revs = [ + svntest.wc.State('', { + 'trunk' : svntest.wc.StateItem(props={'soup': 'No soup for you!'}), + 'trunk/foo' : svntest.wc.StateItem("This is file 'foo'.\n"), + }), + svntest.wc.State('', { + 'trunk' : svntest.wc.StateItem(props={'soup': 'No soup for you!'}), + 'trunk/foo' : svntest.wc.StateItem("This is file 'foo'.\n"), + }), + svntest.wc.State('', { + 'trunk' : svntest.wc.StateItem(props={'story': 'Yada yada yada...'}), + 'trunk/foo' : svntest.wc.StateItem("This is file 'foo'.\n"), + }), + ] + + load_and_verify_dumpstream(sbox, [], [], expected_revs, True, dump_out, + '--ignore-uuid') Modified: subversion/branches/javahl-ra/subversion/tests/cmdline/svndumpfilter_tests_data/simple_v3.dump URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/tests/cmdline/svndumpfilter_tests_data/simple_v3.dump?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== Files subversion/branches/javahl-ra/subversion/tests/cmdline/svndumpfilter_tests_data/simple_v3.dump (original) and subversion/branches/javahl-ra/subversion/tests/cmdline/svndumpfilter_tests_data/simple_v3.dump Sun Dec 23 05:42:30 2012 differ Modified: subversion/branches/javahl-ra/subversion/tests/libsvn_wc/wc-queries-test.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1425411&r1=1425410&r2=1425411&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/tests/libsvn_wc/wc-queries-test.c (original) +++ subversion/branches/javahl-ra/subversion/tests/libsvn_wc/wc-queries-test.c Sun Dec 23 05:42:30 2012 @@ -88,9 +88,6 @@ static const int slow_statements[] = STMT_LOOK_FOR_WORK, STMT_HAS_WORKING_NODES, - /* Need index? */ - STMT_SELECT_PRISTINE_BY_MD5, /* Only used by deprecated api */ - /* Full temporary table read */ STMT_INSERT_ACTUAL_EMPTIES, STMT_SELECT_REVERT_LIST_RECURSIVE,
