Modified: subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.c?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.c (original) +++ subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.c Wed Jun 6 13:03:48 2012 @@ -4648,8 +4648,7 @@ svn_wc__db_global_record_fileinfo(svn_wc rb.translated_size = translated_size; rb.last_mod_time = last_mod_time; - SVN_ERR(svn_wc__db_with_txn(wcroot, local_relpath, db_record_fileinfo, &rb, - scratch_pool)); + SVN_ERR(db_record_fileinfo(&rb, wcroot, local_relpath, scratch_pool)); /* We *totally* monkeyed the entries. Toss 'em. */ SVN_ERR(flush_entries(wcroot, local_abspath, svn_depth_empty, scratch_pool)); @@ -10480,7 +10479,7 @@ get_moved_to(struct scan_deletion_baton_ const char *local_relpath, apr_pool_t *scratch_pool) { - const char *moved_to_relpath = svn_sqlite__column_text(stmt, 2, NULL); + const char *moved_to_relpath = svn_sqlite__column_text(stmt, 3, NULL); if (moved_to_relpath) { @@ -10546,8 +10545,11 @@ scan_deletion_txn(void *baton, check op-roots and parents of op-roots. */ scan = (sd_baton->moved_to_op_root_relpath || sd_baton->moved_to_relpath); - SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, - STMT_SELECT_DELETION_INFO)); + SVN_ERR(svn_sqlite__get_statement( + &stmt, wcroot->sdb, + scan ? STMT_SELECT_DELETION_INFO_SCAN + : STMT_SELECT_DELETION_INFO)); + SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, current_relpath)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); if (!have_row) @@ -10566,7 +10568,7 @@ scan_deletion_txn(void *baton, path_for_error_message(wcroot, local_relpath, scratch_pool)); - op_depth = svn_sqlite__column_int(stmt, 3); + op_depth = svn_sqlite__column_int(stmt, 2); /* Special case: LOCAL_RELPATH not-present within a WORKING tree, we treat this as an op-root. At commit time we need to explicitly @@ -10620,8 +10622,6 @@ scan_deletion_txn(void *baton, if (scan || current_depth == op_depth) { SVN_ERR(svn_sqlite__reset(stmt)); - SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, - STMT_SELECT_DELETION_INFO)); SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, current_relpath)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); @@ -10635,8 +10635,6 @@ scan_deletion_txn(void *baton, SVN_ERR_ASSERT(current_relpath[0] != '\0'); /* Catch invalid data */ parent_relpath = svn_relpath_dirname(current_relpath, scratch_pool); - SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, - STMT_SELECT_DELETION_INFO)); SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, parent_relpath)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); if (!have_row) @@ -10662,7 +10660,7 @@ scan_deletion_txn(void *baton, } current_relpath = parent_relpath; - op_depth = svn_sqlite__column_int(stmt, 3); + op_depth = svn_sqlite__column_int(stmt, 2); have_base = !svn_sqlite__column_is_null(stmt, 0); } @@ -11640,6 +11638,7 @@ svn_wc__db_read_kind(svn_kind_t *kind, svn_wc__db_t *db, const char *local_abspath, svn_boolean_t allow_missing, + svn_boolean_t show_hidden, apr_pool_t *scratch_pool) { svn_wc__db_wcroot_t *wcroot; @@ -11677,6 +11676,24 @@ svn_wc__db_read_kind(svn_kind_t *kind, } } + if (!show_hidden) + { + int op_depth = svn_sqlite__column_int(stmt_info, 0); + svn_wc__db_status_t status = svn_sqlite__column_token(stmt_info, 3, + presence_map); + + if (op_depth > 0) + SVN_ERR(convert_to_working_status(&status, status)); + + if (status == svn_wc__db_status_not_present + || status == svn_wc__db_status_excluded) + { + *kind = svn_kind_none; + SVN_ERR(svn_sqlite__reset(stmt_info)); + return SVN_NO_ERROR; + } + } + *kind = svn_sqlite__column_token(stmt_info, 4, kind_map); return svn_error_trace(svn_sqlite__reset(stmt_info));
Modified: subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.h URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.h?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.h (original) +++ subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.h Wed Jun 6 13:03:48 2012 @@ -941,6 +941,18 @@ svn_wc__db_pristine_get_sha1(const svn_c apr_pool_t *scratch_pool); +/* If necessary transfers the PRISTINE file of SRC_LOCAL_ABSPATH to the + working copy identified by DST_WRI_ABSPATH. If CHECKSUM is not NULL, use + CHECKSUM to identify which pristine file to transfer. */ +svn_error_t * +svn_wc__db_pristine_transfer(svn_wc__db_t *db, + const char *src_local_abspath, + const svn_checksum_t *checksum, + const char *dst_wri_abspath, + svn_cancel_func_t cancel_func, + void *cancel_baton, + apr_pool_t *scratch_pool); + /* Remove the pristine text with SHA-1 checksum SHA1_CHECKSUM from the * pristine store, iff it is not referenced by any of the (other) WC DB * tables. */ @@ -2165,12 +2177,16 @@ svn_wc__db_read_conflicts(const apr_arra If the node is missing and ALLOW_MISSING is FALSE, then it will return SVN_ERR_WC_PATH_NOT_FOUND. + If SHOW_HIDDEN is FALSE and the status of LOCAL_ABSPATH is NOT_PRESENT or + EXCLUDED, set KIND to svn_kind_none. + Uses SCRATCH_POOL for temporary allocations. */ svn_error_t * svn_wc__db_read_kind(svn_kind_t *kind, svn_wc__db_t *db, const char *local_abspath, svn_boolean_t allow_missing, + svn_boolean_t show_hidden, apr_pool_t *scratch_pool); Modified: subversion/branches/ev2-export/subversion/libsvn_wc/wc_db_pristine.c URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/wc_db_pristine.c?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/libsvn_wc/wc_db_pristine.c (original) +++ subversion/branches/ev2-export/subversion/libsvn_wc/wc_db_pristine.c Wed Jun 6 13:03:48 2012 @@ -523,6 +523,176 @@ svn_wc__db_pristine_get_sha1(const svn_c return svn_error_trace(svn_sqlite__reset(stmt)); } +/* Baton for pristine_transfer() */ +struct pristine_transfer_baton +{ + svn_wc__db_wcroot_t *src_wcroot; + svn_wc__db_wcroot_t *dst_wcroot; + svn_cancel_func_t cancel_func; + void * cancel_baton; + + /* pristine install baton, filled from pristine_transfer() */ + struct pristine_install_baton_t ib; +}; + +/* Transaction implementation of svn_wc__db_pristine_transfer(). + Calls itself again to obtain locks in both working copies */ +static svn_error_t * +pristine_transfer(void *baton, svn_wc__db_wcroot_t *wcroot, + const char *local_relpath, apr_pool_t *scratch_pool) +{ + struct pristine_transfer_baton *tb = baton; + svn_sqlite__stmt_t *stmt; + svn_boolean_t have_row; + + /* Is this the initial call or the recursive call? */ + if (wcroot == tb->dst_wcroot) + { + /* The initial call: */ + + /* Get all the info within a src wcroot lock */ + SVN_ERR(svn_wc__db_with_txn(tb->src_wcroot, local_relpath, + pristine_transfer, tb, scratch_pool)); + + /* And do the final install, while we still have the dst lock */ + if (tb->ib.tempfile_abspath) + SVN_ERR(pristine_install_txn(&(tb->ib), tb->dst_wcroot->sdb, + scratch_pool)); + return SVN_NO_ERROR; + } + + /* We have a lock on tb->dst_wcroot and tb->src_wcroot */ + + /* Get the right checksum if it wasn't passed */ + if (!tb->ib.sha1_checksum) + { + SVN_ERR(svn_sqlite__get_statement(&stmt, tb->src_wcroot->sdb, + STMT_SELECT_NODE_INFO)); + + SVN_ERR(svn_sqlite__bindf(stmt, "is", + tb->src_wcroot->wc_id, local_relpath)); + + SVN_ERR(svn_sqlite__step(&have_row, stmt)); + + if (have_row) + SVN_ERR(svn_sqlite__column_checksum(&(tb->ib.sha1_checksum), stmt, 6, + scratch_pool)); + + SVN_ERR(svn_sqlite__reset(stmt)); + + if (!tb->ib.sha1_checksum) + return SVN_NO_ERROR; /* Nothing to transfer */ + } + + /* Check if we have the pristine in the destination wcroot */ + SVN_ERR(svn_sqlite__get_statement(&stmt, tb->dst_wcroot->sdb, + STMT_SELECT_PRISTINE)); + SVN_ERR(svn_sqlite__bind_checksum(stmt, 1, tb->ib.sha1_checksum, + scratch_pool)); + SVN_ERR(svn_sqlite__step(&have_row, stmt)); + SVN_ERR(svn_sqlite__reset(stmt)); + + /* Destination repository already has this pristine. We're done */ + if (have_row) + return SVN_NO_ERROR; + + /* Verify if the pristine actually exists and get the MD5 in one query */ + SVN_ERR(svn_sqlite__get_statement(&stmt, tb->src_wcroot->sdb, + STMT_SELECT_PRISTINE)); + SVN_ERR(svn_sqlite__bind_checksum(stmt, 1, tb->ib.sha1_checksum, + scratch_pool)); + SVN_ERR(svn_sqlite__step(&have_row, stmt)); + + if (!have_row) + { + return svn_error_createf(SVN_ERR_WC_DB_ERROR, svn_sqlite__reset(stmt), + _("The pristine text with checksum '%s' was " + "not found"), + svn_checksum_to_cstring_display( + tb->ib.sha1_checksum, scratch_pool)); + } + SVN_ERR(svn_sqlite__column_checksum(&(tb->ib.md5_checksum), stmt, 0, + scratch_pool)); + SVN_ERR(svn_sqlite__reset(stmt)); + + /* We now have read locks in both working copies, so we can safely copy the + file to the temp location of the destination working copy */ + { + svn_stream_t *src_stream; + svn_stream_t *dst_stream; + const char *tmp_abspath; + const char *src_abspath; + + SVN_ERR(svn_stream_open_unique(&dst_stream, &tmp_abspath, + pristine_get_tempdir(tb->dst_wcroot, + scratch_pool, + scratch_pool), + svn_io_file_del_on_pool_cleanup, + scratch_pool, scratch_pool)); + + SVN_ERR(get_pristine_fname(&src_abspath, tb->src_wcroot->abspath, + tb->ib.sha1_checksum, + scratch_pool, scratch_pool)); + + SVN_ERR(svn_stream_open_readonly(&src_stream, src_abspath, + scratch_pool, scratch_pool)); + + /* ### Should we verify the SHA1 or MD5 here, or is that too expensive? */ + SVN_ERR(svn_stream_copy3(src_stream, dst_stream, + tb->cancel_func, tb->cancel_baton, + scratch_pool)); + + /* And now set the right information to install once we leave the + src transaction */ + + SVN_ERR(get_pristine_fname(&(tb->ib.pristine_abspath), + tb->dst_wcroot->abspath, + tb->ib.sha1_checksum, + scratch_pool, scratch_pool)); + tb->ib.tempfile_abspath = tmp_abspath; + } + return SVN_NO_ERROR; +} + +svn_error_t * +svn_wc__db_pristine_transfer(svn_wc__db_t *db, + const char *src_local_abspath, + const svn_checksum_t *checksum, + const char *dst_wri_abspath, + svn_cancel_func_t cancel_func, + void *cancel_baton, + apr_pool_t *scratch_pool) +{ + const char *src_relpath; + const char *dst_relpath; + struct pristine_transfer_baton tb; + memset(&tb, 0, sizeof(tb)); + + SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&tb.src_wcroot, &src_relpath, + db, src_local_abspath, + scratch_pool, scratch_pool)); + VERIFY_USABLE_WCROOT(tb.src_wcroot); + SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&tb.dst_wcroot, &dst_relpath, + db, dst_wri_abspath, + scratch_pool, scratch_pool)); + VERIFY_USABLE_WCROOT(tb.dst_wcroot); + + if (tb.src_wcroot == tb.dst_wcroot + || tb.src_wcroot->sdb == tb.dst_wcroot->sdb) + { + return SVN_NO_ERROR; /* Nothing to transfer */ + } + + tb.cancel_func = cancel_func; + tb.cancel_baton = cancel_baton; + + return svn_error_trace(svn_wc__db_with_txn(tb.dst_wcroot, src_relpath, + pristine_transfer, &tb, + scratch_pool)); +} + + + /* Remove the file at FILE_ABSPATH in such a way that we could re-create a * new file of the same name at any time thereafter. @@ -708,7 +878,6 @@ pristine_cleanup_wcroot(svn_wc__db_wcroo return SVN_NO_ERROR; } - svn_error_t * svn_wc__db_pristine_cleanup(svn_wc__db_t *db, const char *wri_abspath, Modified: subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.c URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.c?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.c (original) +++ subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.c Wed Jun 6 13:03:48 2012 @@ -715,6 +715,8 @@ run_file_install(svn_wc__db_t *db, scratch_pool)); /* No need to set exec or read-only flags on special files. */ + + /* ### Shouldn't this record a timestamp and size, etc.? */ return SVN_NO_ERROR; } @@ -781,12 +783,27 @@ run_file_install(svn_wc__db_t *db, } /* Tweak the on-disk file according to its properties. */ - if (props - && (apr_hash_get(props, SVN_PROP_NEEDS_LOCK, APR_HASH_KEY_STRING) - || apr_hash_get(props, SVN_PROP_EXECUTABLE, APR_HASH_KEY_STRING))) - { - SVN_ERR(svn_wc__sync_flags_with_props(NULL, db, local_abspath, - scratch_pool)); +#ifndef WIN32 + if (props && apr_hash_get(props, SVN_PROP_EXECUTABLE, APR_HASH_KEY_STRING)) + SVN_ERR(svn_io_set_file_executable(local_abspath, TRUE, FALSE, + scratch_pool)); +#endif + + /* Note that this explicitly checks the pristine properties, to make sure + that when the lock is locally set (=modification) it is not read only */ + if (props && apr_hash_get(props, SVN_PROP_NEEDS_LOCK, APR_HASH_KEY_STRING)) + { + svn_wc__db_status_t status; + svn_wc__db_lock_t *lock; + SVN_ERR(svn_wc__db_read_info(&status, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, &lock, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, + db, local_abspath, + scratch_pool, scratch_pool)); + + if (!lock && status != svn_wc__db_status_added) + SVN_ERR(svn_io_set_file_read_only(local_abspath, FALSE, scratch_pool)); } if (use_commit_times) @@ -1249,32 +1266,6 @@ run_record_fileinfo(svn_wc__db_t *db, scratch_pool)); } - -svn_error_t * -svn_wc__wq_build_record_fileinfo(svn_skel_t **work_item, - svn_wc__db_t *db, - const char *local_abspath, - apr_time_t set_time, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool) -{ - const char *local_relpath; - *work_item = svn_skel__make_empty_list(result_pool); - - SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath)); - - SVN_ERR(svn_wc__db_to_relpath(&local_relpath, db, local_abspath, - local_abspath, result_pool, scratch_pool)); - - if (set_time) - svn_skel__prepend_int(set_time, *work_item, result_pool); - - svn_skel__prepend_str(local_relpath, *work_item, result_pool); - svn_skel__prepend_str(OP_RECORD_FILEINFO, *work_item, result_pool); - - return SVN_NO_ERROR; -} - /* ------------------------------------------------------------------------ */ /* OP_TMP_SET_TEXT_CONFLICT_MARKERS */ Modified: subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.h URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.h?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.h (original) +++ subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.h Wed Jun 6 13:03:48 2012 @@ -182,22 +182,6 @@ svn_wc__wq_build_prej_install(svn_skel_t apr_pool_t *result_pool, apr_pool_t *scratch_pool); -/* Set *WORK_ITEM to a new work item that will record file information of - LOCAL_ABSPATH into the TRANSLATED_SIZE and LAST_MOD_TIME of the node via - the svn_wc__db_global_record_fileinfo() function. - - If SET_TIME is not 0, set LOCAL_ABSPATH's last modified time to this - time and after that record the actual file time. - - ### it is unclear whether this should survive. */ -svn_error_t * -svn_wc__wq_build_record_fileinfo(svn_skel_t **work_item, - svn_wc__db_t *db, - const char *local_abspath, - apr_time_t set_time, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); - /* Set *WORK_ITEM to a new work item that will remove all the data of the BASE_NODE of LOCAL_ABSPATH and all it's descendants, but keeping any WORKING_NODE data. Modified: subversion/branches/ev2-export/subversion/tests/cmdline/export_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/export_tests.py?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/tests/cmdline/export_tests.py (original) +++ subversion/branches/ev2-export/subversion/tests/cmdline/export_tests.py Wed Jun 6 13:03:48 2012 @@ -166,7 +166,7 @@ def export_working_copy_with_mods(sbox): 'A/D/G/tau' : Item(status='A '), 'A/mu' : Item(status='A '), 'A/B' : Item(status='A '), - 'A/B/E' : Item(status='A '), + #'A/B/E' : Item(status='A '), # Used to be reported as added 'A/B/lambda' : Item(status='A '), 'A/B/F' : Item(status='A '), 'A/C' : Item(status='A '), Modified: subversion/branches/ev2-export/subversion/tests/cmdline/merge_symmetric_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/merge_symmetric_tests.py?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/tests/cmdline/merge_symmetric_tests.py (original) +++ subversion/branches/ev2-export/subversion/tests/cmdline/merge_symmetric_tests.py Wed Jun 6 13:03:48 2012 @@ -481,6 +481,7 @@ def merge_twice_same_direction_2(sbox): # Merge to and fro @SkipUnless(server_has_mergeinfo) +@Wimp("needs SVN_WITH_SYMMETRIC_MERGE") def merge_to_and_fro_1_1(sbox): """merge_to_and_fro_1_1""" @@ -497,6 +498,7 @@ def merge_to_and_fro_1_1(sbox): expect_3ways=[three_way_merge('A4', 'B7')]) @SkipUnless(server_has_mergeinfo) +@Wimp("needs SVN_WITH_SYMMETRIC_MERGE") def merge_to_and_fro_1_2(sbox): """merge_to_and_fro_1_2""" @@ -540,6 +542,7 @@ def init_merge_to_and_fro_2(sbox, mod_9, no_op_commit(sbox) # r10 @SkipUnless(server_has_mergeinfo) +@Wimp("needs SVN_WITH_SYMMETRIC_MERGE") def merge_to_and_fro_2_1(sbox): """merge_to_and_fro_2_1""" @@ -556,6 +559,7 @@ def merge_to_and_fro_2_1(sbox): expect_3ways=[three_way_merge('A7', 'B10')]) @SkipUnless(server_has_mergeinfo) +@Wimp("needs SVN_WITH_SYMMETRIC_MERGE") def merge_to_and_fro_2_2(sbox): """merge_to_and_fro_2_2""" @@ -599,6 +603,7 @@ def init_merge_to_and_fro_3(sbox, mod_9, no_op_commit(sbox) # r10 @SkipUnless(server_has_mergeinfo) +@Wimp("needs SVN_WITH_SYMMETRIC_MERGE") def merge_to_and_fro_3_1(sbox): """merge_to_and_fro_3_1""" @@ -615,6 +620,7 @@ def merge_to_and_fro_3_1(sbox): expect_3ways=[three_way_merge_no_op('B7', 'B10')]) @SkipUnless(server_has_mergeinfo) +@Wimp("needs SVN_WITH_SYMMETRIC_MERGE") def merge_to_and_fro_3_2(sbox): """merge_to_and_fro_3_2""" @@ -631,6 +637,7 @@ def merge_to_and_fro_3_2(sbox): expect_3ways=[three_way_merge('B7', 'B10')]) @SkipUnless(server_has_mergeinfo) +@Wimp("needs SVN_WITH_SYMMETRIC_MERGE") def merge_to_and_fro_4_1(sbox): """merge_to_and_fro_4_1""" @@ -647,6 +654,7 @@ def merge_to_and_fro_4_1(sbox): expect_3ways=[three_way_merge_no_op('B7', 'A10')]) @SkipUnless(server_has_mergeinfo) +@Wimp("needs SVN_WITH_SYMMETRIC_MERGE") def merge_to_and_fro_4_2(sbox): """merge_to_and_fro_4_2""" Modified: subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py (original) +++ subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py Wed Jun 6 13:03:48 2012 @@ -993,8 +993,16 @@ def status_unversioned_dir(sbox): dir = sbox.wc_dir svntest.main.safe_rmtree(sbox.wc_dir) os.mkdir(dir) - expected_err = "svn: warning: (W155007|W155010): '.*(/|\\\\)" \ - + os.path.basename(dir) + "'" + + # Depending on whether you run the tests below a working copy + # or not, the error message might either be something like + # svn: warning: W155007: '...copies/stat_tests-19' is not a working copy + # or + # svn: warning: W155010: The node '...copies/stat_tests-19' was not found. + + expected_err = "svn: warning: W1550(07|10): .*'.*(/|\\\\)" + \ + os.path.basename(dir) + \ + "' (is not a working copy|was not found)" svntest.actions.run_and_verify_svn2(None, [], expected_err, 0, "status", dir, dir) Modified: subversion/branches/ev2-export/subversion/tests/cmdline/update_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/update_tests.py?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/tests/cmdline/update_tests.py (original) +++ subversion/branches/ev2-export/subversion/tests/cmdline/update_tests.py Wed Jun 6 13:03:48 2012 @@ -5793,6 +5793,62 @@ def update_nested_move_text_mod(sbox): None, None, None, None, None, 1) +def update_with_parents_and_exclude(sbox): + "bring a subtree in over an excluded path" + + sbox.build(read_only = True) + wc_dir = sbox.wc_dir + + # Now we are going to exclude A + expected_output = svntest.wc.State(wc_dir, { + 'A' : Item(status='D '), + }) + + expected_status = svntest.wc.State(wc_dir, { + '' : Item(status=' ', wc_rev='1'), + 'iota' : Item(status=' ', wc_rev='1'), + }) + + svntest.actions.run_and_verify_update(wc_dir, + expected_output, + None, + expected_status, + None, None, None, + None, None, False, + '--set-depth', 'exclude', + sbox.ospath('A')) + + expected_output = svntest.wc.State(wc_dir, { + 'A' : Item(status='A '), + 'A/B' : Item(status='A '), + 'A/B/F' : Item(status='A '), + 'A/B/E' : Item(status='A '), + 'A/B/E/beta' : Item(status='A '), + 'A/B/E/alpha' : Item(status='A '), + 'A/B/lambda' : Item(status='A '), + }) + + expected_status = svntest.wc.State(wc_dir, { + '' : Item(status=' ', wc_rev='1'), + 'A' : Item(status=' ', wc_rev='1'), + 'A/B' : Item(status=' ', wc_rev='1'), + 'A/B/F' : Item(status=' ', wc_rev='1'), + 'A/B/E' : Item(status=' ', wc_rev='1'), + 'A/B/E/beta' : Item(status=' ', wc_rev='1'), + 'A/B/E/alpha' : Item(status=' ', wc_rev='1'), + 'A/B/lambda' : Item(status=' ', wc_rev='1'), + 'iota' : Item(status=' ', wc_rev='1'), + }) + + svntest.actions.run_and_verify_update(wc_dir, + expected_output, + None, + expected_status, + None, None, None, + None, None, False, + '--parents', + sbox.ospath('A/B')) + ####################################################################### # Run the tests @@ -5868,6 +5924,7 @@ test_list = [ None, update_binary_file_3, update_move_text_mod, update_nested_move_text_mod, + update_with_parents_and_exclude, ] if __name__ == '__main__': Modified: subversion/branches/ev2-export/subversion/tests/libsvn_subr/dirent_uri-test.c URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/libsvn_subr/dirent_uri-test.c?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/subversion/tests/libsvn_subr/dirent_uri-test.c (original) +++ subversion/branches/ev2-export/subversion/tests/libsvn_subr/dirent_uri-test.c Wed Jun 6 13:03:48 2012 @@ -882,6 +882,8 @@ static const testcase_canonicalize_t uri { "https://SERVER:80/", "https://server:80" }, { "svn://server:80", "svn://server:80" }, { "svn://SERVER:443/", "svn://server:443" }, + { "file:///C%7C/temp/REPOS", "file:///C%7C/temp/REPOS" }, + { "file:///C|/temp/REPOS", "file:///C%7C/temp/REPOS" }, #ifdef SVN_USE_DOS_PATHS { "file:///c:/temp/repos", "file:///C:/temp/repos" }, { "file:///c:/temp/REPOS", "file:///C:/temp/REPOS" }, Modified: subversion/branches/ev2-export/tools/buildbot/slaves/win32-SharpSvn/svntest-test.cmd URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/tools/buildbot/slaves/win32-SharpSvn/svntest-test.cmd?rev=1346869&r1=1346868&r2=1346869&view=diff ============================================================================== --- subversion/branches/ev2-export/tools/buildbot/slaves/win32-SharpSvn/svntest-test.cmd (original) +++ subversion/branches/ev2-export/tools/buildbot/slaves/win32-SharpSvn/svntest-test.cmd Wed Jun 6 13:03:48 2012 @@ -77,21 +77,21 @@ IF "%LOCAL%+%FSFS%" == "1+1" ( IF "%SVN%+%FSFS%" == "1+1" ( taskkill /im svnserve.exe /f 2> nul: - echo win-tests.py -c %PARALLEL% %MODE% -f fsfs -u svn://localhost %ARGS% "%TESTDIR%\tests" - win-tests.py -c %PARALLEL% %MODE% -f fsfs -u svn://localhost %ARGS% "%TESTDIR%\tests" + echo win-tests.py -c %PARALLEL% %MODE% -f fsfs -u svn://127.0.0.1 %ARGS% "%TESTDIR%\tests" + win-tests.py -c %PARALLEL% %MODE% -f fsfs -u svn://127.0.0.1 %ARGS% "%TESTDIR%\tests" IF ERRORLEVEL 1 EXIT /B 1 ) IF "%SERF%+%FSFS%" == "1+1" ( taskkill /im httpd.exe /f 2> nul: - echo win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library serf --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://localhost:%TESTPORT% %ARGS% "%TESTDIR%\tests" - win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library serf --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://localhost:%TESTPORT% %ARGS% "%TESTDIR%\tests" + echo win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library serf --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://127.0.0.1:%TESTPORT% %ARGS% "%TESTDIR%\tests" + win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library serf --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://127.0.0.1:%TESTPORT% %ARGS% "%TESTDIR%\tests" IF ERRORLEVEL 1 EXIT /B 1 ) IF "%NEON%+%FSFS%" == "1+1" ( taskkill /im httpd.exe /f 2> nul: - echo win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library neon --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://localhost:%TESTPORT% %ARGS% "%TESTDIR%\tests" - win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library neon --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://localhost:%TESTPORT% %ARGS% "%TESTDIR%\tests" + echo win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library neon --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://127.0.0.1:%TESTPORT% %ARGS% "%TESTDIR%\tests" + win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library neon --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://127.0.0.1:%TESTPORT% %ARGS% "%TESTDIR%\tests" IF ERRORLEVEL 1 EXIT /B 1 ) Propchange: subversion/branches/ev2-export/tools/client-side/mergeinfo-sanitizer.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/dev/gdb-py/svndbg/__init__.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/dev/gdb-py/svndbg/printers.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/dev/histogram.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/dev/sbox-ospath.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpredumpfilter.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpubsub/commit-hook.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpubsub/daemonize.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpubsub/svnpubsub/__init__.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpubsub/svnpubsub/client.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpubsub/svnpubsub/server.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpubsub/svntweet.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpubsub/svnwcsub.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpubsub/testserver.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: subversion/branches/ev2-export/tools/server-side/svnpubsub/watcher.py ------------------------------------------------------------------------------ svn:eol-style = native
