Checkout Tools
Constraints: committers
Constraints: files
Constraints: dates
Restore the 1.8 behavior of svn_fs_contents_changed() and _props_changed()

API. Switch all calling sites of the new API, svn_fs_contents_different()

and _props_different(), back to using the old functions.

There are no user-visible problems associated with the old code. The new

API doesn't improve any real use cases in the current code, but is causing


- We had a problem with misbehaving svn blame -g

(, "Blame behaviour

change in 1.9").

- We have an issue with repositories behaving differently in client-side

operations like 'svn log' after dump/load

(, "No-op changes no

longer dumped by 'svnadmin dump' in 1.9"; also see issue #4598 in

- We could experience same problems originating from other callers of the

new API, because the low level behavior change associated with switching

to it propagates up to higher levels like svn_repos or svn_ra and alters

the behavior of many different callers like svn_ra_get_file_revs2() or

the update reporter. Third-party API callers could not be ready for it

as well, because public API functions like svn_ra_get_file_revs2() didn't

receive an erratum or a bump.

See the discussion in

("Re: No-op changes no longer dumped by 'svnadmin dump' in 1.9").

* subversion/libsvn_fs_base/dag.c

(svn_fs_base__things_different): Compare the uniquifiers, as we did in 1.8.

* subversion/libsvn_fs_base/fs.h

(node_revision_t.data_key_uniquifier): Remove the comment about not using

this field.

* subversion/libsvn_fs_fs/fs_fs.c

(svn_fs_fs__noderev_same_rep_key): Reintroduce this helper function.

(svn_fs_fs__file_text_rep_equal, svn_fs_fs__prop_rep_equal): Always

assume the strict mode in these helpers.

* subversion/libsvn_fs_fs/fs_fs.h

(svn_fs_fs__noderev_same_rep_key): Declare this re-added helper.

(svn_fs_fs__file_text_rep_equal, svn_fs_fs__prop_rep_equal): Update the

docstrings for these helper functions.

* subversion/libsvn_fs_fs/dag.c

(svn_fs_fs__dag_things_different): Preserve the current comparison behavior

in strict mode. Restore the 1.8 way of comparing the representation keys

in non-strict mode.

* subversion/libsvn_fs_fs/tree.c

(merge): Restore the 1.8 way of comparing property lists.

* subversion/libsvn_fs_fs/fs.h

(representation_t.uniquifier): Remove the comment about not using this


* subversion/libsvn_repos/delta.c

(delta_proplists): Switch back to using svn_fs_props_changed().

(svn_repos__compare_files): Restore this function to its 1.8 state.

(delta_files): Restore the 1.8 way of comparing files.

* subversion/libsvn_repos/dump.c

(dump_node): Switch back to using svn_fs_contents_changed() and


* subversion/libsvn_repos/reporter.c

(delta_proplists): Switch back to using svn_fs_props_changed().

* subversion/libsvn_repos/rev_hunt.c

(send_path_revision): Switch back to using svn_fs_contents_changed().

Remove the no longer necessary hack for svn blame -g with older clients.

* subversion/include/svn_ra.h

(svn_ra_get_file_revs2): Update @note in the docstring.

* subversion/include/svn_repos.h

(svn_repos_get_file_revs2): Update @note in the docstring.

* subversion/tests/cmdline/

(dump_no_op_change): No longer fails with fsfs and bdb.

  1. … 13 more files in changeset.
* subversion/libsvn_fs_fs/fs.h

(struct representation_t): Add comment about compatibility requirement

for the uniquifier, no code change.

* subversion/libsvn_fs_base/fs.h

(struct node_revision_t): ditto

  1. … 1 more file in changeset.
Merge revisions 1511324,-46,-63,-64,1532410,1535668 from the "log

addressing" branch into /trunk and resolved trivial text conflicts.

These patches introduce the svn_fs__compatible_version() API and

use it where appropriate.

  1. … 10 more files in changeset.
Store UUID in svn_fs_t rather than in FSAP_DATA. This is a cleaner

implementation of what r1330932 implements in a less robust manner.

Suggested by: gstein

(the particular 'cleaner implementation')

Update libsvn_fs:

* subversion/libsvn_fs/fs-loader.h

(fs_vtable_t.get_uuid): Remove this member, with comment.

(svn_fs_t.uuid): New struct member.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_get_uuid): Track new location of UUID.

Update FSFS for the new location:

* subversion/libsvn_fs_fs/fs_fs.h,


(svn_fs_fs__get_uuid): Delete this function. It is subsumed into

svn_fs_fs__open() and svn_fs_fs__create().

* subversion/libsvn_fs_fs/caching.c

(svn_fs_fs__initialize_caches, svn_fs_fs__initialize_txn_caches):

* subversion/libsvn_fs_fs/fs.c


* subversion/libsvn_fs_fs/fs_fs.c

(svn_fs_fs__open, hotcopy_incremental_check_preconditions,

hotcopy_incremental_check_preconditions, svn_fs_fs__set_uuid):

* subversion/libsvn_fs_fs/tree.c


Track new location of UUID.

* subversion/libsvn_fs_fs/fs.c

(fs_vtable): Drop GET_UUID() member.

* subversion/libsvn_fs_fs/fs.h

(fs_fs_data_t.uuid): Remove this member.

Update BDB for the new location:

* subversion/libsvn_fs_base/fs.c

(populate_opened_fs): New function.

(base_create, base_upgrade): Call it to populate svn_fs_t->uuid.

* subversion/libsvn_fs_base/uuid.h

(svn_fs_base__get_uuid): Rename to..

(svn_fs_base__populate_uuid): .. this, and change signature.

* subversion/libsvn_fs_base/uuid.c

(svn_fs_base__get_uuid): Rename to..

(svn_fs_base__populate_uuid): .. this, and adapt to the new signature.

* subversion/libsvn_fs_base/tree.c


* subversion/libsvn_fs_base/uuid.c


Track new location of UUID.

* subversion/libsvn_fs_base/fs.c

(fs_vtable): Drop GET_UUID() member.

* subversion/libsvn_fs_base/fs.h

(base_fs_data_t.uuid): Remove this member.

Revert r1330932:

* subversion/libsvn_fs/fs-loader.c

(cache_uuid): Remove this function.

(svn_fs_open, svn_fs_create): Update callers.

(svn_fs_open_berkeley, svn_fs_create_berkeley): Update callers.

* subversion/libsvn_fs_util/fs-util.c

(svn_fs__identifier): Remove.

* subversion/include/private/svn_fs_util.h

(svn_fs__identifier): Reimplement as a macro. It will be removed in the

next revision.

  1. … 14 more files in changeset.
Once and for all, name all our anonymous struct/enum typedefs.

Follows up on r1040058, and with thanks to Danny Trebbien.

* everywhere:

Change 'typedef struct {} foo_t;' to 'typedef struct foo_t {} foo_t;'.

* subversion/libsvn_ra_serf/fake_sspi.h

(PSecurityFunctionTable, SecurityFunctionTable):

Manually effect the same change in the single pointer-to-struct typedef.

  1. … 95 more files in changeset.
Remove an unused #define (a remnant of a path almost taken in

Subversion 1.5).

* subversion/libsvn_fs_base/fs.h

(SVN_FS_BASE__MISC_NEXT_FSGUID): Remove as unused.

Test out my new and fancy ASF commit priviledges by changing the copyright

wording in our license headers to reflect ownership by the ASF.


Change terminology to ASF, and update a link.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the ASF, and update the project website.

* everywhere:

Change license text to reflect ASF ownership.

  1. … 891 more files in changeset.
Relicense Subversion under the Apache License, Version 2.0.

* NOTICE: New.



subversion/LICENSE: Remove.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the SVN Corp, and that it contains contributions from

many people, as referenced in NOTICE.

* subversion/bindings/swig/python/LICENSE_FOR_PYTHON_BINDINGS:

Relicense the SVN parts under Apache 2.0.

* everywhere:

Change copyright notices in file headers to reflect the Apache 2.0 license.

  1. … 882 more files in changeset.
Follow-up to r35017:

Allow to specify Berkeley DB header.

(It allows to build libsvn_fs_base when APR-Util isn't built with support for Berkeley DB.)

* build/ac-macros/berkeley-db.m4


header in argument of the '--with-berkeley-db' option. Add conditional

inclusion of Berkeley DB header to 'subversion/svn_private_config.h'.

* Substitute '@SVN_DB_HEADER@' with appropriate value

in 'subversion/svn_private_config.h'.

* subversion/svn_private_config.hw: Include Berkeley DB header when

SVN_WANT_BDB is defined.

* subversion/libsvn_fs_base/bdb/bdb_compat.h:

* subversion/libsvn_fs_base/bdb/bdb-err.c:

* subversion/libsvn_fs_base/bdb/changes-table.h:

* subversion/libsvn_fs_base/bdb/dbt.c:

* subversion/libsvn_fs_base/bdb/dbt.h:

* subversion/libsvn_fs_base/bdb/env.h:

* subversion/libsvn_fs_base/bdb/nodes-table.h:

* subversion/libsvn_fs_base/bdb/reps-table.h:

* subversion/libsvn_fs_base/bdb/rev-table.h:

* subversion/libsvn_fs_base/bdb/strings-table.h:

* subversion/libsvn_fs_base/bdb/uuids-table.h:

* subversion/libsvn_fs_base/fs.c:

* subversion/libsvn_fs_base/fs.h:

* subversion/libsvn_fs_base/node-rev.c:

* subversion/libsvn_fs_base/node-rev.h:

* subversion/libsvn_fs_base/reps-strings.c:

* subversion/libsvn_fs_base/reps-strings.h:

* subversion/libsvn_fs_base/revs-txns.h:

* subversion/libsvn_fs_base/trail.c:

* subversion/libsvn_fs_base/trail.h:

* subversion/libsvn_fs_base/util/fs_skels.h: Define SVN_WANT_BDB and

include "svn_private_config.h" instead of defining APU_WANT_DB and

including <apu_want.h>.

  1. … 23 more files in changeset.
Teach the Berkeley DB backend to store both MD5 and SHA1 checksums -- as

available and allowed for the FS format -- in the `representations' table.

* subversion/libsvn_fs_base/notes/structure

(Representations): Tweak BNF to show that we'll always store MD5,

and possibly also store SHA1, for representations.

* subversion/libsvn_fs/fs-loader.h,

* subversion/libsvn_fs/fs-loader.c

(root_vtable_t): Add 'kind' parameter to file_checksum() method,

passed into providers' file_checksum implementations.

* subversion/libsvn_fs_fs/tree.c

(fs_file_checksum): Add 'kind' parameter, and use it to filter the

returned data.

* subversion/libsvn_fs_base/fs.h

(representation_t): Rename 'checksum' member to 'md5_checksum', and

add 'sha1_checksum' member.

* subversion/libsvn_fs_base/reps-strings.h

(svn_fs_base__rep_contents_checksums): Was

svn_fs_base__rep_contents_checksum(). Rename 'checksum' parameter

to 'md5_checksum', and add 'sha1_checksum' parameter.

* subversion/libsvn_fs_base/reps-strings.c

(svn_fs_base__rep_contents_checksums): Was

svn_fs_base__rep_contents_checksum(). Rename 'checksum' parameter

to 'md5_checksum', and add 'sha1_checksum' parameter.

(make_fulltext_rep): Rename 'checksum' parameter to 'md5_checksum',

and add 'sha1_checksum' parameter, duping both.

(svn_fs_base__get_mutable_rep): Update call to make_fulltext_rep.

(txn_body_read_rep): Compare both MD5 and SHA1 checksums against

their stored values where possible.

(svn_fs_base__rep_contents): Allow checksum tests of either type of

checksum, but prefer a SHA1 comparison.

(struct rep_write_baton): Rename 'checksum_ctx' and 'checksum' to

'md5_checksum_ctx' and 'md5_checksum', respective; add

'sha1_checksum_ctx' and 'sha1_checksum'.

(rep_write_get_baton): Track renamed baton members, and also

initialize an MD5 checksum context.

(txn_body_write_rep): Update both checksum contexts.

(txn_body_write_close_rep): Copy both checksum contexts into the


(rep_write_close_contents): Finalize both checksum contexts.

(rep_contents_clear): Clear both representation checksums.

(svn_fs_base__rep_deltify): Use both representation checksums.

* subversion/libsvn_fs_base/dag.h

(svn_fs_base__dag_file_checksum): Add 'checksum_kind' parameter.

* subversion/libsvn_fs_base/dag.c

(svn_fs_base__dag_file_checksum): Add 'checksum_kind' parameter, and

update call to svn_fs_base__rep_contents_checksums().

(maybe_store_checksum_rep): Update call to


(svn_fs_base__dag_finalize_edits): Update calls to

svn_fs_base__rep_contents_checksums(), performing checksum

comparisons against either MD5 or SHA1 as requested (if possible).

* subversion/libsvn_fs_base/tree.c

(struct file_checksum_args): Add 'kind' variable.

(txn_body_file_checksum): Pass baton's 'kind' into updated call to


(base_file_checksum): Add 'kind' parameter, and use it to populate

baton's 'kind' variable.

(txn_body_apply_textdelta): Update call to svn_fs_base__dag_file_checksum(),

asking for the same kind of checksum as the one we'll compare against.

* subversion/libsvn_fs_base/util/fs_skels.h

(svn_fs_base__unparse_representation_skel): Add 'format' parameter.

* subversion/libsvn_fs_base/util/fs_skels.c

(is_valid_representation_skel, svn_fs_base__parse_representation_skel):

Handle new representation format.

(prepend_checksum): New helper function.

(svn_fs_base__unparse_representation_skel): Add 'format' parameter,

and use prepend_checksum() as needed to handle the new

representation skel format.

* subversion/libsvn_fs_base/bdb/reps-table.c

(svn_fs_bdb__write_rep): Pass filesystem format version to updated

call to svn_fs_base__unparse_representation_skel().

* subversion/tests/libsvn_fs_base/strings-reps-test.c

(txn_body_read_rep): Update call to svn_fs_base__unparse_representation_skel.

  1. … 13 more files in changeset.
Merge the fs-rep-sharing branch to trunk.

This gives us significant space savings on both bdb and fsfs. See the

branch for individual log messages.

  1. … 38 more files in changeset.
Minor followup to r33668.

* subversion/libsvn_fs_base/fs.h


* subversion/libsvn_fs_base/fs.c

(open_databases): Track rename of #define.

  1. … 1 more file in changeset.
Rename the 'metadata' BDB database to 'miscellaneous' (to preserve the

nanofeature of having all those tables end with 's').

* subversion/libsvn_fs_base/tree.h,

* subversion/libsvn_fs_base/tree.c

Rename a gang of functions and structures, for which all

callers/consumers were updated:

struct metadata_set_args -> struct miscellaneous_set_args

txn_body_metadata_set() -> txn_body_miscellaneous_set

svn_fs_base__metadata_set() -> svn_fs_base__miscellaneous_set

struct metadata_get_args -> struct miscellaneous_get_args

txn_body_metadata_get() -> txn_body_miscellaneous_get

svn_fs_base__metadata_get() -> svn_fs_base__miscellaneous_get

* subversion/libsvn_fs_base/bdb/metadata-table.h,

* subversion/libsvn_fs_base/bdb/metadata-table.c

Renamed to...

* subversion/libsvn_fs_base/bdb/miscellaneous-table.h,

* subversion/libsvn_fs_base/bdb/miscellaneous-table.c

...this. Also, rename the functions *within* the files (all callers

updated, too):

svn_fs_bdb__open_metadata_table -> svn_fs_bdb__open_miscellaneous_table

svn_fs_bdb__metadata_set -> svn_fs_bdb__miscellaneous_set

svn_fs_bdb__metadata_get -> svn_fs_bdb__miscellaneous_get

* subversion/libsvn_fs_base/notes/structure

Fix the BNF for the 'checksum-reps' table, and add such for the

'miscellaneous' table.

* subversion/libsvn_fs_base/fs.c

(cleanup_fs): Track renames of functions and #defines, and

expect/demand the new database file name.

* subversion/libsvn_fs_base/fs.h



(base_fs_data_t): Rename 'metadata' variable to 'miscellaneous'.

* subversion/libsvn_fs_base/err.h,

* subversion/libsvn_fs_base/err.c

(svn_fs_base__err_no_such_miscellany): Was

svn_fs_base__err_no_such_metadata, and now returns an error

message that refers to the new table name.

* subversion/include/svn_error_codes.h


  1. … 11 more files in changeset.
Don't include svn_md5.h and apr_md5.h in files which don't use these headers.

* subversion/include/svn_base64.h:

* subversion/libsvn_client/commit.c:

* subversion/libsvn_client/commit_util.c:

* subversion/libsvn_client/export.c:

* subversion/libsvn_fs_base/dag.c:

* subversion/libsvn_fs_base/fs.h:

* subversion/libsvn_fs_base/reps-strings.c:

* subversion/libsvn_fs_base/util/fs_skels.c:

* subversion/libsvn_fs_fs/dag.c:

* subversion/libsvn_fs_fs/fs_fs.c:

* subversion/libsvn_fs_fs/fs.h:

* subversion/libsvn_fs/fs-loader.c:

* subversion/libsvn_fs_fs/lock.c:

* subversion/libsvn_ra_neon/fetch.c:

* subversion/libsvn_ra_neon/get_dated_rev.c:

* subversion/libsvn_ra_neon/get_locations.c:

* subversion/libsvn_ra_neon/get_location_segments.c:

* subversion/libsvn_ra_svn/client.c:

* subversion/libsvn_ra_svn/editorp.c:

* subversion/libsvn_repos/reporter.c:

* subversion/libsvn_subr/cache-memcache.c:

* subversion/libsvn_subr/checksum.c:

* subversion/libsvn_subr/config_auth.c:

* subversion/libsvn_subr/config_file.c:

* subversion/libsvn_subr/md5.c:

* subversion/libsvn_subr/md5.h:

* subversion/libsvn_subr/svn_string.c:

* subversion/libsvn_wc/adm_crawler.c:

* subversion/libsvn_wc/adm_ops.c:

* subversion/libsvn_wc/questions.c:

* subversion/libsvn_wc/update_editor.c:

* subversion/mod_dav_svn/liveprops.c:

* subversion/mod_dav_svn/reports/mergeinfo.c:

* subversion/mod_dav_svn/reports/replay.c:

* subversion/mod_dav_svn/reports/update.c:

* subversion/svnserve/serve.c:

* subversion/tests/libsvn_fs_base/fs-base-test.c:

* subversion/tests/libsvn_repos/repos-test.c: Don't include svn_md5.h and

apr_md5.h in files which don't use these headers.

  1. … 37 more files in changeset.
For Berkeley DB filesystems, record in the metadata table the revision at which

forward deltas were started (e.g., when the repo was upgraded to format 4).

* subversion/libsvn_fs_base/bdb/metadata-table.c

(svn_fs_bdb__open_metadata_table): Record the default upgrade revision of 0.

* subversion/libsvn_fs_base/fs.c

(txn_body_record_upgrade_rev): New.

(base_upgrade): Record the upgraded revision, if needed.

* subversion/libsvn_fs_base/fs.h


  1. … 2 more files in changeset.
Add a `metadata' table for Berkeley DB filesystems. This is just a place

to stash key/value pairs which are of interest to the filesystem.

* subversion/libsvn_fs_base/bdb/metadata-table.c,



* subversion/libsvn_fs_base/fs.c

(cleanup_fs): Cleanup metadata table.

(open_databases): Open metadata table.

* subversion/libsvn_fs_base/fs.h


(base_fs_data_t): Add metadata table.

* subversion/libsvn_fs_base/err.c,


(svn_fs_base__err_no_such_metadata): New.

* subversion/include/svn_error_codes.h


  1. … 6 more files in changeset.
More merging from the fs-rep-sharing branch. This time, merge bits of

the following revisions: r28976, r29040, r30035, r30651, r30784, r30788,

r30789, r30813, r30822, r30846, r30866, r31092, r31106, r31113.

This converts libsvn_fs_base to use the svn_checksum_t data type where


  1. … 18 more files in changeset.
Various small changes.

* subversion/libsvn_fs_base/fs.h


* subversion/libsvn_fs_base/tree.c

(deltify_mutable): Fix a typo in a comment.

* subversion/libsvn_subr/utf.c

(get_xlate_handle_node): Remove needless space.

* subversion/svndumpfilter/main.c

(options_table."targets"): Begin description with capital letter.

  1. … 3 more files in changeset.
Merge the bdb-reverse-deltas branch to trunk.

This bumps the bdb fs version number, and makes all new bdb repositories

use FSFS-style forward deltas.

  1. … 12 more files in changeset.
Housekeeping: In the spirit of r27598, remove trailing whitespace in

our repository.

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

find . -name "*.$extsn" | xargs perl -pi.bak -e 'next if /^\f$/; s/\s+$/\n/'


(This touches files in various and sundry parts of the tree, which I shan't

enumerate here.)

  1. … 175 more files in changeset.
Bump the libsvn_fs_base format number, and disallow node-origin and

mergeinfo calculations and queries on older versions of the schema.

Honor the --pre-1.5-compatible flag provided by 'svnadmin create', and

don't auto-upgrade the schema.

* subversion/libsvn_fs_base/fs.h


New #defines.

(svn_fs_base__test_required_feature_format): New function.

(struct node_revision_t): Add some comments around the mergeinfo

fields about validity and format versions.

* subversion/libsvn_fs_base/fs.c

(svn_fs_base__test_required_feature_format): New function.

(check_format): Allow formats 1 and 2 to persist.

(open_databases): Add 'format' parameter, and use it to avoid

creating/opening the new 'node-origins' table.

(base_create): Handle requests to preserve a pre-1.5-compatible

repository format. Update call to open_databases(). Also, record

the format in the svn_fs_t * object!

(base_open): Update call to open_databases().

* subversion/libsvn_fs_base/node-rev.c

(svn_fs_base__create_node, svn_fs_base__delete_node_revision): Don't

do node-origins stuff unless the FS version supports it.

* subversion/libsvn_fs_base/tree.c

(base_node_origin_rev): Disallow node-origins queries for

insufficiently versioned schemas.

(base_get_mergeinfo): Disallow mergeinfo queries for insufficiently

versioned schemas.

* subversion/libsvn_fs_base/util/fs_skels.h,

* subversion/libsvn_fs_base/util/fs_skels.c

(svn_fs_base__unparse_node_revision_skel): Add 'format' parameter,

and only write mergeinfo data when the format is adequate.

* subversion/libsvn_fs_base/dag.c


svn_fs_base__dag_adjust_mergeinfo_count): Test the FS schema

version before allowing mergeinfo-related tweaks.

(svn_fs_base__dag_set_mergeinfo_count): Remove as unused.

* subversion/libsvn_fs_base/dag.h

(svn_fs_base__dag_set_mergeinfo_count): Remove as unused.

  1. … 8 more files in changeset.
Merge 'reintegrate' branch to trunk.

  1. … 57 more files in changeset.
Add new 'node-origins' table, which is an index mapping node IDs ->

origin node revision IDs, for BDB-backed repositories.

* subversion/libsvn_fs_base/err.h,

* subversion/libsvn_fs_base/err.c

(svn_fs_base__err_no_such_node_origin): New.

* subversion/libsvn_fs_base/bdb/node-origins-table.h,

* subversion/libsvn_fs_base/bdb/node-origins-table.c

New files, implementing functionality for the new BDB `node-origins' table.

* subversion/libsvn_fs_base/fs.c

(cleanup_fs): Cleanup the `node-origins' table.

(open_databases): Open (or create) the `node-origins' table.

(base_hotcopy): Copy the `node-origins' table.

* subversion/libsvn_fs_base/fs.h

(base_fs_data_t): Add 'node_origins' member.

* subversion/include/svn_error_codes.h


  1. … 6 more files in changeset.
Initial framework to share the utility functions used by FSFS and BDB

file systems, with the goal of avoiding duplicate code in FS backend


It includes a new libsvn_fs_util library to define the functions used by

both FSFS and BDB file systems. For now, svn_fs__canonicalize_abspath()

function, a replacement for svn_fs_fs__canonicalize_abspath() and

svn_fs_base__canonicalize_abspath() functions is defined here. It

should be extended for other shared functions as well.

* subversion/libsvn_fs_base/tree.c

Include the private/svn_fs_util.h header file, and bump copyright year

to 2007.

(open_path, get_dag, add_change, change_txn_merge_info,

base_node_history): Rename svn_fs_base__canonicalize_abspath() function

as svn_fs__canonicalize_abspath() function.

* subversion/libsvn_fs_base/fs.c

svn_fs_base__canonicalize_abspath(): Remove.

* subversion/libsvn_fs_base/fs.h

Bump copyright year to 2007.

svn_fs_base__canonicalize_abspath(): Remove.

* subversion/libsvn_fs_base/lock.c

Include the private/svn_fs_util.h header file, and bump copyright year

to 2007.

(svn_fs_base__lock, svn_fs_base__unlock, svn_fs_base__get_lock,

svn_fs_base__get_locks): Rename svn_fs_base__canonicalize_abspath()

function as svn_fs__canonicalize_abspath() function.

* subversion/libsvn_fs_base/dag.c

Include the private/svn_fs_util.h header file, and bump copyright year

to 2007.

(svn_fs_base__dag_copy): Rename svn_fs_base__canonicalize_abspath()

function as svn_fs__canonicalize_abspath() function.

* subversion/libsvn_fs_util/fs-util.c

New library for defining the functions which could be used by FSFS and

BDB libraries. For now, we have defined svn_fs__canonicalize_abspath()


* subversion/include/private/svn_fs_util.h

New header file for declaring the functions which could be used by

FSFS and BDB file systems. For now, we have declared

svn_fs__canonicalize_abspath() function used to canonicalize the

absolute path.

* subversion/tests/libsvn_fs_base/fs-base-test.c

Include the private/svn_fs_util.h header file, and bump copyright year

to 2007.

(canonicalize_abspath): Rename svn_fs_base__canonicalize_abspath()

function as svn_fs__canonicalize_abspath() function and correct the

msg appropriately.

* subversion/libsvn_fs_fs/tree.c

Include the private/svn_fs_util.h header file, and bump copyright year

to 2007.

(open_path, get_dag, add_change, fs_change_node_prop, copy_helper,

fs_node_history): Rename svn_fs_fs__canonicalize_abspath() function as

svn_fs__canonicalize_abspath() function.

* subversion/libsvn_fs_fs/fs.c

Include the private/svn_fs_util.h header file, and bump copyright year

to 2007.

svn_fs_fs__canonicalize_abspath(): Remove.

* subversion/libsvn_fs_fs/fs.h

Include the private/svn_fs_util.h header file, and bump copyright year

to 2007.

svn_fs_fs__canonicalize_abspath(): Remove.

* subversion/libsvn_fs_fs/lock.c

Include the private/svn_fs_util.h header file, and bump copyright year

to 2007.

(svn_fs_fs__allow_locked_operation, svn_fs_fs__lock,

svn_fs_fs__unlock, svn_fs_fs__get_lock, svn_fs_fs__get_locks): Rename

svn_fs_fs__canonicalize_abspath() function as

svn_fs__canonicalize_abspath() function.

Patch by: bhuvan

Suggested by: kameshj

  1. … 11 more files in changeset.
Sure Brain, but where are we going to find rubber pants our size?

* subversion/libsvn_fs_base/fs.h: Typo fixo.

Reformat the code to use a consistent no-space-before-param-list-paren style.

See here for the vote that decided this:

From: "Peter N. Lundblad" <>

To: "Peter N. Lundblad" <>


Subject: Results of: [VOTE] New space-before-parens style

Date: Wed, 8 Feb 2006 12:00:35 +0100 (CET)

Message-ID: <Pine.LNX.4.55.0602080918350.10805@localhost.localdomain>

I took the opportunity to make spacing among all parens in SVN_ERR

macro calls consistent. But I did not address consistency of casts,

nor whether a function name should always appear below its return type

in declarations and definitions, nor whether there should be a space

before/after the "*" when declaring pointer return types.

* www/hacking.html

(coding-style): Document that we are no-space-before-paren now.

* everywhere: Reformat.

  1. … 365 more files in changeset.
Add new svndiff1 diff encoding, along with support in all protocols

for the new diff encoding, while also allowing the old

encoding to still function in a way that is backwards compatible

for all older clients.

Add the ability to write this new encoding in the on-disk repository

format , defaulting to on, and add support for creating

repositories that do not use the new encoding, for people who need it.

* Require zlib unconditionally

* notes/svndiff: Add svndiff1 description

* subversion/libsvn_fs_base/reps-strings.c

(svn_fs_base__rep_deltify): Use svn_txdelta_to_svndiff2.

* subversion/libsvn_fs_base/fs.c

(base_create): Default to newer format version.

If SVN_FS_CONFIG_FS_NO_SVNDIFF1 is set in the config opts,

use older format.

(check_format): Support both format 1 and 2.

* subversion/libsvn_fs_base/fs.h



* subversion/libsvn_fs_base/util/fs_skels.c

(is_valid_rep_delta_chunk_skel): Version 1 is valid.

* subversion/svnadmin/main.c

(svnadmin__no_svndiff1): Add option.

(options): Add "no-svndiff1" option.

(cmd_table): Add svnadmin_no__svndiff1 to create command.

(struct svnadmin_opt_state): Add no_svndiff1

(subcommand_create): Set SVN_FS_CONFIG_NO_SVNDIFF1 in the hash if


(main): Set no_svndiff1 if requested.

* subversion/include/svn_error_codes.h: Add


* subversion/include/svn_fs.h: Add SVN_FS_CONFIG_NO_SVNDIFF1.

* subversion/include/svn_ra_svn.h: Add SVN_RA_SVN_CAP_SVNDIFF1.

* subversion/include/svn_delta.h: Add svn_txdelta_to_svndiff2.

* subversion/mod_dav_svn/dav_svn.h

(struct dav_resource_private): Add svndiff_version

* subversion/mod_dav_svn/file_revs.c

(struct file_rev_baton): Add svndiff_version

(file_rev_handler): Use svndiff version set in baton.

(dav_svn__file_revs_report): Get svndiff_version from private info.

* subversion/mod_dav_svn/update.c

(update_ctx_t): Add svndiff_version.

(upd_apply_textdelta): Use svndiff version set in baton.

(dav_svn__update_report): Get svndiff_version from private info.

* subversion/mod_dav_svn/repos.c: Include apr_lib.h

(accept_rec): New struct.

(get_entry): New function.

(do_header_Line): New function.

(sort_encoding_pref): New function.

(svn_dav__negotiate_encoding_prefs): New function.

(dav_svn__get_resource): Negotiate encoding preferences.

(dav_svn_deliver): Use svndiff1 if possible.

* subversion/tests/libsvn_delta/svndiff-test.c

(main): Add optional version argument.

Use svn_txdelta_to_svndiff2.

* subversion/testes/libsvn_delta/random-test.c

(random_test): Use svn_txdelta_to_svndiff2 and version 1 diffs.

* subversion/libsvn_repos/dump.c

(store_delta): Ditto.

* subversion/libsvn_ra_svn/client.c

(auth_response): Transmit svndiff1 capability.

(open_session): Ditto.

* subversion/libsvn_ra_svn/protocol: Document svndiff1 capability.

* subversion/libsvn_ra_svn/editor.c,


(ra_svn_apply_textdelta): Use svn_txdelta_to_svndiff2, and use svndiff1

if supported.

* subversion/libsvn_delta/svndiff.c: Include zlib.h



(struct encoder_baton): Add version.

(zlib_encode): New function.

(window_handler): Add ability to produce svndiff1.

(svn_txdelta_to_svndiff2): New function.

(svn_txdelta_to_svndiff): Init version to zero.

(struct decode_baton): Add version.

(zlib_decode): New function.

(decode_window): Handle decoding svndiff1.

(write_handler): Ditto.

(read_window_header): Add version argment.

(svn_txdelta_read_svndiff_window): Pass version to decode_window.

(svn_txdelta_skip_svndiff_window): Ditto.

* subversion/libsvn_ra_dav/file_revs.c

(svn_ra_dav__get_file_revs): Set Accept-Encoding header

to specify svndiff1 as acceptable.

* subversion/libsvn_ra_dav/fetch.c

(reporter_finish_report): Set Accept-Encoding header

to specify svndiff1 as acceptable.

* subversion/svnserve/serve.c

(serve): Write out svndiff1 capability.

* subversion/libsvn_fs/fs_fs.c

(check_format): Support both format 1 and 2.

(rep_write_get_baton): Use svn_txdelta_to_svndiff2, and version 1.

(svn_fs_fs__create): Default to newer format version.

If SVN_FS_CONFIG_FS_NO_SVNDIFF1 is set in the config opts,

use older format.

* subversion/libsvn_fs_fs/fs.h



  1. … 27 more files in changeset.
Fixing issue #2449.

Merge BDB-4.4 and automatic database recovery support

(r17455:18143 from branches/bdb-fixes).

  1. … 17 more files in changeset.
Avoid leaking errors in an obscure BDB scenario.

* subversion/libsvn_fs_base/bdb/bdb-err.c

(svn_fs_bdb__wrap_db): Clear pending_error when not returning an error.

* subversion/libsvn_fs_base/bdb/bdb-err.h

(SVN_BDB_ERR): Clear pending_error when not returning an error.

* subversion/libsvn_fs_base/fs.h

(struct bdb_errcall_baton_t): Tweak comment.

  1. … 2 more files in changeset.
Merge locking branch to trunk, by comparing trunkURL with branchURL.

This is not a test. This is an actual addition of a very large feature.

This merge passes 'make check' over all three RA implementations.

To see commit logs for this feature, examine /branches/locking, r11749:13570.

  1. … 183 more files in changeset.