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

Changeset 1659546 is being indexed.

Revert r1659397; it breaks too many buildbots.

* TODO: Re-added.

* build/ac-macros/swig.m4: Reverted.

* subversion/tests/cmdline/

(delete_dir_with_lots_of_locked_files): Add issue number.

* STATUS: Vote for log redirect fix.
Add a new test showing a regression in commit over ra_serf where it fails

to delete a directory tree containing many locked files.

The client-side error is: Unexpected HTTP status 400 'Bad Request' on '<path>'

The server logs this line: request failed: error reading the headers

The problem is reproducible with 1.8.10 but not with 1.8.9.

It was introduced on the 1.8.x branch in r1606976.

In this test, the commit only fails with a certain number of locked files in

the WC. 50 files doesn't have the problem, 60 triggers the problem for me.

Currently, the test is using 75 for good measure.

Further investigation is pending. Help from ra_serf experts is appreciated :)

* subversion/tests/cmdline/

(delete_dir_with_lots_of_locked_files): New test which XFails over DAV and

passes over all other RA layers.

* subversion/tests/cmdline/

(redirect_commands): New test for a bug fixed since 1.8.

(test_list): Add new test.

* STATUS: Vote for load invalid mergeinfo fix.
On the fsx-1.10 branch:

* subversion/libsvn_fs_x/dag_cache.c

(walk_dag_path): Update commentary. No functional change.

On the fsx-1.10:

Reorder functions in FSX dag caching. No functional change.

* subversion/libsvn_fs_x/dag_cache.c



walk_dag_path): Move them up into one place. This does not only group

them nicely, it makes them reusable without forward

declaration and implicitly groups the dag_path worker

code as well.

On the fsx-1.10 branch:

Move typical operations on normalized paths into separate functions.

This also does away with quirks and inefficiencies.

* subversion/libsvn_fs_x/dag_cache.c

(): Explain that the underlying C string in a normalizes path is

actually NUL-terminated.


extract_last_segment): New utilities for normalized paths.

(walk_dag_path): Greatly simplify using the new utils.

Apply the standard pre-branch whitespace cleanup via


There should be no functional changes.


* build/generator/

* build/generator/

* subversion/bindings/javahl/native/EditorProxy.h

* subversion/bindings/javahl/native/StateReporter.cpp

* subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.cpp

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/bindings/swig/ruby/test/test_fs.rb

* subversion/bindings/swig/ruby/test/util.rb

* subversion/bindings/swig/ruby/test/windows_util.rb

* subversion/include/private/svn_fs_fs_private.h

* subversion/include/private/svn_packed_data.h

* subversion/include/private/svn_repos_private.h

* subversion/include/private/svn_sorts_private.h

* subversion/include/private/svn_subr_private.h

* subversion/include/private/svn_wc_private.h

* subversion/include/svn_auth.h

* subversion/include/svn_cache_config.h

* subversion/include/svn_client.h

* subversion/include/svn_cmdline.h

* subversion/include/svn_diff.h

* subversion/include/svn_fs.h

* subversion/include/svn_io.h

* subversion/include/svn_ra.h

* subversion/include/svn_repos.h

* subversion/include/svn_string.h

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/update.c

* subversion/libsvn_delta/svndiff.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_fs/fs-loader.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_fs/cached_data.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/hotcopy.c

* subversion/libsvn_fs_fs/id.c

* subversion/libsvn_fs_fs/index.c

* subversion/libsvn_fs_fs/index.h

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/low_level.c

* subversion/libsvn_fs_fs/low_level.h

* subversion/libsvn_fs_fs/pack.c

* subversion/libsvn_fs_fs/recovery.c

* subversion/libsvn_fs_fs/rev_file.c

* subversion/libsvn_fs_fs/revprops.c

* subversion/libsvn_fs_fs/revprops.h

* subversion/libsvn_fs_fs/stats.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_fs_fs/verify.c

* subversion/libsvn_fs_x/cached_data.c

* subversion/libsvn_fs_x/changes.c

* subversion/libsvn_fs_x/dag.h

* subversion/libsvn_fs_x/fs.h

* subversion/libsvn_fs_x/fs_id.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/hotcopy.c

* subversion/libsvn_fs_x/hotcopy.h

* subversion/libsvn_fs_x/index.c

* subversion/libsvn_fs_x/index.h

* subversion/libsvn_fs_x/lock.c

* subversion/libsvn_fs_x/lock.h

* subversion/libsvn_fs_x/low_level.c

* subversion/libsvn_fs_x/low_level.h

* subversion/libsvn_fs_x/noderevs.c

* subversion/libsvn_fs_x/pack.c

* subversion/libsvn_fs_x/reps.c

* subversion/libsvn_fs_x/rev_file.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/revprops.h

* subversion/libsvn_fs_x/string_table.c

* subversion/libsvn_fs_x/string_table.h

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_fs_x/tree.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_fs_x/verify.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz_pool.c

* subversion/libsvn_repos/config_pool.c

* subversion/libsvn_repos/dump.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_subr/bit_array.c

* subversion/libsvn_subr/cache-membuffer.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/dirent_uri.c

* subversion/libsvn_subr/fnv1a.c

* subversion/libsvn_subr/gpg_agent.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/object_pool.c

* subversion/libsvn_subr/packed_data.c

* subversion/libsvn_subr/prefix_string.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/sqlite.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/sysinfo.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/utf8proc/utf8proc_data.c

* subversion/libsvn_subr/x509info.c

* subversion/libsvn_wc/diff.h

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/wc.h

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db.h

* subversion/mod_dav_svn/lock.c

* subversion/mod_dav_svn/mod_dav_svn.c

* subversion/mod_dav_svn/status.c

* subversion/svn/auth-cmd.c

* subversion/svn/info-cmd.c

* subversion/svn/mergeinfo-cmd.c

* subversion/svn/notify.c

* subversion/svn/propget-cmd.c

* subversion/svn/svn.c

* subversion/svnadmin/svnadmin.c

* subversion/svnserve/logger.c

* subversion/svnserve/serve.c

* subversion/svnserve/server.h

* subversion/svnserve/svnserve.c

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/libsvn_client/client-test.c

* subversion/tests/libsvn_client/mtcc-test.c

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

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

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

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

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

* subversion/tests/libsvn_fs_x/string-table-test.c

* subversion/tests/libsvn_ra/ra-test.c

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

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

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

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

* subversion/tests/libsvn_subr/packed-data-test.c

* subversion/tests/libsvn_subr/priority-queue-test.c

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

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

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

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

* subversion/tests/libsvn_wc/op-depth-test.c

* subversion/tests/svn_test_main.c

* tools/dev/benchmarks/RepoPerf/

* tools/dev/benchmarks/RepoPerf/

* tools/dev/

* tools/dev/fsfs-access-map.c

* tools/dev/

* tools/dev/x509-parser.c

* tools/diff/diff.c

* tools/dist/

* tools/dist/

* tools/hook-scripts/mailer/

* tools/server-side/svnpubsub/


Remove unneeded whitespace via script.

  1. … 170 more files in changeset.
* subversion/libsvn_wc/conflicts.c

(read_tree_conflict_desc): Compare reason to svn_wc_conflict_reason_t.

Remove r1561419 backport branch as it is already part of 1.8.x-r1573744-and-friends.

withdraw r1561419 as it is already part of the

1.8.x-r1573744-and-friends branch

* build/generator/

Fix python syntax warning caused by tab characters.

* subversion/tests/cmdline/svntest/

Minor error output improvement on 'svn info' comparison failures.

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

* tools/dist/

* tools/hook-scripts/

* tools/hook-scripts/

* tools/server-side/svnpubsub/svnpubsub/

(svn:eol-style): Set to native.

* subversion/libsvn_wc/wc-queries.sql

(STMT_COPY_NODE_MOVE): Keep recorded size and timestamp unless checksum

changes. The file merge code (on prop and text changes) should handle

all cases, but comparing checksum (again) here is a cheap safety net.

Resolve an error when we try to record a tree conflict because we are not

allowed to update the entire working copy. In this case we tried to read

directly from BASE while the data could already be moved.

* subversion/libsvn_wc/wc_db_update_move.c

(bump_mark_tree_conflict): Add op-depth argument and use it to read from

the right layer.

(bump_moved_layer): Update caller. Avoid reimplementing svn_relpath_limit

less efficient.

(svn_wc__db_bump_moved_away): Update caller.

* subversion/tests/libsvn_wc/op-depth-test.c

(move_deep_bump): New test.

(test_list): Add move_deep_bump.

Enable directly reading the node kind when reading conflicts from wc_db.

This avoids a database transaction for a common operation during conflict

resolving (and when retrieving conflicts via apis like 'svn info').

* subversion/libsvn_wc/conflicts.c

(read_tree_conflict_desc): Add node kind argument and use that to

fill kind.

(svn_wc__conflict_invoke_resolver): Update caller. Fetch kind.

(svn_wc__read_conflicts): Fetch and pass kind.

(resolve_prop_conflict_on_node): Add conflicts argument.



conflict_status_walker): Update caller.

* subversion/libsvn_wc/copy.c


remove_node_conflict_markers): Update caller.

* subversion/libsvn_wc/delete.c

(create_delete_wq_items): Update caller.

* subversion/libsvn_wc/entries.c

(read_one_entry): Update caller.

* subversion/libsvn_wc/props.c

(svn_wc__create_prejfile): Update caller.

* subversion/libsvn_wc/questions.c

(internal_conflicted_p): Update caller.

* subversion/libsvn_wc/wc_db.c


svn_wc__db_read_conflict): Update caller.

(svn_wc__db_read_conflict_internal): Extend usage of error handling query.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_conflict): Add optional argument.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_read_conflict_internal): Add optional argument.

* subversion/libsvn_wc/wc_db_update_move.c



bump_moved_layer): Update caller.

* subversion/libsvn_wc/workqueue.c

(run_prej_install): Update caller.

* subversion/tests/libsvn_wc/conflict-data-test.c

(test_read_write_tree_conflicts): Add file to allow retrieving kind from db.

* subversion/tests/libsvn_wc/op-depth-test.c


check_tree_conflict_repos_path): Update caller.

Use journal_mode = TRUNCATE for sqlite [1] instead of default DELETE value.

It makes svn checkout about 10% faster on Windows at expense of one empty

file in .svn. Create/delete file is relatively expensive operation on

Windows, especially if indexes/virus scanners are enabled.

The TRUNCATE and DELETE journal modes are compatible, so different

Subversion clients with different journal mode should just work with same

working copy without problems.


* subversion/libsvn_subr/sqlite.c

(svn_sqlite__open): Execute PRAGMA journal_mode = TRUNCATE when opening

sqlite database.

* subversion/libsvn_wc/wc_db.c


Following up on r1659418, reduce variable scope of column data.

Resolve an old TODO from one of the op-depth bump helper functions:

Cleanup some test code.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_LAYER_FOR_REPLACE): Remove unused inner query.

* subversion/libsvn_wc/wc_db.c

(db_extend_parent_delete): Remove unused diagnostics argument.

(insert_base_node): Update caller.

(svn_wc__db_op_copy_layer_internal): Use a simple check to see

when a parent delete might need extension.

* branches/1.8.x/STATUS: Propose r1659399.

Following up on r1659381, properly check for the difference between added

and obstructed (locally existing, but not added) nodes to avoid expectation


* subversion/libsvn_client/merge.c


merge_dir_opened): Check if the node is really added.

Make the SQLite amalgamated build work with recent versions of the

SQLite amalgamation.

At some point in the not too distant past, the SQLite devs arbitrarily

decided to change their feature checks (some 14k lines deep within the

amalgamated sqlite3.c file) from #ifdef to #if conditions. Of course,

to make things more interesting, the visible ones at the top of that

file are still #ifdef's.

* subversion/libsvn_subr/sqlite3wrapper.c

(SQLITE_OMIT_DEPRECATED): Define this symbol to 1.

* CHANGES: Add an entry for 'svn copy --pin-externals'.

[Reverted in r1659546]

Do not attempt to build bindings with Swig 3.0+. Current versions

break the Python bindings.

* build/ac-macros/swig.m4

(SVN_FIND_SWIG): Add an upper limite to supported Swig versions.

Do not configure bindings if the detected Swig is not suitable.

* TODO: Remove.

Remove the pin-exernals branch, merged to trunk in r1659395.

Merge the pin-externals branch to trunk.

The discussion thread start in this post:

has come to a consensus that the branch can be merged and additional

development of this feature can happen on trunk.

This merge adds a '--pin-externals' option to 'svn copy'.

This option enables automated pinning of URLs in svn:externals properties

during copy operations (issue #1258).

--pin-externals : pin externals with no explicit revision to their

last-changed revision (recommended when tagging)

This feature makes the contrib script unnecessary.

Externals are "pinned" by adding a peg revision to the external's source URL.

For example, the external definition:

^/foo/bar ext_bar

might become:

^/foo/bar@400 ext_bar

This table shows which revision is used for pinning:

copy source: working copy (WC) REPOS


copy WC | external's WC BASE rev | external's repos HEAD rev |

dest: |------------------------+---------------------------+

REPOS | external's WC BASE rev | external's repos HEAD rev |


An external that is already pinned is left as-is.

Please see the branch log for details about these changes.

  1. … 8 more files in changeset.
* subversion/libsvn_wc/update_editor.c

(complete_conflict): Apply a few constness fixes. Remove unused variable.

Following up on the recent addition of move_conflict_details and

update_conflict_details tests, add a merge_conflict_details test.

Make merge provide different conflict reasons for local additions and

unversioned obstructions.

* subversion/libsvn_client/merge.c


merge_dir_opened): Don't report local additions as unversioned obstructions.

* subversion/libsvn_wc/conflicts.c

(read_tree_conflict_desc): Allow retrieving the node kind of deleted nodes.

* subversion/tests/cmdline/

(merge_conflict_details): New test.

(test_list): Add test.

On the pin-externals branch, merge outstanding changes from trunk.