subversion

Checkout Tools
  • last updated 7 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1128389 is being indexed.

Fix issue 3859 by extending the revert list table to allow

both an ACTUAL_NODE and a NODES row to be recorded.

* subversion/libsvn_wc/wc-queries.sql

(STMT_CREATE_REVERT_LIST): Add actual column to revert_list table and

make it part of the primary key, set the actual column when adding

rows.

(STMT_SELECT_REVERT_LIST): Select, and order by, actual column.

(STMT_SELECT_REVERT_LIST_RECURSIVE): Select distinct local_relpaths

that require notification.

* subversion/libsvn_wc/wc_db.c

(revert_list_read): Handle getting up to two rows per path.

(svn_wc__db_revert_list_notify): Always notify since selection is

done in SQL.

* subversion/tests/cmdline/revert_tests.py

(revert_empty_actual_recursive, revert_no_text_change_conflict): Remove

XFAIL markers.

Revert r1124991, explicit population of the revert list, in

preparation for another attempt at using triggers. This changes

one PASS into an XFAIL and one XFAIL into a PASS.

* subversion/libsvn_wc/wc_db.c

(op_revert_txn): Don't drop or populate list.

* subversion/libsvn_wc/wc-queries.sql

(STMT_INSERT_REVERT_LIST, STMT_INSERT_REVERT_LIST_PLAIN,

STMT_INSERT_REVERT_LIST_ACTUAL_ONLY): Remove.

* subversion/tests/cmdline/revert_tests.py

(revert_empty_actual, revert_no_text_change_conflict): Move the

XFAIL marker thus resolving a merge conflict.

* subversion/tests/cmdline/revert_tests.py

(revert_empty_actual_recursive): Add missing code from XFAIL test

so that it will PASS when Subversion is fixed.

Finish issue #3890 ("'svnrdump load' does not map revisions like

'svnadmin load' does").

* subversion/svnrdump/load_editor.c

(new_revision_record): Record the oldest dumpstream revision, as

that's rather crucial to the mergeinfo renumbering logic.

* subversion/tests/cmdline/svnrdump_tests.py

(dont_drop_valid_mergeinfo_during_incremental_svnrdump_loads):

Remove @XFail() decorator.

This is a followup to r1128340 which fixes all the svnrdump_tests.py

tests I broke therein.

* subversion/tests/cmdline/svnrdump_tests.py

(run_load_test, reflect_dropped_renumbered_revs,

dont_drop_valid_mergeinfo_during_incremental_svnrdump_loads,

svnrdump_load_partial_incremental_dump): Don't pass '-q' when we're

explicitly testing that we got some output.

* subversion/libsvn_subr/sqlite.c

(exec_sql): For easier debugging, include the statement text in the error

message if it fails to execute.

Make 'svnrdump load --quiet' actually quiet.

* subversion/svnrdump/svnrdump.c

(load_revisions): Update call to svn_rdump__load_dumpstream, passing

the 'quiet' variable.

* subversion/svnrdump/svnrdump.h

(svn_rdump__load_dumpstream): Add 'quiet' parameter.

* subversion/svnrdump/load_editor.c

(struct parse_baton): Add 'quiet' member.

(commit_callback, close_revision): Honor the parse baton's 'quiet' value.

(svn_rdump__load_dumpstream): Add 'quiet' parameter, tossed into the

parse baton structure.

* subversion/include/private/svn_wc_private.h

(svn_wc__external_remove): Fix a doc string cross-reference typo.

Move the removal of externals into libsvn_wc. This defines a proper api for

this specific task instead of using the big cannon called

svn_wc_remove_from_revision_control2().

* subversion/include/private/svn_wc_private.h

(svn_wc__external_remove): New function.

* subversion/libsvn_client/externals.c

(relegate_dir_external): Update caller. Pass wri_abspath.

(handle_external_item_removal): Update caller.

(svn_client__handle_externals): Update caller.

* subversion/libsvn_wc/externals.c

(svn_wc__external_remove): New function.

* subversion/libsvn_wc/wc_db.c

(db_external_remove): Remove version check. Add work items.

(svn_wc__db_external_remove): Always call db_external_remove.

Pass work items.

Another try to make revert_tests.py 30 XFAIL, as it should, on Windows.

* subversion/tests/cmdline/revert_tests.py

(create_no_text_conflict): Copy original r1 file and move it back.

Try to make revert_tests.py 30 XFAIL, as it should, on Windows.

* subversion/tests/cmdline/revert_tests.py

(create_no_text_conflict): Read the original r1 content rather than

hard-coding it.

Make libsvn_client call the necessary functions to register externals in the

soon to be enabled externals store.

* subversion/include/private/svn_wc_private.h

(svn_wc__externals_defined_below): New function.

(svn_wc__external_register): New function.

* subversion/libsvn_client/externals.c

(svn_wc__externals_defined_below): New function.

(svn_wc__external_register): New function.

* subversion/libsvn_wc/externals.c

(header): Document a temporary define.

(switch_dir_external): Add defining_abspath argument. Register

directory externals after a successfull checkout or switch.

(handle_external_item_change): Use switch_dir_external for checkout

scenarios.

(svn_client__handle_externals): Add test code for using the store instead

of walking the old information. Resolve variable shadowing.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_EXTERNALS_DEFINED): Redefine as recursive query.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_external_read): Add missing newline.

(svn_wc__db_externals_defined_below): New function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_externals_defined_below): New function.

* subversion/libsvn_fs_fs/fs_fs.c

(write_format): Eliminate a redundant deep-copied string.

Add two more tests for issue 3859, missing revert notifications.

In this case the trigger-based recursive code gets it right, and

the non-recursive code that explicitly populates the list gets it

wrong.

* subversion/tests/cmdline/revert_tests.py

(create_no_text_conflict): New.

(revert_no_text_conflict): New, marked XFAIL.

(revert_no_text_conflict_recursive): New.

(test_list): Add new tests.

More externals handling shuffling in preparation for using the EXTERNALS store:

Start by updating all existing externals and only after completing all that

remove the externals that should be removed.

* subversion/libsvn_client/client.h

(svn_client__handle_externals): Add argument in preparation for asking the

DB for the old externals.

* subversion/libsvn_client/externals.c

(handle_external_item_removal): New function, containing the remove only

code that was extracted from ...

(handle_external_item_change): ... this function, that now only handles

checkouts, updates and changes of externals.

(handle_externals_change): Receive the global hash of existing externals

instead of creating a separate hash for just this path. Remove handled

items from the hash. Move external removing code to...

(svn_client__handle_externals): ... this function. Gather the old externals

descriptions here.

* subversion/libsvn_client/switch.c

(switch_internal): Update caller.

* subversion/libsvn_client/update.c

(update_internal): Update caller.

When processing externals, just look at the old url instead of at the old

external description. This in preparation for completely ignoring the

old descriptions when we switch to the EXTERNALS store.

* subversion/libsvn_client/externals.c

(handle_external_item_change): Use old_url instead of old_item.

(handle_externals_change): Store the old urls in the hash instead of the

old items. Walk the hash of remaining items instead of looking at all the

old items.

* subversion/include/svn_io.h

(svn_io_file_create): Remove 'deprecated' designation.

Suggested by: hwright

gstein

Remove a few double '\'-s from the constructed paths in MSBuild by

not using a '\' after $(SolutionDir).

* build/generator/gen_win.py

(find_rootpath): Include the final '\' in the result.

(path, apath): Assume the rootpath has a final '\'

* build/generator/templates/vcnet_vcxproj.ezt

Assume $(SolutionDir) has a final '\'

Fix some whitespace rules: no whitespace before funcall open-paren.

* subversion/libsvn_ra_serf/update.c:

(start_report): remove whitesapce.

Nobody ever used the return value of svn_ra_serf__request_create(), so

just formalize that by "returning" void.

* subversion/libsvn_ra_serf/util.c:

(svn_ra_serf__request_create): switch to (void) return. add comment.

* subversion/libsvn_ra_serf/ra_serf.h:

(svn_ra_serf__request_create): switch to (void) return.

Change svn_ra_serf__retrieve_props() to allocate and return the properties

rather than filling in a provided hash table (ugh).

* subversion/libsvn_ra_serf/ra_serf.h:

(svn_ra_serf__retrieve_props): return properties as an OUT param rather

than expecting the caller to create an empty hash. switch to a

two-pool paradigm.

(svn_ra_serf__get_dir): tighten scope of PROPS to the two blocks. no

need to initialize it. adjust calls to retrieve_props().

* subversion/libsvn_ra_serf/serf.c:

(svn_ra_serf__rev_proplist): no need to create PROPS. move creation of

*RET_PROPS down near the walk_all_props call that populates it. update

the call to retrieve_props().

* subversion/libsvn_ra_serf/util.c:

(svn_ra_serf__discover_vcc): tighten scope of PROPS and adjust the call

to retrieve_props()

* subversion/libsvn_ra_serf/update.c:

(svn_ra_serf__get_file): remove init of FETCH_PROPS and update the call

to retrieve_props().

* subversion/libsvn_ra_serf/property.c:

(svn_ra_serf__retrieve_props): adjust params to return RESULTS and to

take two pools. initialize the RESULTS out-param and pass to the inner

calls. adjust for new pools.

Move a baton to the stack, rather than on the heap.

* subversion/libsvn_ra_serf/commit.c:

(create_proppatch_body): move WB to the stack. it doesn't have to live

beyond this function.

Rather than exposing a callback for the walker, just expose a function

that (privately) invokes the walker and uses a private version of the

callback. This is much clearer...

* subversion/libsvn_ra_serf/serf.c:

(svn_ra_serf__get_dir): shift one initialize of PROPS closer to the

retrieve_props() that will fill it in. remove the walker call that

uses svn_ra_serf__set_flat_props() and call the new

svn_ra_serf__flatten_props() funciton.

* subversion/libsvn_ra_serf/update.c:

(svn_ra_serf__get_file): switch from the walker to the new

svn_ra_serf__flatten_props().

* subversion/libsvn_ra_serf/property.c:

(svn_ra_serf__set_flat_props): renamed to ...

(set_flat_props): ... this, and made private

(svn_ra_serf__flatten_props): new function that invokes the walker with

the private function.

* subversion/libsvn_ra_serf/ra_serf.h:

(svn_ra_serf__set_flat_props): removed

(svn_ra_serf__flatten_props): new function. documented.

Remove the unused NS_LEN and NAME_LEN parameters from the property walker

subsystem. It just complicates stuff.

* subversion/libsvn_ra_serf/serf.c:

(direct_walker): remove NS_LEN and NAME_LEN params

(path_dirent_walker): update call to direct_walker()

* subversion/libsvn_ra_serf/update.c:

(set_file_props): remove NS_LEN and NAME_LEN params. adjust test to

simply compare the strings rather than fast-path the lengths. update

call to svn_ra_serf__set_baton_props()

(set_dir_props, remove_file_props, remove_dir_props): remove NS_LEN and

NAME_LEN params. update call to svn_ra_serf__set_baton_props().

* subversion/libsvn_ra_serf/property.c:

(svn_ra_serf__walk_all_props): don't fetch NS_LEN and NAME_LEN from the

hashes, and don't pass them to the walker callback.

(svn_ra_serf__set_baton_props, svn_ra_serf__set_bare_props): remove

NS_LEN and NAME_LEN params

(svn_ra_serf__set_flat_props): remove NS_LEN and NAME_LEN params and

don't pass them to the svn_ra_serf__set_baton_props() func.

* subversion/libsvn_ra_serf/ra_serf.h:

(svn_ra_serf__walker_visitor_t, svn_ra_serf__set_baton_props,

svn_ra_serf__set_flat_props, svn_ra_serf__set_bare_props): remove

the NS_LEN and NAME_LEN params

* subversion/libsvn_ra_serf/commit.c:

(proppatch_walker): remove NS_LEN and NAME_LEN params

Clean up the callpoints for svn_ra_serf__deliver_props(). Remove need to

initialize the OUT param to NULL. Remove test for NULL upon return (that

never happens).

* subversion/libsvn_ra_serf/serf.c:

(fetch_path_props): remove init of PROP_CTX and its post-call test.

leave marker about using retrieve_props().

* subversion/libsvn_ra_serf/commit.c:

(get_version_url): remove init of PROPFIND_CTX. leave marker about using

retrieve_props().

(svn_ra_serf__change_rev_prop): move PROPFIND_CTX to a tighter scope. no

need to initialize. leave marker about retrieve_props().

* subversion/libsvn_ra_serf/property.c:

(svn_ra_serf__deliver_props): remove dup docstring (ref: ra_serf.h).

remove the assert. toss inner block. no functional change.

(svn_ra_serf__retrieve_props): remove init of PROP_CTX and post-call test.

* subversion/libsvn_ra_serf/replay.c:

(svn_ra_serf__replay_range): remove PROP_CTX and store the result of

deliver_props directly into the REPLAY_CTX.

Begin some work on clarifying pool usage in ra_serf, and simplifying some

various bits of code.

* subversion/libsvn_ra_serf/util.c:

* subversion/libsvn_ra_serf/ra_serf.h:

(svn_ra_serf__context_run_wait): rename POOL param to SCRATCH_POOL

* subversion/libsvn_ra_serf/update.c:

(make_update_reporter): rename POOL param to RESULT_POOL. create a local

SCRATCH_POOL. revise pool usage as appropriate. toss SCRATCH at end.

* subversion/libsvn_ra_serf/property.c:

(svn_ra_serf__deliver_props): note that *PROP_CTX is always NULL when

this function is invoked, and clear out some unused code.

(set_bare_props): fold into only caller...

(svn_ra_serf__set_bare_props): ...here. create local RESULT_POOL. leave

some queries about copying vars. fold single line of code from

set_hash_props() into this function.

More work on issue #3890 ("'svnrdump load' does not map revisions like

'svnadmin load' does"). This work just makes reading the code easier.

* subversion/svnrdump/load_editor.c

(set_revision_mapping): Was add_revision_mapping(). Callers updated.

(get_revision_mapping): New helper function.

(renumber_mergeinfo_revs, new_node_record, close_revision): Now use

get_revision_mapping() instead of peeking directly into the hash.

* subversion/libsvn_wc/workqueue.c

(run_postupgrade): Fix an off-by-one error.

Tested by: none

A partial fix for issue #3896 'mergeinfo syntax errors should be treated

gracefully': Teach the WC to tolerate bogus mergeinfo when merging

svn:mergeinfo properties.

* subversion/libsvn_wc/props.c

(apply_single_prop_add,

apply_single_prop_change): We can't merge syntactically invalid mergeinfo,

so if we encounter any just treat it like any other generic property,

rather than coming to a screeching halt.

More work on issue #3890 ("'svnrdump load' does not map revisions like

'svnadmin load' does").

Unlike svnadmin_tests.reflect_dropped_renumbered_revs() -- the test on

which it is modeled -- svnrdump_tests.reflect_dropped_renumbered_revs()

creates its "toplevel" subdirectory *after* the initial load, not

before. As such, the expected mergeinfo is a bit different in this

case (off by a single revision).

* subversion/tests/cmdline/svnrdump_tests.py

(reflect_dropped_renumbered_revs): Correct expected output, and

remove @XFail() decorator.