subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From i...@apache.org
Subject svn commit: r1664059 [1/11] - in /subversion/branches/reuse-ra-session: ./ build/generator/ doc/ subversion/bindings/javahl/native/ subversion/bindings/swig/ subversion/bindings/swig/include/ subversion/bindings/swig/python/libsvn_swig_py/ subversion/b...
Date Wed, 04 Mar 2015 15:56:21 GMT
Author: ivan
Date: Wed Mar  4 15:56:18 2015
New Revision: 1664059

URL: http://svn.apache.org/r1664059
Log:
On the reuse-ra-session branch: Sync with trunk up to r1664054.

Added:
    subversion/branches/reuse-ra-session/doc/svn-square.jpg
      - copied unchanged from r1664054, subversion/trunk/doc/svn-square.jpg
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/pools.h
      - copied unchanged from r1664054, subversion/trunk/subversion/libsvn_subr/pools.h
    subversion/branches/reuse-ra-session/subversion/svn/similarity.c
      - copied unchanged from r1664054, subversion/trunk/subversion/svn/similarity.c
    subversion/branches/reuse-ra-session/tools/dist/backport_branch_with_original_revision.dump
      - copied unchanged from r1664054, subversion/trunk/tools/dist/backport_branch_with_original_revision.dump
Modified:
    subversion/branches/reuse-ra-session/   (props changed)
    subversion/branches/reuse-ra-session/CHANGES
    subversion/branches/reuse-ra-session/build/generator/gen_win_dependencies.py
    subversion/branches/reuse-ra-session/configure.ac
    subversion/branches/reuse-ra-session/doc/doxygen.conf
    subversion/branches/reuse-ra-session/gen-make.py
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/EditorProxy.cpp
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/Iterator.h
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/ReposFreezeAction.cpp
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/StateReporter.h
    subversion/branches/reuse-ra-session/subversion/bindings/swig/include/svn_containers.swg
    subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
    subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
    subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/ra.py
    subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/repository.py
    subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_fs.i
    subversion/branches/reuse-ra-session/subversion/include/private/svn_dep_compat.h
    subversion/branches/reuse-ra-session/subversion/include/private/svn_sorts_private.h
    subversion/branches/reuse-ra-session/subversion/include/private/svn_string_private.h
    subversion/branches/reuse-ra-session/subversion/include/svn_error.h
    subversion/branches/reuse-ra-session/subversion/include/svn_fs.h
    subversion/branches/reuse-ra-session/subversion/include/svn_hash.h
    subversion/branches/reuse-ra-session/subversion/include/svn_opt.h
    subversion/branches/reuse-ra-session/subversion/include/svn_repos.h
    subversion/branches/reuse-ra-session/subversion/libsvn_fs/editor.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.h
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_base/revs-txns.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/hotcopy.c
    subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/commit.c
    subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/merge.c
    subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/reuse-ra-session/subversion/libsvn_ra_svn/editorp.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/cmdline.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/error.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/hash.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/io.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/pool.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/sqlite.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/string.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/utf8proc/utf8proc.h
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_crashrpt.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/x509info.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/conflicts.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/entries.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/externals.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/status.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/update_editor.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/upgrade.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/wc-queries.sql
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/wc_db.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/wc_db.h
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/wc_db_private.h
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/wc_db_update_move.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/wc_db_util.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/wc_db_wcroot.c
    subversion/branches/reuse-ra-session/subversion/svn/cl.h
    subversion/branches/reuse-ra-session/subversion/svn/info-cmd.c
    subversion/branches/reuse-ra-session/subversion/svn/propget-cmd.c
    subversion/branches/reuse-ra-session/subversion/svn/props.c
    subversion/branches/reuse-ra-session/subversion/svn/svn.c
    subversion/branches/reuse-ra-session/subversion/svnbench/svnbench.c
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/authz_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/basic_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/blame_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/changelist_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/checkout_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/commit_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/copy_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/depth_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/diff_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/entries-dump.c
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/entries_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/export_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/externals_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/history_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/import_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/info_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/input_validation_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/lock_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/log_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/merge_authz_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/merge_automatic_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/merge_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/merge_tree_conflict_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/mergeinfo_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/move_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/patch_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/prop_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/relocate_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/resolve_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/revert_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/schedule_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/special_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/stat_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnauthz_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnlook_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnmucc_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svntest/actions.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svntest/deeptrees.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svntest/factory.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svntest/main.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svntest/mergetrees.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svntest/tree.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svntest/wc.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnversion_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/switch_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/trans_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/tree_conflict_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/update_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/wc_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_fs/fs-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_subr/string-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_wc/conflict-data-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_wc/entries-compat.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_wc/op-depth-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_wc/utils.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_wc/utils.h
    subversion/branches/reuse-ra-session/subversion/tests/svn_test_main.c
    subversion/branches/reuse-ra-session/tools/client-side/bash_completion
    subversion/branches/reuse-ra-session/tools/client-side/bash_completion_test
    subversion/branches/reuse-ra-session/tools/dist/backport.pl
    subversion/branches/reuse-ra-session/tools/dist/backport_tests.py

Propchange: subversion/branches/reuse-ra-session/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar  4 15:56:18 2015
@@ -70,7 +70,7 @@
 /subversion/branches/revprop-packing:1143907,1143971,1143997,1144017,1144499,1144568,1146145
 /subversion/branches/subtree-mergeinfo:876734-878766
 /subversion/branches/svn-auth-x509:1603509-1655900
-/subversion/branches/svn-info-detail:1660035-1660413
+/subversion/branches/svn-info-detail:1660035-1662618
 /subversion/branches/svn-mergeinfo-enhancements:870119-870195,870197-870288
 /subversion/branches/svn-patch-improvements:918519-934609
 /subversion/branches/svn_mutex:1141683-1182099
@@ -89,4 +89,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1501802-1662176
+/subversion/trunk:1501802-1664054

Modified: subversion/branches/reuse-ra-session/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/CHANGES?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/CHANGES (original)
+++ subversion/branches/reuse-ra-session/CHANGES Wed Mar  4 15:56:18 2015
@@ -1,5 +1,5 @@
 Version 1.9.0
-(?? ??? 2014, from /branches/1.9.x)
+(?? ??? 2015, from /branches/1.9.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.9.0
 
  User-visible changes:
@@ -8,17 +8,15 @@ 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)
     * 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
-    * svn youngest: new remote version of svnlook youngest (issue #4299)
     * 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)
+    * svnserve: cache config and authz 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 on-disk layout (r1547045 et al)
 
   - Minor new features and improvements:
     * new 'diff-ignore-content-type' runtime configuration option.
@@ -27,6 +25,7 @@ http://svn.apache.org/repos/asf/subversi
     * 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)
     * svnadmin upgrade: progress and cancellation support (r1495545, r1495566)
@@ -45,7 +44,6 @@ http://svn.apache.org/repos/asf/subversi
     * update: optimize wc db usage (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)
@@ -58,14 +56,14 @@ http://svn.apache.org/repos/asf/subversi
     * 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: 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)
@@ -92,7 +90,6 @@ http://svn.apache.org/repos/asf/subversi
       that don't support the faster REPORT (r1552455, r1552475)
     * ra_serf: allow reuse of sessions after a timeout (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)
@@ -101,16 +98,16 @@ http://svn.apache.org/repos/asf/subversi
     * 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)
     * 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)
@@ -125,7 +122,6 @@ http://svn.apache.org/repos/asf/subversi
     * 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,10 +131,68 @@ 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)
@@ -158,7 +212,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)
@@ -175,8 +228,6 @@ http://svn.apache.org/repos/asf/subversi
     * ra_local: set svn:txn-user-agent for consistency (r1498608)
     * 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)
@@ -184,6 +235,73 @@ 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)
+    * status: don't display a lock token that we've broken and then removed
+      the target of after readding file (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)
+    * status: fix with obstructed working copies (r1662412)
 
   - Server-side bugfixes:
     * svnserve: don't ignore socket initialization errors (r1544253)
@@ -208,18 +326,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)
@@ -230,19 +402,38 @@ http://svn.apache.org/repos/asf/subversi
     * 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:
@@ -275,14 +466,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)
@@ -302,6 +490,21 @@ 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:
@@ -313,7 +516,6 @@ http://svn.apache.org/repos/asf/subversi
     * 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)
@@ -322,10 +524,6 @@ http://svn.apache.org/repos/asf/subversi
     * 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)
     * svn_auth_get_platform_specific_client_providers() now includes ssl
       providers (r1534153)
@@ -368,17 +566,70 @@ http://svn.apache.org/repos/asf/subversi
     * 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 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()
       (r1572363, r1573111)
     * 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)
@@ -428,6 +679,29 @@ 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)
+    * javahl: use Java iterators instead of std:vector (r1658112)
+    * javahl: use Java iterators instead of std:map (r1658120)
+    * swig: partial fix for complication problems wigh SWIG 3.0.x (r1658347)
+    * swig-pl: install into prefix (r1658459)
+    * javahl: expose the metadataOnly option to copoy 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.11

Modified: subversion/branches/reuse-ra-session/build/generator/gen_win_dependencies.py
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/build/generator/gen_win_dependencies.py?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/build/generator/gen_win_dependencies.py (original)
+++ subversion/branches/reuse-ra-session/build/generator/gen_win_dependencies.py Wed Mar  4 15:56:18 2015
@@ -253,6 +253,18 @@ class GenDependenciesBase(gen_base.Gener
           self.sln_version = '12.00'
           self.vcproj_version = '12.0'
           self.vcproj_extension = '.vcxproj'
+        elif val == '2015' or val == '14':
+          self.vs_version = '2015'
+          self.sln_version = '12.00'
+          self.vcproj_version = '14.0'
+          self.vcproj_extension = '.vcxproj'
+        elif re.match('^20\d+$', val):
+          print('WARNING: Unknown VS.NET version "%s",'
+                ' assuming VS2012. Your VS can probably upgrade')
+          self.vs_version = '2012'
+          self.sln_version = '12.00'
+          self.vcproj_version = '11.0'
+          self.vcproj_extension = '.vcxproj'
         elif re.match('^1\d+$', val):
           self.vs_version = val
           self.sln_version = '12.00'

Modified: subversion/branches/reuse-ra-session/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/configure.ac?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/configure.ac (original)
+++ subversion/branches/reuse-ra-session/configure.ac Wed Mar  4 15:56:18 2015
@@ -1455,8 +1455,15 @@ if test "$do_javahl_build" = "yes"; then
   # it.
   AC_MSG_CHECKING([for additional flags to link C++ libraries])
   if test "x$ac_compiler_gnu" = "xyes"; then
-    LT_CXX_LIBADD="-lstdc++"
-    AC_MSG_RESULT([$LT_CXX_LIBADD])
+    case "$host" in
+      *freebsd10*)
+        AC_MSG_RESULT([none needed])
+      ;;
+      *)
+        LT_CXX_LIBADD="-lstdc++"
+        AC_MSG_RESULT([$LT_CXX_LIBADD])
+      ;;
+    esac
   else
     AC_MSG_RESULT([none needed])
   fi

Modified: subversion/branches/reuse-ra-session/doc/doxygen.conf
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/doc/doxygen.conf?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/doc/doxygen.conf (original)
+++ subversion/branches/reuse-ra-session/doc/doxygen.conf Wed Mar  4 15:56:18 2015
@@ -33,6 +33,13 @@ PROJECT_NAME           = Subversion
 
 PROJECT_NUMBER         =
 
+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+# in the documentation. The maximum height of the logo should not exceed 55
+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+# the logo to the output directory.
+
+PROJECT_LOGO = doc/svn-square.jpg
+
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
 # base path where the generated documentation will be put.
 # If a relative path is entered, it will be relative to the location

Modified: subversion/branches/reuse-ra-session/gen-make.py
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/gen-make.py?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/gen-make.py (original)
+++ subversion/branches/reuse-ra-session/gen-make.py Wed Mar  4 15:56:18 2015
@@ -206,7 +206,7 @@ def _usage_exit(err=None):
   print("")
   print("  --vsnet-version=VER")
   print("           generate for VS.NET version VER (2002, 2003, 2005, 2008,")
-  print("           2010, 2012 or 2013)")
+  print("           2010, 2012, 2013 or 2015)")
   print("           [only valid in combination with '-t vcproj']")
   print("")
   print(" -D NAME[=value]")

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/EditorProxy.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/EditorProxy.cpp?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/EditorProxy.cpp (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/EditorProxy.cpp Wed Mar  4 15:56:18 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/reuse-ra-session/subversion/bindings/javahl/native/Iterator.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/Iterator.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/Iterator.h (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/Iterator.h Wed Mar  4 15:56:18 2015
@@ -20,7 +20,7 @@
  * ====================================================================
  * @endcopyright
  *
- * @file Iterator.cpp
+ * @file Iterator.h
  * @brief Interface of the class Iterator
  */
 

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/ReposFreezeAction.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/ReposFreezeAction.cpp?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/ReposFreezeAction.cpp (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/ReposFreezeAction.cpp Wed Mar  4 15:56:18 2015
@@ -20,7 +20,7 @@
  * ====================================================================
  * @endcopyright
  *
- * @file ReposFreezeAction.h
+ * @file ReposFreezeAction.cpp
  * @brief Native mirror of the ReposFreezeAction callback interface
  */
 

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/StateReporter.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/StateReporter.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/StateReporter.h (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/StateReporter.h Wed Mar  4 15:56:18 2015
@@ -20,7 +20,7 @@
  * ====================================================================
  * @endcopyright
  *
- * @file UpdateReporter.h
+ * @file StateReporter.h
  * @brief Interface of the class UpdateReporter
  */
 

Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/include/svn_containers.swg?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/swig/include/svn_containers.swg Wed Mar  4 15:56:18 2015
@@ -426,6 +426,25 @@
 {
   $1 = svn_swig_py_path_revs_hash_from_dict($input, _global_pool);
 }
+%typemap(in) apr_hash_t *unlock_targets
+{
+  $1 = svn_swig_py_stringhash_from_dict($input, _global_pool);
+}
+%typemap(in) apr_hash_t *lock_targets
+  (apr_pool_t *_global_pool, PyObject *_global_pool = NULL)
+{
+  if (_global_pool == NULL)
+  {
+    if (svn_swig_py_get_parent_pool(args, $descriptor(apr_pool_t *),
+                                    &_global_py_pool, &_global_pool))
+      SWIG_fail;
+  }
+  $1 = svn_swig_py_struct_ptr_hash_from_dict($input,
+     $descriptor(svn_fs_lock_target_t *), _global_pool);
+  if (PyErr_Occurred()) {
+    SWIG_fail;
+  }
+}
 #endif
 
 #ifdef SWIGPERL

Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Wed Mar  4 15:56:18 2015
@@ -459,6 +459,14 @@ static PyObject *make_ob_wc_adm_access(v
                                       NULL);
 }
 
+static PyObject *make_ob_error(svn_error_t *err)
+{
+  if (err)
+    return svn_swig_NewPointerObjString(err, "svn_error_t *", NULL);
+  else
+    return Py_None;
+}
+
 
 /***/
 
@@ -2853,6 +2861,42 @@ svn_error_t *svn_swig_py_fs_get_locks_fu
   return err;
 }
 
+svn_error_t *svn_swig_py_fs_lock_callback(
+                    void *baton,
+                    const char *path,
+                    const svn_lock_t *lock,
+                    svn_error_t *fs_err,
+                    apr_pool_t *pool)
+{
+  svn_error_t *err = SVN_NO_ERROR;
+  PyObject *py_callback = baton, *result;
+
+  if (py_callback == NULL || py_callback == Py_None)
+    return SVN_NO_ERROR;
+
+  svn_swig_py_acquire_py_lock();
+
+  if ((result = PyObject_CallFunction(py_callback,
+                                      (char *)"sO&O&O&",
+                                      path,
+                                      make_ob_lock, lock,
+                                      make_ob_error, fs_err,
+                                      make_ob_pool, pool)) == NULL)
+    {
+      err = callback_exception_error();
+    }
+  else if (result != Py_None)
+    {
+      err = callback_bad_return_error("Not None");
+    }
+
+  Py_XDECREF(result);
+
+  svn_swig_py_release_py_lock();
+  return err;
+}
+
+
 svn_error_t *svn_swig_py_get_commit_log_func(const char **log_msg,
                                              const char **tmp_file,
                                              const apr_array_header_t *
@@ -4252,9 +4296,10 @@ svn_error_t *svn_swig_py_ra_lock_callbac
   svn_swig_py_acquire_py_lock();
 
   if ((result = PyObject_CallFunction(py_callback,
-                                     (char *)"sbO&O&",
+                                     (char *)"sbO&O&O&",
                                      path, do_lock,
                                      make_ob_lock, lock,
+                                     make_ob_error, ra_err,
                                      make_ob_pool, pool)) == NULL)
     {
       err = callback_exception_error();

Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h Wed Mar  4 15:56:18 2015
@@ -316,6 +316,13 @@ svn_error_t *svn_swig_py_fs_get_locks_fu
                                            svn_lock_t *lock,
                                            apr_pool_t *pool);
 
+svn_error_t *svn_swig_py_fs_lock_callback(
+                    void *baton,
+                    const char *path,
+                    const svn_lock_t *lock,
+                    svn_error_t *ra_err,
+                    apr_pool_t *pool);
+
 /* thunked commit log fetcher */
 svn_error_t *svn_swig_py_get_commit_log_func(const char **log_msg,
                                              const char **tmp_file,

Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/ra.py
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/ra.py?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/ra.py (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/ra.py Wed Mar  4 15:56:18 2015
@@ -298,13 +298,53 @@ class SubversionRepositoryAccessTestCase
     ra.get_file_revs(self.ra_ctx, "trunk/README.txt", 0, 10, rev_handler)
 
   def test_lock(self):
-    def callback(baton, path, do_lock, lock, ra_err, pool):
-      pass
-    # This test merely makes sure that the arguments can be wrapped
-    # properly. svn.ra.lock() currently fails because it is not possible
-    # to retrieve the username from the auth_baton yet.
-    self.assertRaises(core.SubversionException,
-      lambda: ra.lock(self.ra_ctx, {"": 0}, "sleutel", False, callback))
+
+    self.calls = 0
+    self.locks = 0
+    self.errors = 0
+    def callback(path, do_lock, lock, ra_err, pool):
+      self.calls += 1
+      self.assertEqual(path, "trunk/README2.txt")
+      if lock:
+        self.assertEqual(lock.owner, "jrandom")
+        self.locks += 1
+      if ra_err:
+        self.assert_(ra_err.apr_err == core.SVN_ERR_FS_PATH_ALREADY_LOCKED
+                     or ra_err.apr_err == core.SVN_ERR_FS_NO_SUCH_LOCK)
+        self.errors += 1
+
+    providers = [core.svn_auth_get_username_provider()]
+    self.callbacks.auth_baton = core.svn_auth_open(providers)
+    core.svn_auth_set_parameter(self.callbacks.auth_baton,
+                                core.SVN_AUTH_PARAM_DEFAULT_USERNAME,
+                                "jrandom")
+    self.ra_ctx = ra.open2(self.repos_uri, self.callbacks, {})
+    rev = fs.youngest_rev(self.fs)
+    ra.lock(self.ra_ctx, {"trunk/README2.txt":rev}, "sleutel", False, callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.locks, 1)
+    self.assertEqual(self.errors, 0)
+
+    self.calls = 0
+    self.locks = 0
+    ra.lock(self.ra_ctx, {"trunk/README2.txt":rev}, "sleutel", False, callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.locks, 0)
+    self.assertEqual(self.errors, 1)
+
+    self.calls = 0
+    self.errors = 0
+    the_lock = fs.get_lock(self.fs, "/trunk/README2.txt")
+    ra.unlock(self.ra_ctx, {"trunk/README2.txt":the_lock.token}, False, callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.locks, 0)
+    self.assertEqual(self.errors, 0)
+
+    self.calls = 0
+    ra.unlock(self.ra_ctx, {"trunk/README2.txt":the_lock.token}, False, callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.locks, 0)
+    self.assertEqual(self.errors, 1)
 
   def test_get_log2(self):
     # Get an interesting commmit.

Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/repository.py
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/repository.py?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/repository.py (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/swig/python/tests/repository.py Wed Mar  4 15:56:18 2015
@@ -311,6 +311,98 @@ class SubversionRepositoryTestCase(unitt
     repos.freeze([self.repos_path], self.freeze_body)
     self.assertEqual(self.freeze_invoked, 1)
 
+  def test_lock_unlock(self):
+    """Basic lock/unlock"""
+
+    access = fs.create_access('jrandom')
+    fs.set_access(self.fs, access)
+    fs.lock(self.fs, '/trunk/README.txt', None, None, 0, 0, self.rev, False)
+    try:
+      fs.lock(self.fs, '/trunk/README.txt', None, None, 0, 0, self.rev, False)
+    except core.SubversionException, exc:
+      self.assertEqual(exc.apr_err, core.SVN_ERR_FS_PATH_ALREADY_LOCKED)
+    fs.lock(self.fs, '/trunk/README.txt', None, None, 0, 0, self.rev, True)
+
+    self.calls = 0
+    self.errors = 0
+    def unlock_callback(path, lock, err, pool):
+      self.assertEqual(path, '/trunk/README.txt')
+      self.assertEqual(lock, None)
+      self.calls += 1
+      if err != None:
+        self.assertEqual(err.apr_err, core.SVN_ERR_FS_NO_SUCH_LOCK)
+        self.errors += 1
+
+    the_lock = fs.get_lock(self.fs, '/trunk/README.txt')
+    fs.unlock_many(self.fs, {'/trunk/README.txt':the_lock.token}, False,
+                   unlock_callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.errors, 0)
+
+    self.calls = 0
+    fs.unlock_many(self.fs, {'/trunk/README.txt':the_lock.token}, False,
+                   unlock_callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.errors, 1)
+
+    self.locks = 0
+    def lock_callback(path, lock, err, pool):
+      self.assertEqual(path, '/trunk/README.txt')
+      if lock != None:
+        self.assertEqual(lock.owner, 'jrandom')
+        self.locks += 1
+      self.calls += 1
+      if err != None:
+        self.assertEqual(err.apr_err, core.SVN_ERR_FS_PATH_ALREADY_LOCKED)
+        self.errors += 1
+      
+    self.calls = 0
+    self.errors = 0
+    target = fs.lock_target_create(None, self.rev)
+    fs.lock_many(self.fs, {'trunk/README.txt':target},
+                 None, False, 0, False, lock_callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.locks, 1)
+    self.assertEqual(self.errors, 0)
+
+    self.calls = 0
+    self.locks = 0
+    fs.lock_many(self.fs, {'trunk/README.txt':target},
+                 None, False, 0, False, lock_callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.locks, 0)
+    self.assertEqual(self.errors, 1)
+
+    self.calls = 0
+    self.errors = 0
+    the_lock = fs.get_lock(self.fs, '/trunk/README.txt')
+    repos.fs_unlock_many(self.repos, {'trunk/README.txt':the_lock.token},
+                         False, unlock_callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.errors, 0)
+
+    self.calls = 0
+    repos.fs_unlock_many(self.repos, {'trunk/README.txt':the_lock.token},
+                         False, unlock_callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.errors, 1)
+
+    self.calls = 0
+    self.errors = 0
+    repos.fs_lock_many(self.repos, {'trunk/README.txt':target},
+                       None, False, 0, False, lock_callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.locks, 1)
+    self.assertEqual(self.errors, 0)
+
+    self.calls = 0
+    self.locks = 0
+    repos.fs_lock_many(self.repos, {'trunk/README.txt':target},
+                       None, False, 0, False, lock_callback)
+    self.assertEqual(self.calls, 1)
+    self.assertEqual(self.locks, 0)
+    self.assertEqual(self.errors, 1)
+
 def suite():
     return unittest.defaultTestLoader.loadTestsFromTestCase(
       SubversionRepositoryTestCase)

Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_fs.i
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_fs.i?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_fs.i (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_fs.i Wed Mar  4 15:56:18 2015
@@ -71,6 +71,14 @@
                   ,
                   svn_swig_rb_fs_get_locks_callback)
 #endif
+
+#ifdef SWIGPYTHON
+%callback_typemap(svn_fs_lock_callback_t lock_callback, void *lock_baton,
+                  svn_swig_py_fs_lock_callback,
+                  ,
+                  )
+#endif
+
 /* -----------------------------------------------------------------------
    svn_fs_get_merge_info
 */

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_dep_compat.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_dep_compat.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_dep_compat.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_dep_compat.h Wed Mar  4 15:56:18 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/reuse-ra-session/subversion/include/private/svn_sorts_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_sorts_private.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_sorts_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_sorts_private.h Wed Mar  4 15:56:18 2015
@@ -20,7 +20,7 @@
  * ====================================================================
  * @endcopyright
  *
- * @file svn_sorts.h
+ * @file svn_sorts_private.h
  * @brief all sorts of sorts.
  */
 

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_string_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_string_private.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_string_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_string_private.h Wed Mar  4 15:56:18 2015
@@ -197,10 +197,17 @@ apr_uint64_t
 svn__base36toui64(const char **next, const char *source);
 
 /**
+ * The upper limit of the similarity range returned by
+ * svn_cstring__similarity() and svn_string__similarity().
+ */
+#define SVN_STRING__SIM_RANGE_MAX 1000000
+
+/**
  * Computes the similarity score of STRA and STRB. Returns the ratio
  * of the length of their longest common subsequence and the average
- * length of the strings, normalized to the range [0..1000].
- * The result is equivalent to Python's
+ * length of the strings, normalized to the range
+ * [0..SVN_STRING__SIM_RANGE_MAX]. The result is equivalent to
+ * Python's
  *
  *   difflib.SequenceMatcher.ratio
  *
@@ -225,7 +232,7 @@ svn__base36toui64(const char **next, con
  *    has O(strlen(STRA) * strlen(STRB)) worst-case performance,
  *    so do keep a rein on your enthusiasm.
  */
-unsigned int
+apr_size_t
 svn_cstring__similarity(const char *stra, const char *strb,
                         svn_membuf_t *buffer, apr_size_t *rlcs);
 
@@ -233,7 +240,7 @@ svn_cstring__similarity(const char *stra
  * Like svn_cstring__similarity, but accepts svn_string_t's instead
  * of NUL-terminated character strings.
  */
-unsigned int
+apr_size_t
 svn_string__similarity(const svn_string_t *stringa,
                        const svn_string_t *stringb,
                        svn_membuf_t *buffer, apr_size_t *rlcs);

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_error.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_error.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_error.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_error.h Wed Mar  4 15:56:18 2015
@@ -173,6 +173,19 @@ svn_error_t *
 svn_error_quick_wrap(svn_error_t *child,
                      const char *new_msg);
 
+/** A quick n' easy way to create a wrapped exception with your own
+ * printf-style error message produced by passing @a fmt, using
+ * apr_psprintf(), before throwing it up the stack.  (It uses all of the
+ * @a child's fields.)
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_error_quick_wrapf(svn_error_t *child,
+                      const char *fmt,
+                      ...)
+       __attribute__((format(printf, 2, 3)));
+
 /** Compose two errors, returning the composition as a brand new error
  * and consuming the original errors.  Either or both of @a err1 and
  * @a err2 may be @c SVN_NO_ERROR.  If both are not @c SVN_NO_ERROR,
@@ -256,6 +269,8 @@ svn_error__locate(const char *file,
   (svn_error__locate(__FILE__,__LINE__), (svn_error_wrap_apr))
 #define svn_error_quick_wrap \
   (svn_error__locate(__FILE__,__LINE__), (svn_error_quick_wrap))
+#define svn_error_quick_wrapf \
+  (svn_error__locate(__FILE__,__LINE__), (svn_error_quick_wrapf))
 #endif
 
 

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_fs.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_fs.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_fs.h Wed Mar  4 15:56:18 2015
@@ -2661,7 +2661,7 @@ typedef svn_error_t *(*svn_fs_lock_callb
                                                svn_error_t *fs_err,
                                                apr_pool_t *pool);
 
-/** Lock the paths in @a targets in @a fs.
+/** Lock the paths in @a lock_targets in @a fs.
  *
  * @a fs must have a username associated with it (see
  * #svn_fs_access_t), else return #SVN_ERR_FS_NO_USER.  Set the
@@ -2675,7 +2675,7 @@ typedef svn_error_t *(*svn_fs_lock_callb
  * to use it.  If in doubt, pass 0.
  *
  * The paths to be locked are passed as the <tt>const char *</tt> keys
- * of the @a targets hash.  The hash values are
+ * of the @a lock_targets hash.  The hash values are
  * <tt>svn_fs_lock_target_t *</tt> and provide the token and
  * @a current_rev for each path.  The token is a lock token such as can
  * be generated using svn_fs_generate_lock_token() (indicating that
@@ -2697,7 +2697,7 @@ typedef svn_error_t *(*svn_fs_lock_callb
  * If @a expiration_date is zero, then create a non-expiring lock.
  * Else, the lock will expire at @a expiration_date.
  *
- * For each path in @a targets @a lock_callback will be invoked
+ * For each path in @a lock_targets @a lock_callback will be invoked
  * passing @a lock_baton and the lock and error that apply to path.
  * @a lock_callback can be NULL in which case it is not called.
  *
@@ -2713,7 +2713,7 @@ typedef svn_error_t *(*svn_fs_lock_callb
  */
 svn_error_t *
 svn_fs_lock_many(svn_fs_t *fs,
-                 apr_hash_t *targets,
+                 apr_hash_t *lock_targets,
                  const char *comment,
                  svn_boolean_t is_dav_comment,
                  apr_time_t expiration_date,
@@ -2753,10 +2753,10 @@ svn_fs_generate_lock_token(const char **
                            apr_pool_t *pool);
 
 
-/** Remove the locks on the paths in @a targets in @a fs.
+/** Remove the locks on the paths in @a unlock_targets in @a fs.
  *
  * The paths to be unlocked are passed as <tt>const char *</tt> keys
- * of the @a targets hash with the corresponding lock tokens as
+ * of the @a unlock_targets hash with the corresponding lock tokens as
  * <tt>const char *</tt> values.  If the token doesn't point to a
  * lock, yield an #SVN_ERR_FS_BAD_LOCK_TOKEN error for this path.  If
  * the token points to an expired lock, yield an
@@ -2770,7 +2770,7 @@ svn_fs_generate_lock_token(const char **
  * however, don't return error; allow the lock to be "broken" in any
  * case.  In the latter case, the token shall be @c NULL.
  *
- * For each path in @a targets @a lock_callback will be invoked
+ * For each path in @a unlock_targets @a lock_callback will be invoked
  * passing @a lock_baton and error that apply to path.  The @a lock
  * passed to the callback will be NULL.  @a lock_callback can be NULL
  * in which case it is not called.
@@ -2785,7 +2785,7 @@ svn_fs_generate_lock_token(const char **
  */
 svn_error_t *
 svn_fs_unlock_many(svn_fs_t *fs,
-                   apr_hash_t *targets,
+                   apr_hash_t *unlock_targets,
                    svn_boolean_t break_lock,
                    svn_fs_lock_callback_t lock_callback,
                    void *lock_baton,

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_hash.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_hash.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_hash.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_hash.h Wed Mar  4 15:56:18 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);
+
 /** Shortcut for apr_hash_get() with a const char * key.
  *
  * @since New in 1.8.
  */
 #define svn_hash_gets(ht, key) \
+            svn_hash__gets(ht, key)
+#else
+#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);
 
 /** Shortcut for apr_hash_set() with a const char * key.
  *
  * @since New in 1.8.
  */
 #define svn_hash_sets(ht, key, val) \
+            svn_hash__sets(ht, key, val)
+#else
+#define svn_hash_sets(ht, key, val) \
             apr_hash_set(ht, key, APR_HASH_KEY_STRING, val)
+#endif
 
 /** @} */
 

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_opt.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_opt.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_opt.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_opt.h Wed Mar  4 15:56:18 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/reuse-ra-session/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_repos.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_repos.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_repos.h Wed Mar  4 15:56:18 2015
@@ -2273,7 +2273,7 @@ svn_repos_fs_begin_txn_for_update(svn_fs
  */
 svn_error_t *
 svn_repos_fs_lock_many(svn_repos_t *repos,
-                       apr_hash_t *targets,
+                       apr_hash_t *lock_targets,
                        const char *comment,
                        svn_boolean_t is_dav_comment,
                        apr_time_t expiration_date,
@@ -2325,7 +2325,7 @@ svn_repos_fs_lock(svn_lock_t **lock,
  */
 svn_error_t *
 svn_repos_fs_unlock_many(svn_repos_t *repos,
-                         apr_hash_t *targets,
+                         apr_hash_t *unlock_targets,
                          svn_boolean_t break_lock,
                          svn_fs_lock_callback_t lock_callback,
                          void *lock_baton,

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs/editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs/editor.c?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs/editor.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs/editor.c Wed Mar  4 15:56:18 2015
@@ -777,16 +777,24 @@ svn_fs__editor_commit(svn_revnum_t *revi
   /* Clean up internal resources (eg. eb->root). This also allows the
      editor infrastructure to know this editor is "complete".  */
   err = svn_editor_complete(editor);
+  if (err)
+    {
+      svn_fs_txn_t *txn = eb->txn;
+
+      eb->txn = NULL;
+      return svn_error_trace(svn_error_compose_create(
+                  err,
+                  svn_fs_abort_txn(txn, scratch_pool)));
+    }
 
   /* Note: docco for svn_fs_commit_txn() states that CONFLICT_PATH will
      be allocated in the txn's pool. But it lies. Regardless, we want
      it placed into RESULT_POOL.  */
 
-  if (!err)
-    err = svn_fs_commit_txn(&inner_conflict_path,
-                             revision,
-                             eb->txn,
-                             scratch_pool);
+  err = svn_fs_commit_txn(&inner_conflict_path,
+                          revision,
+                          eb->txn,
+                          scratch_pool);
   if (SVN_IS_VALID_REVNUM(*revision))
     {
       if (err)

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.c?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.c Wed Mar  4 15:56:18 2015
@@ -441,6 +441,8 @@ default_warning_func(void *baton, svn_er
 svn_error_t *
 svn_fs__path_valid(const char *path, apr_pool_t *pool)
 {
+  char *c;
+
   /* UTF-8 encoded string without NULs. */
   if (! svn_utf__cstring_is_valid(path))
     {
@@ -457,6 +459,18 @@ svn_fs__path_valid(const char *path, apr
                                path);
     }
 
+  /* Raise an error if PATH contains a newline because svn:mergeinfo and
+     friends can't handle them.  Issue #4340 describes a similar problem
+     in the FSFS code itself.
+   */
+  c = strchr(path, '\n');
+  if (c)
+    {
+      return svn_error_createf(SVN_ERR_FS_PATH_SYNTAX, NULL,
+               _("Invalid control character '0x%02x' in path '%s'"),
+               (unsigned char)*c, svn_path_illegal_path_escape(path, pool));
+    }
+
   /* That's good enough. */
   return SVN_NO_ERROR;
 }
@@ -902,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));
 }
@@ -932,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));
@@ -1622,20 +1647,24 @@ svn_fs_lock_many(svn_fs_t *fs,
                                     target->token, "opaquelocktoken");
 
           if (!err)
-            for (c = target->token; *c && !err; c++)
-              if (! svn_ctype_isascii(*c) || svn_ctype_iscntrl(*c))
+            {
+              for (c = target->token; *c && !err; c++)
+                if (! svn_ctype_isascii(*c) || svn_ctype_iscntrl(*c))
+                  err = svn_error_createf(
+                          SVN_ERR_FS_BAD_LOCK_TOKEN, NULL,
+                          _("Lock token '%s' is not ASCII or is a "
+                            "control character at byte %u"),
+                          target->token,
+                          (unsigned)(c - target->token));
+
+              /* strlen(token) == c - token. */
+              if (!err && !svn_xml_is_xml_safe(target->token,
+                                               c - target->token))
                 err = svn_error_createf(
-                        SVN_ERR_FS_BAD_LOCK_TOKEN, NULL,
-                        _("Lock token '%s' is not ASCII or is a "
-                          "control character at byte %u"),
-                        target->token,
-                        (unsigned)(c - target->token));
-
-          /* strlen(token) == c - token. */
-          if (!err && !svn_xml_is_xml_safe(target->token, c - target->token))
-            err = svn_error_createf(SVN_ERR_FS_BAD_LOCK_TOKEN, NULL,
-                                    _("Lock token URI '%s' is not XML-safe"),
-                                    target->token);
+                            SVN_ERR_FS_BAD_LOCK_TOKEN, NULL,
+                            _("Lock token URI '%s' is not XML-safe"),
+                            target->token);
+            }
         }
 
       if (err)

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.h?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.h (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs/fs-loader.h Wed Mar  4 15:56:18 2015
@@ -446,7 +446,7 @@ typedef struct id_vtable_t
 /*** Definitions of the abstract FS object types ***/
 
 /* These are transaction properties that correspond to the bitfields
-   in the 'flags' argument to svn_fs_lock().  */
+   in the 'flags' argument to svn_fs_begin_txn2().  */
 #define SVN_FS__PROP_TXN_CHECK_LOCKS           SVN_PROP_PREFIX "check-locks"
 #define SVN_FS__PROP_TXN_CHECK_OOD             SVN_PROP_PREFIX "check-ood"
 /* Set to "0" at the start of the txn, to "1" when svn:date changes. */

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_base/revs-txns.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_base/revs-txns.c?rev=1664059&r1=1664058&r2=1664059&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_base/revs-txns.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_base/revs-txns.c Wed Mar  4 15:56:18 2015
@@ -711,6 +711,23 @@ txn_body_begin_txn(void *baton, trail_t
       SVN_ERR(txn_body_change_txn_prop(&cpargs, trail));
     }
 
+  /* Put a datestamp on the newly created txn, so we always know
+     exactly how old it is.  (This will help sysadmins identify
+     long-abandoned txns that may need to be manually removed.) Do
+     this before setting CLIENT_DATE so that it is not recorded as an
+     explicit setting. */
+  {
+    struct change_txn_prop_args cpargs;
+    svn_string_t date;
+    cpargs.fs = trail->fs;
+    cpargs.id = txn_id;
+    cpargs.name = SVN_PROP_REVISION_DATE;
+    date.data  = svn_time_to_cstring(apr_time_now(), trail->pool);
+    date.len = strlen(date.data);
+    cpargs.value = &date;
+    SVN_ERR(txn_body_change_txn_prop(&cpargs, trail));
+  }
+
   if (args->flags & SVN_FS_TXN_CLIENT_DATE)
     {
       struct change_txn_prop_args cpargs;
@@ -737,7 +754,6 @@ svn_fs_base__begin_txn(svn_fs_txn_t **tx
 {
   svn_fs_txn_t *txn;
   struct begin_txn_args args;
-  svn_string_t date;
 
   SVN_ERR(svn_fs__check_fs(fs, TRUE));
 
@@ -748,15 +764,7 @@ svn_fs_base__begin_txn(svn_fs_txn_t **tx
 
   *txn_p = txn;
 
-  /* Put a datestamp on the newly created txn, so we always know
-     exactly how old it is.  (This will help sysadmins identify
-     long-abandoned txns that may need to be manually removed.)  When
-     a txn is promoted to a revision, this property will be
-     automatically overwritten with a revision datestamp. */
-  date.data = svn_time_to_cstring(apr_time_now(), pool);
-  date.len = strlen(date.data);
-  return svn_fs_base__change_txn_prop(txn, SVN_PROP_REVISION_DATE,
-                                       &date, pool);
+  return SVN_NO_ERROR;
 }
 
 



Mime
View raw message