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;
}