libsvn_fs_util

Checkout Tools
  • last updated 50 mins ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 868024 is being indexed.

* subversion/libsvn_fs_util/sqlite-util.h

(svn_fs__sqlite_open): Document POOL usage.

Docstring Fix.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(get_mergeinfo_for_path): Fix the Docstring to document all parameters.

Suggested by: kfogel

Replace all use of apr_pool_clear and apr_pool_destroy in our

codebase with the equivalent svn_pool_* functions (consistency is

helpful).

  1. … 24 more files in changeset.
Make sure to copy a return-value string away from SQLite's memory

space.

* subversion/libsvn_fs_util/node-origins-sqlite-index.c

(get_origin): Copy returned string into a pool passed as a new

argument.

(set_origin): Take a pool argument and pass it through to

get_origin.

(svn_fs__set_node_origins, svn_fs__get_node_origin): Adjust.

Found by: pburba

Turn an overcomplicated macro into a function.

* subversion/libsvn_fs_util/sqlite-util.h

(SVN_FS__SQLITE_STEP_DONE): Remove macro, replacing with ...

(svn_fs__sqlite_step_done): ... function declaration.

* subversion/libsvn_fs_util/sqlite-util.c

(svn_fs__sqlite_step_done): Implement.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(index_path_mergeinfo): Adjust.

* subversion/libsvn_fs_util/node-origins-sqlite-index.c

(set_origin): Adjust.

  1. … 1 more file in changeset.
Make svn_fs__set_node_origins ignore errors due to a readonly

database.

I am committing a somewhat hacky change to fs-test.c to test this; I

will revert this in two revisions.

* subversion/include/private/svn_fs_node_origins.h

(svn_fs__set_node_origins): Document that in the case of a readonly

database, this function may be a no-op.

* subversion/libsvn_fs_util/node-origins-sqlite-index.c

(svn_fs__set_node_origins): If the database operations return a

"readonly" error, ignore it.

* subversion/libsvn_fs_util/sqlite-util.h

(SVN_FS__SQLITE_STEP_DONE): Make sure to finalize the statement

before returning an error; otherwise the call to sqlite3_close will

fail.

* subversion/tests/libsvn_fs/fs-test.c

Add some horribly hacky test code to wipe the node_origins table and

set it readonly a little later. Will be reverted in two revisions.

But both tests do pass.

  1. … 3 more files in changeset.
Standardize error handling in SQLite code, so that the SQLITE_READONLY

error is given a different SVN-level error code from other SQLITE

errors. This will allow caches that are "optional" to ignore errors

due to readonly filesystems while still raising more serious errors.

In order to do this, we add a few new helper macros, and make sure to

always use sqlite3_prepare_v2 instead of sqlite3_prepare; the "v2"

version returns the precise error code from sqlite3_step instead of

just returning SQLITE3_ERROR.

* subversion/include/svn_error_codes.h

(SVN_ERR_FS_SQLITE_READONLY): New error code for an attempt to write

to a read-only SQLite db.

* subversion/libsvn_fs_util/sqlite-util.h

(SVN_FS__SQLITE_ERROR_CODE): New macro to convert a SQLite error

code to a SVN error code; either the new "read-only" one or the

generic SVN_ERR_FS_SQLITE_ERROR.

(SVN_FS__SQLITE_ERR): Update to use SVN_FS__SQLITE_ERROR_CODE.

(SVN_FS__SQLITE_STEP_DONE): New macro, encapsulating a common idiom:

run the given statement for one step, throwing the appropriate

error if the statement isn't done.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(index_path_mergeinfo, parse_mergeinfo_from_db,

get_mergeinfo_for_path, get_mergeinfo_for_children):

* subversion/libsvn_fs_util/node-origins-sqlite-index.c

(get_origin, set_origin):

* subversion/libsvn_fs_util/sqlite-util.c

(svn_fs__sqlite_exec, check_format):

Update to use sqlite3_prepare_v2, SVN_FS__SQLITE_STEP_DONE, and/or

SVN_FS__SQLITE_ERROR_CODE as appropriate.

  1. … 2 more files in changeset.
* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(get_mergeinfo_for_path): Add/expand inline comments.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(get_mergeinfo_for_path): Fix mis-handling of local variable

"parentpath" (an svn_stringbuf_t), which was not properly setting

"parentpath->len".

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(parse_mergeinfo_from_db): Document pool usage.

Merge sqlite-node-origins branch to trunk.

There is now a sqlite table for node_origins in the same database file

as mergeinfo (though perhaps it should be moved for concurrency

reasons) and support code in libsvn_fs_util. FSFS uses it (BDB uses a

BDB table); it is currently only filled at CACHE MISS time, though it

should be straightforward to fill it at commit time as well.

  1. … 8 more files in changeset.
More auditing of APR pool usage for mergeinfo indexing (issue #3025).

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(svn_fs_mergeinfo__update_index): Introduce sub-pool to avoid memory

leakage from this function.

Suggested by: glasser

Audit APR pool usage in conjunction with iteration in mergeinfo

indexing (issue #3025).

Auditing of recursion from get_megeinfo_for_path() still to come.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

Include svn_pools.h.

(index_path_mergeinfo): Note that an iterpool would be overkill.

(append_component_to_paths, get_mergeinfo): Document POOL usage, and

tweak code to reference POOL via hash accessor (for protection

against future refactoring).

(get_mergeinfo_for_children, svn_fs_mergeinfo__get_mergeinfo):

Document pool usage. Introduce sub-pool for temporary/loop allocations.

Suggested by: glasser

Follow-up to r26229, do away with the svn_merge_range_inheritance_t enum.

r26229 implemented non-inheritable mergeinfo revision ranges in

svn_merge_range_t. The introduction of non-inheritable ranges meant

previously straightforward operations on svn_merge_range_t, i.e. those

done by the svn_mergeinfo_* and svn_rangelist_* APIs and their helpers,

became a bit more complicated. An obvious example being

"is range '2-3*' equal to '2-3'?" In most cases yes, but not when

eliding mergeinfo, e.g.:

Mergeinfo on 'branch': '/trunk:2-3*'

Mergeinfo on 'branch/D/G': '/trunk/D/G:2-3' --> No elision should occur!

To adjust the behavior of these APIs to correctly account for

inheritability, r26229 introduced the enum svn_merge_range_inheritance_t:

/* Don't take inheritability into consideration. */

svn_rangelist_ignore_inheritance,

/* Inheritability of both ranges must be the same. */

svn_rangelist_equal_inheritance,

/* Inheritability of both ranges must be @c TRUE. */

svn_rangelist_only_inheritable

*BUT* after looking at this for a long time it is clear that the third

value, svn_rangelist_only_inheritable, is not necessary and the APIs need

only a boolean arg to tell them whether to consider inheritability or not

(and in some cases doesn't need *any* argument).

So this change removes svn_merge_range_inheritance_t. It also tweaks

the C tests of the svn_mergeinfo_* and svn_rangelist_* APIs to provide

greater coverage in general and of non-inheritable ranges in particular.

* subversion/include/private/svn_mergeinfo_private.h

(svn_mergeinfo__equals): Change consider_inheritance argument from a

svn_merge_range_inheritance_t to a svn_boolean_t. Improve doc string.

* subversion/include/svn_mergeinfo.h

(svn_mergeinfo_parse): Note "new" restictions from r27851 in doc string.

(svn_mergeinfo_diff, svn_rangelist_diff): Change consider_inheritance

argument from a svn_merge_range_inheritance_t to a svn_boolean_t.

Improve doc string.

(svn_mergeinfo_merge, svn_rangelist_merge): Remove

svn_merge_range_inheritance_t consider_inheritance argument altogether

and update doc string.

* subversion/include/svn_types.h

(svn_merge_range_inheritance_t): Removed.

* subversion/libsvn_client/copy.c

(calculate_target_mergeinfo, wc_to_repos_copy): Update calls to

svn_mergeinfo_merge().

* subversion/libsvn_client/diff.c

(display_mergeinfo_diff): Update call to svn_mergeinfo_diff(), always

considering inheritance.

* subversion/libsvn_client/merge.c

(filter_reflected_revisions): Update call to svn_mergeinfo_diff(),

ignoring inheritance.

(update_wc_mergeinfo): Update calls to svn_rangelist_remove() and

svn_rangelist_merge().

* subversion/libsvn_client/mergeinfo.c

(elide_mergeinfo): Update calls to svn_mergeinfo__equals(), always

considering inheritance.

(svn_client_mergeinfo_get_available): Update call to svn_rangelist_remove,

don't consider inheritance.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(get_mergeinfo_for_children): Update call to svn_mergeinfo_merge().

* subversion/libsvn_repos/log.c

(svn_repos__is_branching_copy): Update call to svn_mergeinfo_diff, don't

consider inheritance.

(get_combined_mergeinfo): Update call to svn_mergeinfo_merge().

(combine_mergeinfo_rangelists): Update call to svn_rangelist_merge().

(get_merged_rev_mergeinfo): Update calls to svn_mergeinfo_diff(), ignoring

inheritance, and svn_mergeinfo_merge().

* subversion/libsvn_repos/rev_hunt.c

(get_merged_path_revisions): Update call to svn_mergeinfo_diff, don't

consider inheritance, and call to svn_mergeinfo_merge().

* subversion/libsvn_subr/mergeinfo.c

(combine_ranges): Change consider_inheritance argument from a

svn_merge_range_inheritance_t to a svn_boolean_t. Tweak the doc

string.

(combine_with_lastrange): Get smarter about how we combine two ranges

with differing inheritability, document said smartness in the doc string.

(range_to_stringbuf): Move definition prior to first call which is now

in merge_with_lastrange().

(combine_with_adjacent_lastrange): New, dedicated helper for

svn_mergeinfo_parse() via parse_revlist().

(parse_revlist): Replace calls to combine_with_lastrange with

combine_with_adjacent_lastrange(). Enforce the svn_mergeinfo_parse

restriction on reversed ranges.

(svn_rangelist_merge, svn_mergeinfo_merge): Remove consider_inheritance

argument and update any callers in this file. Update calls to

combine_with_lastrange to not consider inheritance (and thereby merge

intersecting ranges with different inheritability).

(inheritance_equal): Removed definition.

(range_intersect, range_contains): Replace call to inheritance equal with

simple conditional since the consider_inheritance arg to these functions

was *always* just a boolean so the special handling of

svn_merge_range_inheritance_t argument has never actually done

anything!

(svn_rangelist_intersect, svn_rangelist_remove, svn_rangelist_diff,

walk_mergeinfo_hash_for_diff, svn_mergeinfo_diff, svn_mergeinfo__equals):

Change consider_inheritance argument from a svn_merge_range_inheritance_t

to a svn_boolean_t.

* subversion/libsvn_wc/props.c

(diff_mergeinfo_props): Update call to svn_mergeinfo_diff(), ignoring

inheritance.

(diff_mergeinfo_props, combine_forked_mergeinfo_props): Update calls to

svn_mergeinfo_merge().

* subversion/tests/libsvn_subr/mergeinfo-test.c

(broken_mergeinfo_vals): Expand the coverage of our svn_mergeinfo_parse()

tests to cover not only invalid grammar but also the overlapping, unordered,

and reversed range restrictions of svn_mergeinfo_parse(). Throw some

non-inheritable ranges in for good measure too.

(mergeinfo2, mergeinfo3, mergeinfo4, mergeinfo5, mergeinfo6,

mergeinfo7): Remove, all the tests previously using now have their own

test data.

(test_parse_multi_line_mergeinfo): Remove, this test wasn't very thorough

and we now have good coverage of multi-line parses in

test_merge_mergeinfo().

(test_diff_mergeinfo): Update call to svn_mergeinfo_diff().

(test_merge_mergeinfo): Tweak the test to enable easier testing of many

test cases and add a whole slew of new cases.

(test_rangelist_merge, test_rangelist_diff): New.

(test_funcs): Remove test_parse_multi_line_mergeinfo and add

test_rangelist_merge and test_rangelist_diff.

  1. … 12 more files in changeset.
API cleanup: We don't need to pass a double pointer to the target

mergeinfo hash when using svn_mergeinfo_merge() because that function

doesn't allocate a new hash. It merely updates items inside the hash,

which can't change the hash header's location.

* subversion/include/svn_mergeinfo.h,

* subversion/libsvn_subr/mergeinfo.c

(svn_mergeinfo_merge): Remove an unnecessary level of indirection

from the 'mergeinfo' in/out parameter.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(get_mergeinfo_for_children): Remove an unnecessary level of

indirection from 'path_mergeinfo' in/out parameter. Update call

to svn_mergeinfo_merge().

(svn_fs_mergeinfo__get_mergeinfo_for_tree): Update calls to

get_mergeinfo_for_children().

* subversion/libsvn_repos/log.c

(get_combined_mergeinfo, get_merged_rev_mergeinfo): Update calls to

svn_mergeinfo_merge().

* subversion/libsvn_repos/rev_hunt.c

(get_merged_path_revisions): Update calls to svn_mergeinfo_merge().

* subversion/libsvn_client/copy.c

(calculate_target_mergeinfo, extend_wc_mergeinfo, wc_to_repos_copy):

Update calls to svn_mergeinfo_merge().

* subversion/libsvn_client/merge.c

(mark_mergeinfo_as_inheritable_for_a_range): Update calls to

svn_mergeinfo_merge().

* subversion/libsvn_wc/props.c

(combine_mergeinfo_props, combine_forked_mergeinfo_props): Update

calls to svn_mergeinfo_merge().

* subversion/tests/libsvn_subr/mergeinfo-test.c

(test_merge_mergeinfo): Update calls to svn_mergeinfo_merge().

  1. … 8 more files in changeset.
A follow-up to r27615, clarifying code flow. No functional change,

but likely more robust in terms of subsequent code refactoring.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(svn_fs_mergeinfo__get_mergeinfo, svn_fs_mergeinfo__get_mergeinfo_for_tree):

Initialize local variable "rev" after checking that ROOT is a

revision root (as opposed to a transaction root, which is an error

condition).

Tweak formatting.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(REV_ROOT_REV): Add missing whitespace.

Update doc string.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(get_mergeinfo_for_path): Fix doc string which refers to old

parameter names.

Refactor 'get_mergeinfo' to make it independent of the 'svn_fs_root_t *'

structure, so that it can be used with just a revision number.

This is useful for fix to issue #2897.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(get_mergeinfo): Change signature to accept 'svn_revnum_t' rather than

'svn_fs_root_t *'.

(svn_fs_mergeinfo__get_mergeinfo, svn_fs_mergeinfo__get_mergeinfo_for_tree):

Ensure 'transaction root' here rather than on 'get_mergeinfo'.

Adjust for the above signature change of 'get_mergeinfo'.

Consistently use svn_revnum_t when fetching mergeinfo.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(get_mergeinfo_for_path, get_mergeinfo_for_children): Use svn_revnum_t for

revisions, and explicitly cast from sqlite_int64 when required.

I broke gen-make.py in r26958 because we already had a private/svn_compat.h

and gen-make.py isn't smart enough to see that they're different files.

The private one is about compatibility with our dependencies, so let's

reflect that in the name.

* subversion/include/private/svn_compat.h

* subversion/include/private/svn_dep_compat.h

Rename svn_compat.h to svn_dep_compat.h

* subversion/include/private/svn_atomic.h

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_subr/hash.c

Adapt.

Found by: dlr

  1. … 6 more files in changeset.
Fix issue #2905: 'svn log -g' shows only one log-subtree in case of multiple,

independent merges. The mergeinfo index routines were only detecting one

child path, instead of multiple ones. The solution is to add a GROUP BY

clause to the appropriate SQL statement.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(get_mergeinfo_for_children): GROUP BY the selected paths, so we get the

max revision values for each path, not for the entire result set.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(index_txn_mergeinfo): In the docstring, fix the

documentation of the type of the values in the mergeinfo

hash.

Revert r26483, which introduced a low-value flow control macro.

* subversion/include/private/svn_flowcontrol.h

Remove header file.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(MAYBE_CLEANUP): Re-add macro, replacing usage of MAYBE_GOTO().

* subversion/libsvn_wc/entries.c

(MAYBE_DONE): Redefine.

Suggested by: glasser

  1. … 2 more files in changeset.
Formalize a flow control macro which we apparently use in several

places already.

* subversion/include/private/svn_flowcontrol.h

New header file, providing a MAYBE_GOTO() macro.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(MAYBE_CLEANUP): Remove macro, replacing all usage with

MAYBE_GOTO(cleanup, err).

* subversion/libsvn_wc/entries.c

(MAYBE_DONE): Redefine as an instance of MAYBE_GOTO().

Suggested by: lgo

  1. … 2 more files in changeset.
Avoid leaking connections to the sqlite database when an error occurs.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(MAYBE_CLEANUP): New macro which goes to the "cleanup" label when

the local variable "err" is not SVN_NO_ERROR.

(close_db): New wrapper function for sqlite3_close() which handles

propagation of errors which triggered the need to close the

connection.

(svn_fs_mergeinfo__create_index, svn_fs_mergeinfo__update_index,

svn_fs_mergeinfo__get_mergeinfo, svn_fs_mergeinfo__get_mergeinfo_for_tree):

Use new close_db() function in lieu of sqlite3_close(). Where necessary,

use a local svn_error_t *, plus the new MAYBE_CLEANUP() macro, to propagate

errors encountered before closing the database connection.

Found by: lgo

Channeling Erik Hülsmann, remove all trailing whitespace within our source

tree:

for extsn in c h cpp java py pl rb; do

sed -i -e 's/[ \t]*$//' `find . -name "*.$extsn" | xargs grep '[ \t]$' -l`

done

Inspired by: ehu

  1. … 448 more files in changeset.
Support non-inheritable mergeinfo revision ranges and fix remaining issues

with switched paths and mergeinfo.

Fixes the following two issues:

Issue #2839 - Support non-inheritable mergeinfo revision ranges.

Issue #2823 - Account for merge info differences for switched directories.

* subversion/include/private/svn_mergeinfo_private.h

(svn_mergeinfo__equals): Add argument indicating how to take revision

range inheritance into account when determining equality.

* subversion/include/svn_mergeinfo.h

(SVN_MERGEINFO_NONINHERITABLE_STR): New definition of the non-inheritable

flag for svn:mergeinfo, i.e. '*'.

(svn_mergeinfo_diff, svn_mergeinfo_merge, svn_rangelist_diff,

svn_rangelist_merge, svn_rangelist_remove): Add argument indicating how to

take revision range inheritance into account.

(svn_rangelist_inheritable, svn_mergeinfo_inheritable): New declarations.

* subversion/include/svn_types.h

(svn_merge_range_t): Add member indicating if range is inheritable.

(svn_merge_range_inheritance_t): New enum describing ways to consider

inheritability when comparing two svn_merge_range_t.

* subversion/libsvn_client/copy.c

(get_implied_mergeinfo): Initialize new svn_merge_range_t member.

(calculate_target_mergeinfo, extend_wc_mergeinfo, wc_to_repos_copy): Update

calls to svn_mergeinfo_merge().

* subversion/libsvn_client/diff.c

(display_mergeinfo_diff): Update call to svn_mergeinfo_diff().

* subversion/libsvn_client/merge.c

(merge_cmd_baton): Add two new members to track if merge target has any

immediate children missing and if the target has pre-existing mergeinfo.

(get_wc_mergeinfo, ): Remove non-inheritable revision ranges if mergeinfo

isn't explicit.

(elide_mergeinfo): Update calls to svn_mergeinfo__equals().

(merge_path_t): New struct used by discover_and_merge_children() and

consumers of the children_with_mergeinfo array it populates.

(elide_children): Tweak docstring and implementation to reflect that

children_with_mergeinfo array is now an array of merge_path_t * rather than

const char *.

(calculate_requested_ranges): Update calls to svn_mergeinfo_diff() and

svn_rangelist_remove().

(calculate_merge_ranges): Update calls to svn_rangelist_remove().

(update_wc_mergeinfo): Update calls to svn_rangelist_remove() and

svn_rangelist_merge().

(grok_range_info_from_opt_revisions): Tweak docstring and implementation

re svn_merge_range_t inheritable member.

(do_merge): Tweak docstring and implementation to reflect that

children_with_mergeinfo array is now an array of merge_path_t * rather than

const char *. Add argument indicating whether the target_wcpath is missing

any immediate children. Add another argument with the index of the

target_wcpath, if it exists, in children_with_mergeinfo (since the callers

know this it saves us searching through the array to find it). Rename

children_sw_or_with_mergeinfo argument back to children_with_mergeinfo,

since its contents are now expanded beyond just switched paths and/or paths

with explicit mergeinfo (i.e. siblings of switched paths, parents of

switched paths). And lastly, handle the edge case where a repeat merge

makes non-inheritable ranges inheritable because the target is no longer

missing any immediate children.

(get_sw_mergeinfo_walk_baton, get_sw_mergeinfo_walk_cb,

get_sw_mergeinfo_error_handler, get_sw_mergeinfo_paths): Renamed to

remove "_sw" - see comment for do_merge above as to why.

get_mergeinfo_error_handler): New (renames, see above). Tweak docstrings

and implmentations as needed to reflect fact that

wb->children_with_mergeinfo array is now an array of merge_path_t * rather

than const char *.

(find_child_or_parent, insert_child_to_merge,

compare_merge_path_t_as_paths): Helpers for get_mergeinfo_paths().

(get_mergeinfo_paths): Renamed from get_sw_mergeinfo_paths(). Expand

implementation to find not only paths with mergeinfo and switched paths,

but also siblings of switched paths and parents of switched paths.

(discover_and_merge_children): Again, tweak the docstring and implmentation

to reflect change in children_with_mergeinfo array.

(svn_client_merge3, svn_client_merge_peg3): Initialize new members of

merge_cmd_baton and update calls to do_merge().

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(SVN_MTD_CREATE_SQL): Add inheritable field when creating mergeinfo table.

(index_path_mergeinfo): Insert new field into mergeinfo table.

(parse_mergeinfo_from_db): Parse new inheritable field.

(get_mergeinfo_for_path): Remove non-inheritable mergeinfo ranges from

inherited mergeinfo.

(get_mergeinfo_for_children): Update call to svn_mergeinfo_merge().

* subversion/libsvn_repos/log.c

(calculate_branching_copy_mergeinfo): Initialize new svn_merge_range_t

member.

(svn_repos__is_branching_copy, get_combined_mergeinfo,

combine_mergeinfo_rangelists, get_merged_rev_mergeinfo): Update calls to

svn_mergeinfo_diff(), svn_mergeinfo_merge(), and svn_rangelist_merge().

* subversion/libsvn_repos/rev_hunt.c

(get_merged_path_revisions): Update calls to svn_mergeinfo_diff() and

svn_mergeinfo_merge().

* subversion/libsvn_subr/mergeinfo.c

(svn_path.h): New include.

(combine_ranges, combine_with_lastrange): Add argument indicating how

to take revision range inheritance into account, referred to as the

'consider inheritance arg' hereafter.

(parse_revlist): Handle new SVN_MERGEINFO_NONINHERITABLE_STR in grammar.

(svn_rangelist_merge): Add consider inheritance arg. Update calls to

combine_with_lastrange().

(inheritance_equal): New helper for range_intersect() and range_contains().

(range_intersect, range_contains): Add consider inheritance arg.

(rangelist_intersect_or_remove): Add consider inheritance arg. Update

calls to range_intersect() range_contains(), combine_with_lastrange(), and

combine_ranges().

(svn_rangelist_intersect): Update call to rangelist_intersect_or_remove().

(svn_rangelist_remove): Add consider inheritance arg and update call to

rangelist_intersect_or_remove().

(svn_rangelist_diff): Add consider inheritance arg and update calls to

svn_rangelist_remove().

(walk_mergeinfo_hash_for_diff): Add consider inheritance arg and update

call to svn_rangelist_diff().

(svn_mergeinfo_diff): Add consider inheritance arg and update call to

walk_mergeinfo_hash_for_diff().

(svn_mergeinfo__equals): Add consider inheritance arg and update call to

svn_mergeinfo_diff().

(svn_mergeinfo_merge): Add consider inheritance arg and update call to

svn_rangelist_merge().

(svn_mergeinfo_remove): Update call to walk_mergeinfo_hash_for_diff().

(svn_range_to_stringbuf): Handle new SVN_MERGEINFO_NONINHERITABLE_STR in

grammar.

(svn_mergeinfo_inheritable, svn_rangelist_inheritable): New definitions.

(svn_merge_range_dup): Initialize svn_merge_range_t's new inheritable

field.

* subversion/libsvn_wc/props.c

(diff_mergeinfo_props): Update call to svn_mergeinfo_diff().

(combine_mergeinfo_props, combine_forked_mergeinfo_props): Update calls to

svn_mergeinfo_merge().

* subversion/tests/cmdline/merge_tests.py

(merge_to_path_with_switched_children): Remove comment about XFail until

issues 2823 and 2839 are resolved.

(test_list): Remove XFail from merge_to_path_with_switched_children.

* subversion/tests/libsvn_subr/mergeinfo-test.c

(test_diff_mergeinfo): Update call to svn_mergeinfo_diff().

(test_rangelist_intersect): Initialize svn_merge_range_t's new inheritable

field.

(test_merge_mergeinfo): Update calls to svn_mergeinfo_merge().

(test_remove_rangelist): Update calls to svn_rangelist_remove().

  1. … 12 more files in changeset.
* subversion/bindings/javahl/native/ConflictResolverCallback.h,

* subversion/bindings/javahl/native/ListCallback.h,

* subversion/bindings/javahl/native/RevisionRange.h,

* subversion/include/mod_authz_svn.h,

* subversion/include/private/svn_client_private.h,

* subversion/include/private/svn_dav_protocol.h,

* subversion/include/private/svn_fs_util.h,

* subversion/include/private/svn_repos_private.h,

* subversion/libsvn_fs_util/fs-util.c,

* subversion/libsvn_ra_neon/mergeinfo.c,

* subversion/libsvn_ra_svn/cyrus_auth.c,

* subversion/libsvn_ra_svn/internal_auth.c,

* subversion/svn/conflict-callbacks.c,

* subversion/svnserve/cyrus_auth.c,

* tools/buildbot/slaves/i686-debian-sarge1/mount-ramdrive.c,

* tools/buildbot/slaves/i686-debian-sarge1/unmount-ramdrive.c:

Set the svn:eol-style to native.

  1. … 15 more files in changeset.
Fix issue #2852 ('log_tests.py 17' failure on Mac OS X), where an SQL

query to the sqlite3 mergeinfo index was returning merge ranges not in

ascending order.

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c

(parse_mergeinfo_from_db): Note in doc string that the rangelist

elements in the mergeinfo returned by this API are sorted in

ascending order. Changed ORDER BY clause in SQL executed against

the mergeinfo table to assure this ordering, which we were already

seeing on Linux and Windows, but seeing in descending order on Mac

OS X.

* subversion/include/svn_mergeinfo.h

(svn_mergeinfo_diff, svn_rangelist_diff): Document that inputs must

be sorted in ascending order.

  1. … 1 more file in changeset.