subversion

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

Changeset 877585 is being indexed.

* COMMITTERS: Update my e-mail address.

* subversion/libsvn_wc/props.c

(svn_wc__internal_propget): Followup to r37508 by making sure we set the

output value in all cases.

Patch by: gstein

* STATUS: Vote and approve r37185 group.

Follow up r37355.

* subversion/libsvn_wc/props.c

(svn_wc__internal_propget): Avoid potential segfault since 'prophash'

may be NULL.

* STATUS: Vote for r37385.

Clear out some obsolete code, now that wc-ng is enabled.

* subversion/libsvn_wc/wc_db.c:

(gather_children): stop delegating for old working copy formats

(svn_wc__db_read_info): stop delegating

* subversion/libsvn_wc/entries.h:

* subversion/libsvn_wc/old-and-busted.c:

(svn_wc__read_info_old, svn_wc__gather_children_old): remove

* subversion/tests/libsvn_fs_fs/fs-pack-test.c

(create_packed_filesystem): Re-write the format file with the latest format

number, not just the minimum required for packing.

* subversion/libsvn_subr/sqlite.c

(internal_open): Improve an error message.

Move wcprops into wc.db.

* subversion/tests/cmdline/upgrade_tests.py

(upgrade_wcprops): New test.

(test_list): Run the new test.

* subversion/tests/cmdline/upgrade_tests_data/upgrade_wcprops.tar.bz2:

New file.

* subversion/libsvn_wc/props.c

(read_wcprops, write_wcprops, delete_wcprops, svn_wc__wcprop_list): Remove.

(svn_wc__props_delete): Call the wc_db APIs to set the wcprops.

(svn_wc__wcprop_set): Rewrite around the new wc_db apis.

(svn_wc__internal_propget): Use the wc_db APIs.

* subversion/libsvn_wc/props.h

(svn_wc__wcprop_list): Remove.

* subversion/libsvn_wc/adm_ops.c

(process_committed_leaf): Use the wc_db API for wcprops.

* subversion/libsvn_wc/update_editor.c

(accumulate_entry_props): Remove.

(prop_hash_from_array): New.

(close_directory, merge_props): Use wc_db to store the APIs.

(install_added_props): Same.

* subversion/libsvn_wc/lock.c

(read_wcprops): New, copied from props.c.

(convert_wcprops): Rewrite to use wc_db APIs.

(convert_props_walker): New.

(svn_wc__upgrade_format): Convert the working copy props appropriately.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_base_set_dav_cache): Wrap returned error.

(svn_wc__db_base_get_dav_cache): Reset the statement before returning an

error, and directly return another error.

* subversion/libsvn_wc/log.c

(SVN_WC__LOG_MODIFY_WCPROP, log_do_modify_wcprop): Remove.

(start_handler): Don't handle the wcprop modification.

(svn_wc__loggy_modify_wcprop): Remove.

* subversion/libsvn_wc/log.h

(svn_wc__loggy_modify_wcprop): Remove.

* subversion/libsvn_client/ra.c

(invalidate_wcprop_for_entry): Ignore any error caused by attempting

to remove wcprops on a non-existent node.

Merge r37072, r37083 from trunk:

* r37072, r37083

Fix issue #3392 'Parsing error with reverse merges and non-inheritable

mergeinfo'

Justification:

Can cause repeat merges to break in the presence of non-inheritable

mergeinfo.

Notes:

r37072 is a test for the issue, r37083 is the fix.

Votes:

+1: pburba, arfrever, rhuijben

* STATUS: 3 votes (approving the r37072 group)
* STATUS: Nominate r37333, r37494, r37499.

Fix issue #3407 'Shallow merges incorrectly set mergeinfo on children'.

* subversion/libsvn_client/merge.c

(insert_parent_and_sibs_of_sw_absent_del_entry): Some doc string

polish. Add depth argument, don't add elements to CHILDREN_WITH_MERGEINFO

inconsistent with the requested depth.

(get_mergeinfo_paths): When creating the CHILDREN_WITH_MERGEINFO array

don't include any child paths if depth is empty and don't include

directory children if depth is files.

* subversion/tests/cmdline/merge_tests.py

(merge_away_subtrees_noninheritable_ranges): Remove comment re XFail.

(test_list): Remove XFail from merge_away_subtrees_noninheritable_ranges.

* subversion/svn/main.c

(svn_opt_subcommand_desc2_t): Listing the global --config-dir option in

the list of options specific to the patch command is redundant.

* subversion/svn/main.c

(main): Remove --patch-cmd option. While here, improve the help

text for 'svn patch' a little.

Suggested by: arfrever

* subversion/svn/patch-cmd.c

(svn_cl__patch): No need to check for presence of patch file here,

the client library will throw an error for us if it does not exist.

Some more error wrapping.

* subversion/libsvn_client/ra.c:

Wrap some directly returned errors.

Expand existing merge test to cover issue #3407 'Shallow merges

incorrectly set mergeinfo on children'.

* subversion/tests/cmdline/merge_tests.py

(merge_away_subtrees_noninheritable_ranges): Cover issue #3407.

(test_list): Mark merge_away_subtrees_noninheritable_ranges as XFail.

Get rid of the loggy upgrade procedure for migrating working copies to wc-ng.

This does *not* mean that we no longer need to worry about atomicity, it just

means that loggy isn't the solution.

* subversion/libsvn_wc/lock.c

(svn_wc__upgrade_format): Directly migrate the entries file, instead of

using loggy.

* subversion/libsvn_wc/log.c

(SVN_WC__LOG_UPGRADE_FORMAT): Remove.

(log_do_upgrade_format): Remove.

(start_handler): Don't handle the upgrade format log bits.

(svn_wc__loggy_upgrade_format): Remove.

* subversion/libsvn_wc/log.h

(svn_wc__loggy_upgrade_format): Remove.

Shift to using presence=incomplete rather than a separate column.

* subversion/libsvn_wc/wc-metadata.sql:

(WORKING_NODE.incomplete_children): note that this column is obsolete.

we cannot remove it yet, since wc-ng is now active, and we need to

version its removal.

* subversion/libsvn_wc/entries.c:

(enum statement_keys, statements): remove STMT_SELECT_INCOMPLETE_FLAG

and its query. remove the incomplete_children column from the

STMT_INSERT_BASE_NODE statement.

(db_base_node_t): remove the 'incomplete_children' member

(determine_incomplete): removed. no longer needed.

(read_entries_new): create a wc_id localvar rather than a bunch of

free-floating magic numbers. look for presence=incomplete, and mark

the entry appropriately.

(insert_base_node): write presence=incomplete when necessary. don't bind

the 'incomplete_children' column.

(insert_working_node): write presence=incomplete when necessary

(write_entry): handle entry->incomplete differently. watch out for

attempts to mix it with other presence values.

* subversion/libsvn_wc/wc_db.c:

(statements): don't insert a value into the 'incomplete_children' column

(insert_base_baton_t): remove the 'incomplete_children' member

(insert_base_node): do not bind the 'incomplete_children' column

(svn_wc__db_init): vary the presence, rather than a separate flag

(svn_wc__db_base_add_directory, svn_wc__db_base_add_file,

svn_wc__db_base_add_symlink, svn_wc__db_base_add_absent_node,

svn_wc__db_temp_base_add_subdir): remove assignment of the

'incomplete_children' member.

Another merge performance improvement, follow-up to r36509: Reduce contacts

with server when a subtree with mergeinfo has non-inheritable mergeinfo and

the subtree's immediate children have no explicit mergeinfo.

In r36509 we deferred contacting the server to find out about a subtree's

implicit mergeinfo until absolutely necessary. Turns out there is a case

where we can avoid asking this question altogether; specifically, when a

subtree has no pre-existing mergeinfo but gets mergeinfo set by the merge

logic because it has an immediate parent with non-inheritable mergeinfo.

If a subtree with non-inheritable mergeinfo has a large number of immediate

children with no mergeinfo this change will avoid contacting the server for

each of those children, a potentially costly set of operations avoided.

* subversion/libsvn_client/merge.c

(get_full_mergeinfo): Docstring tweak noting long held behavior, no

logic change.

(inherit_implicit_mergeinfo_from_parent): New.

(filter_merged_revisions): Add parent svn_client__merge_path_t * argument.

Use parent's implicit mergeinfo to calculate child's implicit mergeinfo

rather than contacting the server.

(calculate_remaining_ranges): Pass parent to filter_merged_revisions()

call.

(calculate_remaining_ranges): Update call to filter_merged_revisions().

(get_mergeinfo_paths): Clarify existing behavior in doc string. Set new

svn_client__merge_path_t member child_of_noninheritable to true if

applicable; apr_pcalloc ensures all boolean members are initialized false

otherwise.

* subversion/libsvn_client/mergeinfo.c

(adjust_mergeinfo_source_paths): Removed and replaced with...

(svn_client__adjust_mergeinfo_source_paths): ...This. Allocate everything

out of the passed in pool rather than from the hash argument's pool,

addressing a long standing comment in the code about potential differences

in pool lifetimes.

(svn_client__get_wc_mergeinfo, should_elide_mergeinfo): Replace calls to

adjust_mergeinfo_source_paths() with

svn_client__adjust_mergeinfo_source_paths().

* subversion/libsvn_client/mergeinfo.h

(svn_client__merge_path_t): Add new boolean member child_of_noninheritable.

(svn_client__adjust_mergeinfo_source_paths): New declaration.

Maintain our Python 2.4 compatibility by skipping tests which require

the python sqlite module to check our working copy format.

* subversion/tests/cmdline/upgrade_tests.py

(has_sqlite): New.

(test_list): Mark appropriate tests as SkipUnless.

Nuke wcprops_modify_allowed(). We don't need this function, since we now

error when opening a too-old working copy.

* subversion/libsvn_wc/props.c

(wcprops_modify_allowed): Remove.

(delete_wcprops, svn_wc__wcprop_set): Remove call to the above function.

* subversion/tests/cmdline/upgrade_tests.py

(test_list): Mark a test as passing.

* subversion/libsvn_wc/log.c

(svn_wc_cleanup3): Don't attempt to run the logs if we are doing an

upgrade.

Enable wc-ng as the standard working copy metadata format on trunk.

See http://svn.haxx.se/dev/archive-2009-04/0942.shtml for further

information.

* subversion/tests/cmdline/revert_tests.py,

subversion/tests/cmdline/entries_tests.py,

subversion/tests/cmdline/upgrade_tests.py,

subversion/tests/cmdline/switch_tests.py,

subversion/tests/cmdline/diff_tests.py,

subversion/tests/cmdline/update_tests.py,

subversion/tests/cmdline/info_tests.py,

subversion/tests/cmdline/merge_tests.py:

Remove the wc-1 specific test expectations.

* subversion/tests/cmdline/svntest/sandbox.py,

subversion/tests/cmdline/svntest/main.py:

Remove tests for wc-ng.

* subversion/tests/libsvn_wc/db-test.c,

subversion/libsvn_wc/wc.h,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/old-and-busted.c,

subversion/libsvn_wc/entries.h:

Remove BLAST_FORMAT_11 wrappers.

* subversion/libsvn_fs_fs/fs_fs.c

(svn_fs_fs__create): Shuffle some code around and add some extra comments

when creating a new filesystem.

* subversion/libsvn_wc/lock.c

(check_format_upgrade): Return a more appropriate error code.

Polish translation update.

* subversion/po/pl.po: Polish translation update.

Add a big table describing the "presence" column values in wc-ng.

* notes/wc-ng-design: describe the presence state combinations

Minor code reorg around the writing of entries. This is due for a bigger

code shift, but I had these little changes sitting in my wc.

* subversion/libsvn_wc/entries.c:

(entries_write_body): remove comment above function -- it does not

implement a transaction callback. remove the ADM_ACCESS param since it

was unused. remove the THIS_DIR param because we can just grab it from

the ENTRIES ourself (the caller doesn't need it). tweak a call to

dirent_join to use a shorter varname to put this code on one line.

(entries_write): remove fetch of THIS_DIR and track param changes for

the entries_write_body call.