Author: julianfoad Date: Mon Mar 9 09:53:06 2015 New Revision: 1665166 URL: http://svn.apache.org/r1665166 Log: On the 'move-tracking-2' branch: catch up with trunk@1665165.
Added: subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java - copied unchanged from r1665165, subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java subversion/branches/move-tracking-2/subversion/libsvn_subr/pools.h - copied unchanged from r1665165, subversion/trunk/subversion/libsvn_subr/pools.h subversion/branches/move-tracking-2/subversion/tests/cmdline/upgrade_tests_data/wc-without-stat1.tar.bz2 - copied unchanged from r1665165, subversion/trunk/subversion/tests/cmdline/upgrade_tests_data/wc-without-stat1.tar.bz2 Modified: subversion/branches/move-tracking-2/ (props changed) subversion/branches/move-tracking-2/CHANGES (contents, props changed) subversion/branches/move-tracking-2/build.conf (contents, props changed) subversion/branches/move-tracking-2/subversion/ (props changed) subversion/branches/move-tracking-2/subversion/bindings/javahl/native/BlameCallback.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitCallback.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitMessage.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/DiffSummaryReceiver.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/EditorProxy.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/InfoCallback.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/Iterator.h subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.h subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ListCallback.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/LogMessageCallback.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/OperationContext.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/PatchCallback.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ProplistCallback.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ReposFreezeAction.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StateReporter.h subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StatusCallback.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java subversion/branches/move-tracking-2/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c subversion/branches/move-tracking-2/subversion/include/private/svn_auth_private.h subversion/branches/move-tracking-2/subversion/include/private/svn_dep_compat.h subversion/branches/move-tracking-2/subversion/include/private/svn_sorts_private.h subversion/branches/move-tracking-2/subversion/include/svn_hash.h subversion/branches/move-tracking-2/subversion/include/svn_opt.h subversion/branches/move-tracking-2/subversion/libsvn_client/copy.c subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h subversion/branches/move-tracking-2/subversion/libsvn_fs_base/revs-txns.c subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.h subversion/branches/move-tracking-2/subversion/libsvn_ra/wrapper_template.h subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_local.h subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/commit.c subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/merge.c subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/ra_serf.h subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/serf.c subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c subversion/branches/move-tracking-2/subversion/libsvn_ra_svn/client.c subversion/branches/move-tracking-2/subversion/libsvn_ra_svn/cyrus_auth.c subversion/branches/move-tracking-2/subversion/libsvn_ra_svn/editorp.c subversion/branches/move-tracking-2/subversion/libsvn_ra_svn/internal_auth.c subversion/branches/move-tracking-2/subversion/libsvn_ra_svn/ra_svn.h subversion/branches/move-tracking-2/subversion/libsvn_repos/commit.c subversion/branches/move-tracking-2/subversion/libsvn_repos/rev_hunt.c subversion/branches/move-tracking-2/subversion/libsvn_subr/auth.c subversion/branches/move-tracking-2/subversion/libsvn_subr/config_win.c subversion/branches/move-tracking-2/subversion/libsvn_subr/error.c subversion/branches/move-tracking-2/subversion/libsvn_subr/hash.c subversion/branches/move-tracking-2/subversion/libsvn_subr/pool.c subversion/branches/move-tracking-2/subversion/libsvn_subr/sqlite.c subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c subversion/branches/move-tracking-2/subversion/libsvn_wc/externals.c subversion/branches/move-tracking-2/subversion/libsvn_wc/status.c subversion/branches/move-tracking-2/subversion/libsvn_wc/update_editor.c subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-queries.sql subversion/branches/move-tracking-2/subversion/libsvn_wc/wc.h subversion/branches/move-tracking-2/subversion/libsvn_wc/wc_db.c subversion/branches/move-tracking-2/subversion/libsvn_wc/wc_db.h subversion/branches/move-tracking-2/subversion/libsvn_wc/wc_db_update_move.c subversion/branches/move-tracking-2/subversion/libsvn_wc/wc_db_wcroot.c subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c subversion/branches/move-tracking-2/subversion/po/de.po subversion/branches/move-tracking-2/subversion/svn/info-cmd.c subversion/branches/move-tracking-2/subversion/svnrdump/load_editor.c subversion/branches/move-tracking-2/subversion/tests/cmdline/copy_tests.py subversion/branches/move-tracking-2/subversion/tests/cmdline/entries-dump.c subversion/branches/move-tracking-2/subversion/tests/cmdline/externals_tests.py subversion/branches/move-tracking-2/subversion/tests/cmdline/lock_tests.py subversion/branches/move-tracking-2/subversion/tests/cmdline/stat_tests.py subversion/branches/move-tracking-2/subversion/tests/cmdline/svnlook_tests.py subversion/branches/move-tracking-2/subversion/tests/cmdline/svnsync_authz_tests.py subversion/branches/move-tracking-2/subversion/tests/cmdline/svnsync_tests.py subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/sandbox.py subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/wc.py subversion/branches/move-tracking-2/subversion/tests/cmdline/upgrade_tests.py subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/conflict-data-test.c subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/op-depth-test.c subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/utils.c subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/utils.h subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/wc-queries-test.c subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c subversion/branches/move-tracking-2/tools/ (props changed) subversion/branches/move-tracking-2/tools/dist/backport.pl subversion/branches/move-tracking-2/tools/dist/backport_branch_with_original_revision.dump Propchange: subversion/branches/move-tracking-2/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Mar 9 09:53:06 2015 @@ -88,4 +88,4 @@ /subversion/branches/verify-at-commit:1462039-1462408 /subversion/branches/verify-keep-going:1439280-1546110 /subversion/branches/wc-collate-path:1402685-1480384 -/subversion/trunk:1606692-1663280 +/subversion/trunk:1606692-1663280,1663281-1665165* Modified: subversion/branches/move-tracking-2/CHANGES URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/CHANGES?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/CHANGES (original) +++ subversion/branches/move-tracking-2/CHANGES Mon Mar 9 09:53:06 2015 @@ -8,27 +8,26 @@ http://svn.apache.org/repos/asf/subversi * flush stdout before exiting to avoid information being lost (r1543868) - Major new features: - * membuffer: virtually perfect short-term cache efficiency (r1476664 et at) - * membuffer: quadruple the maximum cacheable directory size (r1545948 et al) + * fsfs: new format 7 with more efficient on-disk layout (r1547045 et al) * resolve: improve interactive conflict resolution menus * blame: support showing prospective as well as previous changes * info: support printing of individual values with --show-item (r1662620) * svn auth: new subcommand to manage cached credentials and certs + * svnserve: cache config and authz to lower resource usage and be able to + serve large numbers of connections with a limited number of threads + * membuffer: quadruple the maximum cacheable directory size (r1545948 et al) * new experimental filesystem fsx (faster, smaller) - * svnserve: cache config, authz and repos to lower resource usage and - be able to serve large numbers of connections with a limited number - of threads. - * fsfs: new format 7 with more efficient logical addressing (r1547045 et al) - Minor new features and improvements: - * new 'diff-ignore-content-type' runtime configuration option. - * new option for 'svnadmin verify': --check-normalization. - * new option for 'svnadmin verify': --keep-going. - * svnadmin info: print info about a repository. - * print summary of conflicts before/after interactive conflict resolution. - * import: reduce number of connections to the server needed. (r1482962) + * new 'diff-ignore-content-type' runtime configuration option + * new option for 'svnadmin verify': --check-normalization + * new option for 'svnadmin verify': --keep-going + * svnadmin info: print info about a repository + * print summary of conflicts before/after interactive conflict resolution + * import: reduce number of connections to the server needed (r1482962) + * membuffer: rework cache eviction heuristics (r1476664 et at) * membuffer: improved cache usage statistics (r1489883) - * mergeinfo: New '--log' option (r1492168) + * mergeinfo: new '--log' option (r1492168) * svnadmin upgrade: progress and cancellation support (r1495545, r1495566) * cleanup: add '--remove-unversioned' and '--remove-ignore' (issue #3549) * cleanup: add '--include-externals' option (issue #2325) @@ -40,33 +39,30 @@ http://svn.apache.org/repos/asf/subversi * svnadmin verify: speed up for repos with large directories (r1520419) * merge: interactive conflict merge option tries external tools (r1524145) * minor speed up in string to time conversion (r1533387) - * list: remove some unnecessary work from implementation (r1533392) * windows: speed up console output (r1533994) - * update: optimize wc db usage (r1537065 et al) + * update: optimize wc db usage when obtaining children (r1537065 et al) * decreased overhead for case-sensitive configuration access (r1538068) * avoid re-opening repo for in-repo authz if already open (r1538120) - * only use revprop caching if supported efficiently (r1543593) * svnserve: output errors in a more standard way (r1544250) * faster parsing of config file comments (r1544716) * avoid trying to open the hooks-env file when it doesn't exist (r1544721) * svnserve: provide the same logging detail in "run once" mode as provided in the log file (r1544731) * svnserve: reduce connection latency (r1544732) - * wc: optimize SQLite queries against wc db (r154511) * wc: reduce the number of locks and transactions required (r1545127 et al) * cat: add '--ignore-keywords' option (r1547517) * merge and mergeinfo: use fewer ra sessions (r1552265) * fsfs: limit delta chains from crossing too many shards (r1554942) * fsfs: option to configure compression level in deltas (r1559748) - * fsfs: enable dir and prop deltas and compressed revprops by default for - fsfs formats that support it (r1555286) + * fsfs: enable dir and prop deltas by default for formats that support + it (r1555286) * fsfs: avoid out of date errors from files in a directory changing when you change a property on the directory (r1558224) * fsfs: temporary transaction properties are preserved when commit is interrupted (r1549907 et al) - * fsfs: don't try to read revprops for a new transaction (r1544719) - * fsfs: avoid trying to open digest files that don't exist (r1544721) - * fsfs: Use sorted array instead of hash for directory representation + * fsfs: speed up transaction creation (r1544719) + * fsfs: avoid trying to open lock digest files that don't exist (r1544721) + * fsfs: use sorted array instead of hash for directory representation internally, this minimizes some overhead (r1554711) * fsfs: skip decoding txdelta windows that are already cached (r1555284) * fsfs: avoid constructing fulltext when delta we need is stored (r1555297) @@ -90,27 +86,26 @@ http://svn.apache.org/repos/asf/subversi * ra_serf: pipeline lock/unlock requests (r1551918, r1551993, r1552008) * ra_serf: pipeline requests for inherited properties against old servers that don't support the faster REPORT (r1552455, r1552475) - * ra_serf: allow reuse of sessions after a timeout (r1557686) + * ra_serf: allow reuse of sessions after a canceled request (r1557686) * ra_serf: reduce memory usage when retrieving revision props (r1557689) - * svnrdump dump: reduce memory footprint (r1557736) * mod_dav_svn: make out of date error message consistent with generic repos logic (r1558247) - * wc: allow SQLite to optimize functions that are deterministic (r1559352) + * allow SQLite to optimize functions that are deterministic (r1559352) * speed up delta calculations on non-deltifyable sections (r1559767) * ra_serf: improve memory usage in commit processing (r1520028) * report progress as cumulative across all sessions (issue #3260) * ra_serf: don't send DAV headers with GET requests (r1517472) * mod_dav_svn: SVNCacheTextDeltas defaults to on (r1517479) - * fs: improve scability of fs_open and similar functions (r1523450 et al) - * svnserve: improve performance and scability (r1523465 et al) + * fs: improve scalability of fs_open and similar functions (r1523450 et al) + * svnserve: improve performance and scalability (r1523465 et al) * svnadmin verify: output progress messages to stdout (r1471095) * svnadmin crashtest: make output less misleading (r1486046) * mod_dav_svn: discover copy to src earlier in some cases (r1537440) * speed up mergeinfo parsing (r1483292, r1483309 et al) - * optimize hash lookups used throughout subversion (r1483434 et al) + * optimize hash lookups used in mergeinfo and caching (r1483434 et al) * log: optimize string handling in repos layer (r1483570, r1483572) - * ask hardware to sync instead of only syncing to hardware buffers when - OS supports it (r1484439, r1484445) + * ask disk hardware to sync instead of only syncing to hardware buffers + when OS supports it (r1484439, r1484445) * optimize diff code to avoid unneeded comparisons (r1485488) * optimize check if relpaths are canonical (r1485496, r1489828) * ra_svn: reduce protocol implementation overhead (r1485499, r1485504 et al) @@ -120,12 +115,10 @@ http://svn.apache.org/repos/asf/subversi * use a cheaper ra operation for common client calculation (r1496468 et al) * ra_svn: avoid unnecessary work when doing a blame (r1503046) * optimize reading files into memory if size is known (r1505068) - * mod_authz_svn: log access denied messages as warnings (r1562417) * copy: do not error on properties when doing a foreign copy (r1563361) * membuffer: reduce memory usage by using shorter lived pools (r1564217) * svnadmin load: add '--ignore-dates' option (r1564789) * update: reduce sessions used with '--parents' option (r1565920) - * fix L1->L2 promotion/eviction heuristics for high hit counts (r1568599) * diff: report properties on deleted nodes (r1569320, r1570055) * diff: switch to diff processor APIs instead of old style callbacks, step towards resolving long standing bugs and feature requests (r1569551 et al) @@ -135,11 +128,67 @@ http://svn.apache.org/repos/asf/subversi * svn --version: list available authentication credential caches (r1572106) * improved detection of changes between two nodes, this should reduce the number of out of date errors clients see (r1572336) - * alow the use of libmagic to be configured via subversion configuration + * allow the use of libmagic to be configured via subversion configuration file or SVN_CONFIG_OPTION_ENABLE_MAGIC_FILE env variable (r1572916) - * store human readable info about SSL certs in auth store (r1573625) * new '--pin-externals' option for svn copy (issue #1258) * the '--strict' option was replaced by '--no-newline' (r1662224) + * merge/update: switch to three-way text conflict markers + (r1591951, r1595522) + * patch: handle renames in git formatted patches (r1594636) + * svnfsfs: new expert tool (r1594860) + * mod_dav_svn: allow server admin to GET the FSFS global cache stats + (r1595160) + * patch: support of svn:mergeinfo (issue #3747) + * diff: support git-like binary file diffs with '--git' (r1599552) + * diff: support arbitrary context size for internal diff tool with + '-U' option (r1603847, 1603871) + * commit: print progress notification between client finishing + transmitting text deltas and asking server to commit (r1604179) + * fsfs: optimize log commands for repos on Windows by not + using a locale specific function to parse ids (r1605123) + * fsfs: reduce memory usage of reading/writing changed paths caches + (r1605188 et al) + * mod_dav_svn: log post-commit errors to httpd error log as well + as returning them to client (r1606004) + * make server config groups work with svn:// URLs (issue #4512) + * svnadmin hotcopy: report progress when copying revisions and packed + shards for FSFS repositories (r1613339) + * info: show revisions for missing tree conflicts (r1617932) + * fsfs: avoid shared data clashes due to multiple distinct repositories + having identical UUIDs (r1618138 et al) + * status: ignore thumbs.db files by default (r1620955) + * fsfs: harden parsers against data corruption + (r1622931, r1622937, r1622942) + * diff: translate files when doing arbitrary diffs (r1623820) + * ra_serf: reduce size of XML generated for reports (r1627333) + * replace generic --trust-server-cert with more specific options to + override specific certificate failures (r1630117 et al) + * commit: improve speed of commits with many files (r1630312 et al) + * svnadmin setrevprop: add '--transaction' option (r1631435) + * svnadmin delrevprop: add '--transaction' option (r1631435) + * svnadmin verify: validate the index data against checksums (r1631598) + * cp: improve performance of local copies (r1632284, et al) + * fsfs: speed up operations that use revision properties + (r1634875, r1634879) + * checkout/update: use fewer ra sessions (r1635753 et al) + * log: do less work when '--with-no-revprops' is used (r1642231) + * patch: improve command to be more capable as compared to GNU patch + (issue #4533) + * limit server caches to avoid running out of memory if server admin + configured caches largely then they can possibly be on the platform + (r1645572) + * mod_authz_svn: log implicit read access failures with INFO log level + Explicit read access failures are still logged with ERROR log level + (r1653032) + * ra_serf: reduce memory usage by removing some extra intermediary state + (r1654681, r1654690) + * revert: improve performance on large working copies without changes + (r1657083) + * ra_svn: improve efficiency of editor processing (r1658194 et al) + * merge: provide different conflict reasons for local additions and + unversioned obstructions (r1659381) + * windows: improve checkout performance on windows by using sqlite truncate + journal mode rather than delete (r1659426) - Client-side bugfixes: * export: fix problem exporting symlinks on windows (r1476093) @@ -159,7 +208,6 @@ http://svn.apache.org/repos/asf/subversi * mergeinfo: allow to work on a moved target (issue #4301) * windows: avoid delay when no homedir is available (r1546814) * status: report externals in a deterministic way (r1550200) - * verify requested cached credentials match realm requested (r1550691 et al) * copy: avoid an unneeded extra ra session for wc to repo case (r1551564) * ra_serf: show pre-revprop-change failure on revprop delete (issue #3086) * svnsync: avoid extra request at end of every revision sync (r1553370) @@ -174,10 +222,8 @@ http://svn.apache.org/repos/asf/subversi * log: reduce performance penalties of using -g (r1559912) * blame: reduce performance penalties of using -g (r1560112) * ra_local: set svn:txn-user-agent for consistency (r1498608) - * ra_svn: use the stream api properly for communications (r1562072) + * ra_svn: use the stream API properly for communications (r1562072) * update: provide error when none of targets are wcs (r1565388) - * ra_serf: follow RFC 2818, ignore common name when subjectAltNames are - present (r1565531) * wc: reduce dependence on unspecified SQLite behavior (r1567080 et al) * diff: fix diff of directory failing without permissions to read ancester directory on server (r1569265, 1569290) @@ -185,6 +231,72 @@ http://svn.apache.org/repos/asf/subversi * diff: fix bug in calculating header paths (r1570584) * ra_serf: add SSL certificate issuers common name to output (r1573728) * updates keywords in files not modified during 'svn switch' (issue #1975) + * svnmucc: Normalize line endings with '-F' and '-m' options + (r1592148, r1592150) + * fix problems with read-only authentication caches (issue #4504) + * commit: don't bump just locked files (r1603617) + * log: reduce memory with '-v' (r1604569 et al) + * diff: fix issuing diffing locally deleted nodes under copied directories + (r1605832) + * diff: fix missing node error when diffing a replaced node (r1605866) + * propget: forbid using 'show-inherited-properties' with 'strict' (r1611698) + * windows: avoid delay when user profile isn't writable (r1617926) + * merge: display the correct node kinds for tree conflicts + (r1618024, r1619418, r1619717) + * diff: show properties of a copied dir as diffs against copy not adds + (r1619380) + * diff: show the correct revisions in the header (r1619452) + * diff: fix missing header for files with only property changes (r1619476) + * update: raise a tree conflict rather than an obstruction when an + incoming server-excluded node conflicts with a locally added node + (r1619495) + * update: improve tree conflict reason and action descriptions (r1619777) + * ra_serf: fix stalls during checkout/update over http(s) (r1621596) + * svnmucc: don't crash when '--version' is used with other arguments + (r1625496) + * checkout: report external failures via the exit code as other commands + already do (r1628398) + * use the right error code when fputs() fails (r1630369) + * export: reject peg specifiers on local destination path (r1635085) + * don't reject command-line arguments in the form of ".@abc", where + "abc" is a peg specifier that may be empty (r1635118) + * fix directory externals not following history (issue #4529) + * remove 'df' and 'm' options from the interactive conflict resolver for + binary files (r1645578) + * when parsing mergeinfo allow source path to be empty (issue #4537) + * mkdir: when using '--parents' don't add entire contents recursively if + target already exists (r1649951) + * resolve errors with move of a nested delete (r1651980, r1651997) + * update: prevent breaking a working copy when a directory is replaced + with an external to a foreign repository (issue #4550) + * update: prevent an invalid wc state when applying a move (r1652184 et al) + * resolve: fix a segfault when breaking a move inside a delete + (issue #4491) + * ra_serf: don't handle a commit that didn't produce a new revision as + a successful commit (r1653532) + * export: fix the lack of notifications when starting to handle externals + (issue #4527) + * update: fix a case where we reported an error rather than a tree conflict + (r1655017) + * info: Use local platform style paths in all cases (r1659283) + * ra_serf: don't abort commits that have already succeeded in some corner + cases (r1659867) + * delete conflict markers of a moved file in the right location (r1660220) + * fix cases where we don't handle the lack of a configuration file + properly (r1660369) + * wc: don't believe there is a copy when doing a foreign repos copy + (r1660593) + * upgrade: fix corner cases found in wc upgrades (r1660646 et al) + * update: resolve issues with tree conflicts caused by an incoming + delete removing a mixed revision tree (r1660742) + * don't hold onto locks of deleted paths in the client on commit (r1661363) + * info: fix url calculation for a few statuses (r1661476) + * update: when using '--set-depth' avoid removing local changes (r1661585) + * update: fix tree conflict detection on unversioned nodes that exist where + there used to be a deleted node (r1661664) + * status: display tree conflicts even if the node with the tree conflict is + shadowed by a file (r1662331) + * entries compatibility: fix with obstructed working copies (r1662412) - Server-side bugfixes: * svnserve: don't ignore socket initialization errors (r1544253) @@ -209,18 +321,72 @@ http://svn.apache.org/repos/asf/subversi * mod_dav_svn: avoid setting option headers multiple times (r1557103) * fsfs: prevent some commits that could cause future corruption (r1560673) * fsfs: fix a problem verifying pre-1.4 repos used with 1.8 (r1561419) - * fsfs: don't write uniquifiers for old repo formats (r1561426) * fsfs: fix hotcopy for pre-1.4 repositories (r1561427) * fix 64-bit underflows in update hit counters (r1567996 et al) * svnserve: fix potential integer overflow in Cyrus SASL support (r1570434) * bdb: fix potential integer overflow and underflow (r1570701) * bdb: prevent silent propogation of some corruption (r1570778) + * svnadmin delrevprop: new command (1592723) + * svnadmin verify: new option '--metadata-only' (r1593753) + * svnadmin hotcopy: do not corrupt db/current contents when copying old + FSFS repos (r1603485) + * svnadmin hotcopy: don't produce broken copies when a concurrent pack + happens (r1605633) + * log: reduce memory consumption of '-v' on the server (r1605195) + * mod_dav_svn: fix performance issue on Windows with named atomics + (r1611379) + * log: fix a SEGFAULT in handling changed paths (r1615364) + * mod_dav_svn: Properly forward post lock/unlock failures (r1622235) + * diff: fix handling of depth empty in added directories (r1622024) + * fix a segfault with corrupted changed path lists that try to add root + nodes (r1622944) + * svnadmin verify: report errors nicely rather than possibly aborting + (r1622955) + * svnlook pget: report transaction name rather than revision number in + errors if run with '-t' option (r1623317) + * svnadmin verify: prevent stack overflow conditions in corrupted + repositories (r1623398) + * svnadmin upgrade: fix an issue that could block an upgraded fsfs format + 1 or 2 repository from being able to be committed to (r1624011) + * fix memory lifetime issue in fs backends (r1632646) + * bdb: output correct checksum in error message about corruption (r1640707) + * fsfs: fix a pool lifetime error related to transaction local caches + (r1643139, 1643233) + * fsfs: avoid "random DAG walks" during checkout over ra_serf (r1645567) + * fsfs/bdb: reduce memory use during tree deletions (r1647820, r1655022) + * mod_authz_svn: fix unbounded memory use when SVNPathAuthz short_circuit + is used (r1647887) + * fsfs: reduce memory use when walking back in history (r1648230) + * dump: remove incorrect kind header on replaced nodes (issue #4553) + * dump: remove duplicate headers for replace-with-copy (issue #4552) + * mod_dav_svn: don't send non-XML safe characters in svn:author + (issue #4415) + * dump: don't write broken dump files in some ambiguously encoded fsfs + repositories (issue #4554) + * mod_dav_svn: provide a more intuitive error message to the client when + trying to create a directory that already exists (issue #2295) + * fsfs: fix uninitialized memory use in lock/unlock code (r1657525) + * fix a segfault when executing a pre-commit hook (r1657893) + * mod_dav_svn: do not ignore errors parsing skels (r1658168) + * resolve: allow directly resolving tree conflicts (r1658435) + * fsfs: fix multiple reporting of the same lock (r1658482) + * fsfs: fix pool lifetime issue in lock handling (r1659314) + * mod_dav_svn: properly log assertions and malfuctions (r1660480) + * svnadmin load/dump: preserve deletion of svn:date from r0 (issue #4563) + * copy: when copying from a wc to a url show all the changes (r1655729) + * info: provide results in a stable order (r1662030) + * revert: allow depth limited reverts of nodes that only have not-present + and/or excluded child nodes (r1662091) - Client-side and server-side bugfixes: * use less memory when retrieving extension from filename (r1548480) * use more optimal code path with old txdelta v1 data (r1485480) * windows: allow opening SQLite databases on long paths (r1564338) * fix an out-of-bounds read in the delta combiner (r1569415) + * fix a number of cases of undefined behavior when passing invalid + arguments to memcpy() (r1632530, et al) + * windows: avoid a 12 second delay due to a retry loop in some error + conditions when opening a file (r1657583) - Other tool improvements and bugfixes: * windows: add build-svn-deps-win.pl tool to build dependencies (r1467715) @@ -228,22 +394,41 @@ http://svn.apache.org/repos/asf/subversi * svnpubsub: do not pass svn commands through shell (r148466, r1486467) * svnpubsub: hooks exit with an error if they fail (r1486500, r1486597) * svnpubsub: hooks use "--" to signal end of arguments (r1486513) - * mailer: Properly encode mail headers per RFC2047 (r1487532) + * mailer: properly encode mail headers per RFC2047 (r1487532) * svnwcsub: add a pre-update hook, which can deny update (r1494542 et al) * fsfs-stats: count file nodes that are added without history (r1519283) + * fsfs-stats: replaced by 'svnfsfs stats' (r1594860) * fsfs-access-map: count empty reads and unnecessary seeks (r1523441) * fsfs-access-map: generate scaled/rectangular heatmaps (r1505065) * fsfs-access-map: deal with strace format issues (r1505065) * fsfs-access-map: update to know about index files (r1505065) - * svn-bench: add null-info command (r1532196) + * svnbench: renamed from svn-bench (r1659226) + * svnbench: add null-info command (r1532196) * svnlook.py: made usable as a library by adding getter methods (r1541558) - * svn-bench, svnraisetreeconflict, svnauthz, svn-rep-sharing-stats: More + * svnbench, svnraisetreeconflict, svnauthz, svn-rep-sharing-stats: More consistent error reporting, following pattern of core command-line programs (r1544194) - * bash_completion: support for youngest command (r1546975) * which-error.py: allow which-error.py to be run from symlink (r1547977) - * bash-completion: add svnlook filesize command and options to svn cat, + * bash_completion: add svnlook filesize command and options to svn cat, info, and mergeinfo commands (r1569021) + * new '--conflict-style' option to standalone diff3 tool (r1591750) + * update standalone diff3 tool so it can be used with --diff-cmd + directly (r1591871, 1591876) + * bash_completion: support for auth command (r1596841) + * diff: support '-U' option (r1618618) + * svn-rep-sharing-stats: replaced by 'svnfsfs stats' (r1618861) + * add svn-vendor.py as an alternative to svn_load_dirs.pl that can + auto-detect renames and copies (r1623660) + * svnpredumpfilter.py: fix a scalability problem that made run time + increase greatly on large repositories (r1625674 et al) + * svnpredumpfilter.py: detect copies of copies and handle properly + (r1626182) + * bash_completion: add svnadmin delrevprop (r1631473) + * showchange.pl: removed, obsoleted by 'svn log --diff' (r1631686) + * bash_completion: add new trust options (r1660373) + * bash_completion: add '--pin-externals' (r1662250) + * bash_completion: stop offering deprecated options (r1662291) + * bash_completion: add '--show-item' and '--no-newline' (r1662622) Developer-visible changes: - General: @@ -276,14 +461,11 @@ http://svn.apache.org/repos/asf/subversi * use --bin path for svnrdump when running Python tests (r1548706) * remove unused --with-openssl option from configure (r1548714) * tests: stop rewriting shared authz file for every sandbox (r1552064 et al) - * get-deps.sh: Use a stable URL for zlib download (r1552957 et al) * fix unnecessary aborts in maintainer mode on sqlite errors (r1536325) * new --sqlite-logging option for C tests (r1560409) * allow building with APR-2 (r1560586) * remove support for ASM Zlib from Windows build system (r1560864) * gen-make.py: new -D option (r1567046) - * svn-populate-node-origins-index: fix build with Visual Studio - (r1568180 et al) * improve how we fetch the version of Windows (r1568798, 1568806) * move common code in python tests to library files to avoid side effects of having tests depending on each other (r1570654) @@ -303,83 +485,146 @@ http://svn.apache.org/repos/asf/subversi * binaries built on Mac OS X 10.6+ will not run on older versions (r1651549) * fix random failure of Makefile-based parallel builds on Unix when the amalgamated SQLite is being used (r1658357) + * C tests only run with ra_local to avoid duplicate testing (r1609477) + * allow skipping the C tests for any RA method (r1609489) + * new tools for benchmarking on Windows (r1610264) + * svnbench: no longer part of tools but main subversion (r1618860) + * improve detection for libtool (r1627276) + * check the runtime version of the fs_util library in the fs backends + (r1651567) + * properly initialize the src_kind value to avoid problems for other API + users during a copy (r1655723) + * try to improve reliability of applications that do not call + svn_dso_initialize2() right after apr_initialize() (r1659604) + * add svn-wc-db-tester tool for testing working copies (r1660874) + * fix bugs and performance issues using svn_wc_walk_entries3() (r1661110) + * support using Python 3 for building (r1661247) + * don't add -lstdc++ on FreeBSD 10 (r1662329) - API changes: - * New RA callbacks for managing ra_svn tunnels: + * new RA callbacks for managing ra_svn tunnels: svn_ra_callbacks2_t::check_tunnel_func, svn_ra_callbacks2_t::open_tunnel_func and - svn_ra_callbacks2_t::close_tunnel_func. - * New api for retrieving info about a file system: svn_fs_info() - * New api svn_io_file_flush() that wraps apr_file_flush(). - * New api svn_io_write_atomic(), that writes, sync and renames a file. - * New api svn_compat_log_revprops_out_string(). - * Deprecate unused datatype svn_ra_get_latest_revnum_func_t. - * New struct svn_wc_conflict_description3_t (r1494990) - * New api svn_client_cleanup2() (r1496954 et al) - * New api svn_stringbuf_create_wrap() (r1502248) - * New api svn_io_file_aligned_seek() (r1502539) + svn_ra_callbacks2_t::close_tunnel_func + * new API for retrieving info about a file system: svn_fs_info() + * new API svn_io_file_flush() that wraps apr_file_flush() + * new API svn_io_write_atomic(), that writes, sync and renames a file + * new API svn_compat_log_revprops_out_string() + * deprecate unused datatype svn_ra_get_latest_revnum_func_t + * new API svn_client_cleanup2() (r1496954 et al) + * new API svn_stringbuf_create_wrap() (r1502248) + * new API svn_io_file_aligned_seek() (r1502539) * ra_svn: fix svn_ra_get_log*() to apply limit when server can't (r1503043) * svn_client_commit6: notify which path prevents a mv commit (r1503662) - * New apis svn_io_file_create_empty() and svn_io_file_create_bytes() + * new APIs svn_io_file_create_empty() and svn_io_file_create_bytes() (r1505006) - * New api svn_ver_check_list2() (r1502267) - * svn_fs_paths_changed() gains support for moves (r1525448) - * New api svn_repos_get_logs5() adds support for moves (r1525453) - * New api svn_ra_get_log3() adds support for moves (r1525460) - * New api svn_client_log6() adds support for moves (r1525463) - * New api svn_stringbuf_from_stream() (r1532193) + * new API svn_ver_check_list2() (r1502267) + * new API svn_stringbuf_from_stream() (r1532193) * svn_auth_get_platform_specific_client_providers() now includes ssl providers (r1534153) * dav_svn_split_uri() repos_path is a fspath with a leading slash (r1537812) - * New api svn_repos_fs_type() returns filesystem type (r1538585) + * new API svn_repos_fs_type() returns filesystem type (r1538585) * svn_client__get_inheritable_props() clears wcroot_iprops when revision is not valid (r1538602) * SVN_VA_NULL: New macro which is null-pointer constant (r1536307) * SVN_NEEDS_SENTINEL_NULL: New macro to mark functions that require final - NULL sentinel value, so compilers can warn when missing. (r1543394) + NULL sentinel value, so compilers can warn when missing (r1543394) * platform specific svn_auth_get_* functions are deprecated, use the svn_auth_get_platform_specific_provider() function instead (r1543992) * SVN_INT_ERR macro is deprecated use svn_handle_error2() or svn_cmdline_handle_exit_error() instead (r1544142) - * New api svn_client_cat3() allow disabling keyword expansion and retrieving - props. (r1544182) + * new API svn_client_cat3() allow disabling keyword expansion and retrieving + props (r1544182) * svn_auth_first_credentials(): provides an error rather than crashing if auth_baton is NULL (r1544320) * svn_auth_set_parameter(): Do nothing if auth_baton is NULL (r1544320) - * New api svn_relpath_limit which returns a relpath with a maximum number + * new api svn_relpath_limit which returns a relpath with a maximum number of path components (r1545123) * svn_fs_initialize() is now threadsafe (r1546409) * svn_checksum_kind_t has two new FNV-1a checksums (r1546699) * svn_fs_lock: control characters are not allowed in lock tokens (r1547445) - * New api svn_wc_cleanup4() makes some functionality optional and adds + * new API svn_wc_cleanup4() makes some functionality optional and adds notifications (r1548075 et al) - * New api svn_client_info4() supports walking externals (r1550206 et al) - * New flag for svn_fs_begin_txn2() SVN_FS_TXN_CLIENT_DATE to allow client + * new API svn_client_info4() supports walking externals (r1550206 et al) + * new flag for svn_fs_begin_txn2() SVN_FS_TXN_CLIENT_DATE to allow client to set the final svn:date (r1550228) - * New apis for easier RA commits svn_client_mtcc_* (r1550758 et al) - * New api svn_ra_session_dup() (r1552324 et al) + * new APIs for easier RA commits svn_client_mtcc_* (r1550758 et al) + * new API svn_ra_session_dup() (r1552324 et al) * svn_ra_stat() now handles compatibility with 1.0-1.1 svnserve (r1552441) - * New error code SVN_ERR_COMPOSED_ERROR added to allow detection of + * new error code SVN_ERR_COMPOSED_ERROR added to allow detection of composed errors by API consumers (r1553266) - * New error code SVN_ERR_RA_DAV_PRECONDITION_FAILED (r1553668) - * New error code SVN_ERR_RA_CANNOT_CREATE_SESSION (r1554027) - * New api svn_fs_node_relation() (r1554800) + * new error code SVN_ERR_RA_DAV_PRECONDITION_FAILED (r1553668) + * new error code SVN_ERR_RA_CANNOT_CREATE_SESSION (r1554027) + * new API svn_fs_node_relation() (r1554800) * SVN_EXPERIMENTAL to mark functions that might change in future (r1526012) * fix bug in svn_client_get_merging_summary() with some params (r1532396) - * New error code SVN_ERR_XML_UNEXPECTED_ELEMENT (r1498938) - * Extend stream API to also support incomplete reads (r1561688 et al) - * New api svn_wc_add_from_disk3() (r1563361) - * New api svn_client_revert3() to allow clearing changelists (r1568635) + * new error code SVN_ERR_XML_UNEXPECTED_ELEMENT (r1498938) + * extend stream API to also support incomplete reads (r1561688 et al) + * new API svn_wc_add_from_disk3() (r1563361) + * new API svn_client_revert3() to allow clearing changelists and to have + a metadata_only flag (r1568635, r1657026) * svn_rangelist_inheritable2(): don't change inheritabilty of remaining ranges (r1569731) * svn_rangelist_inheritable2() and svn_mergeinfo_inheritable2(): fix a pool lifetime issue (r1569764) - * New apis to support cancelation during unified diff output (r1570149) + * new APIs to support cancelation during unified diff output and + allow the context size to be specified (r1570149 et al) * APIs related to retrieving logs are now documented to be unlimited when a negative value is passed for the limit (r1570330, 1570335) - * New apis: svn_fs_props_different() and svn_fs_contents_different() + * new APIs: svn_fs_props_different() and svn_fs_contents_different() (r1572363, r1573111) - * Expose SVN_CONFIG_AUTHN_* macros in public API (r1572640) + * expose SVN_CONFIG_AUTHN_* macros in public API (r1572640) + * add SVN_CONFIG_OPTION_SQLITE_TIMEOUT to allow SQLite busy timeout + to be configured by clients (r1592093) + * add new notification between transmitting deltas and finalizing + commit as svn_wc_notify_commit_finalizing (r1603388) + * svn_client_cat3() API no longer returns entry or WC props (r1603501) + * properly handle canonical paths in svn_io_start_cmd3() (r1604761) + * add SVN_FS_CONFIG_FSFS_BLOCK_READ to control FSFS format 7 block + read feature (r1604933) + * new API svn_cstring_skip_prefix() (r1612823) + * new API svn_diff_mem_string_output_merge3() (r1618599) + * extend svn_wc_info_t with conflicts2 (r1618643) + * new API svn_diff_mem_string_output_unified3() (r1618839) + * new API svn_diff_file_output_merge3() (r1618857) + * svn_fs_props_changed() and svn_fs_contents_changed() no longer return + false positives (r1618880) + * new API svn_wc_conflict_description2_dup() (r1618883) + * extend svn_wc_conflict_description2_t with prop_reject_abspath field + (r1619096) + * extend svn_wc_conflict_description2_t with property values as + svn_string_t's (r1619122) + * fix svn_client_import5() to use absolute paths (r1623974) + * fix a few cases of invalid filling of svn_client_commit_item3_t (r1623981) + * add SVN_FS_CONFIG_FSFS_SHARD_SIZE to allow creation of repositories with + a custom shard size (r1624512) + * new API svn_cmdline_create_auth_baton2 (r1630117) + * make svn_string_*() and svn_stringbuf_*() functions handle C strings + of NULL with 0 length (r1632530, et al) + * fix svn_stream_compressed() for streams without partial read support + (r1639626) + * do not segfault on svn_stream_read_full() or svn_stream_skip() are called + for a no-op stream created via svn_stream_create() (r1639637) + * add SVN_FS_CONFIG_FSFS_LOG_ADDRESSING to control logical addressing + feature of fsfs format 7 (r1640915) + * rename the 'parent_directory' parameter of + svn_wc_parse_externals_description3() to 'defining_directory' and improve + the documentation (r1642690) + * new API svn_repos_get_fs_build_parser5() (r1647563) + * SVN_VERSION_BODY changed so that it is embedded into libraries, ultimately + allowing SVN_VER_TAG constant to be modified by patches (r1651565) + * rename repos_url to repos_url_deocded argument to + svn_repos_get_commit_editor5() to clairfy usage (r1653609) + * make svn_io_set_file_read_only() and svn_io_remove_dir2() ignore + ENOTDIR when ignore_enoent argument is set so the behavior is consistent + across platforms (r1653680) + * make svn_ra_open_session4() return the documented error when a repository + should be opened in a different location (r1655648) + * no longer return an error when using svn_ra_get_lock() and the path does + not exist (r1656875) + * svn_string_dup() will accept a NULL pointer and return a NULL (r1657254) + * svn_ra_get_file_revs2() now handles SVN_INVALID_REVNUM as HEAD (r1660463) + * new API svn_error_quick_wrapf() (r1662668) - Bindings: * javahl: add support for the RA layer (r1494650 et al) @@ -391,12 +636,12 @@ http://svn.apache.org/repos/asf/subversi * javahl: add inheritance info to JavaHL's RevisionRange type (r1499308) * swig-rb: fixes to building on Windows (1505406 et al) * libsvn_swig_*libraries now work as proper shared librares (r1506520 et al) - * swig-py: import libsvn_subr pub symbols from svn.core * (r1507860) + * swig-py: import libsvn_subr pub symbols from svn.core * (r1507860) * javahl: expose the svn_rangelist operations (r1509025) * javahl: new utility class SVNUtil (r1512354) * javahl: serialize init of native library (r1519803) * javahl: fix value truncation checks (r1519913) - * javahl: Add ISVNClient.info which exposes svn_client_info4 (r1603481) + * javahl: add ISVNClient.info which exposes svn_client_info4 (r1603481) * javahl: include name of exception class in error messages (r1532117) * javahl: simplify JNI environment handling (r1533804) * javahl: Revsion.UNSPECIFIED added as alias to Revision.START (r1533928) @@ -407,7 +652,7 @@ http://svn.apache.org/repos/asf/subversi * javahl: new utility API to parse/unparse svn:externals (r1539130 et al) * javahl: allow tests to be run from a RAM disk (r1539215 et al) * javahl: expose and use the url member of svn_wc_notify_t (r1539601) - * javahl: expose a utility api to resolve relative externals (r1540921) + * javahl: expose a utility API to resolve relative externals (r1540921) * javahl: new utility API for file content translation (r1542401) * javahl: throw NullPointerException when sources is empty (r1543328) * swig-pl: fix compilation against perl 5.18 on Windows (r1543980) @@ -415,7 +660,7 @@ http://svn.apache.org/repos/asf/subversi * javahl: enable warnings with javac (r1544163, r1544169) * javahl: cleanup warnings (r1544578 et al) * javahl: add common utilities for new-style map iterations (r1545925) - * javahl: add an api to get runtime version of native libs (r1545945) + * javahl: add an API to get runtime version of native libs (r1545945) * javahl: use default cache size instead of no cache (r1547248) * swig-py: add typemap for hunks field of svn_patch_t (r1548379) * javahl: don't ignore difference between NULL and empty changelist in @@ -429,11 +674,69 @@ http://svn.apache.org/repos/asf/subversi * javahl: expose --alow-mixed-revisions merge option (r1567602) * javahl: support incomplete reads from streams (r1569631) * javahl: allow revert API to take a set of paths (r1571461) + * javahl: improve authentication callback (r1597758 et al) + * javahl: load (most) classes on demand (r1602822) + * javahl: expose confg file keys in JavaHL (r1604448) + * javahl: update ISVNClient.info, ISVnClient.cleanup and add + ISvnClient.vacuum (r1604449) + * javahl: update ISVNRepos.hotcopy (r1618894) + * swig-py: Add close to the core.Stream class (r1619077) + * javahl: add example clients that use the authn API (r1640533) + * swig-py: implement dump stream parser (r1642813) + * swig-pl: remove some unneded cleanup code that triggered a cleanup + failure on windows (r1643072) + * swig-pl: make cancel_func, cancel_baton parameter pairs work (r1648852) + * javahl: expose whitespace diff parameters to blame method (issue #4475) + * javahl: update ConflictDescriptor (r1655842) + * javahl: update FileRevision to provide textDelta (r1656911) + * swig: partial fix for complication problems wigh SWIG 3.0.x (r1658347) + * swig-pl: install into prefix (r1658459) + * javahl: expose the metadataOnly option to copy support (r1661451) + * swig-py: add support for svn_fs_lock_many(), svn_fs_unlock_many(), + svn_repos_fs_lock_many() and svn_repos_fs_unlock_many() (r1662867) + * swig-py: fix support for svn_ra_lock() and svn_ra_unlock() (r1662891) + + +Version 1.8.12 +(?? ?? 2015, from /branches/1.8.x) +http://svn.apache.org/repos/asf/subversion/tags/1.8.12 + + User-visible changes: + - Client-side bugfixes: + * ra_serf: support case-insensitivity in HTTP headers (r1650481, r1650489) + * better error message if an external is shadowed (r1655712, r1655738) + * ra_svn: fix reporting of directory read errors (r1656713) + * fix a redirect handling bug in 'svn log' over HTTP (r1650531) + * properly copy tree conflict information (r1658115, r1659553, r1659554) + * fix 'svn patch' output for reordered hunks (issue #4533) + * svnrdump load: don't load wrong props with no-deltas dump (issue #4551) + * fix working copy corruption with relative file external (issue #4411) + * don't crash if config file is unreadable (r1590751, r1660350) + * svn resolve: don't ask a question with only one answer (r1658417) + + - Server-side bugfixes: + * svnadmin freeze: fix memory allocation error (r1653039) + * svnadmin load: tolerate invalid mergeinfo at r0 (r1643074, issue #4476) + * svnadmin load: strip references to r1 from mergeinfo (issue #4538) + * svnsync: strip any r0 references from mergeinfo (issue #4476) + + - Client-side and server-side bugfixes: + * fix undefined behaviour in string buffer routines (r1650834) + * fix consistency issues with APR r/w locks on Windows (r1611380 et al) + * fix occasional SEGV if threads load DSOs in parallel (r1659013, r1659315) + * properly duplicate svn error objects (r1651759) + * fix use-after-free in config parser (1646785, r1646786, r1646797) + + Developer-visible changes: + * add lock file config for testing against HTTPD 2.4+ (r1544302, r1544303) + * make sqlite amalgamated build work with sqlite 3.8.x+ (r1659399) + * fix build with Ruby 2 (r1596882) + * process 'svnadmin dump' output as binary in the test suite (r1592987) Version 1.8.11 (15 Dec 2014, from /branches/1.8.x) -http://svn.apache.org/repos/asf/subversion/tags/1.8.10 +http://svn.apache.org/repos/asf/subversion/tags/1.8.11 User-visible changes: - Client-side bugfixes: @@ -1207,6 +1510,18 @@ http://svn.apache.org/repos/asf/subversi * fix some reference counting bugs in swig-py bindings (r1464899, r1466524) +Version 1.7.20 +(?? ??? 2015, from /branches/1.7.x) +http://svn.apache.org/repos/asf/subversion/tags/1.7.19 + + User-visible changes: + - Client-side and server-side bugfixes: + * properly duplicate svn error objects (r1651759) + + Developer-visible changes: + * add lock file config for testing against HTTPD 2.4+ (r1544302, r1544303) + + Version 1.7.19 (15 Dec 2014, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.19 Propchange: subversion/branches/move-tracking-2/CHANGES ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Mar 9 09:53:06 2015 @@ -86,4 +86,4 @@ /subversion/branches/verify-at-commit/CHANGES:1462039-1462408 /subversion/branches/verify-keep-going/CHANGES:1439280-1546110 /subversion/branches/wc-collate-path/CHANGES:1402685-1480384 -/subversion/trunk/CHANGES:1606692-1663280 +/subversion/trunk/CHANGES:1606692-1665165 Modified: subversion/branches/move-tracking-2/build.conf URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build.conf?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/build.conf (original) +++ subversion/branches/move-tracking-2/build.conf Mon Mar 9 09:53:06 2015 @@ -1602,6 +1602,7 @@ install = tools libs = libsvn_diff libsvn_subr apriconv apr [svnbench] +description = Benchmarking and diagnostics tool for the network layer type = exe path = subversion/svnbench install = tools Propchange: subversion/branches/move-tracking-2/build.conf ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Mar 9 09:53:06 2015 @@ -82,4 +82,4 @@ /subversion/branches/verify-at-commit/build.conf:1462039-1462408 /subversion/branches/verify-keep-going/build.conf:1439280-1546110 /subversion/branches/wc-collate-path/build.conf:1402685-1480384 -/subversion/trunk/build.conf:1606692-1661488 +/subversion/trunk/build.conf:1606692-1665165 Propchange: subversion/branches/move-tracking-2/subversion/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Mar 9 09:53:06 2015 @@ -82,4 +82,4 @@ /subversion/branches/verify-at-commit/subversion:1462039-1462408 /subversion/branches/verify-keep-going/subversion:1439280-1546110 /subversion/branches/wc-collate-path/subversion:1402685-1480384 -/subversion/trunk/subversion:1606692-1663280 +/subversion/trunk/subversion:1606692-1665165 Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/BlameCallback.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/BlameCallback.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/BlameCallback.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/BlameCallback.cpp Mon Mar 9 09:53:06 2015 @@ -128,8 +128,6 @@ BlameCallback::singleLine(svn_revnum_t s env->CallVoidMethod(m_callback, mid, (jlong)line_no, (jlong)revision, jrevProps, (jlong)mergedRevision, jmergedRevProps, jmergedPath, jline, (jboolean)localChange); - // No need to check for an exception here, because we return anyway. - env->PopLocalFrame(NULL); - return SVN_NO_ERROR; + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); } Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitCallback.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitCallback.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitCallback.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitCallback.cpp Mon Mar 9 09:53:06 2015 @@ -96,10 +96,8 @@ CommitCallback::commitInfo(const svn_com POP_AND_RETURN(SVN_NO_ERROR); env->CallVoidMethod(m_callback, sm_mid, jcommitInfo); - // No need to check for an exception here, because we return anyway. - env->PopLocalFrame(NULL); - return SVN_NO_ERROR; + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); } Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitMessage.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitMessage.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitMessage.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/CommitMessage.cpp Mon Mar 9 09:53:06 2015 @@ -106,7 +106,7 @@ CommitMessage::getCommitMessage(const ch midCallback, CreateJ::Set(jitems)); if (JNIUtil::isJavaExceptionThrown()) - POP_AND_RETURN(SVN_NO_ERROR); + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); if (jmessage != NULL) { Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/DiffSummaryReceiver.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/DiffSummaryReceiver.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/DiffSummaryReceiver.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/DiffSummaryReceiver.cpp Mon Mar 9 09:53:06 2015 @@ -117,8 +117,5 @@ DiffSummaryReceiver::onSummary(const svn // Invoke the Java DiffSummaryReceiver callback. env->CallVoidMethod(m_receiver, callback, jDiffSummary); - // We return whether an exception was thrown or not. - - env->PopLocalFrame(NULL); - return SVN_NO_ERROR; + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); } Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/EditorProxy.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/EditorProxy.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/EditorProxy.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/EditorProxy.cpp Mon Mar 9 09:53:06 2015 @@ -20,7 +20,7 @@ * ==================================================================== * @endcopyright * - * @file EditorProxy.h + * @file EditorProxy.cpp * @brief Interface of all editor proxy classes */ #include <apr_pools.h> Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/InfoCallback.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/InfoCallback.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/InfoCallback.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/InfoCallback.cpp Mon Mar 9 09:53:06 2015 @@ -95,8 +95,6 @@ InfoCallback::singleInfo(const char *pat POP_AND_RETURN(SVN_NO_ERROR); env->CallVoidMethod(m_callback, mid, jinfo2); - // Return SVN_NO_ERROR here regardless of an exception or not. - env->PopLocalFrame(NULL); - return SVN_NO_ERROR; + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); } Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/Iterator.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/Iterator.h?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/Iterator.h (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/Iterator.h Mon Mar 9 09:53:06 2015 @@ -20,7 +20,7 @@ * ==================================================================== * @endcopyright * - * @file Iterator.cpp + * @file Iterator.h * @brief Interface of the class Iterator */ Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.cpp Mon Mar 9 09:53:06 2015 @@ -77,6 +77,11 @@ bool JNIUtil::g_initException; int JNIUtil::g_logLevel = JNIUtil::noLog; std::ofstream JNIUtil::g_logStream; +/* The error code we will use to signal a Java exception */ +static const apr_status_t +SVN_ERR_JAVAHL_WRAPPED = SVN_ERR_MALFUNC_CATEGORY_START + + SVN_ERR_CATEGORY_SIZE - 10; + /** * Return the JNI environment to use * @return the JNI environment @@ -446,7 +451,8 @@ ErrorMessageStack assemble_error_message { /* When we're recursing, don't repeat the top-level message if its * the same as before. */ - if (depth == 0 || err->apr_err != parent_apr_err) + if ((depth == 0 || err->apr_err != parent_apr_err) + && err->apr_err != SVN_ERR_JAVAHL_WRAPPED) { const char *message; /* Is this a Subversion-specific error code? */ @@ -586,6 +592,9 @@ void JNIUtil::wrappedHandleSVNError(svn_ #endif #endif + if (!jcause) + jcause = JNIUtil::unwrapJavaException(err); + // Much of the following is stolen from throwNativeException(). As much as // we'd like to call that function, we need to do some manual stack // unrolling, so it isn't feasible. @@ -804,6 +813,25 @@ JNIUtil::checkJavaException(apr_status_t err->message = apr_psprintf(err->pool, _("Java exception: %s"), msg); else err->message = _("Java exception"); + + + /* ### TODO: Use apr_pool_userdata_set() on the pool we just created + for the error chain to keep track of the actual Java + exception while the error is inside Subversion. + + Once the error chain re-enters JavaHL we can check + if there is a true exception that we can add to the chain. + + If the error is cleared in Subversion (which may happen + during composing error chains, etc.) the cleanup handler + handles properly releasing the exception. + + apr_status_t + apr_pool_userdata_set(const void *data, + const char *key, + apr_status_t (*cleanup)(void *), + apr_pool_t *pool) + */ return err; } @@ -1043,3 +1071,91 @@ svn_error_t *JNIUtil::preprocessPath(con return NULL; } + +/* Tag to use on the apr_pool_t to store a WrappedException reference */ +static const char *WrapExceptionTag = "org.apache.subversion.JavaHL.svnerror"; + +class WrappedException +{ + JNIEnv *m_env; + jthrowable m_exception; +#ifdef SVN_DEBUG + bool m_fetched; +#endif +public: + WrappedException(JNIEnv *env) + { + m_env = env; + + // Fetch exception inside local frame + jthrowable exceptionObj = env->ExceptionOccurred(); + + // Now clear exception status + env->ExceptionClear(); + + // As adding a reference in exception state fails + m_exception = static_cast<jthrowable>(env->NewGlobalRef(exceptionObj)); + +#ifdef SVN_DEBUG + m_fetched = false; +#endif + } + + static jthrowable get_exception(apr_pool_t *pool) + { + void *data; + if (! apr_pool_userdata_get(&data, WrapExceptionTag, pool)) + { + WrappedException *we = reinterpret_cast<WrappedException *>(data); + + if (we) + { +#ifdef SVN_DEBUG + we->m_fetched = TRUE; +#endif + // Create reference in local frame, as the pool will be cleared + return static_cast<jthrowable>( + we->m_env->NewLocalRef(we->m_exception)); + } + } + return NULL; + } + +private: + ~WrappedException() + { +#ifdef SVN_DEBUG + if (!m_fetched) + SVN_DBG(("Cleared svn_error_t * before Java exception was fetched")); +#endif + m_env->DeleteGlobalRef(m_exception); + } +public: + static apr_status_t cleanup(void *data) + { + WrappedException *we = reinterpret_cast<WrappedException *>(data); + + delete we; + return APR_SUCCESS; + } +}; + +svn_error_t* JNIUtil::wrapJavaException() +{ + if (!isExceptionThrown()) + return SVN_NO_ERROR; + + svn_error_t *err = svn_error_create(SVN_ERR_JAVAHL_WRAPPED, NULL, + "Wrapped Java Exception"); + apr_pool_userdata_set(new WrappedException(getEnv()), WrapExceptionTag, + WrappedException::cleanup, err->pool); + return err; +} + +jthrowable JNIUtil::unwrapJavaException(const svn_error_t *err) +{ + if (!err) + return NULL; + return + WrappedException::get_exception(err->pool); +} Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.h?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.h (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/JNIUtil.h Mon Mar 9 09:53:06 2015 @@ -86,6 +86,9 @@ class JNIUtil return getEnv()->ExceptionCheck(); } + static svn_error_t *wrapJavaException(); + static jthrowable unwrapJavaException(const svn_error_t *err); + static void handleAPRError(int error, const char *op); /** @@ -265,6 +268,16 @@ class JNIUtil } \ while (0) +#define POP_AND_RETURN_EXCEPTION_AS_SVNERROR() \ + do \ + { \ + svn_error_t *svn__err_for_exception = JNIUtil::wrapJavaException(); \ + \ + env->PopLocalFrame(NULL); \ + return svn__err_for_exception; \ + } \ + while (0) + /** * A useful macro. Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ListCallback.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ListCallback.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ListCallback.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ListCallback.cpp Mon Mar 9 09:53:06 2015 @@ -113,10 +113,8 @@ ListCallback::doList(const char *path, // call the Java method env->CallVoidMethod(m_callback, mid, jdirentry, jlock); - // No need to check for exception here, because we'll just return anyway - env->PopLocalFrame(NULL); - return SVN_NO_ERROR; + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); } /** Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/LogMessageCallback.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/LogMessageCallback.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/LogMessageCallback.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/LogMessageCallback.cpp Mon Mar 9 09:53:06 2015 @@ -125,8 +125,6 @@ LogMessageCallback::singleMessage(svn_lo (jlong)log_entry->revision, jrevprops, (jboolean)log_entry->has_children); - // No need to check for an exception here, because we return anyway. - env->PopLocalFrame(NULL); - return SVN_NO_ERROR; + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); } Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/OperationContext.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/OperationContext.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/OperationContext.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/OperationContext.cpp Mon Mar 9 09:53:06 2015 @@ -358,6 +358,9 @@ OperationContext::checkCancel(void *canc OperationContext *that = static_cast<OperationContext *>(cancelBaton); if (that->isCancelledOperation()) return svn_error_create(SVN_ERR_CANCELLED, NULL, _("Operation cancelled")); + else if (JNIUtil::isJavaExceptionThrown()) + return svn_error_create(SVN_ERR_CANCELLED, JNIUtil::wrapJavaException(), + _("Operation cancelled")); else return SVN_NO_ERROR; } Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/PatchCallback.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/PatchCallback.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/PatchCallback.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/PatchCallback.cpp Mon Mar 9 09:53:06 2015 @@ -106,7 +106,7 @@ PatchCallback::singlePatch(svn_boolean_t jboolean jfiltered = env->CallBooleanMethod(m_callback, mid, jcanonPath, jpatchAbsPath, jrejectAbsPath); if (JNIUtil::isJavaExceptionThrown()) - POP_AND_RETURN(SVN_NO_ERROR); + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); *filtered = (jfiltered ? TRUE : FALSE); Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ProplistCallback.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ProplistCallback.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ProplistCallback.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ProplistCallback.cpp Mon Mar 9 09:53:06 2015 @@ -112,9 +112,7 @@ svn_error_t *ProplistCallback::singlePat env->CallVoidMethod(m_callback, mid, jpath, jmap); // We return whether an exception was thrown or not. - env->PopLocalFrame(NULL); - - return SVN_NO_ERROR; + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); } Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ReposFreezeAction.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ReposFreezeAction.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ReposFreezeAction.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/ReposFreezeAction.cpp Mon Mar 9 09:53:06 2015 @@ -20,7 +20,7 @@ * ==================================================================== * @endcopyright * - * @file ReposFreezeAction.h + * @file ReposFreezeAction.cpp * @brief Native mirror of the ReposFreezeAction callback interface */ Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StateReporter.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StateReporter.h?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StateReporter.h (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StateReporter.h Mon Mar 9 09:53:06 2015 @@ -20,7 +20,7 @@ * ==================================================================== * @endcopyright * - * @file UpdateReporter.h + * @file StateReporter.h * @brief Interface of the class UpdateReporter */ Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StatusCallback.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StatusCallback.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StatusCallback.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/StatusCallback.cpp Mon Mar 9 09:53:06 2015 @@ -101,11 +101,8 @@ StatusCallback::doStatus(const char *loc POP_AND_RETURN(SVN_NO_ERROR); env->CallVoidMethod(m_callback, mid, jPath, jStatus); - // We return here regardless of whether an exception is thrown or not, - // so we do not need to explicitly check for one. - env->PopLocalFrame(NULL); - return SVN_NO_ERROR; + POP_AND_RETURN_EXCEPTION_AS_SVNERROR(); } void Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp Mon Mar 9 09:53:06 2015 @@ -375,7 +375,8 @@ const char* unknown_cxx_exception_messag svn_error_t* caught_java_exception_error(apr_status_t status) throw() { - return svn_error_create(status, NULL, _("Java exception")); + return svn_error_create(status, JNIUtil::wrapJavaException(), + _("Java exception")); } } // namespace Java Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java (original) +++ subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java Mon Mar 9 09:53:06 2015 @@ -95,6 +95,7 @@ public class RunTests suite.addTestSuite(UtilTests.class); suite.addTestSuite(SVNRemoteTests.class); suite.addTestSuite(SVNReposTests.class); + suite.addTestSuite(ExceptionTests.class); } else { Modified: subversion/branches/move-tracking-2/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original) +++ subversion/branches/move-tracking-2/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Mon Mar 9 09:53:06 2015 @@ -464,7 +464,7 @@ static PyObject *make_ob_error(svn_error if (err) return svn_swig_NewPointerObjString(err, "svn_error_t *", NULL); else - return Py_None; + Py_RETURN_NONE; } Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_auth_private.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_auth_private.h?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/include/private/svn_auth_private.h (original) +++ subversion/branches/move-tracking-2/subversion/include/private/svn_auth_private.h Mon Mar 9 09:53:06 2015 @@ -234,10 +234,12 @@ svn_auth__ssl_client_cert_pw_set(svn_boo /* Apply the specified configuration for connecting with SERVER_NAME to the auth baton */ svn_error_t * -svn_auth__apply_config_for_server(svn_auth_baton_t *ab, - apr_hash_t *config, - const char *server_name, - apr_pool_t *scratch_pool); +svn_auth__make_session_auth(svn_auth_baton_t **session_auth_baton, + const svn_auth_baton_t *auth_baton, + apr_hash_t *config, + const char *server_name, + apr_pool_t *result_pool, + apr_pool_t *scratch_pool); #if (defined(WIN32) && !defined(__MINGW32__)) || defined(DOXYGEN) /** Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_dep_compat.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_dep_compat.h?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/include/private/svn_dep_compat.h (original) +++ subversion/branches/move-tracking-2/subversion/include/private/svn_dep_compat.h Mon Mar 9 09:53:06 2015 @@ -20,7 +20,7 @@ * ==================================================================== * @endcopyright * - * @file svn_compat.h + * @file svn_dep_compat.h * @brief Compatibility macros and functions. * @since New in 1.5.0. */ Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_sorts_private.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_sorts_private.h?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/include/private/svn_sorts_private.h (original) +++ subversion/branches/move-tracking-2/subversion/include/private/svn_sorts_private.h Mon Mar 9 09:53:06 2015 @@ -20,7 +20,7 @@ * ==================================================================== * @endcopyright * - * @file svn_sorts.h + * @file svn_sorts_private.h * @brief all sorts of sorts. */ Modified: subversion/branches/move-tracking-2/subversion/include/svn_hash.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_hash.h?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/include/svn_hash.h (original) +++ subversion/branches/move-tracking-2/subversion/include/svn_hash.h Mon Mar 9 09:53:06 2015 @@ -239,19 +239,44 @@ svn_hash_from_cstring_keys(apr_hash_t ** const apr_array_header_t *keys, apr_pool_t *pool); +/* For the Subversion developers, this #define makes the svn_hash_gets and + * svn_hash_sets macros forward their parameters through functions in order to + * gain type checking for the 'key' parameter which the basic apr_hash_* APIs + * declare only as 'void *'. + */ +#ifdef SVN_DEBUG +#define SVN_HASH__GETS_SETS +#endif + +#ifdef SVN_HASH__GETS_SETS +void * +svn_hash__gets(apr_hash_t *ht, const char *key); + +#define svn_hash_gets(ht, key) \ + svn_hash__gets(ht, key) +#else /** Shortcut for apr_hash_get() with a const char * key. * * @since New in 1.8. */ #define svn_hash_gets(ht, key) \ apr_hash_get(ht, key, APR_HASH_KEY_STRING) +#endif + +#ifdef SVN_HASH__GETS_SETS +void +svn_hash__sets(apr_hash_t *ht, const char *key, const void *value); +#define svn_hash_sets(ht, key, val) \ + svn_hash__sets(ht, key, val) +#else /** Shortcut for apr_hash_set() with a const char * key. * * @since New in 1.8. */ #define svn_hash_sets(ht, key, val) \ apr_hash_set(ht, key, APR_HASH_KEY_STRING, val) +#endif /** @} */ Modified: subversion/branches/move-tracking-2/subversion/include/svn_opt.h URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_opt.h?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/include/svn_opt.h (original) +++ subversion/branches/move-tracking-2/subversion/include/svn_opt.h Mon Mar 9 09:53:06 2015 @@ -24,8 +24,8 @@ * @brief Option and argument parsing for Subversion command lines */ -#ifndef SVN_OPTS_H -#define SVN_OPTS_H +#ifndef SVN_OPT_H +#define SVN_OPT_H #include <apr.h> #include <apr_pools.h> @@ -780,4 +780,4 @@ svn_opt_print_help(apr_getopt_t *os, } #endif /* __cplusplus */ -#endif /* SVN_OPTS_H */ +#endif /* SVN_OPT_H */ Modified: subversion/branches/move-tracking-2/subversion/libsvn_client/copy.c URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_client/copy.c?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/libsvn_client/copy.c (original) +++ subversion/branches/move-tracking-2/subversion/libsvn_client/copy.c Mon Mar 9 09:53:06 2015 @@ -1668,13 +1668,9 @@ repos_to_repos_copy(const apr_array_head SVN_ERR(svn_ra_check_path(ra_session, dst_rel, SVN_INVALID_REVNUM, &dst_kind, pool)); if (dst_kind != svn_node_none) - { - const char *path = svn_uri_skip_ancestor(repos_root, - pair->dst_abspath_or_url, - pool); - return svn_error_createf(SVN_ERR_FS_ALREADY_EXISTS, NULL, - _("Path '/%s' already exists"), path); - } + return svn_error_createf(SVN_ERR_FS_ALREADY_EXISTS, NULL, + _("Path '%s' already exists"), + pair->dst_abspath_or_url); /* More info for our INFO structure. */ info->src_path = src_rel; /* May be NULL, if outside RA session scope */ @@ -1920,6 +1916,9 @@ queue_prop_change_commit_items(const cha item->url = commit_url; item->kind = svn_node_dir; item->state_flags = SVN_CLIENT_COMMIT_ITEM_PROP_MODS; + + item->incoming_prop_changes = apr_array_make(result_pool, 1, + sizeof(svn_prop_t *)); APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *) = item; } else Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c?rev=1665166&r1=1665165&r2=1665166&view=diff ============================================================================== --- subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c (original) +++ subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c Mon Mar 9 09:53:06 2015 @@ -916,26 +916,48 @@ svn_fs_list_transactions(apr_array_heade return svn_error_trace(fs->vtable->list_transactions(names_p, fs, pool)); } +static svn_boolean_t +is_internal_txn_prop(const char *name) +{ + return strcmp(name, SVN_FS__PROP_TXN_CHECK_LOCKS) == 0 || + strcmp(name, SVN_FS__PROP_TXN_CHECK_OOD) == 0 || + strcmp(name, SVN_FS__PROP_TXN_CLIENT_DATE) == 0; +} + svn_error_t * svn_fs_txn_prop(svn_string_t **value_p, svn_fs_txn_t *txn, const char *propname, apr_pool_t *pool) { + if (is_internal_txn_prop(propname)) + { + *value_p = NULL; + return SVN_NO_ERROR; + } + return svn_error_trace(txn->vtable->get_prop(value_p, txn, propname, pool)); } svn_error_t * svn_fs_txn_proplist(apr_hash_t **table_p, svn_fs_txn_t *txn, apr_pool_t *pool) { - return svn_error_trace(txn->vtable->get_proplist(table_p, txn, pool)); + SVN_ERR(txn->vtable->get_proplist(table_p, txn, pool)); + + /* Don't give away internal transaction properties. */ + svn_hash_sets(*table_p, SVN_FS__PROP_TXN_CHECK_LOCKS, NULL); + svn_hash_sets(*table_p, SVN_FS__PROP_TXN_CHECK_OOD, NULL); + svn_hash_sets(*table_p, SVN_FS__PROP_TXN_CLIENT_DATE, NULL); + + return SVN_NO_ERROR; } svn_error_t * svn_fs_change_txn_prop(svn_fs_txn_t *txn, const char *name, const svn_string_t *value, apr_pool_t *pool) { - /* Silently drop attempts to modify the internal property. */ - if (!strcmp(name, SVN_FS__PROP_TXN_CLIENT_DATE)) - return SVN_NO_ERROR; + if (is_internal_txn_prop(name)) + return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, + _("Attempt to modify internal transaction " + "property '%s'"), name); return svn_error_trace(txn->vtable->change_prop(txn, name, value, pool)); } @@ -946,25 +968,14 @@ svn_fs_change_txn_props(svn_fs_txn_t *tx { int i; - /* Silently drop attempts to modify the internal property. */ for (i = 0; i < props->nelts; ++i) { svn_prop_t *prop = &APR_ARRAY_IDX(props, i, svn_prop_t); - if (!strcmp(prop->name, SVN_FS__PROP_TXN_CLIENT_DATE)) - { - apr_array_header_t *reduced_props - = apr_array_make(pool, props->nelts - 1, sizeof(svn_prop_t)); - - for (i = 0; i < props->nelts; ++i) - { - prop = &APR_ARRAY_IDX(props, i, svn_prop_t); - if (strcmp(prop->name, SVN_FS__PROP_TXN_CLIENT_DATE)) - APR_ARRAY_PUSH(reduced_props, svn_prop_t) = *prop; - } - props = reduced_props; - break; - } + if (is_internal_txn_prop(prop->name)) + return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL, + _("Attempt to modify internal transaction " + "property '%s'"), prop->name); } return svn_error_trace(txn->vtable->change_props(txn, props, pool));