You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2011/02/07 20:18:33 UTC

svn commit: r1068059 [1/7] - in /subversion/branches/ignore-mergeinfo-log: ./ build/ notes/ notes/commit-access-templates/ subversion/include/ subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_delta/ subversion/libsvn_diff/ subver...

Author: hwright
Date: Mon Feb  7 19:18:29 2011
New Revision: 1068059

URL: http://svn.apache.org/viewvc?rev=1068059&view=rev
Log:
On the ignore-mergeinfo-props branch:
Bring up-to-date with trunk.

Added:
    subversion/branches/ignore-mergeinfo-log/notes/xfail-status
      - copied unchanged from r1068046, subversion/trunk/notes/xfail-status
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_fs_util/caching.c
      - copied unchanged from r1068046, subversion/trunk/subversion/libsvn_fs_util/caching.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_subr/cache-membuffer.c
      - copied unchanged from r1068046, subversion/trunk/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/ignore-mergeinfo-log/tools/dev/windows-build/
      - copied from r1068046, subversion/trunk/tools/dev/windows-build/
    subversion/branches/ignore-mergeinfo-log/tools/dev/windows-build/Makefile
      - copied unchanged from r1068046, subversion/trunk/tools/dev/windows-build/Makefile
    subversion/branches/ignore-mergeinfo-log/tools/dev/windows-build/README
      - copied unchanged from r1068046, subversion/trunk/tools/dev/windows-build/README
    subversion/branches/ignore-mergeinfo-log/tools/dev/windows-build/document-version.pl
      - copied unchanged from r1068046, subversion/trunk/tools/dev/windows-build/document-version.pl
Modified:
    subversion/branches/ignore-mergeinfo-log/   (props changed)
    subversion/branches/ignore-mergeinfo-log/CHANGES
    subversion/branches/ignore-mergeinfo-log/COMMITTERS
    subversion/branches/ignore-mergeinfo-log/build.conf
    subversion/branches/ignore-mergeinfo-log/build/run_tests.py
    subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/full-committer.tmpl
    subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/pmc-member.tmpl
    subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_adler32.h   (props changed)
    subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_cache.h
    subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_fs_private.h
    subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_wc_private.h
    subversion/branches/ignore-mergeinfo-log/subversion/include/svn_checksum.h
    subversion/branches/ignore-mergeinfo-log/subversion/include/svn_diff.h
    subversion/branches/ignore-mergeinfo-log/subversion/include/svn_fs.h
    subversion/branches/ignore-mergeinfo-log/subversion/include/svn_repos.h
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/add.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/commit_util.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/export.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/externals.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/list.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/mergeinfo.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/prop_commands.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/repos_diff.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_delta/compose_delta.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/deprecated.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.h
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff3.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff4.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff_file.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff_memory.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/lcs.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/token.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_fs_fs/caching.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra/compat.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra_neon/commit.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra_neon/fetch.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra_neon/get_deleted_rev.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra_neon/get_location_segments.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra_neon/merge.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra_neon/props.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra_neon/util.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_ra_serf/util.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_repos/authz.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_repos/commit.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_repos/delta.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_repos/dump.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_repos/load-fs-vtable.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_repos/node_tree.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_repos/reporter.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_repos/rev_hunt.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_subr/adler32.c   (contents, props changed)
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_subr/checksum.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_subr/error.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_subr/io.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_wc/diff.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_wc/props.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_wc/update_editor.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_wc/wc-queries.sql
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_wc/wc_db.c
    subversion/branches/ignore-mergeinfo-log/subversion/libsvn_wc/wc_db.h
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/activity.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/merge.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/mod_dav_svn.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/reports/deleted-rev.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/reports/file-revs.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/reports/get-location-segments.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/reports/get-locations.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/reports/log.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/reports/mergeinfo.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/reports/update.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/repos.c
    subversion/branches/ignore-mergeinfo-log/subversion/mod_dav_svn/util.c
    subversion/branches/ignore-mergeinfo-log/subversion/po/zh_CN.po
    subversion/branches/ignore-mergeinfo-log/subversion/svn/main.c
    subversion/branches/ignore-mergeinfo-log/subversion/svnserve/main.c
    subversion/branches/ignore-mergeinfo-log/subversion/svnserve/serve.c
    subversion/branches/ignore-mergeinfo-log/subversion/svnserve/server.h
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/authz_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/autoprop_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/basic_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/blame_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/cat_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/changelist_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/checkout_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/commit_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/copy_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/depth_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/diff_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/export_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/externals_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/history_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/import_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/info_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/input_validation_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/lock_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/log_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/merge_authz_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/merge_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/merge_tree_conflict_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/mergeinfo_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/obliterate_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/patch_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/prop_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/redirect_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/resolve_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/resolved_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/revert_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/schedule_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/special_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/stat_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svndumpfilter_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnlook_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnrdump_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnsync_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/main.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/testcase.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnversion_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/switch_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/trans_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/tree_conflict_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/update_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/upgrade_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/utf8_tests.py
    subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_repos/repos-test.c
    subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_subr/stream-test.c
    subversion/branches/ignore-mergeinfo-log/tools/buildbot/master/Feeder.py
    subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc-test.py
    subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc.c
    subversion/branches/ignore-mergeinfo-log/tools/dev/check-license.py
    subversion/branches/ignore-mergeinfo-log/tools/dev/svnraisetreeconflict/main.c
    subversion/branches/ignore-mergeinfo-log/tools/server-side/svn-populate-node-origins-index.c

Propchange: subversion/branches/ignore-mergeinfo-log/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Feb  7 19:18:29 2011
@@ -2,6 +2,8 @@
 /subversion/branches/atomic-revprop:965046-1000689
 /subversion/branches/bdb-reverse-deltas:872050-872529
 /subversion/branches/diff-callbacks3:870059-870761
+/subversion/branches/diff-optimizations:1031270-1037352
+/subversion/branches/diff-optimizations-bytes:1037353-1067789
 /subversion/branches/dont-save-plaintext-passwords-by-default:870728-871118
 /subversion/branches/double-delete:870511-872970
 /subversion/branches/explore-wc:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
@@ -11,6 +13,7 @@
 /subversion/branches/gnome-keyring:870558-871410
 /subversion/branches/http-protocol-v2:874395-876041
 /subversion/branches/in-memory-cache:869829-871452
+/subversion/branches/integrate-cache-membuffer:998649-998852
 /subversion/branches/issue-2779-dev:965496-984198
 /subversion/branches/issue-2843-dev:871432-874179
 /subversion/branches/issue-3000:871713,871716-871719,871721-871726,871728,871734
@@ -24,7 +27,7 @@
 /subversion/branches/log-g-performance:870941-871032
 /subversion/branches/merge-skips-obstructions:874525-874615
 /subversion/branches/nfc-nfd-aware-client:870276,870376
-/subversion/branches/performance:982355,983764,983766,984927,984984,985014,985037,985046,985472,985477,985482,985500,985606,985669,986453,987888,987893,995507,995603,1001413,1025660,1028092,1028094,1028104,1029038,1029042,1029090,1029092,1029335,1030763
+/subversion/branches/performance:979193,980118,981087,981684,982043,982355,983764,983766,984927,984973,984984,985014,985037,985046,985472,985477,985482,985500,985606,985669,986453,987888,987893,988319,990541,990568,990572,990600,990759,992899,992911,993127,993141,994956,995478,995507,995603,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029232,1029335,1029340,1029342,1029344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1039511,1043705,1053735,1056015,1066452,1067683
 /subversion/branches/py-tests-as-modules:956579-1033052
 /subversion/branches/ra_serf-digest-authn:875693-876404
 /subversion/branches/reintegrate-improvements:873853-874164
@@ -41,4 +44,4 @@
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
 /subversion/branches/uris-as-urls:1060426-1064427
-/subversion/trunk:1054732-1066149
+/subversion/trunk:1054732-1068046

Modified: subversion/branches/ignore-mergeinfo-log/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/CHANGES?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/CHANGES (original)
+++ subversion/branches/ignore-mergeinfo-log/CHANGES Mon Feb  7 19:18:29 2011
@@ -1,3 +1,120 @@
+Version 1.7.0
+(?? ??? 2011, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.0
+
+ User-visible changes:
+  - General:
+
+  - Major new features:
+    * Less verbose HTTP-based repository access protocol (issue #1161, #3371)
+    * Rewritten working copy metadata storage (issue #3357)
+    * New 'svn patch' subcommand (issue #511)
+    * Property packing on FSFS backends (issue #3444)
+
+  - Minor new features and improvements:
+    * Better handling of HTTP redirects (issue #2779)
+    * Improved and much more consistent path handling (issue #2028, and others)
+    * 'svnadmin load' rewrites changed revnums in mergeinfo (issue #3020)
+    * Error message and help text improvements
+    * 'svn log' can print unidiff of changes made in a revision (issue #2909)
+    * 'svn diff' can print git-style unidiff annotations 
+    * svnsync can now steal locks on a mirror repository (issue #3309)
+    * display the wc root in the output of 'svn info' (issue #3355)
+    * add '--ie' as an alias for '--ignore-externals' (issue #3436)
+    * add 'svnlook filesize' (issue #3509)
+    * add 'svnsync --disable-locking' (issue #3545)
+    * subtree merges don't unconditionally stop reintegrate merge (issue #3577)
+    * 'svn --relocate' updates relative externals (issue #3597)
+    * allow svnsync users to specify the source repo (issue #3637)
+    * remove redundant mergeinfo notifications for 2-URL merges (issue #3671)
+    * 'svn export' into the current directory (issue #3727)
+    * added '--parents' to 'svn update' (issue #3748)
+
+  - Client-side bugfixes:
+    * 'svn cp A B; svn mv B C' is equivalent to 'svn cp A C' (issue #756)
+    * revert fetches missing directories from the server (issue #1040)
+    * allow subdirs of moved dirs to be moved and committed (issue #1259)
+    * improved performance of 'svn mv' with whole directories (issue #1284)
+    * 'svn rm B; svn cp A B' now works (issue #1516)
+    * 'svn diff URL1 URL2' now reverse of 'svn diff URL2 URL1) (issue #2333)
+    * error if relocating to an unused URL (issue #2531)
+    * 'svn blame -rWORKING' is now supported (issue #2544)
+    * improve correctness of commit on a relocated wc over ra_dav (issue #2578)
+    * add early error to 'svn add --auto-props' with mixed eols (issue #2713)
+    * allow 'svn diff' to accept symlinks as targets (issue #2716)
+    * don't lose props for replaced items (issue #2743)
+    * handle mergeinfo for subtrees removed outside of svn (issue #2915)
+    * add ability to force 'svn diff' to use internal diff (issue #3701)
+    * correctly recover a schedule-for-delete rm'd outside of svn (issue #3106)
+    * don't create self-referential mergeinfo from own history (issue #3157)
+    * improve 'svn log -g' handling of bad mergeinfo source paths (issue #3270)
+    * better conflict stat printing (issue #3342, issue #3594)
+    * 'svn update' restores excluded files (issue #3544)
+    * allow reintegrate merges into WCs with missing subtrees (issue #3603)
+    * more gracefully error when given back cmdline input (issue #3620)
+    * update exit codes to reflect command failure (issue #3622)
+    * don't double-update file externals (issue #3665)
+    * improve output of multi-target update (issue #3693)
+    * make 'svn up --set-depth=exclude FILE' work (issue #3736)
+    * fixed: wc-to-wc copy of a switch source (issue #1802)
+    * fixed: 'svn st' reports symlinks as obstructed items (issue #2284)
+    * fixed: 'cd e:\; svn up e:\' fails (issue #2556)
+    * fixed: svn aborts on commiting from root dir on windows (issue #3346)
+    * fixed: removing a dir scheduled for deletion corrupts wc (issue #2741)
+    * fixed: 'svn cleanup' fails on obstructed paths (issue #2867)
+    * fixed: case-only renames resulting from merges don't work (issue #3115)
+    * fixed: 'svn mergeinfo' ignores peg rev for wc target (issue #3180)
+    * fixed: unable to merge to wc of deleted branch (issue #3221)
+    * fixed: move via merge leaves behind versioned move source (issue #3324)
+    * fixed: ra_serf does not honor http-proxy-exceptions (issue #3428)
+    * fixed: 'svn mv A B; svn mv B A' loses history (issue #3429)
+    * fixed: ra_serf doesn't support http-auth-types config (issue #3435)
+    * fixed: merge sets incorrect mergeinfo on skipped paths (issue #3440)
+    * fixed: ra_serf inconsistent handling of cached authn creds (issue #3450)
+    * fixed: excluded subtrees are not detected by svnversion (issue #3461)
+    * fixed: submitting a changelist while obstructed item exists (issue #3484)
+    * fixed: crash when changing an external's URL (issue #3530)
+    * fixed: target moved after branching breaks reintegrate (issue #3640)
+    * fixed: potential race condition in svnsync (issue #3546)
+    * fixed: spurious merge conflicts with pre-1.7 mod_dav_svn (issue #3657)
+    * fixed: repeat merge is not a no-op (issue #3564)
+    * fixed: inheritance results in self-referential mergeinfo (issue #3668)
+    * fixed: inheritance results in nonexistent mergeinfo sources (issue #3669)
+    * fixed: memory leaks in ra_serf (issue #3684)
+    * fixed: corruption of 'svn pg' output for large properties (issue #3721)
+    * fixed: 'svnsync copy-revprops' doesn't sync revprop dels (issue #3728)
+  
+  - Server-side bugfixes:
+    * mod_dav_svn is less strict about auto-merging for commits (issue #1704)
+    * allow SVNListParentPath to be used with authz (issue #2753)
+    * allow nav to repo list from repo top with SVNListParentPath (issue #3159)
+    * allow repositories in the root of a drive on windows (issue #3535)
+    * don't destroy mergeinnfo with 'svnadmin load --parent-dir' (issue #3547)
+    * fixed: 'svnadmin hotcopy' does not duplicate symlinks (issue #2591)
+    * fixed: post-revprop-change errors cancel commit (issue #2990)
+    * fixed: mod_dav_svn runs pre-revprop-change hook twice (issue #3085)
+    * fixed: mod_dav_svn doesn't return stderr to user on failure (issue #3112)
+    * fixed: hotcopy may corrupt target rep-cache.db (issue #3596)
+    * fixed: mod_dav_svn can cause spurious merge conflicts (issue #3657)
+
+  - Other tool improvements and bugfixes:
+    * svnsync now takes the '--config-option' argument (issue #2027)
+
+ Developer-visible changes:
+  - General:
+    * improve building with sqlite on Windows (issue #3364)
+    * allow mod_dav_svn to compile against Apache 2.4 (issue #3548)
+
+  - API changes:
+    * don't crash svn_client_copy if ctx->log_msg_func is NULL (issue #3234)
+    * ra_serf now uses svn_error_t throughout (issue #3375)
+    * fixed: svn_ra_local__get_file() leaks file descriptors (issue #3290)
+
+  - Bindings:
+    * New JavaHL package: org.apache.subversion
+    * Deprecate the SVNClientSynchronized class in JavaHL (issue #2755)
+
+
 Version 1.6.15
 (26 Nov 2010, from /branches/1.6.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.6.15

Modified: subversion/branches/ignore-mergeinfo-log/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/COMMITTERS?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/COMMITTERS [UTF-8] (original)
+++ subversion/branches/ignore-mergeinfo-log/COMMITTERS [UTF-8] Mon Feb  7 19:18:29 2011
@@ -29,7 +29,7 @@ Blanket commit access:
            jaa   Jani Averbach <ja...@iki.fi>
     julianfoad   Julian Foad <ju...@wandisco.com>
   jszakmeister   John Szakmeister <jo...@szakmeister.net>
-           ehu   Erik Hülsmann <er...@wandisco.com>
+           ehu   Erik Hülsmann <eh...@gmail.com>
         breser   Ben Reser <be...@reser.org>
           maxb   Max Bowsher <ma...@ukf.net>
        dberlin   Daniel Berlin <db...@dberlin.org>

Modified: subversion/branches/ignore-mergeinfo-log/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/build.conf?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/build.conf (original)
+++ subversion/branches/ignore-mergeinfo-log/build.conf Mon Feb  7 19:18:29 2011
@@ -147,7 +147,7 @@ type = exe
 path = subversion/svnserve
 install = bin
 manpages = subversion/svnserve/svnserve.8 subversion/svnserve/svnserve.conf.5
-libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr libsvn_ra_svn
+libs = libsvn_repos libsvn_fs libsvn_fs_util libsvn_delta libsvn_subr libsvn_ra_svn
        apriconv apr sasl
 msvc-libs = advapi32.lib ws2_32.lib
 

Modified: subversion/branches/ignore-mergeinfo-log/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/build/run_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/build/run_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/build/run_tests.py Mon Feb  7 19:18:29 2011
@@ -390,11 +390,17 @@ class TestHarness:
       prog_f = None
     else:
       prog_f = progress_func
+      
+    if test_nums:
+      test_selection = [test_nums]
+    else:
+      test_selection = []
 
     failed = svntest.main.execute_tests(prog_mod.test_list,
                                         serial_only=serial_only,
                                         test_name=progbase,
-                                        progress_func=prog_f)
+                                        progress_func=prog_f,
+                                        test_selection=test_selection)
 
     # restore some values
     sys.path = old_path

Modified: subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/full-committer.tmpl
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/full-committer.tmpl?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/full-committer.tmpl (original)
+++ subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/full-committer.tmpl Mon Feb  7 19:18:29 2011
@@ -29,9 +29,18 @@ notified that your account has been crea
 modify the COMMITTERS file appropriately, which also serves as a test
 of your new username and password.
 
+Becoming a full committer also means you'll become part of the Subversion
+Project Management Committee (PMC).  The PMC is the managing body of the
+Subversion development and user communities.  For more information, see
+<http://www.apache.org/foundation/how-it-works.html#pmc> and
+<http://www.apache.org/dev/pmc.html#faq>.
+
 Please remember to subscribe to the private (PMC) mailing list by
 emailing <private-subscribe{AT}subversion.apache.org>, and to checkout
 a working copy of https://svn.apache.org/repos/private/pmc/subversion/.
+Note: it typically takes 3 to 5 days after you accepted this invitation,
+before access to this protected part of the repository is arranged.  If it
+takes too long, please let us know on the private mailing list.
 
 Remember that you can still post patches for review before committing,
 when you want to.  Commit access just means that you can rely on your

Modified: subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/pmc-member.tmpl
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/pmc-member.tmpl?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/pmc-member.tmpl (original)
+++ subversion/branches/ignore-mergeinfo-log/notes/commit-access-templates/pmc-member.tmpl Mon Feb  7 19:18:29 2011
@@ -29,6 +29,9 @@ A temporary password will be chosen for 
 Please remember to subscribe to the private (PMC) mailing list by
 emailing <private-subscribe{AT}subversion.apache.org>, and to checkout
 a working copy of https://svn.apache.org/repos/private/pmc/subversion/.
+Note: it typically takes 3 to 5 days after you accepted this invitation,
+before access to this protected part of the repository is arranged.  If it
+takes too long, please let us know on the private mailing list.
 
 While PMC membership comes with full commit privileges to the Subversion
 repository, we trust you use your judgement in determining what areas

Propchange: subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_adler32.h
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Feb  7 19:18:29 2011
@@ -2,6 +2,8 @@
 /subversion/branches/atomic-revprop/subversion/libsvn_diff/diff.h:965046-1000689
 /subversion/branches/bdb-reverse-deltas/subversion/libsvn_diff/diff.h:872050-872529
 /subversion/branches/diff-callbacks3/subversion/libsvn_diff/diff.h:870059-870761
+/subversion/branches/diff-optimizations/subversion/include/private/svn_adler32.h:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/subversion/include/private/svn_adler32.h:1037353-1067789
 /subversion/branches/dont-save-plaintext-passwords-by-default/subversion/libsvn_diff/diff.h:870728-871118
 /subversion/branches/double-delete/subversion/libsvn_diff/diff.h:870511-872970
 /subversion/branches/explore-wc/subversion/libsvn_diff/diff.h:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
@@ -40,4 +42,4 @@
 /subversion/branches/tc_url_rev/subversion/libsvn_diff/diff.h:874351-874483
 /subversion/branches/tree-conflicts/subversion/libsvn_diff/diff.h:868291-873154
 /subversion/branches/tree-conflicts-notify/subversion/libsvn_diff/diff.h:873926-874008
-/subversion/trunk/subversion/include/private/svn_adler32.h:1054732-1066149
+/subversion/trunk/subversion/include/private/svn_adler32.h:1054732-1068046

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_cache.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_cache.h?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_cache.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_cache.h Mon Feb  7 19:18:29 2011
@@ -68,6 +68,19 @@ typedef svn_error_t *(*svn_cache__deseri
                                                       apr_pool_t *pool);
 
 /**
+ * A function type for deserializing an object @a *out from the string
+ * @a data of length @a data_len in the pool @a pool. The extra information
+ * @a baton passed into can be used to deserialize only a specific part or
+ * sub-structure or to perform any other non-modifying operation that may
+ * not require the whole structure to be processed.
+ */
+typedef svn_error_t *(*svn_cache__partial_getter_func_t)(void **out,
+                                                         const char *data,
+                                                         apr_size_t data_len,
+                                                         void *baton,
+                                                         apr_pool_t *pool);
+
+/**
  * A function type for serializing an object @a in into bytes.  The
  * function should allocate the serialized value in @a pool, set @a
  * *data to the serialized value, and set *data_len to its length.
@@ -93,6 +106,11 @@ typedef svn_error_t *(*svn_cache__error_
 typedef struct svn_memcache_t svn_memcache_t;
 
 /**
+ * An opaque structure representing a membuffer cache object.
+ */
+typedef struct svn_membuffer_t svn_membuffer_t;
+
+/**
  * Opaque type for an in-memory cache.
  */
 typedef struct svn_cache__t svn_cache__t;
@@ -174,6 +192,57 @@ svn_cache__make_memcache_from_config(svn
                                      apr_pool_t *pool);
 
 /**
+ * Creates a new membuffer cache object in @a *cache. It will contain
+ * up to @a total_size bytes of data, using @a directory_size bytes 
+ * for index information and the remainder for serialized objects.
+ *
+ * Since each index entry is about 50 bytes long, 1 to 10 percent of
+ * the @a total_size should be allocated to the @a directory_size,
+ * depending on the average serialized object size. Higher percentages
+ * will generally result in higher hit rates and reduced conflict
+ * resolution overhead.
+ *
+ * If access to the resulting cache object is guranteed to be serialized,
+ * @a thread_safe may be set to @a FALSE for maximum performance.
+ *
+ * Allocations will be made in @a pool, in particular the data buffers.
+ */
+svn_error_t* 
+svn_cache__membuffer_cache_create(svn_membuffer_t **cache,
+                                  apr_size_t total_size,
+                                  apr_size_t directory_size,
+                                  svn_boolean_t thread_safe,
+                                  apr_pool_t *pool);
+
+/**
+ * Creates a new cache in @a *cache_p, storing the data in a potentially
+ * shared @a membuffer object.  The elements in the cache will be indexed
+ * by keys of length @a klen, which may be APR_HASH_KEY_STRING if they
+ * are strings.  Values will be serialized for the memcache using @a
+ * serialize_func and deserialized using @a deserialize_func.  Because
+ * the same memcache object may cache many different kinds of values
+ * form multiple caches, @a prefix should be specified to differentiate 
+ * this cache from other caches.  @a *cache_p will be allocated in @a pool.
+ *
+ * If @a deserialize_func is NULL, then the data is returned as an
+ * svn_string_t; if @a serialize_func is NULL, then the data is
+ * assumed to be an svn_stringbuf_t.
+ *
+ * These caches themselves are thread safe, the shared @a memcache may
+ * be not, depending on its creation parameters.
+ *
+ * These caches do not support svn_cache__iter.
+ */
+svn_error_t *
+svn_cache__create_membuffer_cache(svn_cache__t **cache_p,
+                                  svn_membuffer_t *membuffer,
+                                  svn_cache__serialize_func_t serialize,
+                                  svn_cache__deserialize_func_t deserialize,
+                                  apr_ssize_t klen,
+                                  const char *prefix,
+                                  apr_pool_t *pool);
+
+/**
  * Sets @a handler to be @a cache's error handling routine.  If any
  * error is returned from a call to svn_cache__get or svn_cache__set, @a
  * handler will be called with @a baton and the error, and the

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_fs_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_fs_private.h?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_fs_private.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_fs_private.h Mon Feb  7 19:18:29 2011
@@ -91,6 +91,15 @@ svn_fs__commit_obliteration_txn(svn_revn
                                 apr_pool_t *pool);
 
 
+/* Access the process-global (singleton) membuffer cache. The first call
+ * will automatically allocate the cache using the current cache config.
+ * NULL will be returned if the desired cache size is 0.
+ *
+ * @since New in 1.7.
+ */
+struct svn_membuffer_t *
+svn_fs__get_global_membuffer_cache(void);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_wc_private.h?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/private/svn_wc_private.h Mon Feb  7 19:18:29 2011
@@ -713,6 +713,42 @@ svn_wc__get_mergeinfo_walk_info(svn_bool
                                 const char *local_abspath,
                                 apr_pool_t *scratch_pool);
 
+/** A callback invoked by svn_wc__prop_list_recursive().
+ * It is equivalent to svn_proplist_receiver_t declared in svn_client.h,
+ * but kept private within the svn_wc__ namespace because it is used within
+ * the bowels of libsvn_wc which don't include svn_client.h.
+ *
+ * @since New in 1.7. */
+typedef svn_error_t *(*svn_wc__proplist_receiver_t)(void *baton,
+                                                    const char *local_abspath,
+                                                    apr_hash_t *props,
+                                                    apr_pool_t *scratch_pool);
+
+/** Call @a receiver_func, passing @a receiver_baton, an absolute path, and
+ * a hash table mapping <tt>char *</tt> names onto <tt>svn_string_t *</tt>
+ * values for all the regular properties of the node at @a local_abspath
+ * and any node beneath @a local_abspath within the specified @a depth.
+ *
+ * If a node has no properties, @a receiver_func is not called for the node.
+ *
+ * Use @a wc_ctx to access the working copy, and @a scratch_pool for
+ * temporary allocations.
+ *
+ * If the node at @a local_abspath does not exist,
+ * #SVN_ERR_WC_PATH_NOT_FOUND is returned.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_wc__prop_list_recursive(svn_wc_context_t *wc_ctx,
+                            const char *local_abspath,
+                            svn_depth_t depth,
+                            svn_wc__proplist_receiver_t receiver_func,
+                            void *receiver_baton,
+                            svn_cancel_func_t cancel_func,
+                            void *cancel_baton,
+                            apr_pool_t *scratch_pool);
+
 
 /**
  * For use by entries.c and entries-dump.c to read old-format working copies.

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/svn_checksum.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/svn_checksum.h?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/svn_checksum.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/svn_checksum.h Mon Feb  7 19:18:29 2011
@@ -241,6 +241,25 @@ svn_checksum_size(const svn_checksum_t *
 
 
 /**
+ * Return an error of type #SVN_ERR_CHECKSUM_MISMATCH if @a actual and 
+ * @a expected checksums do not match, otherwise, return #SVN_NO_ERROR.
+ * Use @a fmt, and the following parameters to populate the error message.
+ *
+ * @a scratch_pool is used for temporary allocations; the returned error
+ * will be allocated in its own pool (as is typical).
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_checksum_mismatch_err(const svn_checksum_t *expected,
+                          const svn_checksum_t *actual,
+                          apr_pool_t *scratch_pool,
+                          const char *fmt,
+                          ...)
+  __attribute__ ((format(printf, 4, 5)));
+
+
+/**
  * Internal function for creating a checksum from a binary digest.
  *
  * @since New in 1.6

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/svn_diff.h?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/svn_diff.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/svn_diff.h Mon Feb  7 19:18:29 2011
@@ -106,6 +106,49 @@ typedef enum svn_diff_datasource_e
 
 
 /** A vtable for reading data from the three datasources. */
+typedef struct svn_diff_fns2_t
+{
+  /** Open the datasources of type @a datasources. */
+  svn_error_t *(*datasources_open)(void *diff_baton, apr_off_t *prefix_lines,
+                                   const svn_diff_datasource_e *datasources,
+                                   apr_size_t datasources_len);
+
+  /** Close the datasource of type @a datasource. */
+  svn_error_t *(*datasource_close)(void *diff_baton,
+                                   svn_diff_datasource_e datasource);
+
+  /** Get the next "token" from the datasource of type @a datasource.
+   *  Return a "token" in @a *token.   Return a hash of "token" in @a *hash.
+   *  Leave @a token and @a hash untouched when the datasource is exhausted.
+   */
+  svn_error_t *(*datasource_get_next_token)(apr_uint32_t *hash, void **token,
+                                            void *diff_baton,
+                                            svn_diff_datasource_e datasource);
+
+  /** A function for ordering the tokens, resembling 'strcmp' in functionality.
+   * @a compare should contain the return value of the comparison:
+   * If @a ltoken and @a rtoken are "equal", return 0.  If @a ltoken is
+   * "less than" @a rtoken, return a number < 0.  If @a ltoken  is
+   * "greater than" @a rtoken, return a number > 0.
+   */
+  svn_error_t *(*token_compare)(void *diff_baton,
+                                void *ltoken,
+                                void *rtoken,
+                                int *compare);
+
+  /** Free @a token from memory, the diff algorithm is done with it. */
+  void (*token_discard)(void *diff_baton,
+                        void *token);
+
+  /** Free *all* tokens from memory, they're no longer needed. */
+  void (*token_discard_all)(void *diff_baton);
+} svn_diff_fns2_t;
+
+
+/** A vtable for reading data from the three datasources.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
 typedef struct svn_diff_fns_t
 {
   /** Open the datasource of type @a datasource. */
@@ -149,8 +192,23 @@ typedef struct svn_diff_fns_t
 /** Given a vtable of @a diff_fns/@a diff_baton for reading datasources,
  * return a diff object in @a *diff that represents a difference between
  * an "original" and "modified" datasource.  Do all allocation in @a pool.
+ *
+ * @since New in 1.7.
  */
 svn_error_t *
+svn_diff_diff_2(svn_diff_t **diff,
+                void *diff_baton,
+                const svn_diff_fns2_t *diff_fns,
+                apr_pool_t *pool);
+
+/** Given a vtable of @a diff_fns/@a diff_baton for reading datasources,
+ * return a diff object in @a *diff that represents a difference between
+ * an "original" and "modified" datasource.  Do all allocation in @a pool.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_diff_diff(svn_diff_t **diff,
               void *diff_baton,
               const svn_diff_fns_t *diff_fns,
@@ -160,7 +218,23 @@ svn_diff_diff(svn_diff_t **diff,
  * return a diff object in @a *diff that represents a difference between
  * three datasources: "original", "modified", and "latest".  Do all
  * allocation in @a pool.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_diff_diff3_2(svn_diff_t **diff,
+                 void *diff_baton,
+                 const svn_diff_fns2_t *diff_fns,
+                 apr_pool_t *pool);
+
+/** Given a vtable of @a diff_fns/@a diff_baton for reading datasources,
+ * return a diff object in @a *diff that represents a difference between
+ * three datasources: "original", "modified", and "latest".  Do all
+ * allocation in @a pool.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_diff_diff3(svn_diff_t **diff,
                void *diff_baton,
@@ -172,8 +246,25 @@ svn_diff_diff3(svn_diff_t **diff,
  * two datasources: "original" and "latest", adjusted to become a full
  * difference between "original", "modified" and "latest" using "ancestor".
  * Do all allocation in @a pool.
+ *
+ * @since New in 1.7.
  */
 svn_error_t *
+svn_diff_diff4_2(svn_diff_t **diff,
+                 void *diff_baton,
+                 const svn_diff_fns2_t *diff_fns,
+                 apr_pool_t *pool);
+
+/** Given a vtable of @a diff_fns/@a diff_baton for reading datasources,
+ * return a diff object in @a *diff that represents a difference between
+ * two datasources: "original" and "latest", adjusted to become a full
+ * difference between "original", "modified" and "latest" using "ancestor".
+ * Do all allocation in @a pool.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_diff_diff4(svn_diff_t **diff,
                void *diff_baton,
                const svn_diff_fns_t *diff_fns,

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/svn_fs.h?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/svn_fs.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/svn_fs.h Mon Feb  7 19:18:29 2011
@@ -2270,8 +2270,52 @@ svn_fs_pack(const char *db_path,
             apr_pool_t *pool);
 
 
+/** @defgroup svn_fs_cach_config Filesystem caching configuration
+ * @{
+ * @since New in 1.7. */
+
+/* FSFS cache settings. It controls what caches, in what size and
+   how they will be created. The settings apply for the whole process.
+ */
+typedef struct svn_fs_cache_config_t
+{
+  /* total cache size in bytes. May be 0, resulting in no cache being used */
+  apr_uint64_t cache_size;
+
+  /* maximum number of files kept open */
+  apr_size_t file_handle_count;
+
+  /* shall fulltexts be cached? */
+  svn_boolean_t cache_fulltexts;
+
+  /* shall text deltas be cached? */
+  svn_boolean_t cache_txdeltas;
+
+  /* is this a guaranteed single-threaded application? */
+  svn_boolean_t single_threaded;
+} svn_fs_cache_config_t;
+
+/* Get the current FSFS cache configuration. If it has not been set,
+   this function will return the default settings.
+ */
+const svn_fs_cache_config_t *
+svn_fs_get_cache_config(void);
+
+/* Set the FSFS cache configuration. Please note that it may not change
+   the actual configuration *in use*. Therefore, call it before reading
+   data from any FSFS repo and call it only once.
+
+   This function is not thread-safe. Therefore, it should be called once
+   from the processes' initialization code only.
+ */
+void
+svn_fs_set_cache_config(const svn_fs_cache_config_t *settings);
+
 /** @} */
 
+/** @} */
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/ignore-mergeinfo-log/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/include/svn_repos.h?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/include/svn_repos.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/include/svn_repos.h Mon Feb  7 19:18:29 2011
@@ -1221,6 +1221,9 @@ svn_repos_replay(svn_fs_root_t *root,
  * for cleaning them up (either by committing them, or aborting them).
  *
  * @since New in 1.5.
+ *
+ * @note Yes, @a repos_url is a <em>decoded</em> URL.  We realize
+ * that's sorta wonky.  Sorry about that.
  */
 svn_error_t *
 svn_repos_get_commit_editor5(const svn_delta_editor_t **editor,

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/add.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/add.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/add.c Mon Feb  7 19:18:29 2011
@@ -773,8 +773,8 @@ mkdir_urls(const apr_array_header_t *url
       if (resplit)
         {
           const char *bname;
+
           svn_uri_split(&common, &bname, common, pool);
-          bname = svn_path_uri_encode(bname, pool);
           for (i = 0; i < targets->nelts; i++)
             {
               const char *path = APR_ARRAY_IDX(targets, i, const char *);

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/commit_util.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/commit_util.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/commit_util.c Mon Feb  7 19:18:29 2011
@@ -206,8 +206,8 @@ add_lock_token(const char *local_abspath
 {
   struct add_lock_token_baton *altb = walk_baton;
   apr_pool_t *token_pool = apr_hash_pool_get(altb->lock_tokens);
-  const char* lock_token;
-  const char* url;
+  const char *lock_token;
+  const char *url;
 
   /* I want every lock-token I can get my dirty hands on!
      If this entry is switched, so what.  We will send an irrelevant lock
@@ -746,15 +746,11 @@ harvest_committables(apr_hash_t *committ
                                   state_flags,
                                   result_pool, scratch_pool));
           if (state_flags & SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN)
-            {
-              const char *url = svn_path_url_add_component2(
-                                  repos_root_url,
-                                  repos_relpath, scratch_pool);
-
-              apr_hash_set(lock_tokens,
-                         apr_pstrdup(apr_hash_pool_get(lock_tokens), url),
+            apr_hash_set(lock_tokens,
+                         svn_path_url_add_component2(
+                             repos_root_url, repos_relpath,
+                             apr_hash_pool_get(lock_tokens)),
                          APR_HASH_KEY_STRING, entry_lock_token);
-            }
         }
     }
 

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/export.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/export.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/export.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/export.c Mon Feb  7 19:18:29 2011
@@ -881,11 +881,13 @@ change_dir_prop(void *dir_baton,
 /* Move the tmpfile to file, and send feedback. */
 static svn_error_t *
 close_file(void *file_baton,
-           const char *text_checksum,
+           const char *text_digest,
            apr_pool_t *pool)
 {
   struct file_baton *fb = file_baton;
   struct edit_baton *eb = fb->edit_baton;
+  svn_checksum_t *text_checksum;
+  svn_checksum_t *actual_checksum;
 
   /* Was a txdelta even sent? */
   if (! fb->tmppath)
@@ -893,23 +895,14 @@ close_file(void *file_baton,
 
   SVN_ERR(svn_stream_close(fb->tmp_stream));
 
-  if (text_checksum)
-    {
-      const char *actual_checksum =
-        svn_checksum_to_cstring(svn_checksum__from_digest(fb->text_digest,
-                                                          svn_checksum_md5,
-                                                          pool), pool);
-
-      if (actual_checksum && (strcmp(text_checksum, actual_checksum) != 0))
-        {
-          return svn_error_createf(SVN_ERR_CHECKSUM_MISMATCH, NULL,
-                          _("Checksum mismatch for '%s':\n"
-                            "   expected:  %s\n"
-                            "     actual:  %s\n"),
-                          svn_dirent_local_style(fb->path, pool),
-                          text_checksum, actual_checksum);
-        }
-    }
+  SVN_ERR(svn_checksum_parse_hex(&text_checksum, svn_checksum_md5, text_digest,
+                                 pool));
+  actual_checksum = svn_checksum__from_digest(fb->text_digest,
+                                              svn_checksum_md5, pool);
+
+  SVN_ERR(svn_checksum_mismatch_err(text_checksum, actual_checksum, pool,
+                                    _("Checksum mismatch for '%s'"),
+                                    svn_dirent_local_style(fb->path, pool)));
 
   if ((! fb->eol_style_val) && (! fb->keywords_val) && (! fb->special))
     {

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/externals.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/externals.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/externals.c Mon Feb  7 19:18:29 2011
@@ -1256,7 +1256,7 @@ svn_client__handle_externals(apr_hash_t 
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(to_abspath));
 
-  /* Sanity check; see r30124. */
+  /* Sanity check; see r870198. */
   if (! svn_path_is_url(from_url))
     return svn_error_createf
       (SVN_ERR_BAD_URL, NULL, _("'%s' is not a URL"), from_url);

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/list.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/list.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/list.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/list.c Mon Feb  7 19:18:29 2011
@@ -242,8 +242,8 @@ svn_client_list2(const char *path_or_url
 
   if (! dirent)
     return svn_error_createf(SVN_ERR_FS_NOT_FOUND, NULL,
-                             _("URL '%s' non-existent in that revision"),
-                             url);
+                             _("URL '%s' non-existent in revision %ld"),
+                             url, rev);
 
   /* Maybe get all locks under url. */
   if (fetch_locks)

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/log.c Mon Feb  7 19:18:29 2011
@@ -528,13 +528,13 @@ svn_client_log6(const apr_array_header_t
    * the named range.  This led to revisions being printed in strange
    * order or being printed more than once.  This is issue 1550.
    *
-   * In r11599, jpieper blocked multiple wc targets in svn/log-cmd.c,
+   * In r851673, jpieper blocked multiple wc targets in svn/log-cmd.c,
    * meaning this block not only doesn't work right in that case, but isn't
    * even testable that way (svn has no unit test suite; we can only test
    * via the svn command).  So, that check is now moved into this function
    * (see above).
    *
-   * kfogel ponders future enhancements in r4186:
+   * kfogel ponders future enhancements in r844260:
    * I think that's okay behavior, since the sense of the command is
    * that one wants a particular range of logs for *this* file, then
    * another range for *that* file, and so on.  But we should

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/mergeinfo.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/mergeinfo.c Mon Feb  7 19:18:29 2011
@@ -1271,7 +1271,7 @@ find_nearest_ancestor(const apr_array_he
         {
           svn_sort__item_t item = APR_ARRAY_IDX(depth_first_catalog_index, i,
                                                 svn_sort__item_t);
-          if (svn_path_is_ancestor(item.key, abs_repos_path)
+          if (svn_fspath__is_ancestor(item.key, abs_repos_path)
               || svn_path_compare_paths(item.key, abs_repos_path) == 0)
             ancestor_index = i;
         }

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/prop_commands.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/prop_commands.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/prop_commands.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/prop_commands.c Mon Feb  7 19:18:29 2011
@@ -1217,6 +1217,49 @@ proplist_walk_cb(const char *local_abspa
                        scratch_pool);
 }
 
+/* Baton for recursive_proplist_receiver(). */
+struct recursive_proplist_receiver_baton
+{
+  apr_hash_t *changelist_hash; /* Keys are changelists to filter on. */
+  svn_wc_context_t *wc_ctx;  /* Working copy context. */
+  svn_proplist_receiver_t wrapped_receiver;  /* Proplist receiver to call. */
+  void *wrapped_receiver_baton;    /* Baton for the proplist receiver. */
+
+  /* Anchor, anchor_abspath pair for converting to relative paths */
+  const char *anchor;
+  const char *anchor_abspath;
+};
+
+/* An implementation of svn_wc__proplist_receiver_t. */
+static svn_error_t *
+recursive_proplist_receiver(void *baton,
+                            const char *local_abspath,
+                            apr_hash_t *props,
+                            apr_pool_t *scratch_pool)
+{
+  struct recursive_proplist_receiver_baton *b = baton;
+  const char *path;
+
+  /* If the node doesn't pass changelist filtering, get outta here. */
+  if (! svn_wc__changelist_match(b->wc_ctx, local_abspath,
+                                 b->changelist_hash, scratch_pool))
+    return SVN_NO_ERROR;
+
+  /* Attempt to convert absolute paths to relative paths for
+   * presentation purposes, if needed. */
+  if (b->anchor && b->anchor_abspath)
+    {
+      path = svn_dirent_join(b->anchor,
+                             svn_dirent_skip_ancestor(b->anchor_abspath,
+                                                      local_abspath),
+                             scratch_pool);
+    }
+  else
+    path = local_abspath;
+
+  return svn_error_return(b->wrapped_receiver(b->wrapped_receiver_baton,
+                                              path, props, scratch_pool));
+}
 
 /* Note: this implementation is very similar to svn_client_propget3(). */
 svn_error_t *
@@ -1274,10 +1317,37 @@ svn_client_proplist3(const char *path_or
                                            changelists, pool));
 
       /* Fetch, recursively or not. */
-      if (depth >= svn_depth_files && (kind == svn_node_dir))
+      if (kind == svn_node_dir)
         {
           struct proplist_walk_baton wb;
 
+          if (! pristine)
+            {
+              struct recursive_proplist_receiver_baton rb;
+
+              rb.wc_ctx = ctx->wc_ctx;
+              rb.changelist_hash = changelist_hash;
+              rb.wrapped_receiver = receiver;
+              rb.wrapped_receiver_baton = receiver_baton;
+
+              if (strcmp(path_or_url, local_abspath) != 0)
+                {
+                  rb.anchor = path_or_url;
+                  rb.anchor_abspath = local_abspath;
+                }
+              else
+                {
+                  rb.anchor = NULL;
+                  rb.anchor_abspath = NULL;
+                }
+
+              return svn_error_return(svn_wc__prop_list_recursive(
+                                        ctx->wc_ctx, local_abspath, depth,
+                                        recursive_proplist_receiver, &rb,
+                                        ctx->cancel_func, ctx->cancel_baton,
+                                        pool));
+            }
+
           wb.wc_ctx = ctx->wc_ctx;
           wb.pristine = pristine;
           wb.changelist_hash = changelist_hash;

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/repos_diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/repos_diff.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/repos_diff.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_client/repos_diff.c Mon Feb  7 19:18:29 2011
@@ -419,7 +419,7 @@ get_empty_file(struct edit_baton *eb,
                const char **empty_file_path)
 {
   /* Create the file if it does not exist */
-  /* Note that we tried to use /dev/null in r17220, but
+  /* Note that we tried to use /dev/null in r857294, but
      that won't work on Windows: it's impossible to stat NUL */
   if (!eb->empty_file)
     SVN_ERR(svn_io_open_unique_file3(NULL, &(eb->empty_file), NULL,

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_delta/compose_delta.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_delta/compose_delta.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_delta/compose_delta.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_delta/compose_delta.c Mon Feb  7 19:18:29 2011
@@ -703,7 +703,7 @@ copy_source_ops(apr_size_t offset, apr_s
 
               /* ### FIXME: ptn_overlap is unsigned, so the if() condition
                  below is always true!  Either it should be '> 0', or the
-                 code block should be unconditional.  See also r2288. */
+                 code block should be unconditional.  See also r842362. */
               if (ptn_overlap >= 0)
                 {
                   /* Issue second subrange in the pattern. */

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/deprecated.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/deprecated.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/deprecated.c Mon Feb  7 19:18:29 2011
@@ -41,6 +41,103 @@
 
 
 /*** Code. ***/
+struct fns_wrapper_baton
+{
+  /* We put the old baton in front of this one, so that we can still use
+     this baton in place of the old.  This prevents us from having to 
+     implement simple wrappers around each member of diff_fns_t. */
+  void *old_baton;
+  const svn_diff_fns_t *vtable;
+};
+
+static svn_error_t *
+datasources_open(void *baton, apr_off_t *prefix_lines,
+                 const svn_diff_datasource_e *datasources,
+                 apr_size_t datasource_len)
+{
+  struct fns_wrapper_baton *fwb = baton;
+  int i;
+
+  /* Just iterate over the datasources, using the old singular version. */
+  for (i = 0; i < datasource_len; i++)
+    {
+      SVN_ERR(fwb->vtable->datasource_open(fwb->old_baton, datasources[i]));
+    }
+
+  /* Don't claim any prefix matches. */
+  *prefix_lines = 0;
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+datasource_close(void *baton,
+                 svn_diff_datasource_e datasource)
+{
+  struct fns_wrapper_baton *fwb = baton;
+  return fwb->vtable->datasource_close(fwb->old_baton, datasource);
+}
+
+static svn_error_t *
+datasource_get_next_token(apr_uint32_t *hash,
+                          void **token,
+                          void *baton,
+                          svn_diff_datasource_e datasource)
+{
+  struct fns_wrapper_baton *fwb = baton;
+  return fwb->vtable->datasource_get_next_token(hash, token, fwb->old_baton,
+                                                datasource);
+}
+
+static svn_error_t *
+token_compare(void *baton,
+              void *ltoken,
+              void *rtoken,
+              int *compare)
+{
+  struct fns_wrapper_baton *fwb = baton;
+  return fwb->vtable->token_compare(fwb->old_baton, ltoken, rtoken, compare);
+}
+
+static void
+token_discard(void *baton,
+              void *token)
+{
+  struct fns_wrapper_baton *fwb = baton;
+  return fwb->vtable->token_discard(fwb->old_baton, token);
+}
+
+static void
+token_discard_all(void *baton)
+{
+  struct fns_wrapper_baton *fwb = baton;
+  return fwb->vtable->token_discard_all(fwb->old_baton);
+}
+
+
+static void
+wrap_diff_fns(svn_diff_fns2_t **diff_fns2,
+              struct fns_wrapper_baton **baton2,
+              const svn_diff_fns_t *diff_fns,
+              void *baton,
+              apr_pool_t *result_pool)
+{
+  /* Initialize the return vtable. */
+  *diff_fns2 = apr_palloc(result_pool, sizeof(**diff_fns2));
+
+  (*diff_fns2)->datasources_open = datasources_open;
+  (*diff_fns2)->datasource_close = datasource_close;
+  (*diff_fns2)->datasource_get_next_token = datasource_get_next_token;
+  (*diff_fns2)->token_compare = token_compare;
+  (*diff_fns2)->token_discard = token_discard;
+  (*diff_fns2)->token_discard_all = token_discard_all;
+
+  /* Initialize the wrapper baton. */
+  *baton2 = apr_palloc(result_pool, sizeof (**baton2));
+  (*baton2)->old_baton = baton;
+  (*baton2)->vtable = diff_fns;
+}
+
 
 /*** From diff_file.c ***/
 svn_error_t *
@@ -142,3 +239,48 @@ svn_diff_file_output_merge(svn_stream_t 
                                      style,
                                      pool);
 }
+
+
+/*** From diff.c ***/
+svn_error_t *
+svn_diff_diff(svn_diff_t **diff,
+              void *diff_baton,
+              const svn_diff_fns_t *vtable,
+              apr_pool_t *pool)
+{
+  svn_diff_fns2_t *diff_fns2;
+  struct fns_wrapper_baton *fwb;
+
+  wrap_diff_fns(&diff_fns2, &fwb, vtable, diff_baton, pool);
+  return svn_diff_diff_2(diff, fwb, diff_fns2, pool);
+}
+
+
+/*** From diff3.c ***/
+svn_error_t *
+svn_diff_diff3(svn_diff_t **diff,
+               void *diff_baton,
+               const svn_diff_fns_t *vtable,
+               apr_pool_t *pool)
+{
+  svn_diff_fns2_t *diff_fns2;
+  struct fns_wrapper_baton *fwb;
+
+  wrap_diff_fns(&diff_fns2, &fwb, vtable, diff_baton, pool);
+  return svn_diff_diff3_2(diff, fwb, diff_fns2, pool);
+}
+
+
+/*** From diff4.c ***/
+svn_error_t *
+svn_diff_diff4(svn_diff_t **diff,
+               void *diff_baton,
+               const svn_diff_fns_t *vtable,
+               apr_pool_t *pool)
+{
+  svn_diff_fns2_t *diff_fns2;
+  struct fns_wrapper_baton *fwb;
+
+  wrap_diff_fns(&diff_fns2, &fwb, vtable, diff_baton, pool);
+  return svn_diff_diff4_2(diff, fwb, diff_fns2, pool);
+}

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.c Mon Feb  7 19:18:29 2011
@@ -98,16 +98,19 @@ svn_diff__diff(svn_diff__lcs_t *lcs,
 
 
 svn_error_t *
-svn_diff_diff(svn_diff_t **diff,
-              void *diff_baton,
-              const svn_diff_fns_t *vtable,
-              apr_pool_t *pool)
+svn_diff_diff_2(svn_diff_t **diff,
+                void *diff_baton,
+                const svn_diff_fns2_t *vtable,
+                apr_pool_t *pool)
 {
   svn_diff__tree_t *tree;
   svn_diff__position_t *position_list[2];
+  svn_diff_datasource_e datasource[] = {svn_diff_datasource_original,
+                                        svn_diff_datasource_modified};
   svn_diff__lcs_t *lcs;
   apr_pool_t *subpool;
   apr_pool_t *treepool;
+  apr_off_t prefix_lines = 0;
 
   *diff = NULL;
 
@@ -116,17 +119,21 @@ svn_diff_diff(svn_diff_t **diff,
 
   svn_diff__tree_create(&tree, treepool);
 
+  SVN_ERR(vtable->datasources_open(diff_baton, &prefix_lines, datasource, 2));
+
   /* Insert the data into the tree */
   SVN_ERR(svn_diff__get_tokens(&position_list[0],
                                tree,
                                diff_baton, vtable,
                                svn_diff_datasource_original,
+                               prefix_lines,
                                subpool));
 
   SVN_ERR(svn_diff__get_tokens(&position_list[1],
                                tree,
                                diff_baton, vtable,
                                svn_diff_datasource_modified,
+                               prefix_lines,
                                subpool));
 
   /* The cool part is that we don't need the tokens anymore.
@@ -139,7 +146,7 @@ svn_diff_diff(svn_diff_t **diff,
   svn_pool_destroy(treepool);
 
   /* Get the lcs */
-  lcs = svn_diff__lcs(position_list[0], position_list[1], subpool);
+  lcs = svn_diff__lcs(position_list[0], position_list[1], prefix_lines, subpool);
 
   /* Produce the diff */
   *diff = svn_diff__diff(lcs, 1, 1, TRUE, pool);

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.h?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.h (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff.h Mon Feb  7 19:18:29 2011
@@ -91,6 +91,7 @@ typedef enum svn_diff__normalize_state_t
 svn_diff__lcs_t *
 svn_diff__lcs(svn_diff__position_t *position_list1, /* pointer to tail (ring) */
               svn_diff__position_t *position_list2, /* pointer to tail (ring) */
+              apr_off_t prefix_lines,
               apr_pool_t *pool);
 
 
@@ -109,8 +110,9 @@ svn_error_t *
 svn_diff__get_tokens(svn_diff__position_t **position_list,
                      svn_diff__tree_t *tree,
                      void *diff_baton,
-                     const svn_diff_fns_t *vtable,
+                     const svn_diff_fns2_t *vtable,
                      svn_diff_datasource_e datasource,
+                     apr_off_t prefix_lines,
                      apr_pool_t *pool);
 
 

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff3.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff3.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff3.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff3.c Mon Feb  7 19:18:29 2011
@@ -173,7 +173,7 @@ svn_diff__resolve_conflict(svn_diff_t *h
         position[1]->next = start_position[1];
       }
 
-    *lcs_ref = svn_diff__lcs(position[0], position[1],
+    *lcs_ref = svn_diff__lcs(position[0], position[1], 0,
                              subpool);
 
     /* Fix up the EOF lcs element in case one of
@@ -244,17 +244,21 @@ svn_diff__resolve_conflict(svn_diff_t *h
 
 
 svn_error_t *
-svn_diff_diff3(svn_diff_t **diff,
-               void *diff_baton,
-               const svn_diff_fns_t *vtable,
-               apr_pool_t *pool)
+svn_diff_diff3_2(svn_diff_t **diff,
+                 void *diff_baton,
+                 const svn_diff_fns2_t *vtable,
+                 apr_pool_t *pool)
 {
   svn_diff__tree_t *tree;
   svn_diff__position_t *position_list[3];
+  svn_diff_datasource_e datasource[] = {svn_diff_datasource_original,
+                                        svn_diff_datasource_modified,
+                                        svn_diff_datasource_latest};
   svn_diff__lcs_t *lcs_om;
   svn_diff__lcs_t *lcs_ol;
   apr_pool_t *subpool;
   apr_pool_t *treepool;
+  apr_off_t prefix_lines = 0;
 
   *diff = NULL;
 
@@ -263,22 +267,27 @@ svn_diff_diff3(svn_diff_t **diff,
 
   svn_diff__tree_create(&tree, treepool);
 
+  SVN_ERR(vtable->datasources_open(diff_baton, &prefix_lines, datasource, 3));
+
   SVN_ERR(svn_diff__get_tokens(&position_list[0],
                                tree,
                                diff_baton, vtable,
                                svn_diff_datasource_original,
+                               prefix_lines,
                                subpool));
 
   SVN_ERR(svn_diff__get_tokens(&position_list[1],
                                tree,
                                diff_baton, vtable,
                                svn_diff_datasource_modified,
+                               prefix_lines,
                                subpool));
 
   SVN_ERR(svn_diff__get_tokens(&position_list[2],
                                tree,
                                diff_baton, vtable,
                                svn_diff_datasource_latest,
+                               prefix_lines,
                                subpool));
 
   /* Get rid of the tokens, we don't need them to calc the diff */
@@ -289,9 +298,9 @@ svn_diff_diff3(svn_diff_t **diff,
   svn_pool_destroy(treepool);
 
   /* Get the lcs for original-modified and original-latest */
-  lcs_om = svn_diff__lcs(position_list[0], position_list[1],
+  lcs_om = svn_diff__lcs(position_list[0], position_list[1], prefix_lines,
                          subpool);
-  lcs_ol = svn_diff__lcs(position_list[0], position_list[2],
+  lcs_ol = svn_diff__lcs(position_list[0], position_list[2], prefix_lines,
                          subpool);
 
   /* Produce a merged diff */
@@ -324,7 +333,7 @@ svn_diff_diff3(svn_diff_t **diff,
       }
     else
       {
-        sentinel_position[0].offset = 1;
+        sentinel_position[0].offset = prefix_lines + 1;
         sentinel_position[0].next = NULL;
         position_list[1] = &sentinel_position[0];
       }
@@ -338,7 +347,7 @@ svn_diff_diff3(svn_diff_t **diff,
       }
     else
       {
-        sentinel_position[1].offset = 1;
+        sentinel_position[1].offset = prefix_lines + 1;
         sentinel_position[1].next = NULL;
         position_list[2] = &sentinel_position[1];
       }

Modified: subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff4.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff4.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff4.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/libsvn_diff/diff4.c Mon Feb  7 19:18:29 2011
@@ -36,7 +36,7 @@
 /*
  * Variance adjustment rules:
  *
- * http://subversion.tigris.org/variance-adjusted-patching.html
+ * See notes/variance-adjusted-patching.html
  *
  * ###: Expand this comment to contain the full set of adjustment
  * ###: rules instead of pointing to a webpage.
@@ -166,13 +166,17 @@ adjust_diff(svn_diff_t *diff, svn_diff_t
 }
 
 svn_error_t *
-svn_diff_diff4(svn_diff_t **diff,
-               void *diff_baton,
-               const svn_diff_fns_t *vtable,
-               apr_pool_t *pool)
+svn_diff_diff4_2(svn_diff_t **diff,
+                 void *diff_baton,
+                 const svn_diff_fns2_t *vtable,
+                 apr_pool_t *pool)
 {
   svn_diff__tree_t *tree;
   svn_diff__position_t *position_list[4];
+  svn_diff_datasource_e datasource[] = {svn_diff_datasource_original,
+                                        svn_diff_datasource_modified,
+                                        svn_diff_datasource_latest,
+                                        svn_diff_datasource_ancestor};
   svn_diff__lcs_t *lcs_ol;
   svn_diff__lcs_t *lcs_adjust;
   svn_diff_t *diff_ol;
@@ -181,6 +185,7 @@ svn_diff_diff4(svn_diff_t **diff,
   apr_pool_t *subpool;
   apr_pool_t *subpool2;
   apr_pool_t *subpool3;
+  apr_off_t prefix_lines = 0;
 
   *diff = NULL;
 
@@ -190,28 +195,34 @@ svn_diff_diff4(svn_diff_t **diff,
 
   svn_diff__tree_create(&tree, subpool3);
 
+  SVN_ERR(vtable->datasources_open(diff_baton, &prefix_lines, datasource, 4));
+
   SVN_ERR(svn_diff__get_tokens(&position_list[0],
                                tree,
                                diff_baton, vtable,
                                svn_diff_datasource_original,
+                               prefix_lines,
                                subpool2));
 
   SVN_ERR(svn_diff__get_tokens(&position_list[1],
                                tree,
                                diff_baton, vtable,
                                svn_diff_datasource_modified,
+                               prefix_lines,
                                subpool));
 
   SVN_ERR(svn_diff__get_tokens(&position_list[2],
                                tree,
                                diff_baton, vtable,
                                svn_diff_datasource_latest,
+                               prefix_lines,
                                subpool));
 
   SVN_ERR(svn_diff__get_tokens(&position_list[3],
                                tree,
                                diff_baton, vtable,
                                svn_diff_datasource_ancestor,
+                               prefix_lines,
                                subpool2));
 
   /* Get rid of the tokens, we don't need them to calc the diff */
@@ -222,7 +233,8 @@ svn_diff_diff4(svn_diff_t **diff,
   svn_pool_clear(subpool3);
 
   /* Get the lcs for original - latest */
-  lcs_ol = svn_diff__lcs(position_list[0], position_list[2], subpool3);
+  lcs_ol = svn_diff__lcs(position_list[0], position_list[2], prefix_lines,
+                         subpool3);
   diff_ol = svn_diff__diff(lcs_ol, 1, 1, TRUE, pool);
 
   svn_pool_clear(subpool3);
@@ -243,7 +255,8 @@ svn_diff_diff4(svn_diff_t **diff,
   /* Get the lcs for common ancestor - original
    * Do reverse adjustements
    */
-  lcs_adjust = svn_diff__lcs(position_list[3], position_list[2], subpool3);
+  lcs_adjust = svn_diff__lcs(position_list[3], position_list[2], prefix_lines,
+                             subpool3);
   diff_adjust = svn_diff__diff(lcs_adjust, 1, 1, FALSE, subpool3);
   adjust_diff(diff_ol, diff_adjust);
 
@@ -252,7 +265,8 @@ svn_diff_diff4(svn_diff_t **diff,
   /* Get the lcs for modified - common ancestor
    * Do forward adjustments
    */
-  lcs_adjust = svn_diff__lcs(position_list[1], position_list[3], subpool3);
+  lcs_adjust = svn_diff__lcs(position_list[1], position_list[3], prefix_lines,
+                             subpool3);
   diff_adjust = svn_diff__diff(lcs_adjust, 1, 1, FALSE, subpool3);
   adjust_diff(diff_ol, diff_adjust);