aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2014-05-27 04:55:31 +0000
committerPeter Wemm <peter@FreeBSD.org>2014-05-27 04:55:31 +0000
commit41a48a0a1803245a188068c5200383b9543c25b2 (patch)
tree6d1265a766b5c11e4c2414a994dbabb861526c73
parent219f5ebf8fca3572d8d4265d78d0e4670ca35a27 (diff)
downloadsrc-41a48a0a1803245a188068c5200383b9543c25b2.tar.gz
src-41a48a0a1803245a188068c5200383b9543c25b2.zip
Vendor import svn-1.8.9vendor/subversion/subversion-1.8.9
Notes
Notes: svn path=/vendor/subversion/dist/; revision=266729 svn path=/vendor/subversion/subversion-1.8.9/; revision=266730; tag=vendor/subversion/subversion-1.8.9
-rw-r--r--CHANGES111
-rw-r--r--NOTICE2
-rw-r--r--build-outputs.mk12
-rwxr-xr-xconfigure638
-rw-r--r--configure.ac4
-rw-r--r--subversion/include/private/svn_cache.h8
-rw-r--r--subversion/include/private/svn_dep_compat.h7
-rw-r--r--subversion/include/svn_version.h6
-rw-r--r--subversion/libsvn_client/commit_util.c118
-rw-r--r--subversion/libsvn_client/export.c5
-rw-r--r--subversion/libsvn_client/merge.c159
-rw-r--r--subversion/libsvn_client/prop_commands.c18
-rw-r--r--subversion/libsvn_delta/svndiff.c10
-rw-r--r--subversion/libsvn_fs_fs/fs.c5
-rw-r--r--subversion/libsvn_fs_fs/fs.h2
-rw-r--r--subversion/libsvn_fs_fs/rep-cache-db.h2
-rw-r--r--subversion/libsvn_ra_serf/getlocks.c19
-rw-r--r--subversion/libsvn_ra_serf/inherited_props.c237
-rw-r--r--subversion/libsvn_ra_serf/locks.c45
-rw-r--r--subversion/libsvn_ra_serf/log.c2
-rw-r--r--subversion/libsvn_ra_serf/update.c19
-rw-r--r--subversion/libsvn_ra_svn/protocol2
-rw-r--r--subversion/libsvn_repos/dump.c76
-rw-r--r--subversion/libsvn_repos/fs-wrap.c25
-rw-r--r--subversion/libsvn_subr/cache-memcache.c7
-rw-r--r--subversion/libsvn_subr/config_file.c2
-rw-r--r--subversion/libsvn_subr/internal_statements.h2
-rw-r--r--subversion/libsvn_subr/io.c38
-rw-r--r--subversion/libsvn_subr/prompt.c2
-rw-r--r--subversion/libsvn_subr/sysinfo.c1
-rw-r--r--subversion/libsvn_subr/version.c2
-rw-r--r--subversion/libsvn_wc/status.c190
-rw-r--r--subversion/libsvn_wc/wc-checks.h2
-rw-r--r--subversion/libsvn_wc/wc-metadata.h4
-rw-r--r--subversion/libsvn_wc/wc-metadata.sql3
-rw-r--r--subversion/libsvn_wc/wc-queries.h1134
-rw-r--r--subversion/libsvn_wc/wc-queries.sql36
-rw-r--r--subversion/libsvn_wc/wc_db.c661
-rw-r--r--subversion/libsvn_wc/wc_db.h23
-rw-r--r--subversion/libsvn_wc/wc_db_wcroot.c8
-rw-r--r--subversion/svn/conflict-callbacks.c2
-rw-r--r--subversion/svndumpfilter/svndumpfilter.c33
-rw-r--r--subversion/svnrdump/util.c2
-rw-r--r--subversion/svnserve/serve.c23
44 files changed, 2225 insertions, 1482 deletions
diff --git a/CHANGES b/CHANGES
index b78eadd79d59..f10874794683 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,70 @@
+Version 1.8.9
+(07 May 2014, from /branches/1.8.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.8.9
+
+ User-visible changes:
+ - Client-side bugfixes:
+ * log: use proper peg revision over DAV (r1568872)
+ * upgrade: allow upgrading from 1.7 with exclusive locks (r1572102 et al)
+ * proplist: resolve inconsitent inherited property results (r1575270 et al)
+ * increase minimal timestamp sleep from 1ms to 10ms (r1581305 et al)
+ * merge: automatic merge confused by subtree merge (issue #4481)
+ * propget: report proper error on invalid revision for url (r1586255)
+ * commit: fix an assertion when committing a deleted descendant
+ (r1571747, r1571787, r1571795)
+ * merge: resolve segfault when '--force' merges a directory delete
+ (r1577812, r1577813, r1579429)
+ * resolve: prevent interactive conflict resolution when nothing has been
+ done to resolve the conflict (r1577294)
+ * update: fix locks lost from wc with pre-1.6.17 servers (issue #4412)
+ * merge: honor the 'preserved-conflict-file-exts' setting (r1577151)
+ * list: fix '--verbose' against older servers (r1591111)
+ * unlock: fix ability to remove locks with timeouts (r1579588)
+ * copy: fix 'svn copy URL WC' on relocated working copies
+ (r1580626, r1580650)
+ * export: allow file externals to be exported (issue #4427)
+ * move: fix working copy db inconsistency in cert scenarios (issue #4437)
+ * commit: fix an issue where mixed revision copy with non copy descendants
+ that shadow a not present node couldn't be committed (r1518942 et al)
+ * delete: properly remove move_to info when the node in its original
+ location is removed (r1538812 et al)
+ * status; fix an issue where output would vary based on if the target
+ was the node itself or its parent (r1544597 et al)
+
+ - Server-side bugfixes:
+ * ensure proper access synchronization in fsfs on Windows (r1568953 et al)
+ * svnadmin dump: don't let invalid mergeinfo stop dump (r1574868 et al)
+ * svnserve: resolve performance regression caused by iprops (r1578853 et al)
+ * reduce size of memory buffer when reading config files (r1581296)
+ * remove dead transaction if commit was blocked by hook (r1583977)
+ * svnrdump load: fix crash when svn:* normalization (issue #4490)
+ * fix memcached support (issue #4470)
+ * svndumpfilter: fix order of node record headers (r1578670 et al)
+ * mod_dav_svn: blacklist building with broken versions of httpd; 2.2.25,
+ 2.4.5 and 2.4.6 (r1545835)
+ * mod_dav_svn: allow generic DAV clients to refresh locks (issue #3515)
+ * mod_dav_svn: detect out of dateness correctly during commit (issue #4480)
+
+ Developer-visible changes:
+ - General:
+ * improve consistency checks of DAV inherited property requests (r1498000)
+ * fix ocassional failure in autoprop_tests.py (r1567752)
+ * avoid duplicate sqlite analyze information rows (r1571214)
+ * add Mavericks to our sysinfo output (r1573088)
+ * bump copyright years to 2014 (r1555403)
+ * unbreak test suite when running as root (r1583580)
+ * resolve buffer overflow in testcode (r1481782)
+ * fix libmagic detection with custom LDFLAGS (r1577200)
+ * fix an out of scope variable use in merge (r1587946)
+ * javahl: fix crash from resolve callback throwing an exception (r1586439)
+ * ruby: fix two memory lifetime bugs (r1586052, r1586467)
+ * fix a missing null byte when handling old pre-1.4 deltas (r1587968)
+ * fix building with APR 0.9.x (r1585499)
+ * make svn_ra_get_locks() and svn_ra_get_lock() report not locked nodes
+ with a NULL svn_lock_t *, as documented (r1578273, r1578311, r1578326)
+ * fix tests for compiler flags (r1573106)
+
+
Version 1.8.8
(19 Feb 2014, from /branches/1.8.x)
http://svn.apache.org/repos/asf/subversion/tags/1.8.8
@@ -620,9 +687,36 @@ http://svn.apache.org/repos/asf/subversion/tags/1.8.0
* fix some reference counting bugs in swig-py bindings (r1464899, r1466524)
-Version 1.7.15
-(12 Feb 2014, from /branches/1.7.x)
-http://svn.apache.org/repos/asf/subversion/tags/1.7.15
+Version 1.7.17
+(07 May 2014, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.17
+
+ User-visible changes:
+ - Client-side bugfixes:
+ * log: use proper peg revision over DAV (r1568872)
+ * move: fix errors when moving files between an external and the parent
+ working copy (r1551579)
+ * copy: fix 'svn copy URL WC' on relocated working copies
+ (r1580626, r1580650)
+
+ - Server-side bugfixes:
+ * mod_dav_svn: blacklist building with broken versions of httpd; 2.2.25,
+ 2.4.5 and 2.4.6 (r1545835)
+ * mod_dav_svn: detect out of dateness correctly during commit (issue #4480)
+
+ Developer-visible changes:
+ - General:
+ * fix libmagic detection with custom LDFLAGS (r1577200)
+ * fix a missing null byte when handling old pre-1.4 deltas (r1587968)
+ * support building with Serf 1.3.x (r1517123, r1535139)
+
+ - Bindings:
+ * javahl: fix crash from resolve callback throwing an exception (r1586439)
+
+
+Version 1.7.16
+(26 Feb 2014, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.16
User-visible changes:
- Client-side bugfixes:
@@ -637,6 +731,11 @@ http://svn.apache.org/repos/asf/subversion/tags/1.7.15
- General:
* fix failure in checkout_tests.py
* support compiling against Cyrus sasl 2.1.25 (r1404912, r1413402)
+ * support compiling against neon 0.30.x (r1566320)
+
+
+Version 1.7.15
+(Not released, see changes for 1.7.16.)
Version 1.7.14
@@ -883,7 +982,7 @@ http://svn.apache.org/repos/asf/subversion/tags/1.7.6
* fix ra_serf against Subversion 1.2 servers (r1349367)
* fix 'svn upgrade' on working copies with certain tree conflicts (r1345482)
* avoid workqueue references to system temp dir (r1367854)
- * allow non-existant canonical paths (r1367853)
+ * allow non-existent canonical paths (r1367853)
* fix 'svn revert --depth files' to operate on files (r1365554)
* fix ra_serf XML namespace handling against malicious server (r1337441)
* fix relocate with server-relative externals (issue 4216)
@@ -1235,7 +1334,7 @@ the 1.6 release: http://subversion.apache.org/docs/release-notes/1.7.html
* fixed: rm -> ci -> cp = missing directory (issue #2763)
* fixed: 'svn info' returns parent info on missing dirs (issue #3178)
* fixed: spurious prop conflict with 'merge --reintegrate' (issue #3919)
- * fixed: 'svn --version' fails with non-existant $HOME (issue #3947)
+ * fixed: 'svn --version' fails with non-existent $HOME (issue #3947)
* fixed: unforced export silently overwites existing file (issue #3799)
* fixed: reverse merge which adds subtree mergeinfo fails (issue #3978)
* fixed: 'svn up -r{R>HEAD}' hangs client over ra_svn (issue #3963)
@@ -1410,7 +1509,7 @@ http://svn.apache.org/repos/asf/subversion/tags/1.6.17
* fix crash in mod_dav_svn with GETs of baselined resources (r1104126)
See CVE-2011-1752, and descriptive advisory at
http://subversion.apache.org/security/CVE-2011-1752-advisory.txt
- * fixed: write-through proxy could direcly commit to slave (r917523)
+ * fixed: write-through proxy could directly commit to slave (r917523)
* detect a particular corruption condition in FSFS (r1100213)
* improve error message when clients refer to unknown revisions (r939000)
* bugfixes and optimizations to the DAV mirroring code (r878607)
diff --git a/NOTICE b/NOTICE
index fdcea3c804ae..c1afd4127c6a 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
Apache Subversion
-Copyright 2013 The Apache Software Foundation
+Copyright 2014 The Apache Software Foundation
This product includes software developed by many people, and distributed
under Contributor License Agreements to The Apache Software Foundation
diff --git a/build-outputs.mk b/build-outputs.mk
index 5845a86c2c93..6d73c30bc8d6 100644
--- a/build-outputs.mk
+++ b/build-outputs.mk
@@ -2829,17 +2829,17 @@ subversion/tests/libsvn_wc/op-depth-test.lo: subversion/tests/libsvn_wc/op-depth
subversion/tests/libsvn_wc/pristine-store-test.lo: subversion/tests/libsvn_wc/pristine-store-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h
-subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
-subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
-subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
-subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
-subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
-subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
subversion/tests/libsvn_wc/wc-incomplete-tester.lo: subversion/tests/libsvn_wc/wc-incomplete-tester.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
diff --git a/configure b/configure
index 17799235bb4b..3010dc7a878b 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for subversion 1.8.8.
+# Generated by GNU Autoconf 2.69 for subversion 1.8.9.
#
# Report bugs to <http://subversion.apache.org/>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='subversion'
PACKAGE_TARNAME='subversion'
-PACKAGE_VERSION='1.8.8'
-PACKAGE_STRING='subversion 1.8.8'
+PACKAGE_VERSION='1.8.9'
+PACKAGE_STRING='subversion 1.8.9'
PACKAGE_BUGREPORT='http://subversion.apache.org/'
PACKAGE_URL=''
@@ -1457,7 +1457,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures subversion 1.8.8 to adapt to many kinds of systems.
+\`configure' configures subversion 1.8.9 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1523,7 +1523,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of subversion 1.8.8:";;
+ short | recursive ) echo "Configuration of subversion 1.8.9:";;
esac
cat <<\_ACEOF
@@ -1737,7 +1737,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-subversion configure 1.8.8
+subversion configure 1.8.9
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1789,6 +1789,52 @@ fi
} # ac_fn_c_try_compile
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
# ac_fn_cxx_try_compile LINENO
# ----------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
@@ -1827,6 +1873,52 @@ fi
} # ac_fn_cxx_try_compile
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
# ac_fn_c_try_cpp LINENO
# ----------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
@@ -2028,52 +2120,6 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_header_compile
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -2178,52 +2224,6 @@ fi
} # ac_fn_cxx_try_cpp
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_cxx_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_link
-
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -2281,7 +2281,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by subversion $as_me 1.8.8, which was
+It was created by subversion $as_me 1.8.9, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2661,8 +2661,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Subversion 1.8.8" >&5
-$as_echo "$as_me: Configuring Subversion 1.8.8" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Subversion 1.8.9" >&5
+$as_echo "$as_me: Configuring Subversion 1.8.9" >&6;}
abs_srcdir="`cd $srcdir && pwd`"
@@ -3509,11 +3509,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -std=c90" >&5
$as_echo_n "checking if $CC accepts -std=c90... " >&6; }
CFLAGS="-std=c90 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -3536,11 +3536,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -std=c89" >&5
$as_echo_n "checking if $CC accepts -std=c89... " >&6; }
CFLAGS="-std=c89 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -3563,11 +3563,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -ansi" >&5
$as_echo_n "checking if $CC accepts -ansi... " >&6; }
CFLAGS="-ansi $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -3581,7 +3581,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3592,7 +3593,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3603,7 +3605,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3628,11 +3631,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Werror=unknown-warning-option" >&5
$as_echo_n "checking if $CC accepts -Werror=unknown-warning-option... " >&6; }
CFLAGS="-Werror=unknown-warning-option $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -3646,7 +3649,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3932,11 +3936,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -std=c++98" >&5
$as_echo_n "checking if $CXX accepts -std=c++98... " >&6; }
CXXFLAGS="-std=c++98 $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -3950,7 +3954,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3975,11 +3980,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Werror=unknown-warning-option" >&5
$as_echo_n "checking if $CXX accepts -Werror=unknown-warning-option... " >&6; }
CXXFLAGS="-Werror=unknown-warning-option $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -3993,7 +3998,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4578,7 +4584,7 @@ fi
# ==== Libraries, for which we may have source to build ======================
-APR_VER_REGEXES="0\.9\.[7-9] 0\.9\.1[0-9] 1\. 2\."
+APR_VER_REGEXES="0\.9\.[7-9] 0\.9\.[12][0-9] 1\. 2\."
APR_WANTED_REGEXES="$APR_VER_REGEXES"
@@ -5718,6 +5724,38 @@ rm -f conftest*
CPPFLAGS="$old_CPPFLAGS"
fi
+# check for some busted versions of mod_dav
+# in particular 2.2.25, 2.4.5, and 2.4.6 had the following bugs which are
+# troublesome for Subversion:
+# PR 55304: https://issues.apache.org/bugzilla/show_bug.cgi?id=55304
+# PR 55306: https://issues.apache.org/bugzilla/show_bug.cgi?id=55306
+# PR 55397: https://issues.apache.org/bugzilla/show_bug.cgi?id=55397
+if test -n "$APXS" && test "$APXS" != "no"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking mod_dav version" >&5
+$as_echo_n "checking mod_dav version... " >&6; }
+ old_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
+ blacklisted_versions_regex="\"2\" \"\.\" (\"2\" \"\.\" \"25\"|\"4\" \"\.\" \"[56]\")"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include "$APXS_INCLUDE/ap_release.h"
+apache_version=AP_SERVER_BASEREVISION
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "apache_version= *$blacklisted_versions_regex" >/dev/null 2>&1; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: broken" >&5
+$as_echo "broken" >&6; }
+ as_fn_error $? "Apache httpd version includes a broken mod_dav; use a newer version of httpd" "$LINENO" 5
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: acceptable" >&5
+$as_echo "acceptable" >&6; }
+fi
+rm -f conftest*
+
+ CPPFLAGS="$old_CPPFLAGS"
+fi
+
# Check whether --with-apache-libexecdir was given.
if test "${with_apache_libexecdir+set}" = set; then :
@@ -19147,7 +19185,7 @@ if test "x$ac_cv_header_magic_h" = xyes; then :
_ACEOF
save_ldflags="$LDFLAGS"
- LDFLAGS="-L$libmagic_prefix/lib"
+ LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for magic_open in -lmagic" >&5
$as_echo_n "checking for magic_open in -lmagic... " >&6; }
if ${ac_cv_lib_magic_magic_open+:} false; then :
@@ -20013,11 +20051,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Werror=implicit-function-declaration" >&5
$as_echo_n "checking if $CC accepts -Werror=implicit-function-declaration... " >&6; }
CFLAGS="-Werror=implicit-function-declaration $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20031,7 +20069,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20050,11 +20089,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Werror=declaration-after-statement" >&5
$as_echo_n "checking if $CC accepts -Werror=declaration-after-statement... " >&6; }
CFLAGS="-Werror=declaration-after-statement $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20068,7 +20107,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20087,11 +20127,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wextra-tokens" >&5
$as_echo_n "checking if $CC accepts -Wextra-tokens... " >&6; }
CFLAGS="-Wextra-tokens $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20105,7 +20145,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20124,11 +20165,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wnewline-eof" >&5
$as_echo_n "checking if $CC accepts -Wnewline-eof... " >&6; }
CFLAGS="-Wnewline-eof $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20142,7 +20183,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20161,11 +20203,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wshorten-64-to-32" >&5
$as_echo_n "checking if $CC accepts -Wshorten-64-to-32... " >&6; }
CFLAGS="-Wshorten-64-to-32 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20179,7 +20221,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20198,11 +20241,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wold-style-definition" >&5
$as_echo_n "checking if $CC accepts -Wold-style-definition... " >&6; }
CFLAGS="-Wold-style-definition $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20216,7 +20259,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20235,11 +20279,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wno-system-headers" >&5
$as_echo_n "checking if $CC accepts -Wno-system-headers... " >&6; }
CFLAGS="-Wno-system-headers $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20253,7 +20297,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20272,11 +20317,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wno-format-nonliteral" >&5
$as_echo_n "checking if $CC accepts -Wno-format-nonliteral... " >&6; }
CFLAGS="-Wno-format-nonliteral $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20290,7 +20335,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20322,11 +20368,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wextra-tokens" >&5
$as_echo_n "checking if $CXX accepts -Wextra-tokens... " >&6; }
CXXFLAGS="-Wextra-tokens $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20340,7 +20386,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20359,11 +20406,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wnewline-eof" >&5
$as_echo_n "checking if $CXX accepts -Wnewline-eof... " >&6; }
CXXFLAGS="-Wnewline-eof $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20377,7 +20424,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20396,11 +20444,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wshorten-64-to-32" >&5
$as_echo_n "checking if $CXX accepts -Wshorten-64-to-32... " >&6; }
CXXFLAGS="-Wshorten-64-to-32 $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20414,7 +20462,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20433,11 +20482,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wno-system-headers" >&5
$as_echo_n "checking if $CXX accepts -Wno-system-headers... " >&6; }
CXXFLAGS="-Wno-system-headers $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20451,7 +20500,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20492,11 +20542,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-inline" >&5
$as_echo_n "checking if $CC accepts -fno-inline... " >&6; }
CFLAGS="-fno-inline $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20510,7 +20560,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20529,11 +20580,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-omit-frame-pointer" >&5
$as_echo_n "checking if $CC accepts -fno-omit-frame-pointer... " >&6; }
CFLAGS="-fno-omit-frame-pointer $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20547,7 +20598,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20566,11 +20618,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -g3" >&5
$as_echo_n "checking if $CC accepts -g3... " >&6; }
CFLAGS="-g3 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20593,11 +20645,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -g2" >&5
$as_echo_n "checking if $CC accepts -g2... " >&6; }
CFLAGS="-g2 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20620,11 +20672,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -g" >&5
$as_echo_n "checking if $CC accepts -g... " >&6; }
CFLAGS="-g $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20638,7 +20690,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20648,7 +20701,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20658,7 +20712,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20682,11 +20737,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -fno-inline" >&5
$as_echo_n "checking if $CXX accepts -fno-inline... " >&6; }
CXXFLAGS="-fno-inline $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20700,7 +20755,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20719,11 +20775,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -fno-omit-frame-pointer" >&5
$as_echo_n "checking if $CXX accepts -fno-omit-frame-pointer... " >&6; }
CXXFLAGS="-fno-omit-frame-pointer $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20737,7 +20793,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20756,11 +20813,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -g3" >&5
$as_echo_n "checking if $CXX accepts -g3... " >&6; }
CXXFLAGS="-g3 $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20783,11 +20840,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -g2" >&5
$as_echo_n "checking if $CXX accepts -g2... " >&6; }
CXXFLAGS="-g2 $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20810,11 +20867,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -g" >&5
$as_echo_n "checking if $CXX accepts -g... " >&6; }
CXXFLAGS="-g $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20828,7 +20885,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20838,7 +20896,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20848,7 +20907,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20887,11 +20947,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O1" >&5
$as_echo_n "checking if $CC accepts -O1... " >&6; }
CFLAGS="-O1 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20914,11 +20974,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O" >&5
$as_echo_n "checking if $CC accepts -O... " >&6; }
CFLAGS="-O $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20932,7 +20992,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20942,7 +21003,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20964,11 +21026,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O3" >&5
$as_echo_n "checking if $CC accepts -O3... " >&6; }
CFLAGS="-O3 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -20991,11 +21053,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O2" >&5
$as_echo_n "checking if $CC accepts -O2... " >&6; }
CFLAGS="-O2 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21018,11 +21080,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O1" >&5
$as_echo_n "checking if $CC accepts -O1... " >&6; }
CFLAGS="-O1 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21045,11 +21107,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O" >&5
$as_echo_n "checking if $CC accepts -O... " >&6; }
CFLAGS="-O $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21063,7 +21125,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21073,7 +21136,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21083,7 +21147,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21093,7 +21158,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21112,11 +21178,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wno-clobbered" >&5
$as_echo_n "checking if $CC accepts -Wno-clobbered... " >&6; }
CFLAGS="-Wno-clobbered $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21130,7 +21196,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21149,11 +21216,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -flto" >&5
$as_echo_n "checking if $CC accepts -flto... " >&6; }
CFLAGS="-flto $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(void){return 0;}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21167,7 +21234,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21193,11 +21261,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O1" >&5
$as_echo_n "checking if $CXX accepts -O1... " >&6; }
CXXFLAGS="-O1 $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21220,11 +21288,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O" >&5
$as_echo_n "checking if $CXX accepts -O... " >&6; }
CXXFLAGS="-O $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21238,7 +21306,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21248,7 +21317,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21270,11 +21340,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O3" >&5
$as_echo_n "checking if $CXX accepts -O3... " >&6; }
CXXFLAGS="-O3 $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21297,11 +21367,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O2" >&5
$as_echo_n "checking if $CXX accepts -O2... " >&6; }
CXXFLAGS="-O2 $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21324,11 +21394,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O1" >&5
$as_echo_n "checking if $CXX accepts -O1... " >&6; }
CXXFLAGS="-O1 $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21351,11 +21421,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O" >&5
$as_echo_n "checking if $CXX accepts -O... " >&6; }
CXXFLAGS="-O $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21369,7 +21439,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21379,7 +21450,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21389,7 +21461,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21399,7 +21472,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21418,11 +21492,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wno-clobbered" >&5
$as_echo_n "checking if $CXX accepts -Wno-clobbered... " >&6; }
CXXFLAGS="-Wno-clobbered $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21436,7 +21510,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21455,11 +21530,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -flto" >&5
$as_echo_n "checking if $CXX accepts -flto... " >&6; }
CXXFLAGS="-flto $CXXFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+int main(){}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -21473,7 +21548,8 @@ $as_echo "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25670,7 +25746,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by subversion $as_me 1.8.8, which was
+This file was extended by subversion $as_me 1.8.9, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -25736,7 +25812,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-subversion config.status 1.8.8
+subversion config.status 1.8.9
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index e93d7a35f287..f7d2264a9b89 100644
--- a/configure.ac
+++ b/configure.ac
@@ -98,7 +98,7 @@ dnl now generating errors instead of silently ignoring
dnl them. Only .7 and later can guarantee repository
dnl integrity with FSFS.
-APR_VER_REGEXES=["0\.9\.[7-9] 0\.9\.1[0-9] 1\. 2\."]
+APR_VER_REGEXES=["0\.9\.[7-9] 0\.9\.[12][0-9] 1\. 2\."]
SVN_LIB_APR($APR_VER_REGEXES)
@@ -755,7 +755,7 @@ AC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX],
CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
AC_CHECK_HEADERS(magic.h,[
save_ldflags="$LDFLAGS"
- LDFLAGS="-L$libmagic_prefix/lib"
+ LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS"
AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
LDFLAGS="$save_ldflags"
])
diff --git a/subversion/include/private/svn_cache.h b/subversion/include/private/svn_cache.h
index df40f7e0691f..08d2f09cb614 100644
--- a/subversion/include/private/svn_cache.h
+++ b/subversion/include/private/svn_cache.h
@@ -182,6 +182,10 @@ typedef struct svn_cache__info_t
* if they are strings. Cached values will be copied in and out of
* the cache using @a serialize_func and @a deserialize_func, respectively.
*
+ * If @a deserialize_func is NULL, then the data is returned as an
+ * svn_stringbuf_t; if @a serialize_func is NULL, then the data is
+ * assumed to be an svn_stringbuf_t.
+ *
* The cache stores up to @a pages * @a items_per_page items at a
* time. The exact cache invalidation strategy is not defined here,
* but in general, a lower value for @a items_per_page means more
@@ -224,7 +228,7 @@ svn_cache__create_inprocess(svn_cache__t **cache_p,
* other caches. @a *cache_p will be allocated in @a result_pool.
*
* If @a deserialize_func is NULL, then the data is returned as an
- * svn_string_t; if @a serialize_func is NULL, then the data is
+ * svn_stringbuf_t; if @a serialize_func is NULL, then the data is
* assumed to be an svn_stringbuf_t.
*
* These caches are always thread safe.
@@ -309,7 +313,7 @@ svn_cache__membuffer_cache_create(svn_membuffer_t **cache,
* this cache from other caches. @a *cache_p will be allocated in @a result_pool.
*
* If @a deserialize_func is NULL, then the data is returned as an
- * svn_string_t; if @a serialize_func is NULL, then the data is
+ * svn_stringbuf_t; if @a serialize_func is NULL, then the data is
* assumed to be an svn_stringbuf_t.
*
* If @a thread_safe is true, and APR is compiled with threads, all
diff --git a/subversion/include/private/svn_dep_compat.h b/subversion/include/private/svn_dep_compat.h
index 71c0b9a75493..108b67cd673e 100644
--- a/subversion/include/private/svn_dep_compat.h
+++ b/subversion/include/private/svn_dep_compat.h
@@ -78,6 +78,7 @@ void svn_hash__clear(struct apr_hash_t *ht);
#if !APR_VERSION_AT_LEAST(1,0,0)
#define APR_UINT64_C(val) UINT64_C(val)
#define APR_FPROT_OS_DEFAULT APR_OS_DEFAULT
+#define apr_hash_make_custom(pool,hash_func) apr_hash_make(pool)
#endif
#if !APR_VERSION_AT_LEAST(1,3,0)
@@ -114,6 +115,12 @@ typedef apr_uint32_t apr_uintptr_t;
#define SVN_LOCK_IS_BUSY(x) APR_STATUS_IS_EBUSY(x)
#endif
+#if !APR_VERSION_AT_LEAST(1,4,0)
+#ifndef apr_time_from_msec
+#define apr_time_from_msec(msec) ((apr_time_t)(msec) * 1000)
+#endif
+#endif
+
/**
* Check at compile time if the Serf version is at least a certain
* level.
diff --git a/subversion/include/svn_version.h b/subversion/include/svn_version.h
index 646c0286abc9..ee97c88a2f05 100644
--- a/subversion/include/svn_version.h
+++ b/subversion/include/svn_version.h
@@ -72,7 +72,7 @@ extern "C" {
*
* @since New in 1.1.
*/
-#define SVN_VER_PATCH 8
+#define SVN_VER_PATCH 9
/** @deprecated Provided for backward compatibility with the 1.0 API. */
@@ -95,7 +95,7 @@ extern "C" {
*
* Always change this at the same time as SVN_VER_NUMTAG.
*/
-#define SVN_VER_TAG " (r1568071)"
+#define SVN_VER_TAG " (r1591380)"
/** Number tag: a string describing the version.
@@ -121,7 +121,7 @@ extern "C" {
* When rolling a tarball, we automatically replace it with what we
* guess to be the correct revision number.
*/
-#define SVN_VER_REVISION 1568071
+#define SVN_VER_REVISION 1591380
/* Version strings composed from the above definitions. */
diff --git a/subversion/libsvn_client/commit_util.c b/subversion/libsvn_client/commit_util.c
index 1e2c50cd9e61..a32ec5d3ef80 100644
--- a/subversion/libsvn_client/commit_util.c
+++ b/subversion/libsvn_client/commit_util.c
@@ -892,7 +892,7 @@ harvest_status_callback(void *status_baton,
if (matches_changelists
&& (is_harvest_root || baton->changelists)
&& state_flags
- && is_added
+ && (is_added || (is_deleted && is_op_root && status->copied))
&& baton->danglers)
{
/* If a node is added, its parent must exist in the repository at the
@@ -966,17 +966,19 @@ struct handle_descendants_baton
void *cancel_baton;
svn_client__check_url_kind_t check_url_func;
void *check_url_baton;
+ svn_client__committables_t *committables;
};
/* Helper for the commit harvesters */
static svn_error_t *
handle_descendants(void *baton,
- const void *key, apr_ssize_t klen, void *val,
- apr_pool_t *pool)
+ const void *key, apr_ssize_t klen, void *val,
+ apr_pool_t *pool)
{
struct handle_descendants_baton *hdb = baton;
apr_array_header_t *commit_items = val;
apr_pool_t *iterpool = svn_pool_create(pool);
+ const char *repos_root_url = key;
int i;
for (i = 0; i < commit_items->nelts; i++)
@@ -1002,32 +1004,64 @@ handle_descendants(void *baton,
for (j = 0; j < absent_descendants->nelts; j++)
{
- int k;
- svn_boolean_t found_item = FALSE;
svn_node_kind_t kind;
+ svn_client_commit_item3_t *desc_item;
const char *relpath = APR_ARRAY_IDX(absent_descendants, j,
const char *);
const char *local_abspath = svn_dirent_join(item->path, relpath,
iterpool);
- /* If the path has a commit operation, we do nothing.
- (It will be deleted by the operation) */
- for (k = 0; k < commit_items->nelts; k++)
+ /* ### Need a sub-iterpool? */
+
+
+ /* We found a 'not present' descendant during a copy (at op_depth>0),
+ this is most commonly caused by copying some mixed revision tree.
+
+ In this case not present can imply that the node does not exist
+ in the parent revision, or that the node does. But we want to copy
+ the working copy state in which it does not exist, but might be
+ replaced. */
+
+ desc_item = svn_hash_gets(hdb->committables->by_path, local_abspath);
+
+ /* If the path has a commit operation (possibly at an higher
+ op_depth, we might want to turn an add in a replace. */
+ if (desc_item)
{
- svn_client_commit_item3_t *cmt_item =
- APR_ARRAY_IDX(commit_items, k, svn_client_commit_item3_t *);
+ const char *dir;
+ svn_boolean_t found_intermediate = FALSE;
+
+ if (desc_item->state_flags & SVN_CLIENT_COMMIT_ITEM_DELETE)
+ continue; /* We already have a delete or replace */
+ else if (!(desc_item->state_flags & SVN_CLIENT_COMMIT_ITEM_ADD))
+ continue; /* Not a copy/add, just a modification */
- if (! strcmp(cmt_item->path, local_abspath))
+ dir = svn_dirent_dirname(local_abspath, iterpool);
+
+ while (strcmp(dir, item->path))
{
- found_item = TRUE;
- break;
+ svn_client_commit_item3_t *i_item;
+
+ i_item = svn_hash_gets(hdb->committables->by_path, dir);
+
+ if (i_item)
+ {
+ if ((i_item->state_flags & SVN_CLIENT_COMMIT_ITEM_DELETE)
+ || (i_item->state_flags & SVN_CLIENT_COMMIT_ITEM_ADD))
+ {
+ found_intermediate = TRUE;
+ break;
+ }
+ }
+ dir = svn_dirent_dirname(dir, iterpool);
}
- }
- if (found_item)
- continue; /* We have an explicit delete or replace for this path */
+ if (found_intermediate)
+ continue; /* Some intermediate ancestor is an add or delete */
- /* ### Need a sub-iterpool? */
+ /* Fall through to detect if we need to turn the add in a
+ replace. */
+ }
if (hdb->check_url_func)
{
@@ -1045,25 +1079,35 @@ handle_descendants(void *baton,
else
kind = svn_node_unknown; /* 'Ok' for a delete of something */
- {
- /* Add a new commit item that describes the delete */
- apr_pool_t *result_pool = commit_items->pool;
- svn_client_commit_item3_t *new_item
- = svn_client_commit_item3_create(result_pool);
-
- new_item->path = svn_dirent_join(item->path, relpath,
- result_pool);
- new_item->kind = kind;
- new_item->url = svn_path_url_add_component2(item->url, relpath,
- result_pool);
- new_item->revision = SVN_INVALID_REVNUM;
- new_item->state_flags = SVN_CLIENT_COMMIT_ITEM_DELETE;
- new_item->incoming_prop_changes = apr_array_make(result_pool, 1,
- sizeof(svn_prop_t *));
-
- APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *)
- = new_item;
- }
+ if (desc_item)
+ {
+ /* Extend the existing add/copy item to create a replace */
+ desc_item->state_flags |= SVN_CLIENT_COMMIT_ITEM_DELETE;
+ continue;
+ }
+
+ /* Add a new commit item that describes the delete */
+
+ SVN_ERR(add_committable(hdb->committables,
+ svn_dirent_join(item->path, relpath,
+ iterpool),
+ kind,
+ repos_root_url,
+ svn_uri_skip_ancestor(
+ repos_root_url,
+ svn_path_url_add_component2(item->url,
+ relpath,
+ iterpool),
+ iterpool),
+ SVN_INVALID_REVNUM,
+ NULL /* copyfrom_relpath */,
+ SVN_INVALID_REVNUM,
+ NULL /* moved_from_abspath */,
+ SVN_CLIENT_COMMIT_ITEM_DELETE,
+ NULL /* lock tokens */,
+ NULL /* lock */,
+ commit_items->pool,
+ iterpool));
}
}
@@ -1181,6 +1225,7 @@ svn_client__harvest_committables(svn_client__committables_t **committables,
hdb.cancel_baton = ctx->cancel_baton;
hdb.check_url_func = check_url_func;
hdb.check_url_baton = check_url_baton;
+ hdb.committables = *committables;
SVN_ERR(svn_iter_apr_hash(NULL, (*committables)->by_repository,
handle_descendants, &hdb, iterpool));
@@ -1274,6 +1319,7 @@ harvest_copy_committables(void *baton, void *item, apr_pool_t *pool)
hdb.cancel_baton = btn->ctx->cancel_baton;
hdb.check_url_func = btn->check_url_func;
hdb.check_url_baton = btn->check_url_baton;
+ hdb.committables = btn->committables;
SVN_ERR(svn_iter_apr_hash(NULL, btn->committables->by_repository,
handle_descendants, &hdb, pool));
diff --git a/subversion/libsvn_client/export.c b/subversion/libsvn_client/export.c
index d6022ed68f29..c14a5f0bc017 100644
--- a/subversion/libsvn_client/export.c
+++ b/subversion/libsvn_client/export.c
@@ -267,7 +267,9 @@ export_node(void *baton,
scratch_pool));
}
- if (status->file_external)
+ /* Skip file externals if they are a descendant of the export,
+ BUT NOT if we are explictly exporting the file external. */
+ if (status->file_external && strcmp(eib->origin_abspath, local_abspath) != 0)
return SVN_NO_ERROR;
/* Produce overwrite errors for the export root */
@@ -1587,3 +1589,4 @@ svn_client_export5(svn_revnum_t *result_rev,
return SVN_NO_ERROR;
}
+
diff --git a/subversion/libsvn_client/merge.c b/subversion/libsvn_client/merge.c
index cb07f8303c2b..b314e8409b2a 100644
--- a/subversion/libsvn_client/merge.c
+++ b/subversion/libsvn_client/merge.c
@@ -322,6 +322,10 @@ typedef struct merge_cmd_baton_t {
const char *diff3_cmd;
const apr_array_header_t *merge_options;
+ /* Array of file extension patterns to preserve as extensions in
+ generated conflict files. */
+ const apr_array_header_t *ext_patterns;
+
/* RA sessions used throughout a merge operation. Opened/re-parented
as needed.
@@ -2023,17 +2027,36 @@ merge_file_changed(const char *relpath,
{
svn_boolean_t has_local_mods;
enum svn_wc_merge_outcome_t content_outcome;
+ const char *target_label;
+ const char *left_label;
+ const char *right_label;
+ const char *path_ext = "";
+
+ if (merge_b->ext_patterns && merge_b->ext_patterns->nelts)
+ {
+ svn_path_splitext(NULL, &path_ext, local_abspath, scratch_pool);
+ if (! (*path_ext
+ && svn_cstring_match_glob_list(path_ext,
+ merge_b->ext_patterns)))
+ {
+ path_ext = "";
+ }
+ }
/* xgettext: the '.working', '.merge-left.r%ld' and
'.merge-right.r%ld' strings are used to tag onto a file
name in case of a merge conflict */
- const char *target_label = _(".working");
- const char *left_label = apr_psprintf(scratch_pool,
- _(".merge-left.r%ld"),
- left_source->revision);
- const char *right_label = apr_psprintf(scratch_pool,
- _(".merge-right.r%ld"),
- right_source->revision);
+
+ target_label = apr_psprintf(scratch_pool, _(".working%s%s"),
+ *path_ext ? "." : "", path_ext);
+ left_label = apr_psprintf(scratch_pool,
+ _(".merge-left.r%ld%s%s"),
+ left_source->revision,
+ *path_ext ? "." : "", path_ext);
+ right_label = apr_psprintf(scratch_pool,
+ _(".merge-right.r%ld%s%s"),
+ right_source->revision,
+ *path_ext ? "." : "", path_ext);
SVN_ERR(svn_wc_text_modified_p2(&has_local_mods, ctx->wc_ctx,
local_abspath, FALSE, scratch_pool));
@@ -3062,7 +3085,6 @@ merge_dir_deleted(const char *relpath,
struct merge_dir_baton_t *db = dir_baton;
const char *local_abspath = svn_dirent_join(merge_b->target->abspath,
relpath, scratch_pool);
- struct dir_delete_baton_t *delb;
svn_boolean_t same;
apr_hash_t *working_props;
@@ -3093,66 +3115,69 @@ merge_dir_deleted(const char *relpath,
scratch_pool, scratch_pool));
if (merge_b->force_delete)
- same = TRUE;
+ {
+ /* In this legacy mode we just assume that a directory delete
+ matches any directory. db->delete_state is NULL */
+ same = TRUE;
+ }
else
{
+ struct dir_delete_baton_t *delb;
+
/* Compare the properties */
SVN_ERR(properties_same_p(&same, left_props, working_props,
scratch_pool));
- }
+ delb = db->delete_state;
+ assert(delb != NULL);
- delb = db->delete_state;
- assert(delb != NULL);
-
- if (! same)
- {
- delb->found_edit = TRUE;
- }
- else
- {
- store_path(delb->compared_abspaths, local_abspath);
- }
+ if (! same)
+ {
+ delb->found_edit = TRUE;
+ }
+ else
+ {
+ store_path(delb->compared_abspaths, local_abspath);
+ }
- if (delb->del_root != db)
- return SVN_NO_ERROR;
+ if (delb->del_root != db)
+ return SVN_NO_ERROR;
- if (delb->found_edit)
- same = FALSE;
- else if (merge_b->force_delete)
- same = TRUE;
- else
- {
- apr_array_header_t *ignores;
- svn_error_t *err;
- same = TRUE;
+ if (delb->found_edit)
+ same = FALSE;
+ else
+ {
+ apr_array_header_t *ignores;
+ svn_error_t *err;
+ same = TRUE;
- SVN_ERR(svn_wc_get_default_ignores(&ignores, merge_b->ctx->config,
- scratch_pool));
+ SVN_ERR(svn_wc_get_default_ignores(&ignores, merge_b->ctx->config,
+ scratch_pool));
- /* None of the descendants was modified, but maybe there are
- descendants we haven't walked?
-
- Note that we aren't interested in changes, as we already verified
- changes in the paths touched by the merge. And the existance of
- other paths is enough to mark the directory edited */
- err = svn_wc_walk_status(merge_b->ctx->wc_ctx, local_abspath,
- svn_depth_infinity, TRUE /* get-all */,
- FALSE /* no-ignore */,
- TRUE /* ignore-text-mods */, ignores,
- verify_touched_by_del_check, delb,
- merge_b->ctx->cancel_func,
- merge_b->ctx->cancel_baton,
- scratch_pool);
+ /* None of the descendants was modified, but maybe there are
+ descendants we haven't walked?
+
+ Note that we aren't interested in changes, as we already verified
+ changes in the paths touched by the merge. And the existence of
+ other paths is enough to mark the directory edited */
+ err = svn_wc_walk_status(merge_b->ctx->wc_ctx, local_abspath,
+ svn_depth_infinity, TRUE /* get-all */,
+ FALSE /* no-ignore */,
+ TRUE /* ignore-text-mods */, ignores,
+ verify_touched_by_del_check, delb,
+ merge_b->ctx->cancel_func,
+ merge_b->ctx->cancel_baton,
+ scratch_pool);
+
+ if (err)
+ {
+ if (err->apr_err != SVN_ERR_CEASE_INVOCATION)
+ return svn_error_trace(err);
- if (err)
- {
- if (err->apr_err != SVN_ERR_CEASE_INVOCATION)
- return svn_error_trace(err);
+ svn_error_clear(err);
+ }
- svn_error_clear(err);
+ same = ! delb->found_edit;
}
-
- same = ! delb->found_edit;
}
if (same && !merge_b->dry_run)
@@ -9668,6 +9693,7 @@ do_merge(apr_hash_t **modified_subtrees,
merge_cmd_baton_t merge_cmd_baton = { 0 };
svn_config_t *cfg;
const char *diff3_cmd;
+ const char *preserved_exts_str;
int i;
svn_boolean_t checked_mergeinfo_capability = FALSE;
svn_ra_session_t *ra_session1 = NULL, *ra_session2 = NULL;
@@ -9728,6 +9754,11 @@ do_merge(apr_hash_t **modified_subtrees,
if (diff3_cmd != NULL)
SVN_ERR(svn_path_cstring_to_utf8(&diff3_cmd, diff3_cmd, scratch_pool));
+ /* See which files the user wants to preserve the extension of when
+ conflict files are made. */
+ svn_config_get(cfg, &preserved_exts_str, SVN_CONFIG_SECTION_MISCELLANY,
+ SVN_CONFIG_OPTION_PRESERVED_CF_EXTS, "");
+
/* Build the merge context baton (or at least the parts of it that
don't need to be reset for each merge source). */
merge_cmd_baton.force_delete = force_delete;
@@ -9743,6 +9774,11 @@ do_merge(apr_hash_t **modified_subtrees,
merge_cmd_baton.pool = iterpool;
merge_cmd_baton.merge_options = merge_options;
merge_cmd_baton.diff3_cmd = diff3_cmd;
+ merge_cmd_baton.ext_patterns = *preserved_exts_str
+ ? svn_cstring_split(preserved_exts_str, "\n\r\t\v ",
+ FALSE, scratch_pool)
+ : NULL;
+
merge_cmd_baton.use_sleep = use_sleep;
/* Do we already know the specific subtrees with mergeinfo we want
@@ -10447,15 +10483,10 @@ merge_locked(conflict_report_t **conflict_report,
}
else
{
- merge_source_t source;
-
- source.loc1 = source1_loc;
- source.loc2 = source2_loc;
- source.ancestral = FALSE;
-
/* Build a single-item merge_source_t array. */
merge_sources = apr_array_make(scratch_pool, 1, sizeof(merge_source_t *));
- APR_ARRAY_PUSH(merge_sources, merge_source_t *) = &source;
+ APR_ARRAY_PUSH(merge_sources, merge_source_t *)
+ = merge_source_create(source1_loc, source2_loc, FALSE, scratch_pool);
}
err = do_merge(NULL, NULL, conflict_report, &use_sleep,
@@ -10761,7 +10792,7 @@ log_find_operative_revs(void *baton,
UNMERGED_CATALOG represents the history (as mergeinfo) from
TARGET_LOC that is not represented in SOURCE_LOC's
explicit/inherited mergeinfo as represented by MERGED_CATALOG.
- MERGEINFO_CATALOG may be empty if the source has no explicit or inherited
+ MERGED_CATALOG may be empty if the source has no explicit or inherited
mergeinfo.
Check that all of the unmerged revisions in UNMERGED_CATALOG's
@@ -11464,7 +11495,7 @@ find_reintegrate_merge(merge_source_t **source_p,
prefix. */
svn_mergeinfo_catalog_t final_unmerged_catalog = apr_hash_make(scratch_pool);
- SVN_ERR(find_unsynced_ranges(source_loc, yc_ancestor,
+ SVN_ERR(find_unsynced_ranges(source_loc, &target->loc,
unmerged_to_source_mergeinfo_catalog,
merged_to_source_mergeinfo_catalog,
final_unmerged_catalog,
diff --git a/subversion/libsvn_client/prop_commands.c b/subversion/libsvn_client/prop_commands.c
index a3e59c866813..06c4d21dc1e0 100644
--- a/subversion/libsvn_client/prop_commands.c
+++ b/subversion/libsvn_client/prop_commands.c
@@ -890,8 +890,14 @@ svn_client_propget5(apr_hash_t **props,
const char *copy_root_abspath;
svn_boolean_t is_copy;
- SVN_ERR(svn_dirent_get_absolute(&local_abspath, target,
- scratch_pool));
+ /* Avoid assertion on the next line when somebody accidentally asks for
+ a working copy revision on a URL */
+ if (svn_path_is_url(target))
+ return svn_error_create(SVN_ERR_CLIENT_VERSIONED_PATH_REQUIRED,
+ NULL, NULL);
+
+ SVN_ERR_ASSERT(svn_dirent_is_absolute(target));
+ local_abspath = target;
if (SVN_CLIENT__REVKIND_NEEDS_WC(peg_revision->kind))
{
@@ -1232,7 +1238,7 @@ recursive_proplist_receiver(void *baton,
Report iprops anyway */
SVN_ERR(b->wrapped_receiver(b->wrapped_receiver_baton,
- b->anchor ? b->anchor : local_abspath,
+ b->anchor ? b->anchor : b->anchor_abspath,
NULL /* prop_hash */,
b->iprops,
scratch_pool));
@@ -1293,6 +1299,12 @@ get_remote_props(const char *path_or_url,
const char *copy_root_abspath;
svn_boolean_t is_copy;
+ /* Avoid assertion on the next line when somebody accidentally asks for
+ a working copy revision on a URL */
+ if (svn_path_is_url(path_or_url))
+ return svn_error_create(SVN_ERR_CLIENT_VERSIONED_PATH_REQUIRED,
+ NULL, NULL);
+
SVN_ERR(svn_dirent_get_absolute(&local_abspath, path_or_url,
scratch_pool));
diff --git a/subversion/libsvn_delta/svndiff.c b/subversion/libsvn_delta/svndiff.c
index f4b9dc686668..b9cb28515118 100644
--- a/subversion/libsvn_delta/svndiff.c
+++ b/subversion/libsvn_delta/svndiff.c
@@ -723,8 +723,6 @@ decode_window(svn_txdelta_window_t *window, svn_filesize_t sview_offset,
svn_stringbuf_t *instout = svn_stringbuf_create_empty(pool);
svn_stringbuf_t *ndout = svn_stringbuf_create_empty(pool);
- /* these may in fact simply return references to insend */
-
SVN_ERR(zlib_decode(insend, newlen, ndout,
SVN_DELTA_WINDOW_SIZE));
SVN_ERR(zlib_decode(data, insend - data, instout,
@@ -739,7 +737,13 @@ decode_window(svn_txdelta_window_t *window, svn_filesize_t sview_offset,
}
else
{
- new_data->data = (const char *) insend;
+ /* Copy the data because an svn_string_t must have the invariant
+ data[len]=='\0'. */
+ char *buf = apr_palloc(pool, newlen + 1);
+
+ memcpy(buf, insend, newlen);
+ buf[newlen] = '\0';
+ new_data->data = buf;
new_data->len = newlen;
}
diff --git a/subversion/libsvn_fs_fs/fs.c b/subversion/libsvn_fs_fs/fs.c
index 691f416d3743..d0ba7342a0b1 100644
--- a/subversion/libsvn_fs_fs/fs.c
+++ b/subversion/libsvn_fs_fs/fs.c
@@ -98,8 +98,11 @@ fs_serialized_init(svn_fs_t *fs, apr_pool_t *common_pool, apr_pool_t *pool)
SVN_ERR(svn_mutex__init(&ffsd->txn_current_lock,
SVN_FS_FS__USE_LOCK_MUTEX, common_pool));
+ /* We also need a mutex for synchronizing access to the active
+ transaction list and free transaction pointer. This one is
+ enabled unconditionally. */
SVN_ERR(svn_mutex__init(&ffsd->txn_list_lock,
- SVN_FS_FS__USE_LOCK_MUTEX, common_pool));
+ TRUE, common_pool));
key = apr_pstrdup(common_pool, key);
status = apr_pool_userdata_set(ffsd, key, NULL, common_pool);
diff --git a/subversion/libsvn_fs_fs/fs.h b/subversion/libsvn_fs_fs/fs.h
index ea301f6f5e7e..5cdc27033fad 100644
--- a/subversion/libsvn_fs_fs/fs.h
+++ b/subversion/libsvn_fs_fs/fs.h
@@ -266,7 +266,7 @@ typedef struct fs_fs_data_t
svn_cache__t *dir_cache;
/* Fulltext cache; currently only used with memcached. Maps from
- rep key (revision/offset) to svn_string_t. */
+ rep key (revision/offset) to svn_stringbuf_t. */
svn_cache__t *fulltext_cache;
/* Access object to the atomics namespace used by revprop caching.
diff --git a/subversion/libsvn_fs_fs/rep-cache-db.h b/subversion/libsvn_fs_fs/rep-cache-db.h
index b02b052c5624..5e1510784800 100644
--- a/subversion/libsvn_fs_fs/rep-cache-db.h
+++ b/subversion/libsvn_fs_fs/rep-cache-db.h
@@ -1,4 +1,4 @@
-/* This file is automatically generated from rep-cache-db.sql and .dist_sandbox/subversion-1.8.8/subversion/libsvn_fs_fs/token-map.h.
+/* This file is automatically generated from rep-cache-db.sql and .dist_sandbox/subversion-1.8.9/subversion/libsvn_fs_fs/token-map.h.
* Do not edit this file -- edit the source and rerun gen-make.py */
#define STMT_CREATE_SCHEMA 0
diff --git a/subversion/libsvn_ra_serf/getlocks.c b/subversion/libsvn_ra_serf/getlocks.c
index 04e556179936..df201a7506f5 100644
--- a/subversion/libsvn_ra_serf/getlocks.c
+++ b/subversion/libsvn_ra_serf/getlocks.c
@@ -116,6 +116,7 @@ getlocks_closed(svn_ra_serf__xml_estate_t *xes,
if (leaving_state == LOCK)
{
const char *path = svn_hash_gets(attrs, "path");
+ const char *token = svn_hash_gets(attrs, "token");
svn_boolean_t save_lock = FALSE;
/* Filter out unwanted paths. Since Subversion only allows
@@ -128,6 +129,12 @@ getlocks_closed(svn_ra_serf__xml_estate_t *xes,
c) we've asked for depth=files or depth=immediates, and this
lock is on an immediate child of our query path.
*/
+ if (! token)
+ {
+ /* A lock without a token is not a lock; just an answer that there
+ is no lock on the node. */
+ save_lock = FALSE;
+ }
if (strcmp(lock_ctx->path, path) == 0
|| lock_ctx->requested_depth == svn_depth_infinity)
{
@@ -154,7 +161,7 @@ getlocks_closed(svn_ra_serf__xml_estate_t *xes,
them may have not been sent, so the value will be NULL. */
lock.path = path;
- lock.token = svn_hash_gets(attrs, "token");
+ lock.token = token;
lock.owner = svn_hash_gets(attrs, "owner");
lock.comment = svn_hash_gets(attrs, "comment");
@@ -234,6 +241,7 @@ svn_ra_serf__get_locks(svn_ra_session_t *ra_session,
svn_ra_serf__handler_t *handler;
svn_ra_serf__xml_context_t *xmlctx;
const char *req_url, *rel_path;
+ svn_error_t *err;
req_url = svn_path_url_add_component2(session->session_url.path, path, pool);
SVN_ERR(svn_ra_serf__get_relative_path(&rel_path, req_url, session,
@@ -260,7 +268,14 @@ svn_ra_serf__get_locks(svn_ra_session_t *ra_session,
handler->body_delegate = create_getlocks_body;
handler->body_delegate_baton = lock_ctx;
- SVN_ERR(svn_ra_serf__context_run_one(handler, pool));
+ err = svn_ra_serf__context_run_one(handler, pool);
+
+ /* Wrap the server generated error for an unsupported report with the
+ documented error for this ra function. */
+ if (svn_error_find_cause(err, SVN_ERR_UNSUPPORTED_FEATURE))
+ err = svn_error_create(SVN_ERR_RA_NOT_IMPLEMENTED, err, NULL);
+
+ SVN_ERR(err);
/* We get a 404 when a path doesn't exist in HEAD, but it might
have existed earlier (E.g. 'svn ls http://s/svn/trunk/file@1' */
diff --git a/subversion/libsvn_ra_serf/inherited_props.c b/subversion/libsvn_ra_serf/inherited_props.c
index 54eae0b5be7c..f1172e7b6815 100644
--- a/subversion/libsvn_ra_serf/inherited_props.c
+++ b/subversion/libsvn_ra_serf/inherited_props.c
@@ -41,7 +41,7 @@
/* The current state of our XML parsing. */
typedef enum iprops_state_e {
- NONE = 0,
+ INITIAL = 0,
IPROPS_REPORT,
IPROPS_ITEM,
IPROPS_PATH,
@@ -61,18 +61,12 @@ typedef struct iprops_context_t {
/* The repository's root URL. */
const char *repos_root_url;
- /* Current CDATA values*/
- svn_stringbuf_t *curr_path;
+ /* Current property name */
svn_stringbuf_t *curr_propname;
- svn_stringbuf_t *curr_propval;
- const char *curr_prop_val_encoding;
/* Current element in IPROPS. */
svn_prop_inherited_item_t *curr_iprop;
- /* Serf context completion flag for svn_ra_serf__context_run_wait() */
- svn_boolean_t done;
-
/* Path we are finding inherited properties for. This is relative to
the RA session passed to svn_ra_serf__get_inherited_props. */
const char *path;
@@ -80,162 +74,121 @@ typedef struct iprops_context_t {
svn_revnum_t revision;
} iprops_context_t;
+#define S_ SVN_XML_NAMESPACE
+static const svn_ra_serf__xml_transition_t iprops_table[] = {
+ { INITIAL, S_, SVN_DAV__INHERITED_PROPS_REPORT, IPROPS_REPORT,
+ FALSE, { NULL }, FALSE },
+
+ { IPROPS_REPORT, S_, SVN_DAV__IPROP_ITEM, IPROPS_ITEM,
+ FALSE, { NULL }, TRUE },
+
+ { IPROPS_ITEM, S_, SVN_DAV__IPROP_PATH, IPROPS_PATH,
+ TRUE, { NULL }, TRUE },
+
+ { IPROPS_ITEM, S_, SVN_DAV__IPROP_PROPNAME, IPROPS_PROPNAME,
+ TRUE, { NULL }, TRUE },
+
+ { IPROPS_ITEM, S_, SVN_DAV__IPROP_PROPVAL, IPROPS_PROPVAL,
+ TRUE, { "?V:encoding", NULL }, TRUE },
+
+ { 0 }
+};
+
+/* Conforms to svn_ra_serf__xml_opened_t */
static svn_error_t *
-start_element(svn_ra_serf__xml_parser_t *parser,
- svn_ra_serf__dav_props_t name,
- const char **attrs,
+iprops_opened(svn_ra_serf__xml_estate_t *xes,
+ void *baton,
+ int entered_state,
+ const svn_ra_serf__dav_props_t *tag,
apr_pool_t *scratch_pool)
{
- iprops_context_t *iprops_ctx = parser->user_data;
- iprops_state_e state;
+ iprops_context_t *iprops_ctx = baton;
- state = parser->state->current_state;
- if (state == NONE
- && strcmp(name.name, SVN_DAV__INHERITED_PROPS_REPORT) == 0)
+ if (entered_state == IPROPS_ITEM)
{
- svn_ra_serf__xml_push_state(parser, IPROPS_REPORT);
- }
- else if (state == IPROPS_REPORT &&
- strcmp(name.name, SVN_DAV__IPROP_ITEM) == 0)
- {
- svn_stringbuf_setempty(iprops_ctx->curr_path);
svn_stringbuf_setempty(iprops_ctx->curr_propname);
- svn_stringbuf_setempty(iprops_ctx->curr_propval);
- iprops_ctx->curr_prop_val_encoding = NULL;
- iprops_ctx->curr_iprop = NULL;
- svn_ra_serf__xml_push_state(parser, IPROPS_ITEM);
- }
- else if (state == IPROPS_ITEM &&
- strcmp(name.name, SVN_DAV__IPROP_PROPVAL) == 0)
- {
- const char *prop_val_encoding = svn_xml_get_attr_value("encoding",
- attrs);
- iprops_ctx->curr_prop_val_encoding = apr_pstrdup(iprops_ctx->pool,
- prop_val_encoding);
- svn_ra_serf__xml_push_state(parser, IPROPS_PROPVAL);
- }
- else if (state == IPROPS_ITEM &&
- strcmp(name.name, SVN_DAV__IPROP_PATH) == 0)
- {
- svn_ra_serf__xml_push_state(parser, IPROPS_PATH);
- }
- else if (state == IPROPS_ITEM &&
- strcmp(name.name, SVN_DAV__IPROP_PROPNAME) == 0)
- {
- svn_ra_serf__xml_push_state(parser, IPROPS_PROPNAME);
- }
- else if (state == IPROPS_ITEM &&
- strcmp(name.name, SVN_DAV__IPROP_PROPVAL) == 0)
- {
- svn_ra_serf__xml_push_state(parser, IPROPS_PROPVAL);
- }
+ iprops_ctx->curr_iprop = apr_pcalloc(iprops_ctx->pool,
+ sizeof(*iprops_ctx->curr_iprop));
+
+ iprops_ctx->curr_iprop->prop_hash = apr_hash_make(iprops_ctx->pool);
+ }
return SVN_NO_ERROR;
}
+/* Conforms to svn_ra_serf__xml_closed_t */
static svn_error_t *
-end_element(svn_ra_serf__xml_parser_t *parser,
- svn_ra_serf__dav_props_t name,
- apr_pool_t *scratch_pool)
+iprops_closed(svn_ra_serf__xml_estate_t *xes,
+ void *baton,
+ int leaving_state,
+ const svn_string_t *cdata,
+ apr_hash_t *attrs,
+ apr_pool_t *scratch_pool)
{
- iprops_context_t *iprops_ctx = parser->user_data;
- iprops_state_e state;
-
- state = parser->state->current_state;
+ iprops_context_t *iprops_ctx = baton;
- if (state == IPROPS_REPORT &&
- strcmp(name.name, SVN_DAV__INHERITED_PROPS_REPORT) == 0)
+ if (leaving_state == IPROPS_ITEM)
{
- svn_ra_serf__xml_pop_state(parser);
+ APR_ARRAY_PUSH(iprops_ctx->iprops, svn_prop_inherited_item_t *) =
+ iprops_ctx->curr_iprop;
+
+ iprops_ctx->curr_iprop = NULL;
}
- else if (state == IPROPS_PATH
- && strcmp(name.name, SVN_DAV__IPROP_PATH) == 0)
+ else if (leaving_state == IPROPS_PATH)
{
- iprops_ctx->curr_iprop = apr_palloc(
- iprops_ctx->pool, sizeof(svn_prop_inherited_item_t));
+ /* Every <iprop-item> has a single <iprop-path> */
+ if (iprops_ctx->curr_iprop->path_or_url)
+ return svn_error_create(SVN_ERR_XML_MALFORMED, NULL, NULL);
iprops_ctx->curr_iprop->path_or_url =
svn_path_url_add_component2(iprops_ctx->repos_root_url,
- iprops_ctx->curr_path->data,
+ cdata->data,
iprops_ctx->pool);
- iprops_ctx->curr_iprop->prop_hash = apr_hash_make(iprops_ctx->pool);
- svn_ra_serf__xml_pop_state(parser);
}
- else if (state == IPROPS_PROPVAL
- && strcmp(name.name, SVN_DAV__IPROP_PROPVAL) == 0)
+ else if (leaving_state == IPROPS_PROPNAME)
{
- const svn_string_t *prop_val;
+ if (iprops_ctx->curr_propname->len)
+ return svn_error_create(SVN_ERR_XML_MALFORMED, NULL, NULL);
- if (iprops_ctx->curr_prop_val_encoding)
- {
- svn_string_t encoded_prop_val;
+ /* Store propname for value */
+ svn_stringbuf_set(iprops_ctx->curr_propname, cdata->data);
+ }
+ else if (leaving_state == IPROPS_PROPVAL)
+ {
+ const char *encoding;
+ const svn_string_t *val_str;
+
+ if (! iprops_ctx->curr_propname->len)
+ return svn_error_create(SVN_ERR_XML_MALFORMED, NULL, NULL);
- if (strcmp(iprops_ctx->curr_prop_val_encoding, "base64") != 0)
- return svn_error_create(SVN_ERR_XML_MALFORMED, NULL, NULL);
+ encoding = svn_hash_gets(attrs, "V:encoding");
- encoded_prop_val.data = iprops_ctx->curr_propval->data;
- encoded_prop_val.len = iprops_ctx->curr_propval->len;
- prop_val = svn_base64_decode_string(&encoded_prop_val,
- iprops_ctx->pool);
+ if (encoding)
+ {
+ if (strcmp(encoding, "base64") != 0)
+ return svn_error_createf(SVN_ERR_XML_MALFORMED,
+ NULL,
+ _("Got unrecognized encoding '%s'"),
+ encoding);
+
+ /* Decode into the right pool. */
+ val_str = svn_base64_decode_string(cdata, iprops_ctx->pool);
}
else
{
- prop_val = svn_string_create_from_buf(iprops_ctx->curr_propval,
- iprops_ctx->pool);
+ /* Copy into the right pool. */
+ val_str = svn_string_dup(cdata, iprops_ctx->pool);
}
svn_hash_sets(iprops_ctx->curr_iprop->prop_hash,
apr_pstrdup(iprops_ctx->pool,
iprops_ctx->curr_propname->data),
- prop_val);
- /* Clear current propname and propval in the event there are
- multiple properties on the current path. */
+ val_str);
+ /* Clear current propname. */
svn_stringbuf_setempty(iprops_ctx->curr_propname);
- svn_stringbuf_setempty(iprops_ctx->curr_propval);
- svn_ra_serf__xml_pop_state(parser);
- }
- else if (state == IPROPS_PROPNAME
- && strcmp(name.name, SVN_DAV__IPROP_PROPNAME) == 0)
- {
- svn_ra_serf__xml_pop_state(parser);
- }
- else if (state == IPROPS_ITEM
- && strcmp(name.name, SVN_DAV__IPROP_ITEM) == 0)
- {
- APR_ARRAY_PUSH(iprops_ctx->iprops, svn_prop_inherited_item_t *) =
- iprops_ctx->curr_iprop;
- svn_ra_serf__xml_pop_state(parser);
- }
- return SVN_NO_ERROR;
-}
-
-
-static svn_error_t *
-cdata_handler(svn_ra_serf__xml_parser_t *parser,
- const char *data,
- apr_size_t len,
- apr_pool_t *scratch_pool)
-{
- iprops_context_t *iprops_ctx = parser->user_data;
- iprops_state_e state = parser->state->current_state;
-
- switch (state)
- {
- case IPROPS_PATH:
- svn_stringbuf_appendbytes(iprops_ctx->curr_path, data, len);
- break;
-
- case IPROPS_PROPNAME:
- svn_stringbuf_appendbytes(iprops_ctx->curr_propname, data, len);
- break;
-
- case IPROPS_PROPVAL:
- svn_stringbuf_appendbytes(iprops_ctx->curr_propval, data, len);
- break;
-
- default:
- break;
}
+ else
+ SVN_ERR_MALFUNCTION(); /* Invalid transition table */
return SVN_NO_ERROR;
}
@@ -281,7 +234,7 @@ svn_ra_serf__get_inherited_props(svn_ra_session_t *ra_session,
iprops_context_t *iprops_ctx;
svn_ra_serf__session_t *session = ra_session->priv;
svn_ra_serf__handler_t *handler;
- svn_ra_serf__xml_parser_t *parser_ctx;
+ svn_ra_serf__xml_context_t *xmlctx;
const char *req_url;
SVN_ERR(svn_ra_serf__get_stable_url(&req_url,
@@ -295,19 +248,20 @@ svn_ra_serf__get_inherited_props(svn_ra_session_t *ra_session,
SVN_ERR_ASSERT(session->repos_root_str);
iprops_ctx = apr_pcalloc(scratch_pool, sizeof(*iprops_ctx));
- iprops_ctx->done = FALSE;
iprops_ctx->repos_root_url = session->repos_root_str;
iprops_ctx->pool = result_pool;
- iprops_ctx->curr_path = svn_stringbuf_create_empty(scratch_pool);
iprops_ctx->curr_propname = svn_stringbuf_create_empty(scratch_pool);
- iprops_ctx->curr_propval = svn_stringbuf_create_empty(scratch_pool);
iprops_ctx->curr_iprop = NULL;
iprops_ctx->iprops = apr_array_make(result_pool, 1,
sizeof(svn_prop_inherited_item_t *));
iprops_ctx->path = path;
iprops_ctx->revision = revision;
- handler = apr_pcalloc(scratch_pool, sizeof(*handler));
+ xmlctx = svn_ra_serf__xml_context_create(iprops_table,
+ iprops_opened, iprops_closed, NULL,
+ iprops_ctx,
+ scratch_pool);
+ handler = svn_ra_serf__create_expat_handler(xmlctx, scratch_pool);
handler->method = "REPORT";
handler->path = req_url;
@@ -318,18 +272,6 @@ svn_ra_serf__get_inherited_props(svn_ra_session_t *ra_session,
handler->body_type = "text/xml";
handler->handler_pool = scratch_pool;
- parser_ctx = apr_pcalloc(scratch_pool, sizeof(*parser_ctx));
-
- parser_ctx->pool = scratch_pool;
- parser_ctx->user_data = iprops_ctx;
- parser_ctx->start = start_element;
- parser_ctx->end = end_element;
- parser_ctx->cdata = cdata_handler;
- parser_ctx->done = &iprops_ctx->done;
-
- handler->response_handler = svn_ra_serf__handle_xml_parser;
- handler->response_baton = parser_ctx;
-
err = svn_ra_serf__context_run_one(handler, scratch_pool);
SVN_ERR(svn_error_compose_create(
svn_ra_serf__error_on_status(handler->sline,
@@ -337,8 +279,7 @@ svn_ra_serf__get_inherited_props(svn_ra_session_t *ra_session,
handler->location),
err));
- if (iprops_ctx->done)
- *iprops = iprops_ctx->iprops;
+ *iprops = iprops_ctx->iprops;
return SVN_NO_ERROR;
}
diff --git a/subversion/libsvn_ra_serf/locks.c b/subversion/libsvn_ra_serf/locks.c
index db2d37125a00..252c30182a5f 100644
--- a/subversion/libsvn_ra_serf/locks.c
+++ b/subversion/libsvn_ra_serf/locks.c
@@ -156,11 +156,20 @@ locks_closed(svn_ra_serf__xml_estate_t *xes,
if (leaving_state == TIMEOUT)
{
- if (strcmp(cdata->data, "Infinite") == 0)
+ if (strcasecmp(cdata->data, "Infinite") == 0)
lock_ctx->lock->expiration_date = 0;
+ else if (strncasecmp(cdata->data, "Second-", 7) == 0)
+ {
+ unsigned n;
+ SVN_ERR(svn_cstring_atoui(&n, cdata->data+7));
+
+ lock_ctx->lock->expiration_date = apr_time_now() +
+ apr_time_from_sec(n);
+ }
else
- SVN_ERR(svn_time_from_cstring(&lock_ctx->lock->creation_date,
- cdata->data, lock_ctx->pool));
+ return svn_error_createf(SVN_ERR_RA_DAV_MALFORMED_DATA, NULL,
+ _("Invalid LOCK timeout value '%s'"),
+ cdata->data);
}
else if (leaving_state == HREF)
{
@@ -362,29 +371,30 @@ svn_error_t *
svn_ra_serf__get_lock(svn_ra_session_t *ra_session,
svn_lock_t **lock,
const char *path,
- apr_pool_t *pool)
+ apr_pool_t *result_pool)
{
svn_ra_serf__session_t *session = ra_session->priv;
svn_ra_serf__handler_t *handler;
svn_ra_serf__xml_context_t *xmlctx;
+ apr_pool_t *scratch_pool = svn_pool_create(result_pool);
lock_info_t *lock_ctx;
const char *req_url;
svn_error_t *err;
- req_url = svn_path_url_add_component2(session->session_url.path, path, pool);
-
- lock_ctx = apr_pcalloc(pool, sizeof(*lock_ctx));
+ req_url = svn_path_url_add_component2(session->session_url.path, path,
+ scratch_pool);
- lock_ctx->pool = pool;
+ lock_ctx = apr_pcalloc(scratch_pool, sizeof(*lock_ctx));
+ lock_ctx->pool = result_pool;
lock_ctx->path = req_url;
- lock_ctx->lock = svn_lock_create(pool);
- lock_ctx->lock->path = apr_pstrdup(pool, path); /* be sure */
+ lock_ctx->lock = svn_lock_create(result_pool);
+ lock_ctx->lock->path = apr_pstrdup(result_pool, path);
xmlctx = svn_ra_serf__xml_context_create(locks_ttable,
NULL, locks_closed, NULL,
lock_ctx,
- pool);
- handler = svn_ra_serf__create_expat_handler(xmlctx, pool);
+ scratch_pool);
+ handler = svn_ra_serf__create_expat_handler(xmlctx, scratch_pool);
handler->method = "PROPFIND";
handler->path = req_url;
@@ -405,7 +415,7 @@ svn_ra_serf__get_lock(svn_ra_session_t *ra_session,
lock_ctx->handler = handler;
- err = svn_ra_serf__context_run_one(handler, pool);
+ err = svn_ra_serf__context_run_one(handler, scratch_pool);
err = determine_error(handler, err);
if (handler->sline.code == 404)
@@ -420,7 +430,12 @@ svn_ra_serf__get_lock(svn_ra_session_t *ra_session,
_("Server does not support locking features"));
}
- *lock = lock_ctx->lock;
+ if (lock_ctx->lock && lock_ctx->lock->token)
+ *lock = lock_ctx->lock;
+ else
+ *lock = NULL;
+
+ svn_pool_destroy(scratch_pool);
return SVN_NO_ERROR;
}
@@ -574,7 +589,7 @@ svn_ra_serf__unlock(svn_ra_session_t *ra_session,
{
SVN_ERR(svn_ra_serf__get_lock(ra_session, &existing_lock, path,
iterpool));
- token = existing_lock->token;
+ token = existing_lock ? existing_lock->token : NULL;
if (!token)
{
err = svn_error_createf(SVN_ERR_RA_NOT_LOCKED, NULL,
diff --git a/subversion/libsvn_ra_serf/log.c b/subversion/libsvn_ra_serf/log.c
index 58a57d890ee4..02f2f2995e5f 100644
--- a/subversion/libsvn_ra_serf/log.c
+++ b/subversion/libsvn_ra_serf/log.c
@@ -571,7 +571,7 @@ svn_ra_serf__get_log(svn_ra_session_t *ra_session,
/* At this point, we may have a deleted file. So, we'll match ra_neon's
* behavior and use the larger of start or end as our 'peg' rev.
*/
- peg_rev = (start > end) ? start : end;
+ peg_rev = (start == SVN_INVALID_REVNUM || start > end) ? start : end;
SVN_ERR(svn_ra_serf__get_stable_url(&req_url, NULL /* latest_revnum */,
session, NULL /* conn */,
diff --git a/subversion/libsvn_ra_serf/update.c b/subversion/libsvn_ra_serf/update.c
index 06a16c06effd..88488ff206f5 100644
--- a/subversion/libsvn_ra_serf/update.c
+++ b/subversion/libsvn_ra_serf/update.c
@@ -329,9 +329,6 @@ struct report_context_t {
files/dirs? */
svn_boolean_t add_props_included;
- /* Path -> lock token mapping. */
- apr_hash_t *lock_path_tokens;
-
/* Path -> const char *repos_relpath mapping */
apr_hash_t *switched_paths;
@@ -2248,8 +2245,6 @@ end_report(svn_ra_serf__xml_parser_t *parser,
info->pool);
}
- info->lock_token = svn_hash_gets(ctx->lock_path_tokens, info->name);
-
if (info->lock_token && !info->fetch_props)
info->fetch_props = TRUE;
@@ -2578,13 +2573,6 @@ set_path(void *report_baton,
SVN_ERR(svn_io_file_write_full(report->body_file, buf->data, buf->len,
NULL, pool));
- if (lock_token)
- {
- svn_hash_sets(report->lock_path_tokens,
- apr_pstrdup(report->pool, path),
- apr_pstrdup(report->pool, lock_token));
- }
-
return SVN_NO_ERROR;
}
@@ -2660,12 +2648,6 @@ link_path(void *report_baton,
if (!*path)
report->root_is_switched = TRUE;
- if (lock_token)
- {
- svn_hash_sets(report->lock_path_tokens,
- path, apr_pstrdup(report->pool, lock_token));
- }
-
return APR_SUCCESS;
}
@@ -3193,7 +3175,6 @@ make_update_reporter(svn_ra_session_t *ra_session,
report->ignore_ancestry = ignore_ancestry;
report->send_copyfrom_args = send_copyfrom_args;
report->text_deltas = text_deltas;
- report->lock_path_tokens = apr_hash_make(report->pool);
report->switched_paths = apr_hash_make(report->pool);
report->source = src_path;
diff --git a/subversion/libsvn_ra_svn/protocol b/subversion/libsvn_ra_svn/protocol
index d056b74a5138..4d98b2bb19d5 100644
--- a/subversion/libsvn_ra_svn/protocol
+++ b/subversion/libsvn_ra_svn/protocol
@@ -310,6 +310,7 @@ second place for auth-request point as noted below.
sends file contents as a series of strings, terminated by the empty
string, followed by a second empty command response to indicate
whether an error occurred during the sending of the file.
+ NOTE: the standard client never sends want-iprops, it uses get-iprops.
get-dir
params: ( path:string [ rev:number ] want-props:bool want-contents:bool
@@ -321,6 +322,7 @@ second place for auth-request point as noted below.
[ last-author:string ] )
dirent-field: kind | size | has-props | created-rev | time | last-author
| word
+ NOTE: the standard client never sends want-iprops, it uses get-iprops.
check-path
params: ( path:string [ rev:number ] )
diff --git a/subversion/libsvn_repos/dump.c b/subversion/libsvn_repos/dump.c
index 75843d7057ad..a64b1809c7a0 100644
--- a/subversion/libsvn_repos/dump.c
+++ b/subversion/libsvn_repos/dump.c
@@ -217,6 +217,49 @@ make_dir_baton(const char *path,
}
+/* If the mergeinfo in MERGEINFO_STR refers to any revisions older than
+ * OLDEST_DUMPED_REV, issue a warning and set *FOUND_OLD_MERGEINFO to TRUE,
+ * otherwise leave *FOUND_OLD_MERGEINFO unchanged.
+ */
+static svn_error_t *
+verify_mergeinfo_revisions(svn_boolean_t *found_old_mergeinfo,
+ const char *mergeinfo_str,
+ svn_revnum_t oldest_dumped_rev,
+ svn_repos_notify_func_t notify_func,
+ void *notify_baton,
+ apr_pool_t *pool)
+{
+ svn_mergeinfo_t mergeinfo, old_mergeinfo;
+
+ SVN_ERR(svn_mergeinfo_parse(&mergeinfo, mergeinfo_str, pool));
+ SVN_ERR(svn_mergeinfo__filter_mergeinfo_by_ranges(
+ &old_mergeinfo, mergeinfo,
+ oldest_dumped_rev - 1, 0,
+ TRUE, pool, pool));
+
+ if (apr_hash_count(old_mergeinfo))
+ {
+ svn_repos_notify_t *notify =
+ svn_repos_notify_create(svn_repos_notify_warning, pool);
+
+ notify->warning = svn_repos_notify_warning_found_old_mergeinfo;
+ notify->warning_str = apr_psprintf(
+ pool,
+ _("Mergeinfo referencing revision(s) prior "
+ "to the oldest dumped revision (r%ld). "
+ "Loading this dump may result in invalid "
+ "mergeinfo."),
+ oldest_dumped_rev);
+
+ if (found_old_mergeinfo)
+ *found_old_mergeinfo = TRUE;
+ notify_func(notify_baton, notify, pool);
+ }
+
+ return SVN_NO_ERROR;
+}
+
+
/* This helper is the main "meat" of the editor -- it does all the
work of writing a node record.
@@ -475,32 +518,13 @@ dump_node(struct edit_baton *eb,
SVN_PROP_MERGEINFO);
if (mergeinfo_str)
{
- svn_mergeinfo_t mergeinfo, old_mergeinfo;
-
- SVN_ERR(svn_mergeinfo_parse(&mergeinfo, mergeinfo_str->data,
- pool));
- SVN_ERR(svn_mergeinfo__filter_mergeinfo_by_ranges(
- &old_mergeinfo, mergeinfo,
- eb->oldest_dumped_rev - 1, 0,
- TRUE, pool, pool));
- if (apr_hash_count(old_mergeinfo))
- {
- svn_repos_notify_t *notify =
- svn_repos_notify_create(svn_repos_notify_warning, pool);
-
- notify->warning = svn_repos_notify_warning_found_old_mergeinfo;
- notify->warning_str = apr_psprintf(
- pool,
- _("Mergeinfo referencing revision(s) prior "
- "to the oldest dumped revision (r%ld). "
- "Loading this dump may result in invalid "
- "mergeinfo."),
- eb->oldest_dumped_rev);
-
- if (eb->found_old_mergeinfo)
- *eb->found_old_mergeinfo = TRUE;
- eb->notify_func(eb->notify_baton, notify, pool);
- }
+ /* An error in verifying the mergeinfo must not prevent dumping
+ the data. Ignore any such error. */
+ svn_error_clear(verify_mergeinfo_revisions(
+ eb->found_old_mergeinfo,
+ mergeinfo_str->data, eb->oldest_dumped_rev,
+ eb->notify_func, eb->notify_baton,
+ pool));
}
}
diff --git a/subversion/libsvn_repos/fs-wrap.c b/subversion/libsvn_repos/fs-wrap.c
index 755fa61bbb05..006b2861eb06 100644
--- a/subversion/libsvn_repos/fs-wrap.c
+++ b/subversion/libsvn_repos/fs-wrap.c
@@ -117,6 +117,8 @@ svn_repos_fs_begin_txn_for_commit2(svn_fs_txn_t **txn_p,
const char *txn_name;
svn_string_t *author = svn_hash_gets(revprop_table, SVN_PROP_REVISION_AUTHOR);
apr_hash_t *hooks_env;
+ svn_error_t *err;
+ svn_fs_txn_t *txn;
/* Parse the hooks-env file (if any). */
SVN_ERR(svn_repos__parse_hooks_env(&hooks_env, repos->hooks_env_path,
@@ -124,21 +126,30 @@ svn_repos_fs_begin_txn_for_commit2(svn_fs_txn_t **txn_p,
/* Begin the transaction, ask for the fs to do on-the-fly lock checks.
We fetch its name, too, so the start-commit hook can use it. */
- SVN_ERR(svn_fs_begin_txn2(txn_p, repos->fs, rev,
+ SVN_ERR(svn_fs_begin_txn2(&txn, repos->fs, rev,
SVN_FS_TXN_CHECK_LOCKS, pool));
- SVN_ERR(svn_fs_txn_name(&txn_name, *txn_p, pool));
+ err = svn_fs_txn_name(&txn_name, txn, pool);
+ if (err)
+ return svn_error_compose_create(err, svn_fs_abort_txn(txn, pool));
/* We pass the revision properties to the filesystem by adding them
as properties on the txn. Later, when we commit the txn, these
properties will be copied into the newly created revision. */
revprops = svn_prop_hash_to_array(revprop_table, pool);
- SVN_ERR(svn_repos_fs_change_txn_props(*txn_p, revprops, pool));
+ err = svn_repos_fs_change_txn_props(txn, revprops, pool);
+ if (err)
+ return svn_error_compose_create(err, svn_fs_abort_txn(txn, pool));
/* Run start-commit hooks. */
- SVN_ERR(svn_repos__hooks_start_commit(repos, hooks_env,
- author ? author->data : NULL,
- repos->client_capabilities, txn_name,
- pool));
+ err = svn_repos__hooks_start_commit(repos, hooks_env,
+ author ? author->data : NULL,
+ repos->client_capabilities, txn_name,
+ pool);
+ if (err)
+ return svn_error_compose_create(err, svn_fs_abort_txn(txn, pool));
+
+ /* We have API promise that *TXN_P is unaffected on faulure. */
+ *txn_p = txn;
return SVN_NO_ERROR;
}
diff --git a/subversion/libsvn_subr/cache-memcache.c b/subversion/libsvn_subr/cache-memcache.c
index 5332d04428e3..500426d0ff1c 100644
--- a/subversion/libsvn_subr/cache-memcache.c
+++ b/subversion/libsvn_subr/cache-memcache.c
@@ -203,9 +203,10 @@ memcache_get(void **value_p,
}
else
{
- svn_string_t *value = apr_pcalloc(result_pool, sizeof(*value));
+ svn_stringbuf_t *value = svn_stringbuf_create_empty(result_pool);
value->data = data;
- value->len = data_len;
+ value->blocksize = data_len;
+ value->len = data_len - 1; /* account for trailing NUL */
*value_p = value;
}
}
@@ -263,7 +264,7 @@ memcache_set(void *cache_void,
{
svn_stringbuf_t *value_str = value;
data = value_str->data;
- data_len = value_str->len;
+ data_len = value_str->len + 1; /* copy trailing NUL */
}
err = memcache_internal_set(cache_void, key, data, data_len, subpool);
diff --git a/subversion/libsvn_subr/config_file.c b/subversion/libsvn_subr/config_file.c
index c705b14fd40a..9969b8eb9700 100644
--- a/subversion/libsvn_subr/config_file.c
+++ b/subversion/libsvn_subr/config_file.c
@@ -69,7 +69,7 @@ typedef struct parse_context_t
/* Parser buffer for getc() to avoid call overhead into several libraries
for every character */
- char parser_buffer[SVN_STREAM_CHUNK_SIZE]; /* Larger than most config files */
+ char parser_buffer[SVN__STREAM_CHUNK_SIZE]; /* Larger than most config files */
size_t buffer_pos; /* Current position within parser_buffer */
size_t buffer_size; /* parser_buffer contains this many bytes */
} parse_context_t;
diff --git a/subversion/libsvn_subr/internal_statements.h b/subversion/libsvn_subr/internal_statements.h
index 84c616f38bee..4fa938932ecc 100644
--- a/subversion/libsvn_subr/internal_statements.h
+++ b/subversion/libsvn_subr/internal_statements.h
@@ -1,4 +1,4 @@
-/* This file is automatically generated from internal_statements.sql and .dist_sandbox/subversion-1.8.8/subversion/libsvn_subr/token-map.h.
+/* This file is automatically generated from internal_statements.sql and .dist_sandbox/subversion-1.8.9/subversion/libsvn_subr/token-map.h.
* Do not edit this file -- edit the source and rerun gen-make.py */
#define STMT_INTERNAL_SAVEPOINT_SVN 0
diff --git a/subversion/libsvn_subr/io.c b/subversion/libsvn_subr/io.c
index f0956e2aa8e9..08f2e326d7fe 100644
--- a/subversion/libsvn_subr/io.c
+++ b/subversion/libsvn_subr/io.c
@@ -1243,32 +1243,44 @@ svn_io_sleep_for_timestamps(const char *path, apr_pool_t *pool)
{
/* Very simplistic but safe approach:
If the filesystem has < sec mtime we can be reasonably sure
- that the filesystem has <= millisecond precision.
+ that the filesystem has some sub-second resolution. On Windows
+ it is likely to be sub-millisecond; on Linux systems it depends
+ on the filesystem, ext4 is typically 1ms, 4ms or 10ms resolution.
## Perhaps find a better algorithm here. This will fail once
- in every 1000 cases on a millisecond precision filesystem.
+ in every 1000 cases on a millisecond precision filesystem
+ if the mtime happens to be an exact second.
But better to fail once in every thousand cases than every
time, like we did before.
- (All tested filesystems I know have at least microsecond precision.)
Note for further research on algorithm:
- FAT32 has < 1 sec precision on ctime, but 2 sec on mtime */
+ FAT32 has < 1 sec precision on ctime, but 2 sec on mtime.
- /* Sleep for at least 1 millisecond.
- (t < 1000 will be round to 0 in apr) */
- apr_sleep(1000);
+ Linux/ext4 with CONFIG_HZ=250 has high resolution
+ apr_time_now and although the filesystem timestamps
+ have similar high precision they are only updated with
+ a coarser 4ms resolution. */
- return;
+ /* 10 milliseconds after now. */
+#ifndef SVN_HI_RES_SLEEP_MS
+#define SVN_HI_RES_SLEEP_MS 10
+#endif
+ then = now + apr_time_from_msec(SVN_HI_RES_SLEEP_MS);
}
- now = apr_time_now(); /* Extract the time used for the path stat */
-
- if (now >= then)
- return; /* Passing negative values may suspend indefinitely (Windows) */
+ /* Remove time taken to do stat() from sleep. */
+ now = apr_time_now();
}
- apr_sleep(then - now);
+ if (now >= then)
+ return; /* Passing negative values may suspend indefinitely (Windows) */
+
+ /* (t < 1000 will be round to 0 in apr) */
+ if (then - now < 1000)
+ apr_sleep(1000);
+ else
+ apr_sleep(then - now);
}
diff --git a/subversion/libsvn_subr/prompt.c b/subversion/libsvn_subr/prompt.c
index 92ee6a27888a..d0c29d025cb3 100644
--- a/subversion/libsvn_subr/prompt.c
+++ b/subversion/libsvn_subr/prompt.c
@@ -177,7 +177,7 @@ terminal_open(terminal_handle_t **terminal, svn_boolean_t noecho,
and stderr for prompting. */
apr_file_t *tmpfd;
status = apr_file_open(&tmpfd, "/dev/tty",
- APR_FOPEN_READ | APR_FOPEN_WRITE,
+ APR_READ | APR_WRITE,
APR_OS_DEFAULT, pool);
*terminal = apr_palloc(pool, sizeof(terminal_handle_t));
if (!status)
diff --git a/subversion/libsvn_subr/sysinfo.c b/subversion/libsvn_subr/sysinfo.c
index a506310aa906..f20050cdb014 100644
--- a/subversion/libsvn_subr/sysinfo.c
+++ b/subversion/libsvn_subr/sysinfo.c
@@ -1022,6 +1022,7 @@ release_name_from_version(const char *osver)
case 6: return "Snow Leopard";
case 7: return "Lion";
case 8: return "Mountain Lion";
+ case 9: return "Mavericks";
}
return NULL;
diff --git a/subversion/libsvn_subr/version.c b/subversion/libsvn_subr/version.c
index 03dc83b8ca05..0859489f44c5 100644
--- a/subversion/libsvn_subr/version.c
+++ b/subversion/libsvn_subr/version.c
@@ -136,7 +136,7 @@ svn_version_extended(svn_boolean_t verbose,
info->build_time = __TIME__;
info->build_host = SVN_BUILD_HOST;
info->copyright = apr_pstrdup
- (pool, _("Copyright (C) 2013 The Apache Software Foundation.\n"
+ (pool, _("Copyright (C) 2014 The Apache Software Foundation.\n"
"This software consists of contributions made by many people;\n"
"see the NOTICE file for more information.\n"
"Subversion is open source software, see "
diff --git a/subversion/libsvn_wc/status.c b/subversion/libsvn_wc/status.c
index 1440b2ee5e4a..fa57b0aee5e5 100644
--- a/subversion/libsvn_wc/status.c
+++ b/subversion/libsvn_wc/status.c
@@ -242,144 +242,7 @@ struct file_baton
/** Code **/
-/* Fill in *INFO with the information it would contain if it were
- obtained from svn_wc__db_read_children_info. */
-static svn_error_t *
-read_info(const struct svn_wc__db_info_t **info,
- const char *local_abspath,
- svn_wc__db_t *db,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- struct svn_wc__db_info_t *mtb = apr_pcalloc(result_pool, sizeof(*mtb));
- const svn_checksum_t *checksum;
- const char *original_repos_relpath;
-
- SVN_ERR(svn_wc__db_read_info(&mtb->status, &mtb->kind,
- &mtb->revnum, &mtb->repos_relpath,
- &mtb->repos_root_url, &mtb->repos_uuid,
- &mtb->changed_rev, &mtb->changed_date,
- &mtb->changed_author, &mtb->depth,
- &checksum, NULL, &original_repos_relpath, NULL,
- NULL, NULL, &mtb->lock, &mtb->recorded_size,
- &mtb->recorded_time, &mtb->changelist,
- &mtb->conflicted, &mtb->op_root,
- &mtb->had_props, &mtb->props_mod,
- &mtb->have_base, &mtb->have_more_work, NULL,
- db, local_abspath,
- result_pool, scratch_pool));
-
- SVN_ERR(svn_wc__db_wclocked(&mtb->locked, db, local_abspath, scratch_pool));
-
- /* Maybe we have to get some shadowed lock from BASE to make our test suite
- happy... (It might be completely unrelated, but...) */
- if (mtb->have_base
- && (mtb->status == svn_wc__db_status_added
- || mtb->status == svn_wc__db_status_deleted
- || mtb->kind == svn_node_file))
- {
- svn_boolean_t update_root;
- svn_wc__db_lock_t **lock_arg = NULL;
-
- if (mtb->status == svn_wc__db_status_added
- || mtb->status == svn_wc__db_status_deleted)
- lock_arg = &mtb->lock;
-
- SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL,
- lock_arg, NULL, NULL, &update_root,
- db, local_abspath,
- result_pool, scratch_pool));
-
- mtb->file_external = (update_root && mtb->kind == svn_node_file);
-
- if (mtb->status == svn_wc__db_status_deleted)
- {
- const char *moved_to_abspath;
- const char *moved_to_op_root_abspath;
-
- /* NOTE: we can't use op-root-ness as a condition here since a base
- * node can be the root of a move and still not be an explicit
- * op-root (having a working node with op_depth == pathelements).
- *
- * Both these (almost identical) situations showcase this:
- * svn mv a/b bb
- * svn del a
- * and
- * svn mv a aa
- * svn mv aa/b bb
- * In both, 'bb' is moved from 'a/b', but 'a/b' has no op_depth>0
- * node at all, as its parent 'a' is locally deleted. */
-
- SVN_ERR(svn_wc__db_scan_deletion(NULL,
- &moved_to_abspath,
- NULL,
- &moved_to_op_root_abspath,
- db, local_abspath,
- scratch_pool, scratch_pool));
- if (moved_to_abspath != NULL
- && moved_to_op_root_abspath != NULL
- && strcmp(moved_to_abspath, moved_to_op_root_abspath) == 0)
- {
- mtb->moved_to_abspath = apr_pstrdup(result_pool,
- moved_to_abspath);
- }
- /* ### ^^^ THIS SUCKS. For at least two reasons:
- * 1) We scan the node deletion and that's technically not necessary.
- * We'd be fine to know if this is an actual root of a move.
- * 2) From the elaborately calculated results, we backwards-guess
- * whether this is a root.
- * It works ok, and this code only gets called when a node is an
- * explicit target of a 'status'. But it would be better to do this
- * differently.
- * We could return moved-to via svn_wc__db_base_get_info() (called
- * just above), but as moved-to is only intended to be returned for
- * roots of a move, that doesn't fit too well. */
- }
- }
-
- /* ### svn_wc__db_read_info() could easily return the moved-here flag. But
- * for now... (The per-dir query for recursive status is far more optimal.)
- * Note that this actually scans around to get the full path, for a bool.
- * This bool then gets returned, later is evaluated, and if true leads to
- * the same paths being scanned again. We'd want to obtain this bool here as
- * cheaply as svn_wc__db_read_children_info() does. */
- if (mtb->status == svn_wc__db_status_added)
- {
- svn_wc__db_status_t status;
- SVN_ERR(svn_wc__db_scan_addition(&status, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- db, local_abspath,
- result_pool, scratch_pool));
-
- mtb->moved_here = (status == svn_wc__db_status_moved_here);
- mtb->incomplete = (status == svn_wc__db_status_incomplete);
- }
-
- mtb->has_checksum = (checksum != NULL);
- mtb->copied = (original_repos_relpath != NULL);
-
-#ifdef HAVE_SYMLINK
- if (mtb->kind == svn_node_file
- && (mtb->had_props || mtb->props_mod))
- {
- apr_hash_t *properties;
-
- if (mtb->props_mod)
- SVN_ERR(svn_wc__db_read_props(&properties, db, local_abspath,
- scratch_pool, scratch_pool));
- else
- SVN_ERR(svn_wc__db_read_pristine_props(&properties, db, local_abspath,
- scratch_pool, scratch_pool));
-
- mtb->special = (NULL != svn_hash_gets(properties, SVN_PROP_SPECIAL));
- }
-#endif
- *info = mtb;
-
- return SVN_NO_ERROR;
-}
/* Return *REPOS_RELPATH and *REPOS_ROOT_URL for LOCAL_ABSPATH using
information in INFO if available, falling back on
@@ -421,13 +284,42 @@ get_repos_root_url_relpath(const char **repos_relpath,
db, local_abspath,
result_pool, scratch_pool));
}
- else if (info->have_base)
+ else if (info->status == svn_wc__db_status_deleted
+ && !info->have_more_work
+ && info->have_base)
{
SVN_ERR(svn_wc__db_scan_base_repos(repos_relpath, repos_root_url,
repos_uuid,
db, local_abspath,
result_pool, scratch_pool));
}
+ else if (info->status == svn_wc__db_status_deleted)
+ {
+ const char *work_del_abspath;
+ const char *add_abspath;
+
+ /* Handles working DELETE and the special case where there is just
+ svn_wc__db_status_not_present in WORKING */
+
+ SVN_ERR(svn_wc__db_scan_deletion(NULL, NULL, &work_del_abspath, NULL,
+ db, local_abspath,
+ scratch_pool, scratch_pool));
+
+ /* The parent of what has been deleted must be added */
+ add_abspath = svn_dirent_dirname(work_del_abspath, scratch_pool);
+
+ SVN_ERR(svn_wc__db_scan_addition(NULL, NULL, repos_relpath,
+ repos_root_url, repos_uuid, NULL,
+ NULL, NULL, NULL,
+ db, add_abspath,
+ result_pool, scratch_pool));
+
+ *repos_relpath = svn_relpath_join(*repos_relpath,
+ svn_dirent_skip_ancestor(
+ add_abspath,
+ local_abspath),
+ result_pool);
+ }
else
{
*repos_relpath = NULL;
@@ -493,7 +385,8 @@ assemble_status(svn_wc_status3_t **status,
if (!info)
- SVN_ERR(read_info(&info, local_abspath, db, result_pool, scratch_pool));
+ SVN_ERR(svn_wc__db_read_single_info(&info, db, local_abspath,
+ result_pool, scratch_pool));
if (!info->repos_relpath || !parent_repos_relpath)
switched_p = FALSE;
@@ -799,8 +692,11 @@ assemble_status(svn_wc_status3_t **status,
stat->changelist = apr_pstrdup(result_pool, info->changelist);
stat->moved_from_abspath = moved_from_abspath;
- if (info->moved_to_abspath)
- stat->moved_to_abspath = apr_pstrdup(result_pool, info->moved_to_abspath);
+
+ /* ### TODO: Handle multiple moved_to values properly */
+ if (info->moved_to)
+ stat->moved_to_abspath = apr_pstrdup(result_pool,
+ info->moved_to->moved_to_abspath);
stat->file_external = info->file_external;
@@ -1345,8 +1241,8 @@ get_dir_status(const struct walk_status_baton *wb,
SVN_ERR(err);
if (!dir_info)
- SVN_ERR(read_info(&dir_info, local_abspath, wb->db,
- scratch_pool, iterpool));
+ SVN_ERR(svn_wc__db_read_single_info(&dir_info, wb->db, local_abspath,
+ scratch_pool, iterpool));
SVN_ERR(get_repos_root_url_relpath(&dir_repos_relpath, &dir_repos_root_url,
&dir_repos_uuid, dir_info,
@@ -1506,8 +1402,9 @@ get_child_status(const struct walk_status_baton *wb,
if (dirent->kind == svn_node_none)
dirent = NULL;
- SVN_ERR(read_info(&dir_info, parent_abspath, wb->db,
- scratch_pool, scratch_pool));
+ SVN_ERR(svn_wc__db_read_single_info(&dir_info,
+ wb->db, parent_abspath,
+ scratch_pool, scratch_pool));
SVN_ERR(get_repos_root_url_relpath(&dir_repos_relpath, &dir_repos_root_url,
&dir_repos_uuid, dir_info,
@@ -2710,7 +2607,8 @@ svn_wc__internal_walk_status(svn_wc__db_t *db,
ignore_patterns = ignores;
}
- err = read_info(&info, local_abspath, db, scratch_pool, scratch_pool);
+ err = svn_wc__db_read_single_info(&info, db, local_abspath,
+ scratch_pool, scratch_pool);
if (err)
{
diff --git a/subversion/libsvn_wc/wc-checks.h b/subversion/libsvn_wc/wc-checks.h
index 14d7ef3a7552..9fd40bd9fad9 100644
--- a/subversion/libsvn_wc/wc-checks.h
+++ b/subversion/libsvn_wc/wc-checks.h
@@ -1,4 +1,4 @@
-/* This file is automatically generated from wc-checks.sql and .dist_sandbox/subversion-1.8.8/subversion/libsvn_wc/token-map.h.
+/* This file is automatically generated from wc-checks.sql and .dist_sandbox/subversion-1.8.9/subversion/libsvn_wc/token-map.h.
* Do not edit this file -- edit the source and rerun gen-make.py */
#define STMT_VERIFICATION_TRIGGERS 0
diff --git a/subversion/libsvn_wc/wc-metadata.h b/subversion/libsvn_wc/wc-metadata.h
index 0ab17d4537d6..e39db8ab6ba1 100644
--- a/subversion/libsvn_wc/wc-metadata.h
+++ b/subversion/libsvn_wc/wc-metadata.h
@@ -1,4 +1,4 @@
-/* This file is automatically generated from wc-metadata.sql and .dist_sandbox/subversion-1.8.8/subversion/libsvn_wc/token-map.h.
+/* This file is automatically generated from wc-metadata.sql and .dist_sandbox/subversion-1.8.9/subversion/libsvn_wc/token-map.h.
* Do not edit this file -- edit the source and rerun gen-make.py */
#define STMT_CREATE_SCHEMA 0
@@ -163,6 +163,8 @@
#define STMT_4_INFO {"STMT_INSTALL_SCHEMA_STATISTICS", NULL}
#define STMT_4 \
"ANALYZE sqlite_master; " \
+ "DELETE FROM sqlite_stat1 " \
+ "WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK'); " \
"INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \
" ('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1'); " \
"INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \
diff --git a/subversion/libsvn_wc/wc-metadata.sql b/subversion/libsvn_wc/wc-metadata.sql
index 848293d2cebb..e4b226e09ea5 100644
--- a/subversion/libsvn_wc/wc-metadata.sql
+++ b/subversion/libsvn_wc/wc-metadata.sql
@@ -597,6 +597,9 @@ CREATE UNIQUE INDEX I_EXTERNALS_DEFINED ON EXTERNALS (wc_id,
-- STMT_INSTALL_SCHEMA_STATISTICS
ANALYZE sqlite_master; /* Creates empty sqlite_stat1 if necessary */
+DELETE FROM sqlite_stat1
+WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK');
+
INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1');
INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
diff --git a/subversion/libsvn_wc/wc-queries.h b/subversion/libsvn_wc/wc-queries.h
index 0246ee50b99c..3fc6b2fe0f5f 100644
--- a/subversion/libsvn_wc/wc-queries.h
+++ b/subversion/libsvn_wc/wc-queries.h
@@ -1,4 +1,4 @@
-/* This file is automatically generated from wc-queries.sql and .dist_sandbox/subversion-1.8.8/subversion/libsvn_wc/token-map.h.
+/* This file is automatically generated from wc-queries.sql and .dist_sandbox/subversion-1.8.9/subversion/libsvn_wc/token-map.h.
* Do not edit this file -- edit the source and rerun gen-make.py */
#define STMT_SELECT_NODE_INFO 0
@@ -221,7 +221,7 @@
#define STMT_21 \
"DELETE " \
"FROM NODES " \
- "WHERE wc_id = ?1 AND local_relpath = ?2 " \
+ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
""
#define STMT_DELETE_ACTUAL_FOR_BASE_RECURSIVE 22
@@ -516,9 +516,18 @@
"LIMIT 1 " \
""
-#define STMT_SELECT_OP_DEPTH_MOVED_TO 50
-#define STMT_50_INFO {"STMT_SELECT_OP_DEPTH_MOVED_TO", NULL}
+#define STMT_SELECT_MOVED_TO_NODE 50
+#define STMT_50_INFO {"STMT_SELECT_MOVED_TO_NODE", NULL}
#define STMT_50 \
+ "SELECT op_depth, moved_to " \
+ "FROM nodes " \
+ "WHERE wc_id = ?1 AND local_relpath = ?2 AND moved_to IS NOT NULL " \
+ "ORDER BY op_depth DESC " \
+ ""
+
+#define STMT_SELECT_OP_DEPTH_MOVED_TO 51
+#define STMT_51_INFO {"STMT_SELECT_OP_DEPTH_MOVED_TO", NULL}
+#define STMT_51 \
"SELECT op_depth, moved_to, repos_path, revision " \
"FROM nodes " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
@@ -527,26 +536,26 @@
"ORDER BY op_depth DESC " \
""
-#define STMT_SELECT_MOVED_TO 51
-#define STMT_51_INFO {"STMT_SELECT_MOVED_TO", NULL}
-#define STMT_51 \
+#define STMT_SELECT_MOVED_TO 52
+#define STMT_52_INFO {"STMT_SELECT_MOVED_TO", NULL}
+#define STMT_52 \
"SELECT moved_to " \
"FROM nodes " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
""
-#define STMT_SELECT_MOVED_HERE 52
-#define STMT_52_INFO {"STMT_SELECT_MOVED_HERE", NULL}
-#define STMT_52 \
+#define STMT_SELECT_MOVED_HERE 53
+#define STMT_53_INFO {"STMT_SELECT_MOVED_HERE", NULL}
+#define STMT_53 \
"SELECT moved_here, presence, repos_path, revision " \
"FROM nodes " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth >= ?3 " \
"ORDER BY op_depth " \
""
-#define STMT_SELECT_MOVED_BACK 53
-#define STMT_53_INFO {"STMT_SELECT_MOVED_BACK", NULL}
-#define STMT_53 \
+#define STMT_SELECT_MOVED_BACK 54
+#define STMT_54_INFO {"STMT_SELECT_MOVED_BACK", NULL}
+#define STMT_54 \
"SELECT u.local_relpath, " \
" u.presence, u.repos_id, u.repos_path, u.revision, " \
" l.presence, l.repos_id, l.repos_path, l.revision, " \
@@ -572,9 +581,9 @@
" AND u.op_depth = ?4 " \
""
-#define STMT_DELETE_MOVED_BACK 54
-#define STMT_54_INFO {"STMT_DELETE_MOVED_BACK", NULL}
-#define STMT_54 \
+#define STMT_DELETE_MOVED_BACK 55
+#define STMT_55_INFO {"STMT_DELETE_MOVED_BACK", NULL}
+#define STMT_55 \
"DELETE FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 " \
@@ -582,71 +591,71 @@
" AND op_depth = ?3 " \
""
-#define STMT_DELETE_LOCK 55
-#define STMT_55_INFO {"STMT_DELETE_LOCK", NULL}
-#define STMT_55 \
+#define STMT_DELETE_LOCK 56
+#define STMT_56_INFO {"STMT_DELETE_LOCK", NULL}
+#define STMT_56 \
"DELETE FROM lock " \
"WHERE repos_id = ?1 AND repos_relpath = ?2 " \
""
-#define STMT_DELETE_LOCK_RECURSIVELY 56
-#define STMT_56_INFO {"STMT_DELETE_LOCK_RECURSIVELY", NULL}
-#define STMT_56 \
+#define STMT_DELETE_LOCK_RECURSIVELY 57
+#define STMT_57_INFO {"STMT_DELETE_LOCK_RECURSIVELY", NULL}
+#define STMT_57 \
"DELETE FROM lock " \
"WHERE repos_id = ?1 AND (repos_relpath = ?2 OR (((repos_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((repos_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
""
-#define STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE 57
-#define STMT_57_INFO {"STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE", NULL}
-#define STMT_57 \
+#define STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE 58
+#define STMT_58_INFO {"STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE", NULL}
+#define STMT_58 \
"UPDATE nodes SET dav_cache = NULL " \
"WHERE dav_cache IS NOT NULL AND wc_id = ?1 AND op_depth = 0 " \
" AND (local_relpath = ?2 " \
" OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
""
-#define STMT_RECURSIVE_UPDATE_NODE_REPO 58
-#define STMT_58_INFO {"STMT_RECURSIVE_UPDATE_NODE_REPO", NULL}
-#define STMT_58 \
+#define STMT_RECURSIVE_UPDATE_NODE_REPO 59
+#define STMT_59_INFO {"STMT_RECURSIVE_UPDATE_NODE_REPO", NULL}
+#define STMT_59 \
"UPDATE nodes SET repos_id = ?4, dav_cache = NULL " \
"WHERE (wc_id = ?1 AND local_relpath = ?2 AND repos_id = ?3) " \
" OR (wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
" AND repos_id = ?3) " \
""
-#define STMT_UPDATE_LOCK_REPOS_ID 59
-#define STMT_59_INFO {"STMT_UPDATE_LOCK_REPOS_ID", NULL}
-#define STMT_59 \
+#define STMT_UPDATE_LOCK_REPOS_ID 60
+#define STMT_60_INFO {"STMT_UPDATE_LOCK_REPOS_ID", NULL}
+#define STMT_60 \
"UPDATE lock SET repos_id = ?2 " \
"WHERE repos_id = ?1 " \
""
-#define STMT_UPDATE_NODE_FILEINFO 60
-#define STMT_60_INFO {"STMT_UPDATE_NODE_FILEINFO", NULL}
-#define STMT_60 \
+#define STMT_UPDATE_NODE_FILEINFO 61
+#define STMT_61_INFO {"STMT_UPDATE_NODE_FILEINFO", NULL}
+#define STMT_61 \
"UPDATE nodes SET translated_size = ?3, last_mod_time = ?4 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
" AND op_depth = (SELECT MAX(op_depth) FROM nodes " \
" WHERE wc_id = ?1 AND local_relpath = ?2) " \
""
-#define STMT_INSERT_ACTUAL_CONFLICT 61
-#define STMT_61_INFO {"STMT_INSERT_ACTUAL_CONFLICT", NULL}
-#define STMT_61 \
+#define STMT_INSERT_ACTUAL_CONFLICT 62
+#define STMT_62_INFO {"STMT_INSERT_ACTUAL_CONFLICT", NULL}
+#define STMT_62 \
"INSERT INTO actual_node (wc_id, local_relpath, conflict_data, parent_relpath) " \
"VALUES (?1, ?2, ?3, ?4) " \
""
-#define STMT_UPDATE_ACTUAL_CONFLICT 62
-#define STMT_62_INFO {"STMT_UPDATE_ACTUAL_CONFLICT", NULL}
-#define STMT_62 \
+#define STMT_UPDATE_ACTUAL_CONFLICT 63
+#define STMT_63_INFO {"STMT_UPDATE_ACTUAL_CONFLICT", NULL}
+#define STMT_63 \
"UPDATE actual_node SET conflict_data = ?3 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
""
-#define STMT_UPDATE_ACTUAL_CHANGELISTS 63
-#define STMT_63_INFO {"STMT_UPDATE_ACTUAL_CHANGELISTS", NULL}
-#define STMT_63 \
+#define STMT_UPDATE_ACTUAL_CHANGELISTS 64
+#define STMT_64_INFO {"STMT_UPDATE_ACTUAL_CHANGELISTS", NULL}
+#define STMT_64 \
"UPDATE actual_node SET changelist = ?3 " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
@@ -656,16 +665,16 @@
" AND kind = 'file') " \
""
-#define STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST 64
-#define STMT_64_INFO {"STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST", NULL}
-#define STMT_64 \
+#define STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST 65
+#define STMT_65_INFO {"STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST", NULL}
+#define STMT_65 \
"UPDATE actual_node SET changelist = NULL " \
" WHERE wc_id = ?1 AND local_relpath = ?2 " \
""
-#define STMT_MARK_SKIPPED_CHANGELIST_DIRS 65
-#define STMT_65_INFO {"STMT_MARK_SKIPPED_CHANGELIST_DIRS", NULL}
-#define STMT_65 \
+#define STMT_MARK_SKIPPED_CHANGELIST_DIRS 66
+#define STMT_66_INFO {"STMT_MARK_SKIPPED_CHANGELIST_DIRS", NULL}
+#define STMT_66 \
"INSERT INTO changelist_list (wc_id, local_relpath, notify, changelist) " \
"SELECT wc_id, local_relpath, 7, ?3 " \
"FROM targets_list " \
@@ -674,17 +683,17 @@
" AND kind = 'dir' " \
""
-#define STMT_RESET_ACTUAL_WITH_CHANGELIST 66
-#define STMT_66_INFO {"STMT_RESET_ACTUAL_WITH_CHANGELIST", NULL}
-#define STMT_66 \
+#define STMT_RESET_ACTUAL_WITH_CHANGELIST 67
+#define STMT_67_INFO {"STMT_RESET_ACTUAL_WITH_CHANGELIST", NULL}
+#define STMT_67 \
"REPLACE INTO actual_node ( " \
" wc_id, local_relpath, parent_relpath, changelist) " \
"VALUES (?1, ?2, ?3, ?4) " \
""
-#define STMT_CREATE_CHANGELIST_LIST 67
-#define STMT_67_INFO {"STMT_CREATE_CHANGELIST_LIST", NULL}
-#define STMT_67 \
+#define STMT_CREATE_CHANGELIST_LIST 68
+#define STMT_68_INFO {"STMT_CREATE_CHANGELIST_LIST", NULL}
+#define STMT_68 \
"DROP TABLE IF EXISTS changelist_list; " \
"CREATE TEMPORARY TABLE changelist_list ( " \
" wc_id INTEGER NOT NULL, " \
@@ -695,9 +704,9 @@
") " \
""
-#define STMT_CREATE_CHANGELIST_TRIGGER 68
-#define STMT_68_INFO {"STMT_CREATE_CHANGELIST_TRIGGER", NULL}
-#define STMT_68 \
+#define STMT_CREATE_CHANGELIST_TRIGGER 69
+#define STMT_69_INFO {"STMT_CREATE_CHANGELIST_TRIGGER", NULL}
+#define STMT_69 \
"DROP TRIGGER IF EXISTS trigger_changelist_list_change; " \
"CREATE TEMPORARY TRIGGER trigger_changelist_list_change " \
"BEFORE UPDATE ON actual_node " \
@@ -712,25 +721,25 @@
"END " \
""
-#define STMT_FINALIZE_CHANGELIST 69
-#define STMT_69_INFO {"STMT_FINALIZE_CHANGELIST", NULL}
-#define STMT_69 \
+#define STMT_FINALIZE_CHANGELIST 70
+#define STMT_70_INFO {"STMT_FINALIZE_CHANGELIST", NULL}
+#define STMT_70 \
"DROP TRIGGER trigger_changelist_list_change; " \
"DROP TABLE changelist_list; " \
"DROP TABLE targets_list " \
""
-#define STMT_SELECT_CHANGELIST_LIST 70
-#define STMT_70_INFO {"STMT_SELECT_CHANGELIST_LIST", NULL}
-#define STMT_70 \
+#define STMT_SELECT_CHANGELIST_LIST 71
+#define STMT_71_INFO {"STMT_SELECT_CHANGELIST_LIST", NULL}
+#define STMT_71 \
"SELECT wc_id, local_relpath, notify, changelist " \
"FROM changelist_list " \
"ORDER BY wc_id, local_relpath ASC, notify DESC " \
""
-#define STMT_CREATE_TARGETS_LIST 71
-#define STMT_71_INFO {"STMT_CREATE_TARGETS_LIST", NULL}
-#define STMT_71 \
+#define STMT_CREATE_TARGETS_LIST 72
+#define STMT_72_INFO {"STMT_CREATE_TARGETS_LIST", NULL}
+#define STMT_72 \
"DROP TABLE IF EXISTS targets_list; " \
"CREATE TEMPORARY TABLE targets_list ( " \
" wc_id INTEGER NOT NULL, " \
@@ -741,15 +750,15 @@
" ); " \
""
-#define STMT_DROP_TARGETS_LIST 72
-#define STMT_72_INFO {"STMT_DROP_TARGETS_LIST", NULL}
-#define STMT_72 \
+#define STMT_DROP_TARGETS_LIST 73
+#define STMT_73_INFO {"STMT_DROP_TARGETS_LIST", NULL}
+#define STMT_73 \
"DROP TABLE targets_list " \
""
-#define STMT_INSERT_TARGET 73
-#define STMT_73_INFO {"STMT_INSERT_TARGET", NULL}
-#define STMT_73 \
+#define STMT_INSERT_TARGET 74
+#define STMT_74_INFO {"STMT_INSERT_TARGET", NULL}
+#define STMT_74 \
"INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
"SELECT wc_id, local_relpath, parent_relpath, kind " \
"FROM nodes_current " \
@@ -757,9 +766,9 @@
" AND local_relpath = ?2 " \
""
-#define STMT_INSERT_TARGET_DEPTH_FILES 74
-#define STMT_74_INFO {"STMT_INSERT_TARGET_DEPTH_FILES", NULL}
-#define STMT_74 \
+#define STMT_INSERT_TARGET_DEPTH_FILES 75
+#define STMT_75_INFO {"STMT_INSERT_TARGET_DEPTH_FILES", NULL}
+#define STMT_75 \
"INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
"SELECT wc_id, local_relpath, parent_relpath, kind " \
"FROM nodes_current " \
@@ -768,9 +777,9 @@
" AND kind = 'file' " \
""
-#define STMT_INSERT_TARGET_DEPTH_IMMEDIATES 75
-#define STMT_75_INFO {"STMT_INSERT_TARGET_DEPTH_IMMEDIATES", NULL}
-#define STMT_75 \
+#define STMT_INSERT_TARGET_DEPTH_IMMEDIATES 76
+#define STMT_76_INFO {"STMT_INSERT_TARGET_DEPTH_IMMEDIATES", NULL}
+#define STMT_76 \
"INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
"SELECT wc_id, local_relpath, parent_relpath, kind " \
"FROM nodes_current " \
@@ -778,9 +787,9 @@
" AND parent_relpath = ?2 " \
""
-#define STMT_INSERT_TARGET_DEPTH_INFINITY 76
-#define STMT_76_INFO {"STMT_INSERT_TARGET_DEPTH_INFINITY", NULL}
-#define STMT_76 \
+#define STMT_INSERT_TARGET_DEPTH_INFINITY 77
+#define STMT_77_INFO {"STMT_INSERT_TARGET_DEPTH_INFINITY", NULL}
+#define STMT_77 \
"INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
"SELECT wc_id, local_relpath, parent_relpath, kind " \
"FROM nodes_current " \
@@ -788,9 +797,9 @@
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
""
-#define STMT_INSERT_TARGET_WITH_CHANGELIST 77
-#define STMT_77_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST", NULL}
-#define STMT_77 \
+#define STMT_INSERT_TARGET_WITH_CHANGELIST 78
+#define STMT_78_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST", NULL}
+#define STMT_78 \
"INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
"SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \
" FROM actual_node AS A JOIN nodes_current AS N " \
@@ -800,9 +809,9 @@
" AND A.changelist = ?3 " \
""
-#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES 78
-#define STMT_78_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES", NULL}
-#define STMT_78 \
+#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES 79
+#define STMT_79_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES", NULL}
+#define STMT_79 \
"INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
"SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \
" FROM actual_node AS A JOIN nodes_current AS N " \
@@ -813,9 +822,9 @@
" AND A.changelist = ?3 " \
""
-#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES 79
-#define STMT_79_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES", NULL}
-#define STMT_79 \
+#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES 80
+#define STMT_80_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES", NULL}
+#define STMT_80 \
"INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
"SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \
" FROM actual_node AS A JOIN nodes_current AS N " \
@@ -825,9 +834,9 @@
" AND A.changelist = ?3 " \
""
-#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY 80
-#define STMT_80_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY", NULL}
-#define STMT_80 \
+#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY 81
+#define STMT_81_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY", NULL}
+#define STMT_81 \
"INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
"SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \
" FROM actual_node AS A JOIN nodes_current AS N " \
@@ -837,18 +846,18 @@
" AND A.changelist = ?3 " \
""
-#define STMT_INSERT_ACTUAL_EMPTIES 81
-#define STMT_81_INFO {"STMT_INSERT_ACTUAL_EMPTIES", NULL}
-#define STMT_81 \
+#define STMT_INSERT_ACTUAL_EMPTIES 82
+#define STMT_82_INFO {"STMT_INSERT_ACTUAL_EMPTIES", NULL}
+#define STMT_82 \
"INSERT OR IGNORE INTO actual_node ( " \
" wc_id, local_relpath, parent_relpath) " \
"SELECT wc_id, local_relpath, parent_relpath " \
"FROM targets_list " \
""
-#define STMT_DELETE_ACTUAL_EMPTY 82
-#define STMT_82_INFO {"STMT_DELETE_ACTUAL_EMPTY", NULL}
-#define STMT_82 \
+#define STMT_DELETE_ACTUAL_EMPTY 83
+#define STMT_83_INFO {"STMT_DELETE_ACTUAL_EMPTY", NULL}
+#define STMT_83 \
"DELETE FROM actual_node " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
" AND properties IS NULL " \
@@ -860,9 +869,9 @@
" AND left_checksum IS NULL " \
""
-#define STMT_DELETE_ACTUAL_EMPTIES 83
-#define STMT_83_INFO {"STMT_DELETE_ACTUAL_EMPTIES", NULL}
-#define STMT_83 \
+#define STMT_DELETE_ACTUAL_EMPTIES 84
+#define STMT_84_INFO {"STMT_DELETE_ACTUAL_EMPTIES", NULL}
+#define STMT_84 \
"DELETE FROM actual_node " \
"WHERE wc_id = ?1 " \
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
@@ -875,25 +884,25 @@
" AND left_checksum IS NULL " \
""
-#define STMT_DELETE_BASE_NODE 84
-#define STMT_84_INFO {"STMT_DELETE_BASE_NODE", NULL}
-#define STMT_84 \
+#define STMT_DELETE_BASE_NODE 85
+#define STMT_85_INFO {"STMT_DELETE_BASE_NODE", NULL}
+#define STMT_85 \
"DELETE FROM nodes " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
""
-#define STMT_DELETE_WORKING_NODE 85
-#define STMT_85_INFO {"STMT_DELETE_WORKING_NODE", NULL}
-#define STMT_85 \
+#define STMT_DELETE_WORKING_NODE 86
+#define STMT_86_INFO {"STMT_DELETE_WORKING_NODE", NULL}
+#define STMT_86 \
"DELETE FROM nodes " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
" AND op_depth = (SELECT MAX(op_depth) FROM nodes " \
" WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0) " \
""
-#define STMT_DELETE_LOWEST_WORKING_NODE 86
-#define STMT_86_INFO {"STMT_DELETE_LOWEST_WORKING_NODE", NULL}
-#define STMT_86 \
+#define STMT_DELETE_LOWEST_WORKING_NODE 87
+#define STMT_87_INFO {"STMT_DELETE_LOWEST_WORKING_NODE", NULL}
+#define STMT_87 \
"DELETE FROM nodes " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
" AND op_depth = (SELECT MIN(op_depth) FROM nodes " \
@@ -901,16 +910,16 @@
" AND presence = 'base-deleted' " \
""
-#define STMT_DELETE_ALL_LAYERS 87
-#define STMT_87_INFO {"STMT_DELETE_ALL_LAYERS", NULL}
-#define STMT_87 \
+#define STMT_DELETE_NODE_ALL_LAYERS 88
+#define STMT_88_INFO {"STMT_DELETE_NODE_ALL_LAYERS", NULL}
+#define STMT_88 \
"DELETE FROM nodes " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
""
-#define STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE 88
-#define STMT_88_INFO {"STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE", NULL}
-#define STMT_88 \
+#define STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE 89
+#define STMT_89_INFO {"STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE", NULL}
+#define STMT_89 \
"DELETE FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 " \
@@ -918,25 +927,25 @@
" AND op_depth >= ?3 " \
""
-#define STMT_DELETE_ACTUAL_NODE 89
-#define STMT_89_INFO {"STMT_DELETE_ACTUAL_NODE", NULL}
-#define STMT_89 \
+#define STMT_DELETE_ACTUAL_NODE 90
+#define STMT_90_INFO {"STMT_DELETE_ACTUAL_NODE", NULL}
+#define STMT_90 \
"DELETE FROM actual_node " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
""
-#define STMT_DELETE_ACTUAL_NODE_RECURSIVE 90
-#define STMT_90_INFO {"STMT_DELETE_ACTUAL_NODE_RECURSIVE", NULL}
-#define STMT_90 \
+#define STMT_DELETE_ACTUAL_NODE_RECURSIVE 91
+#define STMT_91_INFO {"STMT_DELETE_ACTUAL_NODE_RECURSIVE", NULL}
+#define STMT_91 \
"DELETE FROM actual_node " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 " \
" OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
""
-#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST 91
-#define STMT_91_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST", NULL}
-#define STMT_91 \
+#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST 92
+#define STMT_92_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST", NULL}
+#define STMT_92 \
"DELETE FROM actual_node " \
"WHERE wc_id = ?1 " \
" AND local_relpath = ?2 " \
@@ -946,9 +955,9 @@
" AND c.kind = 'file')) " \
""
-#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 92
-#define STMT_92_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL}
-#define STMT_92 \
+#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 93
+#define STMT_93_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL}
+#define STMT_93 \
"DELETE FROM actual_node " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 " \
@@ -960,9 +969,9 @@
" AND c.kind = 'file')) " \
""
-#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST 93
-#define STMT_93_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST", NULL}
-#define STMT_93 \
+#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST 94
+#define STMT_94_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST", NULL}
+#define STMT_94 \
"UPDATE actual_node " \
"SET properties = NULL, " \
" text_mod = NULL, " \
@@ -974,9 +983,9 @@
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
""
-#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 94
-#define STMT_94_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL}
-#define STMT_94 \
+#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 95
+#define STMT_95_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL}
+#define STMT_95 \
"UPDATE actual_node " \
"SET properties = NULL, " \
" text_mod = NULL, " \
@@ -990,108 +999,108 @@
" OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
""
-#define STMT_UPDATE_NODE_BASE_DEPTH 95
-#define STMT_95_INFO {"STMT_UPDATE_NODE_BASE_DEPTH", NULL}
-#define STMT_95 \
+#define STMT_UPDATE_NODE_BASE_DEPTH 96
+#define STMT_96_INFO {"STMT_UPDATE_NODE_BASE_DEPTH", NULL}
+#define STMT_96 \
"UPDATE nodes SET depth = ?3 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
" AND kind='dir' " \
""
-#define STMT_UPDATE_NODE_BASE_PRESENCE 96
-#define STMT_96_INFO {"STMT_UPDATE_NODE_BASE_PRESENCE", NULL}
-#define STMT_96 \
+#define STMT_UPDATE_NODE_BASE_PRESENCE 97
+#define STMT_97_INFO {"STMT_UPDATE_NODE_BASE_PRESENCE", NULL}
+#define STMT_97 \
"UPDATE nodes SET presence = ?3 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
""
-#define STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH 97
-#define STMT_97_INFO {"STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH", NULL}
-#define STMT_97 \
+#define STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH 98
+#define STMT_98_INFO {"STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH", NULL}
+#define STMT_98 \
"UPDATE nodes SET presence = ?3, revision = ?4, repos_path = ?5 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
""
-#define STMT_LOOK_FOR_WORK 98
-#define STMT_98_INFO {"STMT_LOOK_FOR_WORK", NULL}
-#define STMT_98 \
+#define STMT_LOOK_FOR_WORK 99
+#define STMT_99_INFO {"STMT_LOOK_FOR_WORK", NULL}
+#define STMT_99 \
"SELECT id FROM work_queue LIMIT 1 " \
""
-#define STMT_INSERT_WORK_ITEM 99
-#define STMT_99_INFO {"STMT_INSERT_WORK_ITEM", NULL}
-#define STMT_99 \
+#define STMT_INSERT_WORK_ITEM 100
+#define STMT_100_INFO {"STMT_INSERT_WORK_ITEM", NULL}
+#define STMT_100 \
"INSERT INTO work_queue (work) VALUES (?1) " \
""
-#define STMT_SELECT_WORK_ITEM 100
-#define STMT_100_INFO {"STMT_SELECT_WORK_ITEM", NULL}
-#define STMT_100 \
+#define STMT_SELECT_WORK_ITEM 101
+#define STMT_101_INFO {"STMT_SELECT_WORK_ITEM", NULL}
+#define STMT_101 \
"SELECT id, work FROM work_queue ORDER BY id LIMIT 1 " \
""
-#define STMT_DELETE_WORK_ITEM 101
-#define STMT_101_INFO {"STMT_DELETE_WORK_ITEM", NULL}
-#define STMT_101 \
+#define STMT_DELETE_WORK_ITEM 102
+#define STMT_102_INFO {"STMT_DELETE_WORK_ITEM", NULL}
+#define STMT_102 \
"DELETE FROM work_queue WHERE id = ?1 " \
""
-#define STMT_INSERT_OR_IGNORE_PRISTINE 102
-#define STMT_102_INFO {"STMT_INSERT_OR_IGNORE_PRISTINE", NULL}
-#define STMT_102 \
+#define STMT_INSERT_OR_IGNORE_PRISTINE 103
+#define STMT_103_INFO {"STMT_INSERT_OR_IGNORE_PRISTINE", NULL}
+#define STMT_103 \
"INSERT OR IGNORE INTO pristine (checksum, md5_checksum, size, refcount) " \
"VALUES (?1, ?2, ?3, 0) " \
""
-#define STMT_INSERT_PRISTINE 103
-#define STMT_103_INFO {"STMT_INSERT_PRISTINE", NULL}
-#define STMT_103 \
+#define STMT_INSERT_PRISTINE 104
+#define STMT_104_INFO {"STMT_INSERT_PRISTINE", NULL}
+#define STMT_104 \
"INSERT INTO pristine (checksum, md5_checksum, size, refcount) " \
"VALUES (?1, ?2, ?3, 0) " \
""
-#define STMT_SELECT_PRISTINE 104
-#define STMT_104_INFO {"STMT_SELECT_PRISTINE", NULL}
-#define STMT_104 \
+#define STMT_SELECT_PRISTINE 105
+#define STMT_105_INFO {"STMT_SELECT_PRISTINE", NULL}
+#define STMT_105 \
"SELECT md5_checksum " \
"FROM pristine " \
"WHERE checksum = ?1 " \
""
-#define STMT_SELECT_PRISTINE_SIZE 105
-#define STMT_105_INFO {"STMT_SELECT_PRISTINE_SIZE", NULL}
-#define STMT_105 \
+#define STMT_SELECT_PRISTINE_SIZE 106
+#define STMT_106_INFO {"STMT_SELECT_PRISTINE_SIZE", NULL}
+#define STMT_106 \
"SELECT size " \
"FROM pristine " \
"WHERE checksum = ?1 LIMIT 1 " \
""
-#define STMT_SELECT_PRISTINE_BY_MD5 106
-#define STMT_106_INFO {"STMT_SELECT_PRISTINE_BY_MD5", NULL}
-#define STMT_106 \
+#define STMT_SELECT_PRISTINE_BY_MD5 107
+#define STMT_107_INFO {"STMT_SELECT_PRISTINE_BY_MD5", NULL}
+#define STMT_107 \
"SELECT checksum " \
"FROM pristine " \
"WHERE md5_checksum = ?1 " \
""
-#define STMT_SELECT_UNREFERENCED_PRISTINES 107
-#define STMT_107_INFO {"STMT_SELECT_UNREFERENCED_PRISTINES", NULL}
-#define STMT_107 \
+#define STMT_SELECT_UNREFERENCED_PRISTINES 108
+#define STMT_108_INFO {"STMT_SELECT_UNREFERENCED_PRISTINES", NULL}
+#define STMT_108 \
"SELECT checksum " \
"FROM pristine " \
"WHERE refcount = 0 " \
""
-#define STMT_DELETE_PRISTINE_IF_UNREFERENCED 108
-#define STMT_108_INFO {"STMT_DELETE_PRISTINE_IF_UNREFERENCED", NULL}
-#define STMT_108 \
+#define STMT_DELETE_PRISTINE_IF_UNREFERENCED 109
+#define STMT_109_INFO {"STMT_DELETE_PRISTINE_IF_UNREFERENCED", NULL}
+#define STMT_109 \
"DELETE FROM pristine " \
"WHERE checksum = ?1 AND refcount = 0 " \
""
-#define STMT_SELECT_COPY_PRISTINES 109
-#define STMT_109_INFO {"STMT_SELECT_COPY_PRISTINES", NULL}
-#define STMT_109 \
+#define STMT_SELECT_COPY_PRISTINES 110
+#define STMT_110_INFO {"STMT_SELECT_COPY_PRISTINES", NULL}
+#define STMT_110 \
"SELECT n.checksum, md5_checksum, size " \
"FROM nodes_current n " \
"LEFT JOIN pristine p ON n.checksum = p.checksum " \
@@ -1109,62 +1118,62 @@
" AND n.checksum IS NOT NULL " \
""
-#define STMT_VACUUM 110
-#define STMT_110_INFO {"STMT_VACUUM", NULL}
-#define STMT_110 \
+#define STMT_VACUUM 111
+#define STMT_111_INFO {"STMT_VACUUM", NULL}
+#define STMT_111 \
"VACUUM " \
""
-#define STMT_SELECT_CONFLICT_VICTIMS 111
-#define STMT_111_INFO {"STMT_SELECT_CONFLICT_VICTIMS", NULL}
-#define STMT_111 \
+#define STMT_SELECT_CONFLICT_VICTIMS 112
+#define STMT_112_INFO {"STMT_SELECT_CONFLICT_VICTIMS", NULL}
+#define STMT_112 \
"SELECT local_relpath, conflict_data " \
"FROM actual_node " \
"WHERE wc_id = ?1 AND parent_relpath = ?2 AND " \
" NOT (conflict_data IS NULL) " \
""
-#define STMT_INSERT_WC_LOCK 112
-#define STMT_112_INFO {"STMT_INSERT_WC_LOCK", NULL}
-#define STMT_112 \
+#define STMT_INSERT_WC_LOCK 113
+#define STMT_113_INFO {"STMT_INSERT_WC_LOCK", NULL}
+#define STMT_113 \
"INSERT INTO wc_lock (wc_id, local_dir_relpath, locked_levels) " \
"VALUES (?1, ?2, ?3) " \
""
-#define STMT_SELECT_WC_LOCK 113
-#define STMT_113_INFO {"STMT_SELECT_WC_LOCK", NULL}
-#define STMT_113 \
+#define STMT_SELECT_WC_LOCK 114
+#define STMT_114_INFO {"STMT_SELECT_WC_LOCK", NULL}
+#define STMT_114 \
"SELECT locked_levels FROM wc_lock " \
"WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \
""
-#define STMT_SELECT_ANCESTOR_WCLOCKS 114
-#define STMT_114_INFO {"STMT_SELECT_ANCESTOR_WCLOCKS", NULL}
-#define STMT_114 \
+#define STMT_SELECT_ANCESTOR_WCLOCKS 115
+#define STMT_115_INFO {"STMT_SELECT_ANCESTOR_WCLOCKS", NULL}
+#define STMT_115 \
"SELECT local_dir_relpath, locked_levels FROM wc_lock " \
"WHERE wc_id = ?1 " \
" AND ((local_dir_relpath >= ?3 AND local_dir_relpath <= ?2) " \
" OR local_dir_relpath = '') " \
""
-#define STMT_DELETE_WC_LOCK 115
-#define STMT_115_INFO {"STMT_DELETE_WC_LOCK", NULL}
-#define STMT_115 \
+#define STMT_DELETE_WC_LOCK 116
+#define STMT_116_INFO {"STMT_DELETE_WC_LOCK", NULL}
+#define STMT_116 \
"DELETE FROM wc_lock " \
"WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \
""
-#define STMT_FIND_WC_LOCK 116
-#define STMT_116_INFO {"STMT_FIND_WC_LOCK", NULL}
-#define STMT_116 \
+#define STMT_FIND_WC_LOCK 117
+#define STMT_117_INFO {"STMT_FIND_WC_LOCK", NULL}
+#define STMT_117 \
"SELECT local_dir_relpath FROM wc_lock " \
"WHERE wc_id = ?1 " \
" AND (((local_dir_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_dir_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
""
-#define STMT_DELETE_WC_LOCK_ORPHAN 117
-#define STMT_117_INFO {"STMT_DELETE_WC_LOCK_ORPHAN", NULL}
-#define STMT_117 \
+#define STMT_DELETE_WC_LOCK_ORPHAN 118
+#define STMT_118_INFO {"STMT_DELETE_WC_LOCK_ORPHAN", NULL}
+#define STMT_118 \
"DELETE FROM wc_lock " \
"WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \
"AND NOT EXISTS (SELECT 1 FROM nodes " \
@@ -1172,9 +1181,9 @@
" AND nodes.local_relpath = wc_lock.local_dir_relpath) " \
""
-#define STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE 118
-#define STMT_118_INFO {"STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE", NULL}
-#define STMT_118 \
+#define STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE 119
+#define STMT_119_INFO {"STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE", NULL}
+#define STMT_119 \
"DELETE FROM wc_lock " \
"WHERE wc_id = ?1 " \
" AND (local_dir_relpath = ?2 " \
@@ -1184,9 +1193,9 @@
" AND nodes.local_relpath = wc_lock.local_dir_relpath) " \
""
-#define STMT_APPLY_CHANGES_TO_BASE_NODE 119
-#define STMT_119_INFO {"STMT_APPLY_CHANGES_TO_BASE_NODE", NULL}
-#define STMT_119 \
+#define STMT_APPLY_CHANGES_TO_BASE_NODE 120
+#define STMT_120_INFO {"STMT_APPLY_CHANGES_TO_BASE_NODE", NULL}
+#define STMT_120 \
"INSERT OR REPLACE INTO nodes ( " \
" wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \
" revision, presence, depth, kind, changed_revision, changed_date, " \
@@ -1200,18 +1209,18 @@
" AND op_depth = 0)) " \
""
-#define STMT_INSTALL_WORKING_NODE_FOR_DELETE 120
-#define STMT_120_INFO {"STMT_INSTALL_WORKING_NODE_FOR_DELETE", NULL}
-#define STMT_120 \
+#define STMT_INSTALL_WORKING_NODE_FOR_DELETE 121
+#define STMT_121_INFO {"STMT_INSTALL_WORKING_NODE_FOR_DELETE", NULL}
+#define STMT_121 \
"INSERT OR REPLACE INTO nodes ( " \
" wc_id, local_relpath, op_depth, " \
" parent_relpath, presence, kind) " \
"VALUES(?1, ?2, ?3, ?4, 'base-deleted', ?5) " \
""
-#define STMT_DELETE_NO_LOWER_LAYER 121
-#define STMT_121_INFO {"STMT_DELETE_NO_LOWER_LAYER", NULL}
-#define STMT_121 \
+#define STMT_DELETE_NO_LOWER_LAYER 122
+#define STMT_122_INFO {"STMT_DELETE_NO_LOWER_LAYER", NULL}
+#define STMT_122 \
"DELETE FROM nodes " \
" WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
@@ -1223,9 +1232,9 @@
" AND n.presence IN ('normal', 'incomplete')) " \
""
-#define STMT_REPLACE_WITH_BASE_DELETED 122
-#define STMT_122_INFO {"STMT_REPLACE_WITH_BASE_DELETED", NULL}
-#define STMT_122 \
+#define STMT_REPLACE_WITH_BASE_DELETED 123
+#define STMT_123_INFO {"STMT_REPLACE_WITH_BASE_DELETED", NULL}
+#define STMT_123 \
"INSERT OR REPLACE INTO nodes (wc_id, local_relpath, op_depth, parent_relpath, " \
" kind, moved_to, presence) " \
"SELECT wc_id, local_relpath, op_depth, parent_relpath, " \
@@ -1236,9 +1245,9 @@
" AND op_depth = ?3 " \
""
-#define STMT_INSERT_DELETE_FROM_NODE_RECURSIVE 123
-#define STMT_123_INFO {"STMT_INSERT_DELETE_FROM_NODE_RECURSIVE", NULL}
-#define STMT_123 \
+#define STMT_INSERT_DELETE_FROM_NODE_RECURSIVE 124
+#define STMT_124_INFO {"STMT_INSERT_DELETE_FROM_NODE_RECURSIVE", NULL}
+#define STMT_124 \
"INSERT INTO nodes ( " \
" wc_id, local_relpath, op_depth, parent_relpath, presence, kind) " \
"SELECT wc_id, local_relpath, ?4 , parent_relpath, 'base-deleted', " \
@@ -1252,9 +1261,9 @@
" AND file_external IS NULL " \
""
-#define STMT_INSERT_WORKING_NODE_FROM_BASE_COPY 124
-#define STMT_124_INFO {"STMT_INSERT_WORKING_NODE_FROM_BASE_COPY", NULL}
-#define STMT_124 \
+#define STMT_INSERT_WORKING_NODE_FROM_BASE_COPY 125
+#define STMT_125_INFO {"STMT_INSERT_WORKING_NODE_FROM_BASE_COPY", NULL}
+#define STMT_125 \
"INSERT INTO nodes ( " \
" wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \
" revision, presence, depth, kind, changed_revision, changed_date, " \
@@ -1268,9 +1277,9 @@
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
""
-#define STMT_INSERT_DELETE_FROM_BASE 125
-#define STMT_125_INFO {"STMT_INSERT_DELETE_FROM_BASE", NULL}
-#define STMT_125 \
+#define STMT_INSERT_DELETE_FROM_BASE 126
+#define STMT_126_INFO {"STMT_INSERT_DELETE_FROM_BASE", NULL}
+#define STMT_126 \
"INSERT INTO nodes ( " \
" wc_id, local_relpath, op_depth, parent_relpath, presence, kind) " \
"SELECT wc_id, local_relpath, ?3 , parent_relpath, " \
@@ -1279,34 +1288,34 @@
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
""
-#define STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE 126
-#define STMT_126_INFO {"STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE", NULL}
-#define STMT_126 \
+#define STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE 127
+#define STMT_127_INFO {"STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE", NULL}
+#define STMT_127 \
"UPDATE nodes SET op_depth = ?3 + 1 " \
"WHERE wc_id = ?1 " \
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
" AND op_depth = ?3 " \
""
-#define STMT_UPDATE_OP_DEPTH_RECURSIVE 127
-#define STMT_127_INFO {"STMT_UPDATE_OP_DEPTH_RECURSIVE", NULL}
-#define STMT_127 \
+#define STMT_UPDATE_OP_DEPTH_RECURSIVE 128
+#define STMT_128_INFO {"STMT_UPDATE_OP_DEPTH_RECURSIVE", NULL}
+#define STMT_128 \
"UPDATE nodes SET op_depth = ?4, moved_here = NULL " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
" AND op_depth = ?3 " \
""
-#define STMT_DOES_NODE_EXIST 128
-#define STMT_128_INFO {"STMT_DOES_NODE_EXIST", NULL}
-#define STMT_128 \
+#define STMT_DOES_NODE_EXIST 129
+#define STMT_129_INFO {"STMT_DOES_NODE_EXIST", NULL}
+#define STMT_129 \
"SELECT 1 FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2 " \
"LIMIT 1 " \
""
-#define STMT_HAS_SERVER_EXCLUDED_DESCENDANTS 129
-#define STMT_129_INFO {"STMT_HAS_SERVER_EXCLUDED_DESCENDANTS", NULL}
-#define STMT_129 \
+#define STMT_HAS_SERVER_EXCLUDED_DESCENDANTS 130
+#define STMT_130_INFO {"STMT_HAS_SERVER_EXCLUDED_DESCENDANTS", NULL}
+#define STMT_130 \
"SELECT local_relpath FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
@@ -1314,9 +1323,9 @@
"LIMIT 1 " \
""
-#define STMT_SELECT_ALL_EXCLUDED_DESCENDANTS 130
-#define STMT_130_INFO {"STMT_SELECT_ALL_EXCLUDED_DESCENDANTS", NULL}
-#define STMT_130 \
+#define STMT_SELECT_ALL_EXCLUDED_DESCENDANTS 131
+#define STMT_131_INFO {"STMT_SELECT_ALL_EXCLUDED_DESCENDANTS", NULL}
+#define STMT_131 \
"SELECT local_relpath FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
@@ -1324,9 +1333,9 @@
" AND (presence = 'server-excluded' OR presence = 'excluded') " \
""
-#define STMT_INSERT_WORKING_NODE_COPY_FROM 131
-#define STMT_131_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM", NULL}
-#define STMT_131 \
+#define STMT_INSERT_WORKING_NODE_COPY_FROM 132
+#define STMT_132_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM", NULL}
+#define STMT_132 \
"INSERT OR REPLACE INTO nodes ( " \
" wc_id, local_relpath, op_depth, parent_relpath, repos_id, " \
" repos_path, revision, presence, depth, moved_here, kind, changed_revision, " \
@@ -1345,9 +1354,9 @@
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
""
-#define STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH 132
-#define STMT_132_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH", NULL}
-#define STMT_132 \
+#define STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH 133
+#define STMT_133_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH", NULL}
+#define STMT_133 \
"INSERT OR REPLACE INTO nodes ( " \
" wc_id, local_relpath, op_depth, parent_relpath, repos_id, " \
" repos_path, revision, presence, depth, moved_here, kind, changed_revision, " \
@@ -1366,49 +1375,49 @@
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?7 " \
""
-#define STMT_UPDATE_BASE_REVISION 133
-#define STMT_133_INFO {"STMT_UPDATE_BASE_REVISION", NULL}
-#define STMT_133 \
+#define STMT_UPDATE_BASE_REVISION 134
+#define STMT_134_INFO {"STMT_UPDATE_BASE_REVISION", NULL}
+#define STMT_134 \
"UPDATE nodes SET revision = ?3 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
""
-#define STMT_UPDATE_BASE_REPOS 134
-#define STMT_134_INFO {"STMT_UPDATE_BASE_REPOS", NULL}
-#define STMT_134 \
+#define STMT_UPDATE_BASE_REPOS 135
+#define STMT_135_INFO {"STMT_UPDATE_BASE_REPOS", NULL}
+#define STMT_135 \
"UPDATE nodes SET repos_id = ?3, repos_path = ?4 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
""
-#define STMT_ACTUAL_HAS_CHILDREN 135
-#define STMT_135_INFO {"STMT_ACTUAL_HAS_CHILDREN", NULL}
-#define STMT_135 \
+#define STMT_ACTUAL_HAS_CHILDREN 136
+#define STMT_136_INFO {"STMT_ACTUAL_HAS_CHILDREN", NULL}
+#define STMT_136 \
"SELECT 1 FROM actual_node " \
"WHERE wc_id = ?1 AND parent_relpath = ?2 " \
"LIMIT 1 " \
""
-#define STMT_INSERT_EXTERNAL 136
-#define STMT_136_INFO {"STMT_INSERT_EXTERNAL", NULL}
-#define STMT_136 \
+#define STMT_INSERT_EXTERNAL 137
+#define STMT_137_INFO {"STMT_INSERT_EXTERNAL", NULL}
+#define STMT_137 \
"INSERT OR REPLACE INTO externals ( " \
" wc_id, local_relpath, parent_relpath, presence, kind, def_local_relpath, " \
" repos_id, def_repos_relpath, def_operational_revision, def_revision) " \
"VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10) " \
""
-#define STMT_SELECT_EXTERNAL_INFO 137
-#define STMT_137_INFO {"STMT_SELECT_EXTERNAL_INFO", NULL}
-#define STMT_137 \
+#define STMT_SELECT_EXTERNAL_INFO 138
+#define STMT_138_INFO {"STMT_SELECT_EXTERNAL_INFO", NULL}
+#define STMT_138 \
"SELECT presence, kind, def_local_relpath, repos_id, " \
" def_repos_relpath, def_operational_revision, def_revision " \
"FROM externals WHERE wc_id = ?1 AND local_relpath = ?2 " \
"LIMIT 1 " \
""
-#define STMT_DELETE_FILE_EXTERNALS 138
-#define STMT_138_INFO {"STMT_DELETE_FILE_EXTERNALS", NULL}
-#define STMT_138 \
+#define STMT_DELETE_FILE_EXTERNALS 139
+#define STMT_139_INFO {"STMT_DELETE_FILE_EXTERNALS", NULL}
+#define STMT_139 \
"DELETE FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
@@ -1416,26 +1425,26 @@
" AND file_external IS NOT NULL " \
""
-#define STMT_DELETE_FILE_EXTERNAL_REGISTATIONS 139
-#define STMT_139_INFO {"STMT_DELETE_FILE_EXTERNAL_REGISTATIONS", NULL}
-#define STMT_139 \
+#define STMT_DELETE_FILE_EXTERNAL_REGISTATIONS 140
+#define STMT_140_INFO {"STMT_DELETE_FILE_EXTERNAL_REGISTATIONS", NULL}
+#define STMT_140 \
"DELETE FROM externals " \
"WHERE wc_id = ?1 " \
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
" AND kind != 'dir' " \
""
-#define STMT_DELETE_EXTERNAL_REGISTATIONS 140
-#define STMT_140_INFO {"STMT_DELETE_EXTERNAL_REGISTATIONS", NULL}
-#define STMT_140 \
+#define STMT_DELETE_EXTERNAL_REGISTATIONS 141
+#define STMT_141_INFO {"STMT_DELETE_EXTERNAL_REGISTATIONS", NULL}
+#define STMT_141 \
"DELETE FROM externals " \
"WHERE wc_id = ?1 " \
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
""
-#define STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW 141
-#define STMT_141_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW", NULL}
-#define STMT_141 \
+#define STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW 142
+#define STMT_142_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW", NULL}
+#define STMT_142 \
"SELECT local_relpath, kind, def_repos_relpath, " \
" (SELECT root FROM repository AS r WHERE r.id = e.repos_id) " \
"FROM externals e " \
@@ -1453,9 +1462,9 @@
" AND nodes.local_relpath = e.parent_relpath)) " \
""
-#define STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW 142
-#define STMT_142_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW", NULL}
-#define STMT_142 \
+#define STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW 143
+#define STMT_143_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW", NULL}
+#define STMT_143 \
"SELECT local_relpath, kind, def_repos_relpath, " \
" (SELECT root FROM repository AS r WHERE r.id = e.repos_id) " \
"FROM externals e " \
@@ -1474,25 +1483,25 @@
" AND nodes.local_relpath = e.parent_relpath)) " \
""
-#define STMT_SELECT_EXTERNALS_DEFINED 143
-#define STMT_143_INFO {"STMT_SELECT_EXTERNALS_DEFINED", NULL}
-#define STMT_143 \
+#define STMT_SELECT_EXTERNALS_DEFINED 144
+#define STMT_144_INFO {"STMT_SELECT_EXTERNALS_DEFINED", NULL}
+#define STMT_144 \
"SELECT local_relpath, def_local_relpath " \
"FROM externals " \
"WHERE (wc_id = ?1 AND def_local_relpath = ?2) " \
" OR (wc_id = ?1 AND (((def_local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((def_local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
""
-#define STMT_DELETE_EXTERNAL 144
-#define STMT_144_INFO {"STMT_DELETE_EXTERNAL", NULL}
-#define STMT_144 \
+#define STMT_DELETE_EXTERNAL 145
+#define STMT_145_INFO {"STMT_DELETE_EXTERNAL", NULL}
+#define STMT_145 \
"DELETE FROM externals " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
""
-#define STMT_SELECT_EXTERNAL_PROPERTIES 145
-#define STMT_145_INFO {"STMT_SELECT_EXTERNAL_PROPERTIES", NULL}
-#define STMT_145 \
+#define STMT_SELECT_EXTERNAL_PROPERTIES 146
+#define STMT_146_INFO {"STMT_SELECT_EXTERNAL_PROPERTIES", NULL}
+#define STMT_146 \
"SELECT IFNULL((SELECT properties FROM actual_node a " \
" WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \
" properties), " \
@@ -1510,9 +1519,9 @@
" AND kind = 'dir' AND presence IN ('normal', 'incomplete') " \
""
-#define STMT_SELECT_CURRENT_PROPS_RECURSIVE 146
-#define STMT_146_INFO {"STMT_SELECT_CURRENT_PROPS_RECURSIVE", NULL}
-#define STMT_146 \
+#define STMT_SELECT_CURRENT_PROPS_RECURSIVE 147
+#define STMT_147_INFO {"STMT_SELECT_CURRENT_PROPS_RECURSIVE", NULL}
+#define STMT_147 \
"SELECT IFNULL((SELECT properties FROM actual_node a " \
" WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \
" properties), " \
@@ -1522,57 +1531,57 @@
" OR (wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
""
-#define STMT_PRAGMA_LOCKING_MODE 147
-#define STMT_147_INFO {"STMT_PRAGMA_LOCKING_MODE", NULL}
-#define STMT_147 \
+#define STMT_PRAGMA_LOCKING_MODE 148
+#define STMT_148_INFO {"STMT_PRAGMA_LOCKING_MODE", NULL}
+#define STMT_148 \
"PRAGMA locking_mode = exclusive " \
""
-#define STMT_INSERT_ACTUAL_NODE 148
-#define STMT_148_INFO {"STMT_INSERT_ACTUAL_NODE", NULL}
-#define STMT_148 \
+#define STMT_INSERT_ACTUAL_NODE 149
+#define STMT_149_INFO {"STMT_INSERT_ACTUAL_NODE", NULL}
+#define STMT_149 \
"INSERT OR REPLACE INTO actual_node ( " \
" wc_id, local_relpath, parent_relpath, properties, changelist, conflict_data) " \
"VALUES (?1, ?2, ?3, ?4, ?5, ?6) " \
""
-#define STMT_UPDATE_ACTUAL_CONFLICT_DATA 149
-#define STMT_149_INFO {"STMT_UPDATE_ACTUAL_CONFLICT_DATA", NULL}
-#define STMT_149 \
+#define STMT_UPDATE_ACTUAL_CONFLICT_DATA 150
+#define STMT_150_INFO {"STMT_UPDATE_ACTUAL_CONFLICT_DATA", NULL}
+#define STMT_150 \
"UPDATE actual_node SET conflict_data = ?3 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 " \
""
-#define STMT_INSERT_ACTUAL_CONFLICT_DATA 150
-#define STMT_150_INFO {"STMT_INSERT_ACTUAL_CONFLICT_DATA", NULL}
-#define STMT_150 \
+#define STMT_INSERT_ACTUAL_CONFLICT_DATA 151
+#define STMT_151_INFO {"STMT_INSERT_ACTUAL_CONFLICT_DATA", NULL}
+#define STMT_151 \
"INSERT INTO actual_node (wc_id, local_relpath, conflict_data, parent_relpath) " \
"VALUES (?1, ?2, ?3, ?4) " \
""
-#define STMT_SELECT_ALL_FILES 151
-#define STMT_151_INFO {"STMT_SELECT_ALL_FILES", NULL}
-#define STMT_151 \
+#define STMT_SELECT_ALL_FILES 152
+#define STMT_152_INFO {"STMT_SELECT_ALL_FILES", NULL}
+#define STMT_152 \
"SELECT local_relpath FROM nodes_current " \
"WHERE wc_id = ?1 AND parent_relpath = ?2 AND kind = 'file' " \
""
-#define STMT_UPDATE_NODE_PROPS 152
-#define STMT_152_INFO {"STMT_UPDATE_NODE_PROPS", NULL}
-#define STMT_152 \
+#define STMT_UPDATE_NODE_PROPS 153
+#define STMT_153_INFO {"STMT_UPDATE_NODE_PROPS", NULL}
+#define STMT_153 \
"UPDATE nodes SET properties = ?4 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
""
-#define STMT_PRAGMA_TABLE_INFO_NODES 153
-#define STMT_153_INFO {"STMT_PRAGMA_TABLE_INFO_NODES", NULL}
-#define STMT_153 \
+#define STMT_PRAGMA_TABLE_INFO_NODES 154
+#define STMT_154_INFO {"STMT_PRAGMA_TABLE_INFO_NODES", NULL}
+#define STMT_154 \
"PRAGMA table_info(\"NODES\") " \
""
-#define STMT_CREATE_TARGET_PROP_CACHE 154
-#define STMT_154_INFO {"STMT_CREATE_TARGET_PROP_CACHE", NULL}
-#define STMT_154 \
+#define STMT_CREATE_TARGET_PROP_CACHE 155
+#define STMT_155_INFO {"STMT_CREATE_TARGET_PROP_CACHE", NULL}
+#define STMT_155 \
"DROP TABLE IF EXISTS target_prop_cache; " \
"CREATE TEMPORARY TABLE target_prop_cache ( " \
" local_relpath TEXT NOT NULL PRIMARY KEY, " \
@@ -1581,9 +1590,9 @@
"); " \
""
-#define STMT_CACHE_TARGET_PROPS 155
-#define STMT_155_INFO {"STMT_CACHE_TARGET_PROPS", NULL}
-#define STMT_155 \
+#define STMT_CACHE_TARGET_PROPS 156
+#define STMT_156_INFO {"STMT_CACHE_TARGET_PROPS", NULL}
+#define STMT_156 \
"INSERT INTO target_prop_cache(local_relpath, kind, properties) " \
" SELECT n.local_relpath, n.kind, " \
" IFNULL((SELECT properties FROM actual_node AS a " \
@@ -1602,9 +1611,9 @@
" ORDER BY t.local_relpath " \
""
-#define STMT_CACHE_TARGET_PRISTINE_PROPS 156
-#define STMT_156_INFO {"STMT_CACHE_TARGET_PRISTINE_PROPS", NULL}
-#define STMT_156 \
+#define STMT_CACHE_TARGET_PRISTINE_PROPS 157
+#define STMT_157_INFO {"STMT_CACHE_TARGET_PRISTINE_PROPS", NULL}
+#define STMT_157 \
"INSERT INTO target_prop_cache(local_relpath, kind, properties) " \
" SELECT n.local_relpath, n.kind, " \
" CASE n.presence " \
@@ -1629,22 +1638,22 @@
" ORDER BY t.local_relpath " \
""
-#define STMT_SELECT_ALL_TARGET_PROP_CACHE 157
-#define STMT_157_INFO {"STMT_SELECT_ALL_TARGET_PROP_CACHE", NULL}
-#define STMT_157 \
+#define STMT_SELECT_ALL_TARGET_PROP_CACHE 158
+#define STMT_158_INFO {"STMT_SELECT_ALL_TARGET_PROP_CACHE", NULL}
+#define STMT_158 \
"SELECT local_relpath, properties FROM target_prop_cache " \
"ORDER BY local_relpath " \
""
-#define STMT_DROP_TARGET_PROP_CACHE 158
-#define STMT_158_INFO {"STMT_DROP_TARGET_PROP_CACHE", NULL}
-#define STMT_158 \
+#define STMT_DROP_TARGET_PROP_CACHE 159
+#define STMT_159_INFO {"STMT_DROP_TARGET_PROP_CACHE", NULL}
+#define STMT_159 \
"DROP TABLE target_prop_cache; " \
""
-#define STMT_CREATE_REVERT_LIST 159
-#define STMT_159_INFO {"STMT_CREATE_REVERT_LIST", NULL}
-#define STMT_159 \
+#define STMT_CREATE_REVERT_LIST 160
+#define STMT_160_INFO {"STMT_CREATE_REVERT_LIST", NULL}
+#define STMT_160 \
"DROP TABLE IF EXISTS revert_list; " \
"CREATE TEMPORARY TABLE revert_list ( " \
" local_relpath TEXT NOT NULL, " \
@@ -1700,26 +1709,26 @@
"END " \
""
-#define STMT_DROP_REVERT_LIST_TRIGGERS 160
-#define STMT_160_INFO {"STMT_DROP_REVERT_LIST_TRIGGERS", NULL}
-#define STMT_160 \
+#define STMT_DROP_REVERT_LIST_TRIGGERS 161
+#define STMT_161_INFO {"STMT_DROP_REVERT_LIST_TRIGGERS", NULL}
+#define STMT_161 \
"DROP TRIGGER trigger_revert_list_nodes; " \
"DROP TRIGGER trigger_revert_list_actual_delete; " \
"DROP TRIGGER trigger_revert_list_actual_update " \
""
-#define STMT_SELECT_REVERT_LIST 161
-#define STMT_161_INFO {"STMT_SELECT_REVERT_LIST", NULL}
-#define STMT_161 \
+#define STMT_SELECT_REVERT_LIST 162
+#define STMT_162_INFO {"STMT_SELECT_REVERT_LIST", NULL}
+#define STMT_162 \
"SELECT actual, notify, kind, op_depth, repos_id, conflict_data " \
"FROM revert_list " \
"WHERE local_relpath = ?1 " \
"ORDER BY actual DESC " \
""
-#define STMT_SELECT_REVERT_LIST_COPIED_CHILDREN 162
-#define STMT_162_INFO {"STMT_SELECT_REVERT_LIST_COPIED_CHILDREN", NULL}
-#define STMT_162 \
+#define STMT_SELECT_REVERT_LIST_COPIED_CHILDREN 163
+#define STMT_163_INFO {"STMT_SELECT_REVERT_LIST_COPIED_CHILDREN", NULL}
+#define STMT_163 \
"SELECT local_relpath, kind " \
"FROM revert_list " \
"WHERE (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END)) " \
@@ -1728,15 +1737,15 @@
"ORDER BY local_relpath " \
""
-#define STMT_DELETE_REVERT_LIST 163
-#define STMT_163_INFO {"STMT_DELETE_REVERT_LIST", NULL}
-#define STMT_163 \
+#define STMT_DELETE_REVERT_LIST 164
+#define STMT_164_INFO {"STMT_DELETE_REVERT_LIST", NULL}
+#define STMT_164 \
"DELETE FROM revert_list WHERE local_relpath = ?1 " \
""
-#define STMT_SELECT_REVERT_LIST_RECURSIVE 164
-#define STMT_164_INFO {"STMT_SELECT_REVERT_LIST_RECURSIVE", NULL}
-#define STMT_164 \
+#define STMT_SELECT_REVERT_LIST_RECURSIVE 165
+#define STMT_165_INFO {"STMT_SELECT_REVERT_LIST_RECURSIVE", NULL}
+#define STMT_165 \
"SELECT DISTINCT local_relpath " \
"FROM revert_list " \
"WHERE (local_relpath = ?1 " \
@@ -1745,32 +1754,32 @@
"ORDER BY local_relpath " \
""
-#define STMT_DELETE_REVERT_LIST_RECURSIVE 165
-#define STMT_165_INFO {"STMT_DELETE_REVERT_LIST_RECURSIVE", NULL}
-#define STMT_165 \
+#define STMT_DELETE_REVERT_LIST_RECURSIVE 166
+#define STMT_166_INFO {"STMT_DELETE_REVERT_LIST_RECURSIVE", NULL}
+#define STMT_166 \
"DELETE FROM revert_list " \
"WHERE (local_relpath = ?1 " \
" OR (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END))) " \
""
-#define STMT_DROP_REVERT_LIST 166
-#define STMT_166_INFO {"STMT_DROP_REVERT_LIST", NULL}
-#define STMT_166 \
+#define STMT_DROP_REVERT_LIST 167
+#define STMT_167_INFO {"STMT_DROP_REVERT_LIST", NULL}
+#define STMT_167 \
"DROP TABLE IF EXISTS revert_list " \
""
-#define STMT_CREATE_DELETE_LIST 167
-#define STMT_167_INFO {"STMT_CREATE_DELETE_LIST", NULL}
-#define STMT_167 \
+#define STMT_CREATE_DELETE_LIST 168
+#define STMT_168_INFO {"STMT_CREATE_DELETE_LIST", NULL}
+#define STMT_168 \
"DROP TABLE IF EXISTS delete_list; " \
"CREATE TEMPORARY TABLE delete_list ( " \
" local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE " \
" ) " \
""
-#define STMT_INSERT_DELETE_LIST 168
-#define STMT_168_INFO {"STMT_INSERT_DELETE_LIST", NULL}
-#define STMT_168 \
+#define STMT_INSERT_DELETE_LIST 169
+#define STMT_169_INFO {"STMT_INSERT_DELETE_LIST", NULL}
+#define STMT_169 \
"INSERT INTO delete_list(local_relpath) " \
"SELECT local_relpath FROM nodes AS n " \
"WHERE wc_id = ?1 " \
@@ -1784,22 +1793,22 @@
" AND file_external IS NULL " \
""
-#define STMT_SELECT_DELETE_LIST 169
-#define STMT_169_INFO {"STMT_SELECT_DELETE_LIST", NULL}
-#define STMT_169 \
+#define STMT_SELECT_DELETE_LIST 170
+#define STMT_170_INFO {"STMT_SELECT_DELETE_LIST", NULL}
+#define STMT_170 \
"SELECT local_relpath FROM delete_list " \
"ORDER BY local_relpath " \
""
-#define STMT_FINALIZE_DELETE 170
-#define STMT_170_INFO {"STMT_FINALIZE_DELETE", NULL}
-#define STMT_170 \
+#define STMT_FINALIZE_DELETE 171
+#define STMT_171_INFO {"STMT_FINALIZE_DELETE", NULL}
+#define STMT_171 \
"DROP TABLE IF EXISTS delete_list " \
""
-#define STMT_CREATE_UPDATE_MOVE_LIST 171
-#define STMT_171_INFO {"STMT_CREATE_UPDATE_MOVE_LIST", NULL}
-#define STMT_171 \
+#define STMT_CREATE_UPDATE_MOVE_LIST 172
+#define STMT_172_INFO {"STMT_CREATE_UPDATE_MOVE_LIST", NULL}
+#define STMT_172 \
"DROP TABLE IF EXISTS update_move_list; " \
"CREATE TEMPORARY TABLE update_move_list ( " \
" local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE, " \
@@ -1810,31 +1819,31 @@
" ) " \
""
-#define STMT_INSERT_UPDATE_MOVE_LIST 172
-#define STMT_172_INFO {"STMT_INSERT_UPDATE_MOVE_LIST", NULL}
-#define STMT_172 \
+#define STMT_INSERT_UPDATE_MOVE_LIST 173
+#define STMT_173_INFO {"STMT_INSERT_UPDATE_MOVE_LIST", NULL}
+#define STMT_173 \
"INSERT INTO update_move_list(local_relpath, action, kind, content_state, " \
" prop_state) " \
"VALUES (?1, ?2, ?3, ?4, ?5) " \
""
-#define STMT_SELECT_UPDATE_MOVE_LIST 173
-#define STMT_173_INFO {"STMT_SELECT_UPDATE_MOVE_LIST", NULL}
-#define STMT_173 \
+#define STMT_SELECT_UPDATE_MOVE_LIST 174
+#define STMT_174_INFO {"STMT_SELECT_UPDATE_MOVE_LIST", NULL}
+#define STMT_174 \
"SELECT local_relpath, action, kind, content_state, prop_state " \
"FROM update_move_list " \
"ORDER BY local_relpath " \
""
-#define STMT_FINALIZE_UPDATE_MOVE 174
-#define STMT_174_INFO {"STMT_FINALIZE_UPDATE_MOVE", NULL}
-#define STMT_174 \
+#define STMT_FINALIZE_UPDATE_MOVE 175
+#define STMT_175_INFO {"STMT_FINALIZE_UPDATE_MOVE", NULL}
+#define STMT_175 \
"DROP TABLE IF EXISTS update_move_list " \
""
-#define STMT_SELECT_MIN_MAX_REVISIONS 175
-#define STMT_175_INFO {"STMT_SELECT_MIN_MAX_REVISIONS", NULL}
-#define STMT_175 \
+#define STMT_SELECT_MIN_MAX_REVISIONS 176
+#define STMT_176_INFO {"STMT_SELECT_MIN_MAX_REVISIONS", NULL}
+#define STMT_176 \
"SELECT MIN(revision), MAX(revision), " \
" MIN(changed_revision), MAX(changed_revision) FROM nodes " \
" WHERE wc_id = ?1 " \
@@ -1845,9 +1854,9 @@
" AND op_depth = 0 " \
""
-#define STMT_HAS_SPARSE_NODES 176
-#define STMT_176_INFO {"STMT_HAS_SPARSE_NODES", NULL}
-#define STMT_176 \
+#define STMT_HAS_SPARSE_NODES 177
+#define STMT_177_INFO {"STMT_HAS_SPARSE_NODES", NULL}
+#define STMT_177 \
"SELECT 1 FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 " \
@@ -1859,9 +1868,9 @@
"LIMIT 1 " \
""
-#define STMT_SUBTREE_HAS_TREE_MODIFICATIONS 177
-#define STMT_177_INFO {"STMT_SUBTREE_HAS_TREE_MODIFICATIONS", NULL}
-#define STMT_177 \
+#define STMT_SUBTREE_HAS_TREE_MODIFICATIONS 178
+#define STMT_178_INFO {"STMT_SUBTREE_HAS_TREE_MODIFICATIONS", NULL}
+#define STMT_178 \
"SELECT 1 FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 " \
@@ -1870,9 +1879,9 @@
"LIMIT 1 " \
""
-#define STMT_SUBTREE_HAS_PROP_MODIFICATIONS 178
-#define STMT_178_INFO {"STMT_SUBTREE_HAS_PROP_MODIFICATIONS", NULL}
-#define STMT_178 \
+#define STMT_SUBTREE_HAS_PROP_MODIFICATIONS 179
+#define STMT_179_INFO {"STMT_SUBTREE_HAS_PROP_MODIFICATIONS", NULL}
+#define STMT_179 \
"SELECT 1 FROM actual_node " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 " \
@@ -1881,9 +1890,9 @@
"LIMIT 1 " \
""
-#define STMT_HAS_SWITCHED 179
-#define STMT_179_INFO {"STMT_HAS_SWITCHED", NULL}
-#define STMT_179 \
+#define STMT_HAS_SWITCHED 180
+#define STMT_180_INFO {"STMT_HAS_SWITCHED", NULL}
+#define STMT_180 \
"SELECT 1 " \
"FROM nodes " \
"WHERE wc_id = ?1 " \
@@ -1895,9 +1904,9 @@
"LIMIT 1 " \
""
-#define STMT_SELECT_BASE_FILES_RECURSIVE 180
-#define STMT_180_INFO {"STMT_SELECT_BASE_FILES_RECURSIVE", NULL}
-#define STMT_180 \
+#define STMT_SELECT_BASE_FILES_RECURSIVE 181
+#define STMT_181_INFO {"STMT_SELECT_BASE_FILES_RECURSIVE", NULL}
+#define STMT_181 \
"SELECT local_relpath, translated_size, last_mod_time FROM nodes AS n " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 " \
@@ -1908,75 +1917,92 @@
" AND file_external IS NULL " \
""
-#define STMT_SELECT_MOVED_FROM_RELPATH 181
-#define STMT_181_INFO {"STMT_SELECT_MOVED_FROM_RELPATH", NULL}
-#define STMT_181 \
+#define STMT_SELECT_MOVED_FROM_RELPATH 182
+#define STMT_182_INFO {"STMT_SELECT_MOVED_FROM_RELPATH", NULL}
+#define STMT_182 \
"SELECT local_relpath, op_depth FROM nodes " \
"WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth > 0 " \
""
-#define STMT_UPDATE_MOVED_TO_RELPATH 182
-#define STMT_182_INFO {"STMT_UPDATE_MOVED_TO_RELPATH", NULL}
-#define STMT_182 \
+#define STMT_UPDATE_MOVED_TO_RELPATH 183
+#define STMT_183_INFO {"STMT_UPDATE_MOVED_TO_RELPATH", NULL}
+#define STMT_183 \
"UPDATE nodes SET moved_to = ?4 " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
""
-#define STMT_CLEAR_MOVED_TO_RELPATH 183
-#define STMT_183_INFO {"STMT_CLEAR_MOVED_TO_RELPATH", NULL}
-#define STMT_183 \
+#define STMT_CLEAR_MOVED_TO_RELPATH 184
+#define STMT_184_INFO {"STMT_CLEAR_MOVED_TO_RELPATH", NULL}
+#define STMT_184 \
"UPDATE nodes SET moved_to = NULL " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
""
-#define STMT_CLEAR_MOVED_HERE_RECURSIVE 184
-#define STMT_184_INFO {"STMT_CLEAR_MOVED_HERE_RECURSIVE", NULL}
-#define STMT_184 \
+#define STMT_CLEAR_MOVED_HERE_RECURSIVE 185
+#define STMT_185_INFO {"STMT_CLEAR_MOVED_HERE_RECURSIVE", NULL}
+#define STMT_185 \
"UPDATE nodes SET moved_here = NULL " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
" AND op_depth = ?3 " \
""
-#define STMT_SELECT_MOVED_HERE_CHILDREN 185
-#define STMT_185_INFO {"STMT_SELECT_MOVED_HERE_CHILDREN", NULL}
-#define STMT_185 \
+#define STMT_SELECT_MOVED_HERE_CHILDREN 186
+#define STMT_186_INFO {"STMT_SELECT_MOVED_HERE_CHILDREN", NULL}
+#define STMT_186 \
"SELECT moved_to, local_relpath FROM nodes " \
"WHERE wc_id = ?1 AND op_depth > 0 " \
" AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
""
-#define STMT_SELECT_MOVED_FOR_DELETE 186
-#define STMT_186_INFO {"STMT_SELECT_MOVED_FOR_DELETE", NULL}
-#define STMT_186 \
- "SELECT local_relpath, moved_to, op_depth FROM nodes " \
+#define STMT_SELECT_MOVED_FOR_DELETE 187
+#define STMT_187_INFO {"STMT_SELECT_MOVED_FOR_DELETE", NULL}
+#define STMT_187 \
+ "SELECT local_relpath, moved_to, op_depth, " \
+ " (SELECT CASE WHEN r.moved_here THEN r.op_depth END FROM nodes r " \
+ " WHERE r.wc_id = ?1 " \
+ " AND r.local_relpath = n.local_relpath " \
+ " AND r.op_depth < n.op_depth " \
+ " ORDER BY r.op_depth DESC LIMIT 1) AS moved_here_op_depth " \
+ " FROM nodes n " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
" AND moved_to IS NOT NULL " \
- " AND op_depth >= (SELECT MAX(op_depth) FROM nodes o " \
- " WHERE o.wc_id = ?1 " \
- " AND o.local_relpath = ?2) " \
+ " AND op_depth >= ?3 " \
""
-#define STMT_UPDATE_MOVED_TO_DESCENDANTS 187
-#define STMT_187_INFO {"STMT_UPDATE_MOVED_TO_DESCENDANTS", NULL}
-#define STMT_187 \
+#define STMT_SELECT_MOVED_FROM_FOR_DELETE 188
+#define STMT_188_INFO {"STMT_SELECT_MOVED_FROM_FOR_DELETE", NULL}
+#define STMT_188 \
+ "SELECT local_relpath, op_depth, " \
+ " (SELECT CASE WHEN r.moved_here THEN r.op_depth END FROM nodes r " \
+ " WHERE r.wc_id = ?1 " \
+ " AND r.local_relpath = n.local_relpath " \
+ " AND r.op_depth < n.op_depth " \
+ " ORDER BY r.op_depth DESC LIMIT 1) AS moved_here_op_depth " \
+ " FROM nodes n " \
+ "WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth > 0 " \
+ ""
+
+#define STMT_UPDATE_MOVED_TO_DESCENDANTS 189
+#define STMT_189_INFO {"STMT_UPDATE_MOVED_TO_DESCENDANTS", NULL}
+#define STMT_189 \
"UPDATE nodes SET moved_to = (CASE WHEN (?2) = '' THEN (CASE WHEN (?3) = '' THEN (moved_to) WHEN (moved_to) = '' THEN (?3) ELSE (?3) || '/' || (moved_to) END) WHEN (?3) = '' THEN (CASE WHEN (?2) = '' THEN (moved_to) WHEN SUBSTR((moved_to), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(moved_to) THEN '' WHEN SUBSTR((moved_to), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((moved_to), LENGTH(?2)+2) END END) WHEN SUBSTR((moved_to), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(moved_to) THEN (?3) WHEN SUBSTR((moved_to), LENGTH(?2)+1, 1) = '/' THEN (?3) || SUBSTR((moved_to), LENGTH(?2)+1) END END) " \
" WHERE wc_id = ?1 " \
" AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
""
-#define STMT_CLEAR_MOVED_TO_DESCENDANTS 188
-#define STMT_188_INFO {"STMT_CLEAR_MOVED_TO_DESCENDANTS", NULL}
-#define STMT_188 \
+#define STMT_CLEAR_MOVED_TO_DESCENDANTS 190
+#define STMT_190_INFO {"STMT_CLEAR_MOVED_TO_DESCENDANTS", NULL}
+#define STMT_190 \
"UPDATE nodes SET moved_to = NULL " \
" WHERE wc_id = ?1 " \
" AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
""
-#define STMT_SELECT_MOVED_PAIR2 189
-#define STMT_189_INFO {"STMT_SELECT_MOVED_PAIR2", NULL}
-#define STMT_189 \
+#define STMT_SELECT_MOVED_PAIR2 191
+#define STMT_191_INFO {"STMT_SELECT_MOVED_PAIR2", NULL}
+#define STMT_191 \
"SELECT local_relpath, moved_to, op_depth FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
@@ -1987,9 +2013,9 @@
" AND o.local_relpath = ?2) " \
""
-#define STMT_SELECT_MOVED_PAIR3 190
-#define STMT_190_INFO {"STMT_SELECT_MOVED_PAIR3", NULL}
-#define STMT_190 \
+#define STMT_SELECT_MOVED_PAIR3 192
+#define STMT_192_INFO {"STMT_SELECT_MOVED_PAIR3", NULL}
+#define STMT_192 \
"SELECT local_relpath, moved_to, op_depth, kind FROM nodes " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 " \
" AND moved_to IS NOT NULL " \
@@ -2002,9 +2028,9 @@
"ORDER BY local_relpath, op_depth " \
""
-#define STMT_SELECT_MOVED_OUTSIDE 191
-#define STMT_191_INFO {"STMT_SELECT_MOVED_OUTSIDE", NULL}
-#define STMT_191 \
+#define STMT_SELECT_MOVED_OUTSIDE 193
+#define STMT_193_INFO {"STMT_SELECT_MOVED_OUTSIDE", NULL}
+#define STMT_193 \
"SELECT local_relpath, moved_to, op_depth FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
@@ -2013,9 +2039,9 @@
" AND NOT (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
""
-#define STMT_SELECT_OP_DEPTH_MOVED_PAIR 192
-#define STMT_192_INFO {"STMT_SELECT_OP_DEPTH_MOVED_PAIR", NULL}
-#define STMT_192 \
+#define STMT_SELECT_OP_DEPTH_MOVED_PAIR 194
+#define STMT_194_INFO {"STMT_SELECT_OP_DEPTH_MOVED_PAIR", NULL}
+#define STMT_194 \
"SELECT n.local_relpath, n.moved_to, " \
" (SELECT o.repos_path FROM nodes AS o " \
" WHERE o.wc_id = n.wc_id " \
@@ -2028,9 +2054,9 @@
" AND n.moved_to IS NOT NULL " \
""
-#define STMT_SELECT_MOVED_DESCENDANTS 193
-#define STMT_193_INFO {"STMT_SELECT_MOVED_DESCENDANTS", NULL}
-#define STMT_193 \
+#define STMT_SELECT_MOVED_DESCENDANTS 195
+#define STMT_195_INFO {"STMT_SELECT_MOVED_DESCENDANTS", NULL}
+#define STMT_195 \
"SELECT n.local_relpath, h.moved_to " \
"FROM nodes n, nodes h " \
"WHERE n.wc_id = ?1 " \
@@ -2046,9 +2072,9 @@
" AND h.moved_to IS NOT NULL " \
""
-#define STMT_COMMIT_UPDATE_ORIGIN 194
-#define STMT_194_INFO {"STMT_COMMIT_UPDATE_ORIGIN", NULL}
-#define STMT_194 \
+#define STMT_COMMIT_UPDATE_ORIGIN 196
+#define STMT_196_INFO {"STMT_COMMIT_UPDATE_ORIGIN", NULL}
+#define STMT_196 \
"UPDATE nodes SET repos_id = ?4, " \
" repos_path = ?5 || SUBSTR(local_relpath, LENGTH(?2)+1), " \
" revision = ?6 " \
@@ -2058,16 +2084,16 @@
" AND op_depth = ?3 " \
""
-#define STMT_HAS_LAYER_BETWEEN 195
-#define STMT_195_INFO {"STMT_HAS_LAYER_BETWEEN", NULL}
-#define STMT_195 \
+#define STMT_HAS_LAYER_BETWEEN 197
+#define STMT_197_INFO {"STMT_HAS_LAYER_BETWEEN", NULL}
+#define STMT_197 \
"SELECT 1 FROM NODES " \
"WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 AND op_depth < ?4 " \
""
-#define STMT_SELECT_REPOS_PATH_REVISION 196
-#define STMT_196_INFO {"STMT_SELECT_REPOS_PATH_REVISION", NULL}
-#define STMT_196 \
+#define STMT_SELECT_REPOS_PATH_REVISION 198
+#define STMT_198_INFO {"STMT_SELECT_REPOS_PATH_REVISION", NULL}
+#define STMT_198 \
"SELECT local_relpath, repos_path, revision FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
@@ -2075,16 +2101,16 @@
"ORDER BY local_relpath " \
""
-#define STMT_SELECT_HAS_NON_FILE_CHILDREN 197
-#define STMT_197_INFO {"STMT_SELECT_HAS_NON_FILE_CHILDREN", NULL}
-#define STMT_197 \
+#define STMT_SELECT_HAS_NON_FILE_CHILDREN 199
+#define STMT_199_INFO {"STMT_SELECT_HAS_NON_FILE_CHILDREN", NULL}
+#define STMT_199 \
"SELECT 1 FROM nodes " \
"WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = 0 AND kind != 'file' " \
""
-#define STMT_SELECT_HAS_GRANDCHILDREN 198
-#define STMT_198_INFO {"STMT_SELECT_HAS_GRANDCHILDREN", NULL}
-#define STMT_198 \
+#define STMT_SELECT_HAS_GRANDCHILDREN 200
+#define STMT_200_INFO {"STMT_SELECT_HAS_GRANDCHILDREN", NULL}
+#define STMT_200 \
"SELECT 1 FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (((parent_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((parent_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
@@ -2092,33 +2118,33 @@
" AND file_external IS NULL " \
""
-#define STMT_SELECT_ALL_NODES 199
-#define STMT_199_INFO {"STMT_SELECT_ALL_NODES", NULL}
-#define STMT_199 \
+#define STMT_SELECT_ALL_NODES 201
+#define STMT_201_INFO {"STMT_SELECT_ALL_NODES", NULL}
+#define STMT_201 \
"SELECT op_depth, local_relpath, parent_relpath, file_external FROM nodes " \
"WHERE wc_id = ?1 " \
""
-#define STMT_SELECT_IPROPS 200
-#define STMT_200_INFO {"STMT_SELECT_IPROPS", NULL}
-#define STMT_200 \
+#define STMT_SELECT_IPROPS 202
+#define STMT_202_INFO {"STMT_SELECT_IPROPS", NULL}
+#define STMT_202 \
"SELECT inherited_props FROM nodes " \
"WHERE wc_id = ?1 " \
" AND local_relpath = ?2 " \
" AND op_depth = 0 " \
""
-#define STMT_UPDATE_IPROP 201
-#define STMT_201_INFO {"STMT_UPDATE_IPROP", NULL}
-#define STMT_201 \
+#define STMT_UPDATE_IPROP 203
+#define STMT_203_INFO {"STMT_UPDATE_IPROP", NULL}
+#define STMT_203 \
"UPDATE nodes " \
"SET inherited_props = ?3 " \
"WHERE (wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0) " \
""
-#define STMT_SELECT_IPROPS_NODE 202
-#define STMT_202_INFO {"STMT_SELECT_IPROPS_NODE", NULL}
-#define STMT_202 \
+#define STMT_SELECT_IPROPS_NODE 204
+#define STMT_204_INFO {"STMT_SELECT_IPROPS_NODE", NULL}
+#define STMT_204 \
"SELECT local_relpath, repos_path FROM nodes " \
"WHERE wc_id = ?1 " \
" AND local_relpath = ?2 " \
@@ -2126,9 +2152,9 @@
" AND (inherited_props not null) " \
""
-#define STMT_SELECT_IPROPS_RECURSIVE 203
-#define STMT_203_INFO {"STMT_SELECT_IPROPS_RECURSIVE", NULL}
-#define STMT_203 \
+#define STMT_SELECT_IPROPS_RECURSIVE 205
+#define STMT_205_INFO {"STMT_SELECT_IPROPS_RECURSIVE", NULL}
+#define STMT_205 \
"SELECT local_relpath, repos_path FROM nodes " \
"WHERE wc_id = ?1 " \
" AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
@@ -2136,9 +2162,9 @@
" AND (inherited_props not null) " \
""
-#define STMT_SELECT_IPROPS_CHILDREN 204
-#define STMT_204_INFO {"STMT_SELECT_IPROPS_CHILDREN", NULL}
-#define STMT_204 \
+#define STMT_SELECT_IPROPS_CHILDREN 206
+#define STMT_206_INFO {"STMT_SELECT_IPROPS_CHILDREN", NULL}
+#define STMT_206 \
"SELECT local_relpath, repos_path FROM nodes " \
"WHERE wc_id = ?1 " \
" AND parent_relpath = ?2 " \
@@ -2146,9 +2172,9 @@
" AND (inherited_props not null) " \
""
-#define STMT_CREATE_SCHEMA 205
-#define STMT_205_INFO {"STMT_CREATE_SCHEMA", NULL}
-#define STMT_205 \
+#define STMT_CREATE_SCHEMA 207
+#define STMT_207_INFO {"STMT_CREATE_SCHEMA", NULL}
+#define STMT_207 \
"CREATE TABLE REPOSITORY ( " \
" id INTEGER PRIMARY KEY AUTOINCREMENT, " \
" root TEXT UNIQUE NOT NULL, " \
@@ -2213,9 +2239,9 @@
"; " \
""
-#define STMT_CREATE_NODES 206
-#define STMT_206_INFO {"STMT_CREATE_NODES", NULL}
-#define STMT_206 \
+#define STMT_CREATE_NODES 208
+#define STMT_208_INFO {"STMT_CREATE_NODES", NULL}
+#define STMT_208 \
"CREATE TABLE NODES ( " \
" wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \
" local_relpath TEXT NOT NULL, " \
@@ -2255,9 +2281,9 @@
" WHERE op_depth = 0; " \
""
-#define STMT_CREATE_NODES_TRIGGERS 207
-#define STMT_207_INFO {"STMT_CREATE_NODES_TRIGGERS", NULL}
-#define STMT_207 \
+#define STMT_CREATE_NODES_TRIGGERS 209
+#define STMT_209_INFO {"STMT_CREATE_NODES_TRIGGERS", NULL}
+#define STMT_209 \
"CREATE TRIGGER nodes_insert_trigger " \
"AFTER INSERT ON nodes " \
"WHEN NEW.checksum IS NOT NULL " \
@@ -2283,9 +2309,9 @@
"END; " \
""
-#define STMT_CREATE_EXTERNALS 208
-#define STMT_208_INFO {"STMT_CREATE_EXTERNALS", NULL}
-#define STMT_208 \
+#define STMT_CREATE_EXTERNALS 210
+#define STMT_210_INFO {"STMT_CREATE_EXTERNALS", NULL}
+#define STMT_210 \
"CREATE TABLE EXTERNALS ( " \
" wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \
" local_relpath TEXT NOT NULL, " \
@@ -2304,10 +2330,12 @@
" local_relpath); " \
""
-#define STMT_INSTALL_SCHEMA_STATISTICS 209
-#define STMT_209_INFO {"STMT_INSTALL_SCHEMA_STATISTICS", NULL}
-#define STMT_209 \
+#define STMT_INSTALL_SCHEMA_STATISTICS 211
+#define STMT_211_INFO {"STMT_INSTALL_SCHEMA_STATISTICS", NULL}
+#define STMT_211 \
"ANALYZE sqlite_master; " \
+ "DELETE FROM sqlite_stat1 " \
+ "WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK'); " \
"INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \
" ('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1'); " \
"INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \
@@ -2325,9 +2353,9 @@
"ANALYZE sqlite_master; " \
""
-#define STMT_UPGRADE_TO_20 210
-#define STMT_210_INFO {"STMT_UPGRADE_TO_20", NULL}
-#define STMT_210 \
+#define STMT_UPGRADE_TO_20 212
+#define STMT_212_INFO {"STMT_UPGRADE_TO_20", NULL}
+#define STMT_212 \
"UPDATE BASE_NODE SET checksum = (SELECT checksum FROM pristine " \
" WHERE md5_checksum = BASE_NODE.checksum) " \
"WHERE EXISTS (SELECT 1 FROM pristine WHERE md5_checksum = BASE_NODE.checksum); " \
@@ -2368,59 +2396,59 @@
"PRAGMA user_version = 20; " \
""
-#define STMT_UPGRADE_TO_21 211
-#define STMT_211_INFO {"STMT_UPGRADE_TO_21", NULL}
-#define STMT_211 \
+#define STMT_UPGRADE_TO_21 213
+#define STMT_213_INFO {"STMT_UPGRADE_TO_21", NULL}
+#define STMT_213 \
"PRAGMA user_version = 21; " \
""
-#define STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT 212
-#define STMT_212_INFO {"STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT", NULL}
-#define STMT_212 \
+#define STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT 214
+#define STMT_214_INFO {"STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT", NULL}
+#define STMT_214 \
"SELECT wc_id, local_relpath, tree_conflict_data " \
"FROM actual_node " \
"WHERE tree_conflict_data IS NOT NULL " \
""
-#define STMT_UPGRADE_21_ERASE_OLD_CONFLICTS 213
-#define STMT_213_INFO {"STMT_UPGRADE_21_ERASE_OLD_CONFLICTS", NULL}
-#define STMT_213 \
+#define STMT_UPGRADE_21_ERASE_OLD_CONFLICTS 215
+#define STMT_215_INFO {"STMT_UPGRADE_21_ERASE_OLD_CONFLICTS", NULL}
+#define STMT_215 \
"UPDATE actual_node SET tree_conflict_data = NULL " \
""
-#define STMT_UPGRADE_TO_22 214
-#define STMT_214_INFO {"STMT_UPGRADE_TO_22", NULL}
-#define STMT_214 \
+#define STMT_UPGRADE_TO_22 216
+#define STMT_216_INFO {"STMT_UPGRADE_TO_22", NULL}
+#define STMT_216 \
"UPDATE actual_node SET tree_conflict_data = conflict_data; " \
"UPDATE actual_node SET conflict_data = NULL; " \
"PRAGMA user_version = 22; " \
""
-#define STMT_UPGRADE_TO_23 215
-#define STMT_215_INFO {"STMT_UPGRADE_TO_23", NULL}
-#define STMT_215 \
+#define STMT_UPGRADE_TO_23 217
+#define STMT_217_INFO {"STMT_UPGRADE_TO_23", NULL}
+#define STMT_217 \
"PRAGMA user_version = 23; " \
""
-#define STMT_UPGRADE_23_HAS_WORKING_NODES 216
-#define STMT_216_INFO {"STMT_UPGRADE_23_HAS_WORKING_NODES", NULL}
-#define STMT_216 \
+#define STMT_UPGRADE_23_HAS_WORKING_NODES 218
+#define STMT_218_INFO {"STMT_UPGRADE_23_HAS_WORKING_NODES", NULL}
+#define STMT_218 \
"SELECT 1 FROM nodes WHERE op_depth > 0 " \
"LIMIT 1 " \
""
-#define STMT_UPGRADE_TO_24 217
-#define STMT_217_INFO {"STMT_UPGRADE_TO_24", NULL}
-#define STMT_217 \
+#define STMT_UPGRADE_TO_24 219
+#define STMT_219_INFO {"STMT_UPGRADE_TO_24", NULL}
+#define STMT_219 \
"UPDATE pristine SET refcount = " \
" (SELECT COUNT(*) FROM nodes " \
" WHERE checksum = pristine.checksum ); " \
"PRAGMA user_version = 24; " \
""
-#define STMT_UPGRADE_TO_25 218
-#define STMT_218_INFO {"STMT_UPGRADE_TO_25", NULL}
-#define STMT_218 \
+#define STMT_UPGRADE_TO_25 220
+#define STMT_220_INFO {"STMT_UPGRADE_TO_25", NULL}
+#define STMT_220 \
"DROP VIEW IF EXISTS NODES_CURRENT; " \
"CREATE VIEW NODES_CURRENT AS " \
" SELECT * FROM nodes " \
@@ -2432,9 +2460,9 @@
"PRAGMA user_version = 25; " \
""
-#define STMT_UPGRADE_TO_26 219
-#define STMT_219_INFO {"STMT_UPGRADE_TO_26", NULL}
-#define STMT_219 \
+#define STMT_UPGRADE_TO_26 221
+#define STMT_221_INFO {"STMT_UPGRADE_TO_26", NULL}
+#define STMT_221 \
"DROP VIEW IF EXISTS NODES_BASE; " \
"CREATE VIEW NODES_BASE AS " \
" SELECT * FROM nodes " \
@@ -2442,15 +2470,15 @@
"PRAGMA user_version = 26; " \
""
-#define STMT_UPGRADE_TO_27 220
-#define STMT_220_INFO {"STMT_UPGRADE_TO_27", NULL}
-#define STMT_220 \
+#define STMT_UPGRADE_TO_27 222
+#define STMT_222_INFO {"STMT_UPGRADE_TO_27", NULL}
+#define STMT_222 \
"PRAGMA user_version = 27; " \
""
-#define STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS 221
-#define STMT_221_INFO {"STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS", NULL}
-#define STMT_221 \
+#define STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS 223
+#define STMT_223_INFO {"STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS", NULL}
+#define STMT_223 \
"SELECT 1 FROM actual_node " \
"WHERE NOT ((prop_reject IS NULL) AND (conflict_old IS NULL) " \
" AND (conflict_new IS NULL) AND (conflict_working IS NULL) " \
@@ -2458,18 +2486,18 @@
"LIMIT 1 " \
""
-#define STMT_UPGRADE_TO_28 222
-#define STMT_222_INFO {"STMT_UPGRADE_TO_28", NULL}
-#define STMT_222 \
+#define STMT_UPGRADE_TO_28 224
+#define STMT_224_INFO {"STMT_UPGRADE_TO_28", NULL}
+#define STMT_224 \
"UPDATE NODES SET checksum = (SELECT checksum FROM pristine " \
" WHERE md5_checksum = nodes.checksum) " \
"WHERE EXISTS (SELECT 1 FROM pristine WHERE md5_checksum = nodes.checksum); " \
"PRAGMA user_version = 28; " \
""
-#define STMT_UPGRADE_TO_29 223
-#define STMT_223_INFO {"STMT_UPGRADE_TO_29", NULL}
-#define STMT_223 \
+#define STMT_UPGRADE_TO_29 225
+#define STMT_225_INFO {"STMT_UPGRADE_TO_29", NULL}
+#define STMT_225 \
"DROP TRIGGER IF EXISTS nodes_update_checksum_trigger; " \
"DROP TRIGGER IF EXISTS nodes_insert_trigger; " \
"DROP TRIGGER IF EXISTS nodes_delete_trigger; " \
@@ -2499,9 +2527,9 @@
"PRAGMA user_version = 29; " \
""
-#define STMT_UPGRADE_TO_30 224
-#define STMT_224_INFO {"STMT_UPGRADE_TO_30", NULL}
-#define STMT_224 \
+#define STMT_UPGRADE_TO_30 226
+#define STMT_226_INFO {"STMT_UPGRADE_TO_30", NULL}
+#define STMT_226 \
"CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED " \
"ON NODES (wc_id, moved_to, op_depth); " \
"CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \
@@ -2509,9 +2537,9 @@
"UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL; " \
""
-#define STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE 225
-#define STMT_225_INFO {"STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE", NULL}
-#define STMT_225 \
+#define STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE 227
+#define STMT_227_INFO {"STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE", NULL}
+#define STMT_227 \
"SELECT wc_id, local_relpath, " \
" conflict_old, conflict_working, conflict_new, prop_reject, tree_conflict_data " \
"FROM actual_node " \
@@ -2523,24 +2551,24 @@
"ORDER by wc_id, local_relpath " \
""
-#define STMT_UPGRADE_30_SET_CONFLICT 226
-#define STMT_226_INFO {"STMT_UPGRADE_30_SET_CONFLICT", NULL}
-#define STMT_226 \
+#define STMT_UPGRADE_30_SET_CONFLICT 228
+#define STMT_228_INFO {"STMT_UPGRADE_30_SET_CONFLICT", NULL}
+#define STMT_228 \
"UPDATE actual_node SET conflict_data = ?3, conflict_old = NULL, " \
" conflict_working = NULL, conflict_new = NULL, prop_reject = NULL, " \
" tree_conflict_data = NULL " \
"WHERE wc_id = ?1 and local_relpath = ?2 " \
""
-#define STMT_UPGRADE_TO_31_ALTER_TABLE 227
-#define STMT_227_INFO {"STMT_UPGRADE_TO_31_ALTER_TABLE", NULL}
-#define STMT_227 \
+#define STMT_UPGRADE_TO_31_ALTER_TABLE 229
+#define STMT_229_INFO {"STMT_UPGRADE_TO_31_ALTER_TABLE", NULL}
+#define STMT_229 \
"ALTER TABLE NODES ADD COLUMN inherited_props BLOB; " \
""
-#define STMT_UPGRADE_TO_31_FINALIZE 228
-#define STMT_228_INFO {"STMT_UPGRADE_TO_31_FINALIZE", NULL}
-#define STMT_228 \
+#define STMT_UPGRADE_TO_31_FINALIZE 230
+#define STMT_230_INFO {"STMT_UPGRADE_TO_31_FINALIZE", NULL}
+#define STMT_230 \
"DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \
"DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \
"DROP INDEX I_NODES_PARENT; " \
@@ -2552,9 +2580,9 @@
"PRAGMA user_version = 31; " \
""
-#define STMT_UPGRADE_31_SELECT_WCROOT_NODES 229
-#define STMT_229_INFO {"STMT_UPGRADE_31_SELECT_WCROOT_NODES", NULL}
-#define STMT_229 \
+#define STMT_UPGRADE_31_SELECT_WCROOT_NODES 231
+#define STMT_231_INFO {"STMT_UPGRADE_31_SELECT_WCROOT_NODES", NULL}
+#define STMT_231 \
"SELECT l.wc_id, l.local_relpath FROM nodes as l " \
"LEFT OUTER JOIN nodes as r " \
"ON l.wc_id = r.wc_id " \
@@ -2566,9 +2594,9 @@
" OR (l.repos_path IS NOT (CASE WHEN (r.local_relpath) = '' THEN (CASE WHEN (r.repos_path) = '' THEN (l.local_relpath) WHEN (l.local_relpath) = '' THEN (r.repos_path) ELSE (r.repos_path) || '/' || (l.local_relpath) END) WHEN (r.repos_path) = '' THEN (CASE WHEN (r.local_relpath) = '' THEN (l.local_relpath) WHEN SUBSTR((l.local_relpath), 1, LENGTH(r.local_relpath)) = (r.local_relpath) THEN CASE WHEN LENGTH(r.local_relpath) = LENGTH(l.local_relpath) THEN '' WHEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1, 1) = '/' THEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+2) END END) WHEN SUBSTR((l.local_relpath), 1, LENGTH(r.local_relpath)) = (r.local_relpath) THEN CASE WHEN LENGTH(r.local_relpath) = LENGTH(l.local_relpath) THEN (r.repos_path) WHEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1, 1) = '/' THEN (r.repos_path) || SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1) END END))) " \
""
-#define STMT_UPGRADE_TO_32 230
-#define STMT_230_INFO {"STMT_UPGRADE_TO_32", NULL}
-#define STMT_230 \
+#define STMT_UPGRADE_TO_32 232
+#define STMT_232_INFO {"STMT_UPGRADE_TO_32", NULL}
+#define STMT_232 \
"DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \
"DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \
"CREATE INDEX I_EXTERNALS_PARENT ON EXTERNALS (wc_id, parent_relpath); " \
@@ -2621,9 +2649,9 @@
"DROP TABLE ACTUAL_NODE_BACKUP; " \
""
-#define STMT_VERIFICATION_TRIGGERS 231
-#define STMT_231_INFO {"STMT_VERIFICATION_TRIGGERS", NULL}
-#define STMT_231 \
+#define STMT_VERIFICATION_TRIGGERS 233
+#define STMT_233_INFO {"STMT_VERIFICATION_TRIGGERS", NULL}
+#define STMT_233 \
"CREATE TEMPORARY TRIGGER no_repository_updates BEFORE UPDATE ON repository " \
"BEGIN " \
" SELECT RAISE(FAIL, 'Updates to REPOSITORY are not allowed.'); " \
@@ -2896,6 +2924,8 @@
STMT_229, \
STMT_230, \
STMT_231, \
+ STMT_232, \
+ STMT_233, \
NULL \
}
@@ -3133,5 +3163,7 @@
STMT_229_INFO, \
STMT_230_INFO, \
STMT_231_INFO, \
+ STMT_232_INFO, \
+ STMT_233_INFO, \
{NULL, NULL} \
}
diff --git a/subversion/libsvn_wc/wc-queries.sql b/subversion/libsvn_wc/wc-queries.sql
index a8388a3a2892..0ced98c79c20 100644
--- a/subversion/libsvn_wc/wc-queries.sql
+++ b/subversion/libsvn_wc/wc-queries.sql
@@ -191,7 +191,7 @@ WHERE wc_id = ?1
-- STMT_DELETE_NODE
DELETE
FROM NODES
-WHERE wc_id = ?1 AND local_relpath = ?2
+WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3
-- STMT_DELETE_ACTUAL_FOR_BASE_RECURSIVE
/* The ACTUAL_NODE applies to BASE, unless there is in at least one op_depth
@@ -417,6 +417,12 @@ LEFT OUTER JOIN nodes AS moved
WHERE work.wc_id = ?1 AND work.local_relpath = ?2 AND work.op_depth > 0
LIMIT 1
+-- STMT_SELECT_MOVED_TO_NODE
+SELECT op_depth, moved_to
+FROM nodes
+WHERE wc_id = ?1 AND local_relpath = ?2 AND moved_to IS NOT NULL
+ORDER BY op_depth DESC
+
-- STMT_SELECT_OP_DEPTH_MOVED_TO
SELECT op_depth, moved_to, repos_path, revision
FROM nodes
@@ -711,7 +717,7 @@ WHERE wc_id = ?1 AND local_relpath = ?2
WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3)
AND presence = MAP_BASE_DELETED
--- STMT_DELETE_ALL_LAYERS
+-- STMT_DELETE_NODE_ALL_LAYERS
DELETE FROM nodes
WHERE wc_id = ?1 AND local_relpath = ?2
@@ -1503,7 +1509,6 @@ WHERE wc_id = ?1
AND presence=MAP_NORMAL
AND file_external IS NULL
-/* ### FIXME: op-depth? What about multiple moves? */
-- STMT_SELECT_MOVED_FROM_RELPATH
SELECT local_relpath, op_depth FROM nodes
WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth > 0
@@ -1530,14 +1535,31 @@ SELECT moved_to, local_relpath FROM nodes
WHERE wc_id = ?1 AND op_depth > 0
AND IS_STRICT_DESCENDANT_OF(moved_to, ?2)
+/* If the node is moved here (r.moved_here = 1) we are really interested in
+ where the node was moved from. To obtain that we need the op_depth, but
+ this form of select only allows a single return value */
-- STMT_SELECT_MOVED_FOR_DELETE
-SELECT local_relpath, moved_to, op_depth FROM nodes
+SELECT local_relpath, moved_to, op_depth,
+ (SELECT CASE WHEN r.moved_here THEN r.op_depth END FROM nodes r
+ WHERE r.wc_id = ?1
+ AND r.local_relpath = n.local_relpath
+ AND r.op_depth < n.op_depth
+ ORDER BY r.op_depth DESC LIMIT 1) AS moved_here_op_depth
+ FROM nodes n
WHERE wc_id = ?1
AND (local_relpath = ?2 OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2))
AND moved_to IS NOT NULL
- AND op_depth >= (SELECT MAX(op_depth) FROM nodes o
- WHERE o.wc_id = ?1
- AND o.local_relpath = ?2)
+ AND op_depth >= ?3
+
+-- STMT_SELECT_MOVED_FROM_FOR_DELETE
+SELECT local_relpath, op_depth,
+ (SELECT CASE WHEN r.moved_here THEN r.op_depth END FROM nodes r
+ WHERE r.wc_id = ?1
+ AND r.local_relpath = n.local_relpath
+ AND r.op_depth < n.op_depth
+ ORDER BY r.op_depth DESC LIMIT 1) AS moved_here_op_depth
+ FROM nodes n
+WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth > 0
-- STMT_UPDATE_MOVED_TO_DESCENDANTS
UPDATE nodes SET moved_to = RELPATH_SKIP_JOIN(?2, ?3, moved_to)
diff --git a/subversion/libsvn_wc/wc_db.c b/subversion/libsvn_wc/wc_db.c
index 7d038cf57fb3..81056c9a4a6a 100644
--- a/subversion/libsvn_wc/wc_db.c
+++ b/subversion/libsvn_wc/wc_db.c
@@ -627,6 +627,10 @@ svn_wc__db_extend_parent_delete(svn_wc__db_wcroot_t *wcroot,
When removing a node if the parent has a higher working node then
the parent node and this node are both deleted or replaced and any
delete over this node must be removed.
+
+ This function (like most wcroot functions) assumes that its caller
+ only uses this function within an sqlite transaction if atomic
+ behavior is needed.
*/
svn_error_t *
svn_wc__db_retract_parent_delete(svn_wc__db_wcroot_t *wcroot,
@@ -635,14 +639,60 @@ svn_wc__db_retract_parent_delete(svn_wc__db_wcroot_t *wcroot,
apr_pool_t *scratch_pool)
{
svn_sqlite__stmt_t *stmt;
+ svn_boolean_t have_row;
+ int working_depth;
+ svn_wc__db_status_t presence;
+ const char *moved_to;
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
- STMT_DELETE_LOWEST_WORKING_NODE));
+ STMT_SELECT_LOWEST_WORKING_NODE));
SVN_ERR(svn_sqlite__bindf(stmt, "isd", wcroot->wc_id, local_relpath,
op_depth));
- SVN_ERR(svn_sqlite__step_done(stmt));
+ SVN_ERR(svn_sqlite__step(&have_row, stmt));
- return SVN_NO_ERROR;
+ if (!have_row)
+ return svn_error_trace(svn_sqlite__reset(stmt));
+
+ working_depth = svn_sqlite__column_int(stmt, 0);
+ presence = svn_sqlite__column_token(stmt, 1, presence_map);
+ moved_to = svn_sqlite__column_text(stmt, 3, scratch_pool);
+
+ SVN_ERR(svn_sqlite__reset(stmt));
+
+ if (moved_to)
+ {
+ /* Turn the move into a copy to keep the NODES table valid */
+ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+ STMT_CLEAR_MOVED_HERE_RECURSIVE));
+ SVN_ERR(svn_sqlite__bindf(stmt, "isd", wcroot->wc_id,
+ moved_to, relpath_depth(moved_to)));
+ SVN_ERR(svn_sqlite__step_done(stmt));
+
+ /* This leaves just the moved_to information on the origin,
+ which we will remove in the next step */
+ }
+
+ if (presence == svn_wc__db_status_base_deleted)
+ {
+ /* Nothing left to shadow; remove the base-deleted node */
+ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_DELETE_NODE));
+ }
+ else if (moved_to)
+ {
+ /* Clear moved to information, as this node is no longer base-deleted */
+ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+ STMT_CLEAR_MOVED_TO_RELPATH));
+ }
+ else
+ {
+ /* Nothing to update */
+ return SVN_NO_ERROR;
+ }
+
+ SVN_ERR(svn_sqlite__bindf(stmt, "isd", wcroot->wc_id, local_relpath,
+ working_depth));
+
+ return svn_error_trace(svn_sqlite__update(NULL, stmt));
}
@@ -4076,8 +4126,9 @@ get_info_for_copy(apr_int64_t *copyfrom_id,
svn_wc__db_status_t *status,
svn_node_kind_t *kind,
svn_boolean_t *op_root,
- svn_wc__db_wcroot_t *wcroot,
+ svn_wc__db_wcroot_t *src_wcroot,
const char *local_relpath,
+ svn_wc__db_wcroot_t *dst_wcroot,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
@@ -4094,7 +4145,7 @@ get_info_for_copy(apr_int64_t *copyfrom_id,
NULL /* have_base */,
NULL /* have_more_work */,
NULL /* have_work */,
- wcroot, local_relpath, result_pool, scratch_pool));
+ src_wcroot, local_relpath, result_pool, scratch_pool));
if (op_root)
*op_root = is_op_root;
@@ -4109,7 +4160,7 @@ get_info_for_copy(apr_int64_t *copyfrom_id,
scratch_pool);
SVN_ERR(get_info_for_copy(copyfrom_id, copyfrom_relpath, copyfrom_rev,
NULL, NULL, NULL,
- wcroot, parent_relpath,
+ src_wcroot, parent_relpath, dst_wcroot,
scratch_pool, scratch_pool));
if (*copyfrom_relpath)
*copyfrom_relpath = svn_relpath_join(*copyfrom_relpath, base_name,
@@ -4118,7 +4169,7 @@ get_info_for_copy(apr_int64_t *copyfrom_id,
else if (node_status == svn_wc__db_status_added)
{
SVN_ERR(scan_addition(&node_status, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, wcroot, local_relpath,
+ NULL, NULL, NULL, src_wcroot, local_relpath,
scratch_pool, scratch_pool));
}
else if (node_status == svn_wc__db_status_deleted && is_op_root)
@@ -4127,7 +4178,7 @@ get_info_for_copy(apr_int64_t *copyfrom_id,
SVN_ERR(scan_deletion_txn(&base_del_relpath, NULL,
&work_del_relpath,
- NULL, wcroot, local_relpath,
+ NULL, src_wcroot, local_relpath,
scratch_pool, scratch_pool));
if (work_del_relpath)
{
@@ -4140,7 +4191,8 @@ get_info_for_copy(apr_int64_t *copyfrom_id,
SVN_ERR(scan_addition(NULL, &op_root_relpath,
NULL, NULL, /* repos_* */
copyfrom_relpath, copyfrom_id, copyfrom_rev,
- NULL, NULL, NULL, wcroot, parent_del_relpath,
+ NULL, NULL, NULL,
+ src_wcroot, parent_del_relpath,
scratch_pool, scratch_pool));
*copyfrom_relpath
= svn_relpath_join(*copyfrom_relpath,
@@ -4155,7 +4207,7 @@ get_info_for_copy(apr_int64_t *copyfrom_id,
copyfrom_id, NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
- wcroot, local_relpath,
+ src_wcroot, local_relpath,
result_pool,
scratch_pool));
}
@@ -4177,6 +4229,24 @@ get_info_for_copy(apr_int64_t *copyfrom_id,
if (status)
*status = node_status;
+ if (src_wcroot != dst_wcroot && *copyfrom_relpath)
+ {
+ const char *repos_root_url;
+ const char *repos_uuid;
+
+ /* Pass the right repos-id for the destination db. We can't just use
+ the id of the source database, as this value can change after
+ relocation (and perhaps also when we start storing multiple
+ working copies in a single db)! */
+
+ SVN_ERR(svn_wc__db_fetch_repos_info(&repos_root_url, &repos_uuid,
+ src_wcroot->sdb, *copyfrom_id,
+ scratch_pool));
+
+ SVN_ERR(create_repos_id(copyfrom_id, repos_root_url, repos_uuid,
+ dst_wcroot->sdb, scratch_pool));
+ }
+
return SVN_NO_ERROR;
}
@@ -4336,8 +4406,9 @@ db_op_copy(svn_wc__db_wcroot_t *src_wcroot,
const apr_array_header_t *children;
SVN_ERR(get_info_for_copy(&copyfrom_id, &copyfrom_relpath, &copyfrom_rev,
- &status, &kind, &op_root, src_wcroot,
- src_relpath, scratch_pool, scratch_pool));
+ &status, &kind, &op_root,
+ src_wcroot, src_relpath, dst_wcroot,
+ scratch_pool, scratch_pool));
SVN_ERR(op_depth_for_copy(&dst_op_depth, &dst_np_op_depth,
&dst_parent_op_depth,
@@ -4562,21 +4633,6 @@ db_op_copy(svn_wc__db_wcroot_t *src_wcroot,
}
else
{
- if (copyfrom_relpath)
- {
- const char *repos_root_url;
- const char *repos_uuid;
-
- /* Pass the right repos-id for the destination db! */
-
- SVN_ERR(svn_wc__db_fetch_repos_info(&repos_root_url, &repos_uuid,
- src_wcroot->sdb, copyfrom_id,
- scratch_pool));
-
- SVN_ERR(create_repos_id(&copyfrom_id, repos_root_url, repos_uuid,
- dst_wcroot->sdb, scratch_pool));
- }
-
SVN_ERR(cross_db_copy(src_wcroot, src_relpath, dst_wcroot,
dst_relpath, dst_presence, dst_op_depth,
dst_np_op_depth, kind,
@@ -7176,7 +7232,7 @@ remove_node_txn(svn_boolean_t *left_changes,
if (local_relpath[0] != '\0')
{
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
- STMT_DELETE_NODE));
+ STMT_DELETE_NODE_ALL_LAYERS));
SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
SVN_ERR(svn_sqlite__step_done(stmt));
}
@@ -7487,8 +7543,86 @@ struct moved_node_t {
/* The op-depth of the deleted node at the source of the move. */
int op_depth;
+
+ /* When >= 1 the op_depth at which local_relpath was moved to its
+ location. Used to find its original location outside the delete */
+ int moved_from_depth;
};
+/* Helper function to resolve the original location of local_relpath at OP_DEPTH
+ before it was moved into the tree rooted at ROOT_RELPATH. */
+static svn_error_t *
+resolve_moved_from(const char **moved_from_relpath,
+ int *moved_from_op_depth,
+ svn_wc__db_wcroot_t *wcroot,
+ const char *root_relpath,
+ const char *local_relpath,
+ int op_depth,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ const char *suffix = "";
+ svn_sqlite__stmt_t *stmt;
+ const char *m_from_relpath;
+ int m_from_op_depth;
+ int m_move_from_depth;
+ svn_boolean_t have_row;
+
+ while (relpath_depth(local_relpath) > op_depth)
+ {
+ const char *name;
+ svn_relpath_split(&local_relpath, &name, local_relpath, scratch_pool);
+ suffix = svn_relpath_join(suffix, name, scratch_pool);
+ }
+
+ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+ STMT_SELECT_MOVED_FROM_FOR_DELETE));
+ SVN_ERR(svn_sqlite__bindf(stmt, "is",
+ wcroot->wc_id, local_relpath));
+ SVN_ERR(svn_sqlite__step(&have_row, stmt));
+
+ if (!have_row)
+ {
+ /* assert(have_row); */
+ *moved_from_relpath = NULL;
+ *moved_from_op_depth = -1;
+
+ SVN_ERR(svn_sqlite__reset(stmt));
+
+ return SVN_NO_ERROR;
+ }
+
+ m_from_relpath = svn_sqlite__column_text(stmt, 0, scratch_pool);
+ m_from_op_depth = svn_sqlite__column_int(stmt, 1);
+ m_move_from_depth = svn_sqlite__column_int(stmt, 2);
+
+ SVN_ERR(svn_sqlite__reset(stmt));
+
+ if (! svn_relpath_skip_ancestor(root_relpath, m_from_relpath))
+ {
+ *moved_from_relpath = svn_relpath_join(m_from_relpath, suffix,
+ result_pool);
+ *moved_from_op_depth = m_from_op_depth; /* ### Ok? */
+ return SVN_NO_ERROR;
+ }
+ else if (!m_move_from_depth)
+ {
+ *moved_from_relpath = NULL;
+ *moved_from_op_depth = -1;
+ return SVN_NO_ERROR;
+ }
+
+ return svn_error_trace(
+ resolve_moved_from(moved_from_relpath,
+ moved_from_op_depth,
+ wcroot,
+ root_relpath,
+ svn_relpath_join(m_from_relpath, suffix,
+ scratch_pool),
+ m_move_from_depth,
+ result_pool, scratch_pool));
+}
+
static svn_error_t *
delete_node(void *baton,
svn_wc__db_wcroot_t *wcroot,
@@ -7500,19 +7634,70 @@ delete_node(void *baton,
svn_boolean_t have_row, op_root;
svn_boolean_t add_work = FALSE;
svn_sqlite__stmt_t *stmt;
- int select_depth; /* Depth of what is to be deleted */
- svn_boolean_t refetch_depth = FALSE;
+ int working_op_depth; /* Depth of what is to be deleted */
+ int keep_op_depth = 0; /* Depth of what is below what is deleted */
svn_node_kind_t kind;
apr_array_header_t *moved_nodes = NULL;
- int delete_depth = relpath_depth(local_relpath);
+ int delete_op_depth = relpath_depth(local_relpath);
- SVN_ERR(read_info(&status,
- &kind, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- &op_root, NULL, NULL,
- NULL, NULL, NULL,
- wcroot, local_relpath,
- scratch_pool, scratch_pool));
+ assert(*local_relpath); /* Can't delete wcroot */
+
+ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+ STMT_SELECT_NODE_INFO));
+ SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
+ SVN_ERR(svn_sqlite__step(&have_row, stmt));
+
+ if (!have_row)
+ {
+ return svn_error_createf(SVN_ERR_WC_PATH_NOT_FOUND,
+ svn_sqlite__reset(stmt),
+ _("The node '%s' was not found."),
+ path_for_error_message(wcroot,
+ local_relpath,
+ scratch_pool));
+ }
+
+ working_op_depth = svn_sqlite__column_int(stmt, 0);
+ status = svn_sqlite__column_token(stmt, 3, presence_map);
+ kind = svn_sqlite__column_token(stmt, 4, kind_map);
+
+ if (working_op_depth < delete_op_depth)
+ {
+ op_root = FALSE;
+ add_work = TRUE;
+ keep_op_depth = working_op_depth;
+ }
+ else
+ {
+ op_root = TRUE;
+
+ SVN_ERR(svn_sqlite__step(&have_row, stmt));
+
+ if (have_row)
+ {
+ svn_wc__db_status_t below_status;
+ int below_op_depth;
+
+ below_op_depth = svn_sqlite__column_int(stmt, 0);
+ below_status = svn_sqlite__column_token(stmt, 3, presence_map);
+
+ if (below_status != svn_wc__db_status_not_present
+ && below_status != svn_wc__db_status_base_deleted)
+ {
+ add_work = TRUE;
+ keep_op_depth = below_op_depth;
+ }
+ else
+ keep_op_depth = 0;
+ }
+ else
+ keep_op_depth = -1;
+ }
+
+ SVN_ERR(svn_sqlite__reset(stmt));
+
+ if (working_op_depth != 0) /* WORKING */
+ SVN_ERR(convert_to_working_status(&status, status));
if (status == svn_wc__db_status_deleted
|| status == svn_wc__db_status_not_present)
@@ -7591,6 +7776,7 @@ delete_node(void *baton,
part, scratch_pool);
moved_node->op_depth = move_op_depth;
moved_node->moved_to_relpath = b->moved_to_relpath;
+ moved_node->moved_from_depth = -1;
APR_ARRAY_PUSH(moved_nodes, const struct moved_node_t *) = moved_node;
}
@@ -7602,8 +7788,9 @@ delete_node(void *baton,
* possibly because of a nested move operation. */
moved_node = apr_palloc(scratch_pool, sizeof(struct moved_node_t));
moved_node->local_relpath = local_relpath;
- moved_node->op_depth = delete_depth;
+ moved_node->op_depth = delete_op_depth;
moved_node->moved_to_relpath = b->moved_to_relpath;
+ moved_node->moved_from_depth = -1;
APR_ARRAY_PUSH(moved_nodes, const struct moved_node_t *) = moved_node;
}
@@ -7618,24 +7805,18 @@ delete_node(void *baton,
b->moved_to_relpath));
SVN_ERR(svn_sqlite__update(NULL, stmt));
}
- else
- {
- SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
- STMT_CLEAR_MOVED_TO_DESCENDANTS));
- SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id,
- local_relpath));
- SVN_ERR(svn_sqlite__update(NULL, stmt));
- }
/* Find children that were moved out of the subtree rooted at this node.
* We'll need to update their op-depth columns because their deletion
* is now implied by the deletion of their parent (i.e. this node). */
{
apr_pool_t *iterpool;
+ int i;
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
STMT_SELECT_MOVED_FOR_DELETE));
- SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
+ SVN_ERR(svn_sqlite__bindf(stmt, "isd", wcroot->wc_id, local_relpath,
+ delete_op_depth));
SVN_ERR(svn_sqlite__step(&have_row, stmt));
iterpool = svn_pool_create(scratch_pool);
@@ -7645,52 +7826,85 @@ delete_node(void *baton,
const char *child_relpath = svn_sqlite__column_text(stmt, 0, NULL);
const char *mv_to_relpath = svn_sqlite__column_text(stmt, 1, NULL);
int child_op_depth = svn_sqlite__column_int(stmt, 2);
+ int moved_from_depth = -1;
svn_boolean_t fixup = FALSE;
- if (!b->moved_to_relpath
+ if (! b->moved_to_relpath
&& ! svn_relpath_skip_ancestor(local_relpath, mv_to_relpath))
{
- /* Update the op-depth of an moved node below this tree */
- fixup = TRUE;
- child_op_depth = delete_depth;
- }
- else if (b->moved_to_relpath
- && delete_depth == child_op_depth)
- {
- /* Update the op-depth of a tree shadowed by this tree */
- fixup = TRUE;
- child_op_depth = delete_depth;
- }
- else if (b->moved_to_relpath
- && child_op_depth >= delete_depth
- && !svn_relpath_skip_ancestor(local_relpath, mv_to_relpath))
- {
- /* Update the move destination of something that is now moved
- away further */
+ /* a NULL moved_here_depth will be reported as 0 */
+ int moved_here_depth = svn_sqlite__column_int(stmt, 3);
- child_relpath = svn_relpath_skip_ancestor(local_relpath, child_relpath);
+ /* Plain delete. Fixup move information of descendants that were
+ moved here, or that were moved out */
- if (child_relpath)
+ if (moved_here_depth >= delete_op_depth)
{
- child_relpath = svn_relpath_join(b->moved_to_relpath, child_relpath, scratch_pool);
+ /* The move we recorded here must be moved to the location
+ this node had before it was moved here.
- if (child_op_depth > delete_depth
- && svn_relpath_skip_ancestor(local_relpath, child_relpath))
- child_op_depth = delete_depth;
- else
- child_op_depth = relpath_depth(child_relpath);
+ This might contain multiple steps when the node was moved
+ in several places within the to be deleted tree */
+
+ /* ### TODO: Add logic */
+ fixup = TRUE;
+ moved_from_depth = moved_here_depth;
+ }
+ else
+ {
+ /* Update the op-depth of an moved away node that was
+ registered as moved by the records that we are about
+ to delete */
+ fixup = TRUE;
+ child_op_depth = delete_op_depth;
+ }
+ }
+ else if (b->moved_to_relpath)
+ {
+ /* The node is moved to a new location */
+ if (delete_op_depth == child_op_depth)
+ {
+ /* Update the op-depth of a tree shadowed by this tree */
fixup = TRUE;
+ /*child_op_depth = delete_depth;*/
+ }
+ else if (child_op_depth >= delete_op_depth
+ && !svn_relpath_skip_ancestor(local_relpath,
+ mv_to_relpath))
+ {
+ /* Update the move destination of something that is now moved
+ away further */
+
+ child_relpath = svn_relpath_skip_ancestor(local_relpath,
+ child_relpath);
+
+ if (child_relpath)
+ {
+ child_relpath = svn_relpath_join(b->moved_to_relpath,
+ child_relpath,
+ scratch_pool);
+
+ if (child_op_depth > delete_op_depth
+ && svn_relpath_skip_ancestor(local_relpath,
+ child_relpath))
+ child_op_depth = delete_op_depth;
+ else
+ child_op_depth = relpath_depth(child_relpath);
+
+ fixup = TRUE;
+ }
}
}
if (fixup)
{
- mn = apr_pcalloc(scratch_pool, sizeof(struct moved_node_t));
+ mn = apr_palloc(scratch_pool, sizeof(struct moved_node_t));
mn->local_relpath = apr_pstrdup(scratch_pool, child_relpath);
mn->moved_to_relpath = apr_pstrdup(scratch_pool, mv_to_relpath);
mn->op_depth = child_op_depth;
+ mn->moved_from_depth = moved_from_depth;
if (!moved_nodes)
moved_nodes = apr_array_make(scratch_pool, 1,
@@ -7700,58 +7914,67 @@ delete_node(void *baton,
SVN_ERR(svn_sqlite__step(&have_row, stmt));
}
- svn_pool_destroy(iterpool);
SVN_ERR(svn_sqlite__reset(stmt));
- }
-
- if (op_root)
- {
- svn_boolean_t below_base;
- svn_boolean_t below_work;
- svn_wc__db_status_t below_status;
- /* Use STMT_SELECT_NODE_INFO directly instead of read_info plus
- info_below_working */
- SVN_ERR(info_below_working(&below_base, &below_work, &below_status,
- wcroot, local_relpath, -1, scratch_pool));
- if ((below_base || below_work)
- && below_status != svn_wc__db_status_not_present
- && below_status != svn_wc__db_status_deleted)
+ for (i = 0; moved_nodes && (i < moved_nodes->nelts); i++)
{
- add_work = TRUE;
- refetch_depth = TRUE;
+ struct moved_node_t *mn = APR_ARRAY_IDX(moved_nodes, i,
+ struct moved_node_t *);
+
+ if (mn->moved_from_depth > 0)
+ {
+ svn_pool_clear(iterpool);
+
+ SVN_ERR(resolve_moved_from(&mn->local_relpath, &mn->op_depth,
+ wcroot, local_relpath,
+ mn->local_relpath,
+ mn->moved_from_depth,
+ scratch_pool, iterpool));
+
+ if (!mn->local_relpath)
+ svn_sort__array_delete(moved_nodes, i--, 1);
+ }
}
- select_depth = relpath_depth(local_relpath);
+ svn_pool_destroy(iterpool);
}
- else
+
+ if (!b->moved_to_relpath)
{
- add_work = TRUE;
- if (status != svn_wc__db_status_normal)
- SVN_ERR(op_depth_of(&select_depth, wcroot, local_relpath));
- else
- select_depth = 0; /* Deleting BASE node */
+ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+ STMT_CLEAR_MOVED_TO_DESCENDANTS));
+ SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id,
+ local_relpath));
+ SVN_ERR(svn_sqlite__update(NULL, stmt));
+
+ if (op_root)
+ {
+ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+ STMT_CLEAR_MOVED_TO_FROM_DEST));
+ SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id,
+ local_relpath));
+
+ SVN_ERR(svn_sqlite__update(NULL, stmt));
+ }
}
+
/* ### Put actual-only nodes into the list? */
if (b->notify)
{
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
STMT_INSERT_DELETE_LIST));
SVN_ERR(svn_sqlite__bindf(stmt, "isd",
- wcroot->wc_id, local_relpath, select_depth));
+ wcroot->wc_id, local_relpath, working_op_depth));
SVN_ERR(svn_sqlite__step_done(stmt));
}
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE));
SVN_ERR(svn_sqlite__bindf(stmt, "isd",
- wcroot->wc_id, local_relpath, delete_depth));
+ wcroot->wc_id, local_relpath, delete_op_depth));
SVN_ERR(svn_sqlite__step_done(stmt));
- if (refetch_depth)
- SVN_ERR(op_depth_of(&select_depth, wcroot, local_relpath));
-
/* Delete ACTUAL_NODE rows, but leave those that have changelist
and a NODES row. */
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
@@ -7781,7 +8004,7 @@ delete_node(void *baton,
STMT_INSERT_DELETE_FROM_NODE_RECURSIVE));
SVN_ERR(svn_sqlite__bindf(stmt, "isdd",
wcroot->wc_id, local_relpath,
- select_depth, delete_depth));
+ keep_op_depth, delete_op_depth));
SVN_ERR(svn_sqlite__step_done(stmt));
}
@@ -8680,7 +8903,11 @@ read_children_info(svn_wc__db_wcroot_t *wcroot,
else
child->op_root = (op_depth == relpath_depth(child_relpath));
- svn_hash_sets(nodes, apr_pstrdup(result_pool, name), child);
+ if (op_depth && child->op_root)
+ child_item->info.moved_here = svn_sqlite__column_boolean(stmt, 20);
+
+ if (new_child)
+ svn_hash_sets(nodes, apr_pstrdup(result_pool, name), child);
}
if (op_depth == 0)
@@ -8702,18 +8929,48 @@ read_children_info(svn_wc__db_wcroot_t *wcroot,
child_item->nr_layers++;
child_item->info.have_more_work = (child_item->nr_layers > 1);
- /* Moved-to can only exist at op_depth > 0. */
- /* ### Should we really do this for every layer where op_depth > 0
- in undefined order? */
+
+ /* A local_relpath can be moved multiple times at different op
+ depths and it really depends on the caller what is interesting.
+ We provide a simple linked list with the moved_from information */
+
moved_to_relpath = svn_sqlite__column_text(stmt, 21, NULL);
if (moved_to_relpath)
- child_item->info.moved_to_abspath =
- svn_dirent_join(wcroot->abspath, moved_to_relpath, result_pool);
+ {
+ struct svn_wc__db_moved_to_info_t *moved_to;
+ struct svn_wc__db_moved_to_info_t **next;
+ const char *shadow_op_relpath;
+ int cur_op_depth;
+
+ moved_to = apr_pcalloc(result_pool, sizeof(*moved_to));
+ moved_to->moved_to_abspath = svn_dirent_join(wcroot->abspath,
+ moved_to_relpath,
+ result_pool);
- /* Moved-here can only exist at op_depth > 0. */
- /* ### Should we really do this for every layer where op_depth > 0
- in undefined order? */
- child_item->info.moved_here = svn_sqlite__column_boolean(stmt, 20);
+ cur_op_depth = relpath_depth(child_relpath);
+ shadow_op_relpath = child_relpath;
+
+ while (cur_op_depth > op_depth)
+ {
+ shadow_op_relpath = svn_relpath_dirname(shadow_op_relpath,
+ scratch_pool);
+ cur_op_depth--;
+ }
+
+ moved_to->shadow_op_root_abspath =
+ svn_dirent_join(wcroot->abspath, shadow_op_relpath,
+ result_pool);
+
+ next = &child_item->info.moved_to;
+
+ while (*next &&
+ 0 < strcmp((*next)->shadow_op_root_abspath,
+ moved_to->shadow_op_root_abspath))
+ next = &((*next)->next);
+
+ moved_to->next = *next;
+ *next = moved_to;
+ }
}
SVN_ERR(svn_sqlite__step(&have_row, stmt));
@@ -8801,6 +9058,178 @@ svn_wc__db_read_children_info(apr_hash_t **nodes,
return SVN_NO_ERROR;
}
+static svn_error_t *
+db_read_props(apr_hash_t **props,
+ svn_wc__db_wcroot_t *wcroot,
+ const char *local_relpath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+static svn_error_t *
+read_single_info(const struct svn_wc__db_info_t **info,
+ svn_wc__db_wcroot_t *wcroot,
+ const char *local_relpath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ struct svn_wc__db_info_t *mtb;
+ apr_int64_t repos_id;
+ const svn_checksum_t *checksum;
+ const char *original_repos_relpath;
+ svn_boolean_t have_work;
+
+ mtb = apr_pcalloc(result_pool, sizeof(*mtb));
+
+ SVN_ERR(read_info(&mtb->status, &mtb->kind, &mtb->revnum,
+ &mtb->repos_relpath, &repos_id, &mtb->changed_rev,
+ &mtb->changed_date, &mtb->changed_author, &mtb->depth,
+ &checksum, NULL, &original_repos_relpath, NULL, NULL,
+ &mtb->lock, &mtb->recorded_size, &mtb->recorded_time,
+ &mtb->changelist, &mtb->conflicted, &mtb->op_root,
+ &mtb->had_props, &mtb->props_mod, &mtb->have_base,
+ &mtb->have_more_work, &have_work,
+ wcroot, local_relpath,
+ result_pool, scratch_pool));
+
+ /* Query the same rows in the database again for move information */
+ if (have_work && (mtb->have_base || mtb->have_more_work))
+ {
+ svn_sqlite__stmt_t *stmt;
+ svn_boolean_t have_row;
+ const char *cur_relpath = NULL;
+ int cur_op_depth;
+
+ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+ STMT_SELECT_MOVED_TO_NODE));
+ SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
+
+ SVN_ERR(svn_sqlite__step(&have_row, stmt));
+
+ while (have_row)
+ {
+ struct svn_wc__db_moved_to_info_t *move;
+ int op_depth = svn_sqlite__column_int(stmt, 0);
+ const char *moved_to_relpath = svn_sqlite__column_text(stmt, 1, NULL);
+
+ move = apr_pcalloc(result_pool, sizeof(*move));
+ move->moved_to_abspath = svn_dirent_join(wcroot->abspath,
+ moved_to_relpath,
+ result_pool);
+
+ if (!cur_relpath)
+ {
+ cur_relpath = local_relpath;
+ cur_op_depth = relpath_depth(cur_relpath);
+ }
+ while (cur_op_depth > op_depth)
+ {
+ cur_relpath = svn_relpath_dirname(cur_relpath, scratch_pool);
+ cur_op_depth--;
+ }
+ move->shadow_op_root_abspath = svn_dirent_join(wcroot->abspath,
+ cur_relpath,
+ result_pool);
+
+ move->next = mtb->moved_to;
+ mtb->moved_to = move;
+
+ SVN_ERR(svn_sqlite__step(&have_row, stmt));
+ }
+
+ SVN_ERR(svn_sqlite__reset(stmt));
+ }
+
+ /* Maybe we have to get some shadowed lock from BASE to make our test suite
+ happy... (It might be completely unrelated, but...)
+ This queries the same BASE row again, joined to the lock table */
+ if (mtb->have_base && (have_work || mtb->kind == svn_node_file))
+ {
+ svn_boolean_t update_root;
+ svn_wc__db_lock_t **lock_arg = NULL;
+
+ if (have_work)
+ lock_arg = &mtb->lock;
+
+ SVN_ERR(svn_wc__db_base_get_info_internal(NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, lock_arg, NULL, NULL,
+ &update_root,
+ wcroot, local_relpath,
+ result_pool, scratch_pool));
+
+ mtb->file_external = (update_root && mtb->kind == svn_node_file);
+ }
+
+ if (mtb->status == svn_wc__db_status_added)
+ {
+ svn_wc__db_status_t status;
+
+ SVN_ERR(scan_addition(&status, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL,
+ wcroot, local_relpath,
+ result_pool, scratch_pool));
+
+ mtb->moved_here = (status == svn_wc__db_status_moved_here);
+ mtb->incomplete = (status == svn_wc__db_status_incomplete);
+ }
+
+#ifdef HAVE_SYMLINK
+ if (mtb->kind == svn_node_file
+ && (mtb->had_props || mtb->props_mod))
+ {
+ apr_hash_t *properties;
+
+ if (mtb->props_mod)
+ SVN_ERR(db_read_props(&properties,
+ wcroot, local_relpath,
+ scratch_pool, scratch_pool));
+ else
+ SVN_ERR(db_read_pristine_props(&properties, wcroot, local_relpath,
+ TRUE /* deleted_ok */,
+ scratch_pool, scratch_pool));
+
+ mtb->special = (NULL != svn_hash_gets(properties, SVN_PROP_SPECIAL));
+ }
+#endif
+
+ mtb->has_checksum = (checksum != NULL);
+ mtb->copied = (original_repos_relpath != NULL);
+
+ SVN_ERR(svn_wc__db_fetch_repos_info(&mtb->repos_root_url, &mtb->repos_uuid,
+ wcroot->sdb, repos_id, result_pool));
+
+ if (mtb->kind == svn_node_dir)
+ SVN_ERR(is_wclocked(&mtb->locked, wcroot, local_relpath, scratch_pool));
+
+ *info = mtb;
+
+ return SVN_NO_ERROR;
+}
+
+svn_error_t *
+svn_wc__db_read_single_info(const struct svn_wc__db_info_t **info,
+ svn_wc__db_t *db,
+ const char *local_abspath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ svn_wc__db_wcroot_t *wcroot;
+ const char *local_relpath;
+
+ SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
+
+ SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&wcroot, &local_relpath, db,
+ local_abspath,
+ scratch_pool, scratch_pool));
+ VERIFY_USABLE_WCROOT(wcroot);
+
+ SVN_WC__DB_WITH_TXN(read_single_info(info, wcroot, local_relpath,
+ result_pool, scratch_pool),
+ wcroot);
+
+ return SVN_NO_ERROR;
+}
+
svn_error_t *
svn_wc__db_read_pristine_info(svn_wc__db_status_t *status,
svn_node_kind_t *kind,
@@ -10730,7 +11159,7 @@ commit_node(svn_wc__db_wcroot_t *wcroot,
if we need to remove shadowed layers below our descendants. */
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
- STMT_DELETE_ALL_LAYERS));
+ STMT_DELETE_NODE_ALL_LAYERS));
SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
SVN_ERR(svn_sqlite__update(&affected_rows, stmt));
diff --git a/subversion/libsvn_wc/wc_db.h b/subversion/libsvn_wc/wc_db.h
index a4ed3f976d60..b0914942416b 100644
--- a/subversion/libsvn_wc/wc_db.h
+++ b/subversion/libsvn_wc/wc_db.h
@@ -1909,6 +1909,16 @@ svn_wc__db_read_info(svn_wc__db_status_t *status, /* ### derived */
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+/* Structure used as linked list in svn_wc__db_info_t to describe all nodes
+ in this location that were moved to another location */
+struct svn_wc__db_moved_to_info_t
+{
+ const char *moved_to_abspath;
+ const char *shadow_op_root_abspath;
+
+ struct svn_wc__db_moved_to_info_t *next;
+};
+
/* Structure returned by svn_wc__db_read_children_info. Only has the
fields needed by status. */
struct svn_wc__db_info_t {
@@ -1945,7 +1955,10 @@ struct svn_wc__db_info_t {
svn_wc__db_lock_t *lock; /* Repository file lock */
svn_boolean_t incomplete; /* TRUE if a working node is incomplete */
- const char *moved_to_abspath; /* Only on op-roots. See svn_wc_status3_t. */
+ struct svn_wc__db_moved_to_info_t *moved_to; /* A linked list of locations
+ where nodes at this path
+ are moved to. Highest layers
+ first */
svn_boolean_t moved_here; /* Only on op-roots. */
svn_boolean_t file_external;
@@ -1967,6 +1980,14 @@ svn_wc__db_read_children_info(apr_hash_t **nodes,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+/* Like svn_wc__db_read_children_info, but only gets an info node for the root
+ element. */
+svn_error_t *
+svn_wc__db_read_single_info(const struct svn_wc__db_info_t **info,
+ svn_wc__db_t *db,
+ const char *local_abspath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
/* Structure returned by svn_wc__db_read_walker_info. Only has the
fields needed by svn_wc__internal_walk_children(). */
diff --git a/subversion/libsvn_wc/wc_db_wcroot.c b/subversion/libsvn_wc/wc_db_wcroot.c
index 21173e50cfa2..d801451f613e 100644
--- a/subversion/libsvn_wc/wc_db_wcroot.c
+++ b/subversion/libsvn_wc/wc_db_wcroot.c
@@ -690,8 +690,12 @@ try_symlink_as_dir:
svn_error_clear(err);
*wcroot = NULL;
}
- else
- SVN_ERR(err);
+ else if (err)
+ {
+ /* Close handle if we are not going to use it to support
+ upgrading with exclusive wc locking. */
+ return svn_error_compose_create(err, svn_sqlite__close(sdb));
+ }
}
else
{
diff --git a/subversion/svn/conflict-callbacks.c b/subversion/svn/conflict-callbacks.c
index 3d41ecf93670..b5cdf5f0785e 100644
--- a/subversion/svn/conflict-callbacks.c
+++ b/subversion/svn/conflict-callbacks.c
@@ -935,7 +935,7 @@ handle_text_conflict(svn_wc_conflict_result_t *result,
/* We only allow the user accept the merged version of
the file if they've edited it, or at least looked at
the diff. */
- if (result->choice == svn_wc_conflict_choose_merged
+ if (opt->choice == svn_wc_conflict_choose_merged
&& ! knows_something)
{
SVN_ERR(svn_cmdline_fprintf(
diff --git a/subversion/svndumpfilter/svndumpfilter.c b/subversion/svndumpfilter/svndumpfilter.c
index a2f3fe2b4f8e..a9430f7ef4fe 100644
--- a/subversion/svndumpfilter/svndumpfilter.c
+++ b/subversion/svndumpfilter/svndumpfilter.c
@@ -570,6 +570,9 @@ new_node_record(void **node_baton,
}
else
{
+ const char *kind;
+ const char *action;
+
tcl = svn_hash_gets(headers, SVN_REPOS_DUMPFILE_TEXT_CONTENT_LENGTH);
/* Test if this node was copied from dropped source. */
@@ -584,7 +587,6 @@ new_node_record(void **node_baton,
dumpfile should contain the new contents of the file. In this
scenario, we'll just do an add without history using the new
contents. */
- const char *kind;
kind = svn_hash_gets(headers, SVN_REPOS_DUMPFILE_NODE_KIND);
/* If there is a Text-content-length header, and the kind is
@@ -623,6 +625,30 @@ new_node_record(void **node_baton,
if (! nb->rb->writing_begun)
SVN_ERR(output_revision(nb->rb));
+ /* A node record is required to begin with 'Node-path', skip the
+ leading '/' to match the form used by 'svnadmin dump'. */
+ SVN_ERR(svn_stream_printf(nb->rb->pb->out_stream,
+ pool, "%s: %s\n",
+ SVN_REPOS_DUMPFILE_NODE_PATH, node_path + 1));
+
+ /* Node-kind is next and is optional. */
+ kind = svn_hash_gets(headers, SVN_REPOS_DUMPFILE_NODE_KIND);
+ if (kind)
+ SVN_ERR(svn_stream_printf(nb->rb->pb->out_stream,
+ pool, "%s: %s\n",
+ SVN_REPOS_DUMPFILE_NODE_KIND, kind));
+
+ /* Node-action is next and required. */
+ action = svn_hash_gets(headers, SVN_REPOS_DUMPFILE_NODE_ACTION);
+ if (action)
+ SVN_ERR(svn_stream_printf(nb->rb->pb->out_stream,
+ pool, "%s: %s\n",
+ SVN_REPOS_DUMPFILE_NODE_ACTION, action));
+ else
+ return svn_error_createf(SVN_ERR_INCOMPLETE_DATA, 0,
+ _("Missing Node-action for path '%s'"),
+ node_path);
+
for (hi = apr_hash_first(pool, headers); hi; hi = apr_hash_next(hi))
{
const char *key = svn__apr_hash_index_key(hi);
@@ -638,7 +664,10 @@ new_node_record(void **node_baton,
if ((!strcmp(key, SVN_REPOS_DUMPFILE_CONTENT_LENGTH))
|| (!strcmp(key, SVN_REPOS_DUMPFILE_PROP_CONTENT_LENGTH))
- || (!strcmp(key, SVN_REPOS_DUMPFILE_TEXT_CONTENT_LENGTH)))
+ || (!strcmp(key, SVN_REPOS_DUMPFILE_TEXT_CONTENT_LENGTH))
+ || (!strcmp(key, SVN_REPOS_DUMPFILE_NODE_PATH))
+ || (!strcmp(key, SVN_REPOS_DUMPFILE_NODE_KIND))
+ || (!strcmp(key, SVN_REPOS_DUMPFILE_NODE_ACTION)))
continue;
/* Rewrite Node-Copyfrom-Rev if we are renumbering revisions.
diff --git a/subversion/svnrdump/util.c b/subversion/svnrdump/util.c
index 91cefb3f0800..2586cd1dbf09 100644
--- a/subversion/svnrdump/util.c
+++ b/subversion/svnrdump/util.c
@@ -35,7 +35,7 @@ svn_rdump__normalize_prop(const char *name,
const svn_string_t **value,
apr_pool_t *result_pool)
{
- if (svn_prop_needs_translation(name))
+ if (svn_prop_needs_translation(name) && *value)
{
const char *cstring;
diff --git a/subversion/svnserve/serve.c b/subversion/svnserve/serve.c
index 6b66b199f266..a3fd938b1c30 100644
--- a/subversion/svnserve/serve.c
+++ b/subversion/svnserve/serve.c
@@ -1526,6 +1526,9 @@ static svn_error_t *get_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
&want_props, &want_contents,
&wants_inherited_props));
+ if (wants_inherited_props == SVN_RA_SVN_UNSPECIFIED_NUMBER)
+ wants_inherited_props = FALSE;
+
full_path = svn_fspath__join(b->fs_path->data,
svn_relpath_canonicalize(path, pool), pool);
@@ -1545,8 +1548,14 @@ static svn_error_t *get_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
SVN_CMD_ERR(svn_fs_file_checksum(&checksum, svn_checksum_md5, root,
full_path, TRUE, pool));
hex_digest = svn_checksum_to_cstring_display(checksum, pool);
+
+ /* Fetch the file's explicit and/or inherited properties if
+ requested. Although the wants-iprops boolean was added to the
+ protocol in 1.8 a standard 1.8 client never requests iprops. */
if (want_props || wants_inherited_props)
- SVN_CMD_ERR(get_props(&props, &inherited_props, &ab, root, full_path,
+ SVN_CMD_ERR(get_props(want_props ? &props : NULL,
+ wants_inherited_props ? &inherited_props : NULL,
+ &ab, root, full_path,
pool));
if (want_contents)
SVN_CMD_ERR(svn_fs_file_contents(&contents, root, full_path, pool));
@@ -1640,6 +1649,9 @@ static svn_error_t *get_dir(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
&dirent_fields_list,
&wants_inherited_props));
+ if (wants_inherited_props == SVN_RA_SVN_UNSPECIFIED_NUMBER)
+ wants_inherited_props = FALSE;
+
if (! dirent_fields_list)
{
dirent_fields = SVN_DIRENT_ALL;
@@ -1689,10 +1701,13 @@ static svn_error_t *get_dir(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
/* Fetch the root of the appropriate revision. */
SVN_CMD_ERR(svn_fs_revision_root(&root, b->fs, rev, pool));
- /* Fetch the directory's explicit and/or inherited properties
- if requested. */
+ /* Fetch the directory's explicit and/or inherited properties if
+ requested. Although the wants-iprops boolean was added to the
+ protocol in 1.8 a standard 1.8 client never requests iprops. */
if (want_props || wants_inherited_props)
- SVN_CMD_ERR(get_props(&props, &inherited_props, &ab, root, full_path,
+ SVN_CMD_ERR(get_props(want_props ? &props : NULL,
+ wants_inherited_props ? &inherited_props : NULL,
+ &ab, root, full_path,
pool));
/* Begin response ... */