Author: julianfoad
Date: Mon Jan 16 12:32:43 2012
New Revision: 1231975

URL: http://svn.apache.org/viewvc?rev=1231975&view=rev
Log:
On the 'showing-merge-info' branch: Catch up to trunk@1231929.

Modified:
    subversion/branches/showing-merge-info/   (props changed)
    subversion/branches/showing-merge-info/CHANGES
    subversion/branches/showing-merge-info/build.conf
    subversion/branches/showing-merge-info/configure.ac
    subversion/branches/showing-merge-info/notes/http-and-webdav/webdav-protocol
    subversion/branches/showing-merge-info/notes/knobs
    
subversion/branches/showing-merge-info/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
    
subversion/branches/showing-merge-info/subversion/bindings/swig/ruby/test/test_delta.rb
    
subversion/branches/showing-merge-info/subversion/include/private/svn_cache.h
    
subversion/branches/showing-merge-info/subversion/include/private/svn_client_private.h
    
subversion/branches/showing-merge-info/subversion/include/private/svn_error_private.h
    
subversion/branches/showing-merge-info/subversion/include/private/svn_fs_util.h
    
subversion/branches/showing-merge-info/subversion/include/private/svn_fspath.h
    
subversion/branches/showing-merge-info/subversion/include/private/svn_mutex.h
    
subversion/branches/showing-merge-info/subversion/include/private/svn_wc_private.h
    subversion/branches/showing-merge-info/subversion/include/svn_delta.h
    subversion/branches/showing-merge-info/subversion/include/svn_dirent_uri.h
    subversion/branches/showing-merge-info/subversion/include/svn_fs.h
    subversion/branches/showing-merge-info/subversion/include/svn_repos.h
    subversion/branches/showing-merge-info/subversion/include/svn_string.h
    subversion/branches/showing-merge-info/subversion/libsvn_client/client.h
    
subversion/branches/showing-merge-info/subversion/libsvn_client/commit_util.c
    subversion/branches/showing-merge-info/subversion/libsvn_client/copy.c
    subversion/branches/showing-merge-info/subversion/libsvn_client/diff.c
    subversion/branches/showing-merge-info/subversion/libsvn_client/export.c
    subversion/branches/showing-merge-info/subversion/libsvn_client/merge.c
    subversion/branches/showing-merge-info/subversion/libsvn_client/mergeinfo.c
    subversion/branches/showing-merge-info/subversion/libsvn_client/mergeinfo.h
    
subversion/branches/showing-merge-info/subversion/libsvn_client/prop_commands.c
    subversion/branches/showing-merge-info/subversion/libsvn_client/ra.c
    subversion/branches/showing-merge-info/subversion/libsvn_client/repos_diff.c
    subversion/branches/showing-merge-info/subversion/libsvn_client/switch.c
    subversion/branches/showing-merge-info/subversion/libsvn_delta/compat.c
    subversion/branches/showing-merge-info/subversion/libsvn_delta/delta.h
    subversion/branches/showing-merge-info/subversion/libsvn_delta/svndiff.c
    subversion/branches/showing-merge-info/subversion/libsvn_delta/text_delta.c
    subversion/branches/showing-merge-info/subversion/libsvn_delta/xdelta.c
    subversion/branches/showing-merge-info/subversion/libsvn_fs/fs-loader.c
    subversion/branches/showing-merge-info/subversion/libsvn_fs/fs-loader.h
    subversion/branches/showing-merge-info/subversion/libsvn_fs_base/bdb/env.c
    subversion/branches/showing-merge-info/subversion/libsvn_fs_base/fs.c
    subversion/branches/showing-merge-info/subversion/libsvn_fs_base/id.c
    subversion/branches/showing-merge-info/subversion/libsvn_fs_fs/caching.c
    subversion/branches/showing-merge-info/subversion/libsvn_fs_fs/fs.c
    subversion/branches/showing-merge-info/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/showing-merge-info/subversion/libsvn_fs_fs/fs_fs.h
    subversion/branches/showing-merge-info/subversion/libsvn_fs_fs/id.c
    
subversion/branches/showing-merge-info/subversion/libsvn_fs_fs/rep-cache-db.sql
    subversion/branches/showing-merge-info/subversion/libsvn_fs_fs/rep-cache.c
    subversion/branches/showing-merge-info/subversion/libsvn_fs_fs/tree.c
    subversion/branches/showing-merge-info/subversion/libsvn_ra_neon/log.c
    subversion/branches/showing-merge-info/subversion/libsvn_ra_neon/session.c
    subversion/branches/showing-merge-info/subversion/libsvn_ra_serf/log.c
    subversion/branches/showing-merge-info/subversion/libsvn_ra_serf/serf.c
    subversion/branches/showing-merge-info/subversion/libsvn_ra_serf/util.c
    subversion/branches/showing-merge-info/subversion/libsvn_ra_svn/cyrus_auth.c
    subversion/branches/showing-merge-info/subversion/libsvn_repos/commit.c
    subversion/branches/showing-merge-info/subversion/libsvn_repos/dump.c
    
subversion/branches/showing-merge-info/subversion/libsvn_repos/load-fs-vtable.c
    subversion/branches/showing-merge-info/subversion/libsvn_repos/repos.c
    subversion/branches/showing-merge-info/subversion/libsvn_repos/rev_hunt.c
    
subversion/branches/showing-merge-info/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/config.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/config_file.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/debug.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/dirent_uri.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/error.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/gpg_agent.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/io.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/opt.c
    
subversion/branches/showing-merge-info/subversion/libsvn_subr/simple_providers.c
    
subversion/branches/showing-merge-info/subversion/libsvn_subr/ssl_client_cert_pw_providers.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/stream.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/svn_mutex.c
    subversion/branches/showing-merge-info/subversion/libsvn_subr/svn_string.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/adm_ops.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/copy.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/diff_editor.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/externals.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/info.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/node.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/status.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/update_editor.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/util.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/wc-metadata.sql
    subversion/branches/showing-merge-info/subversion/libsvn_wc/wc.h
    subversion/branches/showing-merge-info/subversion/libsvn_wc/wc_db.c
    subversion/branches/showing-merge-info/subversion/libsvn_wc/wc_db.h
    subversion/branches/showing-merge-info/subversion/mod_dav_svn/dav_svn.h
    subversion/branches/showing-merge-info/subversion/mod_dav_svn/lock.c
    subversion/branches/showing-merge-info/subversion/mod_dav_svn/merge.c
    subversion/branches/showing-merge-info/subversion/mod_dav_svn/reports/log.c
    subversion/branches/showing-merge-info/subversion/mod_dav_svn/repos.c
    subversion/branches/showing-merge-info/subversion/mod_dav_svn/util.c
    subversion/branches/showing-merge-info/subversion/mod_dav_svn/version.c
    subversion/branches/showing-merge-info/subversion/po/de.po
    subversion/branches/showing-merge-info/subversion/po/fr.po
    subversion/branches/showing-merge-info/subversion/po/zh_CN.po
    subversion/branches/showing-merge-info/subversion/svn/cl.h
    subversion/branches/showing-merge-info/subversion/svn/log-cmd.c
    subversion/branches/showing-merge-info/subversion/svn/main.c
    subversion/branches/showing-merge-info/subversion/svn/merge-cmd.c
    subversion/branches/showing-merge-info/subversion/svn/mergeinfo-cmd.c
    subversion/branches/showing-merge-info/subversion/svn/propedit-cmd.c
    subversion/branches/showing-merge-info/subversion/svn/status.c
    subversion/branches/showing-merge-info/subversion/svn/util.c
    subversion/branches/showing-merge-info/subversion/svnadmin/main.c
    subversion/branches/showing-merge-info/subversion/svnrdump/dump_editor.c
    subversion/branches/showing-merge-info/subversion/svnsync/main.c
    subversion/branches/showing-merge-info/subversion/svnsync/sync.c
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/basic_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/commit_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/copy_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/diff_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/externals_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/input_validation_tests.py
    subversion/branches/showing-merge-info/subversion/tests/cmdline/log_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/merge_reintegrate_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/merge_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/mergeinfo_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/patch_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/special_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/stat_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/svnadmin_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/svnrdump_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/svnsync_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/svntest/main.py
    
subversion/branches/showing-merge-info/subversion/tests/cmdline/tree_conflict_tests.py
    
subversion/branches/showing-merge-info/subversion/tests/libsvn_client/client-test.c
    
subversion/branches/showing-merge-info/subversion/tests/libsvn_ra_local/ra-local-test.c
    
subversion/branches/showing-merge-info/subversion/tests/libsvn_subr/cache-test.c
    
subversion/branches/showing-merge-info/subversion/tests/libsvn_subr/config-test.c
    
subversion/branches/showing-merge-info/subversion/tests/libsvn_subr/config-test.cfg
    
subversion/branches/showing-merge-info/subversion/tests/libsvn_wc/op-depth-test.c
    
subversion/branches/showing-merge-info/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd
    
subversion/branches/showing-merge-info/tools/client-side/svn-ssl-fingerprints.sh
    subversion/branches/showing-merge-info/tools/client-side/svnmucc/svnmucc.c
    subversion/branches/showing-merge-info/tools/dev/po-merge.py
    subversion/branches/showing-merge-info/tools/dist/backport.pl
    subversion/branches/showing-merge-info/tools/examples/SvnCLBrowse
    
subversion/branches/showing-merge-info/tools/examples/get-location-segments.py
    subversion/branches/showing-merge-info/tools/server-side/svnpredumpfilter.py

Propchange: subversion/branches/showing-merge-info/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 16 12:32:43 2012
@@ -57,4 +57,4 @@
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
 /subversion/branches/uris-as-urls:1060426-1064427
-/subversion/trunk:1177607-1213634
+/subversion/trunk:1177607-1231929

Modified: subversion/branches/showing-merge-info/CHANGES
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/CHANGES?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/CHANGES (original)
+++ subversion/branches/showing-merge-info/CHANGES Mon Jan 16 12:32:43 2012
@@ -12,6 +12,10 @@ http://svn.apache.org/repos/asf/subversi
   - Minor new features and improvements:
     * new 'svnadmin load --revision' load filtering support (issue #3734)
     * new 'commit --include-externals' option (related to issues #1167, #3563)
+    * new 'svnadmin hotcopy --incremental' support for FSFS (issue #3815)
+    * reject some attempts to merge between unrelated branches (r1215273)
+    * support GPG agent for password storage on UNIX-like platforms (r1150783)
+    * new 'svnadmin lock' / 'svnadmin unlock' subcommands (issue #3942, #4092)
 
   - Client-side bugfixes:
     *

Modified: subversion/branches/showing-merge-info/build.conf
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/build.conf?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/build.conf (original)
+++ subversion/branches/showing-merge-info/build.conf Mon Jan 16 12:32:43 2012
@@ -367,7 +367,7 @@ description = Apache Httpd module to blo
 type = apache-mod
 path = tools/server-side/mod_dontdothat
 nonlibs = mod_dav_svn apr aprutil
-libs = libsvn_subr
+libs = libsvn_subr xml
 install = apache-mod
 msvc-libs = libhttpd.lib
 

Modified: subversion/branches/showing-merge-info/configure.ac
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/configure.ac?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/configure.ac (original)
+++ subversion/branches/showing-merge-info/configure.ac Mon Jan 16 12:32:43 2012
@@ -584,7 +584,7 @@ dnl GPG Agent -------------------
 AC_ARG_WITH(gpg_agent,
 AS_HELP_STRING([--without-gpg-agent], 
                [Disable support for GPG-Agent]),
-               [with_gpg_agent=no], [with_gpg_agent=yes])
+               [], [with_gpg_agent=yes])
 AC_MSG_CHECKING([whether to support GPG-Agent])
 if test "$svn_enable_shared" != "yes"; then
   AC_MSG_RESULT([no (shared library support is disabled)])
@@ -792,6 +792,20 @@ if test "$svn_lib_kwallet" = "yes"; then
             [Defined if KWallet support is enabled])
 fi
 
+dnl plaintext passwords -------------------
+AC_ARG_ENABLE(plaintext-password-storage,
+AS_HELP_STRING([--disable-plaintext-password-storage],
+               [Disable on-disk caching of plaintext passwords and passphrases.
+                (Leaving this functionality enabled will not force Subversion
+                to store passwords in plaintext, but does permit users to
+                explicitly allow that behavior via runtime configuration.)]),
+[
+   if test "$enableval" = "no"; then
+      AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
+      AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
+                [Defined if plaintext password/passphrase storage is disabled])
+   fi
+])
 
 dnl Build and install rules -------------------
 

Modified: 
subversion/branches/showing-merge-info/notes/http-and-webdav/webdav-protocol
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/notes/http-and-webdav/webdav-protocol?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/notes/http-and-webdav/webdav-protocol 
(original)
+++ 
subversion/branches/showing-merge-info/notes/http-and-webdav/webdav-protocol 
Mon Jan 16 12:32:43 2012
@@ -354,6 +354,7 @@ Request:
     <S:discover-changed-paths/> (optional)
     <S:strict-node-history/> (optional)
     <S:include-merged-revisions/> (optional)
+    <S:encode-binary-props> (optional)
     <S:revprop>REVPROP</S:revprop>... | <S:all-revprops/> | <S:no-revprops/>
       ('revprop', 'all-revprops', and 'no-revprops' are all optional)
     <S:path></S:path>... (optional)
@@ -369,6 +370,7 @@ Response:
       <S:date>2006-02-27T18:44:26.149336Z</S:date>
       <D:comment>Add doo-hickey</D:comment>
       <S:revprop name="REVPROP">value</S:revprop>... (optional)
+      <S:revprop name="REVPROP" encoding="base64">encoded value</S:revprop>... 
(optional)
       <S:has-children/> (optional)
       <S:added-path( copyfrom-path="PATH" 
copyfrom-rev="REVNUM">PATH</S:added-path>... (optional)
       <S:replaced-path( copyfrom-path="PATH" 
copyfrom-rev="REVNUM">PATH</S:replaced-path>... (optional)

Modified: subversion/branches/showing-merge-info/notes/knobs
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/notes/knobs?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/notes/knobs (original)
+++ subversion/branches/showing-merge-info/notes/knobs Mon Jan 16 12:32:43 2012
@@ -22,6 +22,8 @@ The SVN source code boasts a number of e
 processor enabled tweaks that are mainly aimed at developer support.
 If you introduce new ones, please document them here.
 
+Macros documented in the configure-generated ../subversion/svn_private_config.h
+file are not repeated here.
 
 2 Defines and Environment Variables
 ===================================
@@ -33,6 +35,8 @@ DEFAULT_HTTP_LIBRARY
 MAX_SECS_TO_LINGER
 SUFFIX_LINES_TO_KEEP
 SVN_FS_FS_DEFAULT_MAX_FILES_PER_DIR
+SVN_FS_FS_MAX_LINEAR_DELTIFICATION
+SVN_FS_FS_MAX_DELTIFICATION_WALK
 SVN_UNALIGNED_ACCESS_IS_OK
 
 2.2 Features
@@ -44,6 +48,8 @@ SVN_MERGE__ALLOW_ALL_FORWARD_MERGES_FROM
 SVN_USE_WIN32_CRASHHANDLER
 SVN_DAV_SEND_VTXN_NAME
 SVN_DISABLE_PREFIX_SUFFIX_SCANNING
+SVN_FS_FS_DELTIFY_DIRECTORIES
+SVN_FS_FS_DELTIFY_PROPS
 SVN_SQLITE_MIN_VERSION_NUMBER
 SVN_SQLITE_MIN_VERSION
 
@@ -125,7 +131,25 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2
   Range:     natural integers
   Suggested: 1, 2, 3, 4, 5, 7, 11
 
-3.6 SVN_UNALIGNED_ACCESS_IS_OK
+3.6 SVN_FS_FS_MAX_LINEAR_DELTIFICATION
+
+  Scope:     libsvn_fs_fs
+  Purpose:   max length + 1 of the linear deltification history
+             before skip-deltification kicks in
+  Default:   16
+  Range:     natural integers
+  Suggested: 2, 4, 8, 16, 32, 64
+
+3.7 SVN_FS_FS_MAX_DELTIFICATION_WALK
+
+  Scope:     libsvn_fs_fs
+  Purpose:   max skip deltification range. Change histories
+             longer than that will be restarted with a fulltext.
+  Default:   1023
+  Range:     natural integers
+  Suggested: 1, 2, 3, 4, 5, 7, 11
+
+3.8 SVN_UNALIGNED_ACCESS_IS_OK
 
   Scope:     (global)
   Purpose:   enable data accesss optimizations.
@@ -207,7 +231,27 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2
   Default:   not defined
   Suggested: not defined
 
-4.8 SVN_SQLITE_MIN_VERSION_NUMBER
+4.8 SVN_FS_FS_DELTIFY_DIRECTORIES
+
+  Scope:     libsvn_fs_fs
+  Purpose:   Define this symbol to enable directory deltification in FSFS.
+             When activated, previous versions of Subversion will still be
+             able to read from and write to this repository.
+  Range:     definedness
+  Default:   not defined
+  Suggested: defined
+
+4.9 SVN_FS_FS_DELTIFY_PROPS
+
+  Scope:     libsvn_fs_fs
+  Purpose:   Define this symbol to enable node property deltification in
+             FSFS.  When activated, previous versions of Subversion will
+             still be able to read from and write to this repository.
+  Range:     definedness
+  Default:   not defined
+  Suggested: not defined
+
+4.10 SVN_SQLITE_MIN_VERSION_NUMBER
 
   Scope:     libsvn_subr
   Purpose:   The minimum SQLite version to have run-time support for.
@@ -215,7 +259,7 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2
   Default:   SQLITE_VERSION_NUMBER (i.e., the compile-time-sqlite version)
   Suggested: not defined (to use default)
 
-4.9 SVN_SQLITE_MIN_VERSION
+4.11 SVN_SQLITE_MIN_VERSION
 
   Scope:     libsvn_subr
   Purpose:   See SVN_SQLITE_MIN_VERSION_NUMBER.  The two must be overridden

Modified: 
subversion/branches/showing-merge-info/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
 (original)
+++ 
subversion/branches/showing-merge-info/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
 Mon Jan 16 12:32:43 2012
@@ -541,7 +541,10 @@ public class ClientNotifyInformation ext
         failed_locked ("failed by lock"),
 
         /** Operation failed because the operation was forbidden */
-        failed_forbidden_by_server ("failed forbidden by server");
+        failed_forbidden_by_server ("failed forbidden by server"),
+
+        /** Operation skipped the path because it was conflicted */
+        skip_conflicted ("skipped conflicted path");
 
         /**
          * The description of the action.

Modified: 
subversion/branches/showing-merge-info/subversion/bindings/swig/ruby/test/test_delta.rb
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/bindings/swig/ruby/test/test_delta.rb?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/bindings/swig/ruby/test/test_delta.rb
 (original)
+++ 
subversion/branches/showing-merge-info/subversion/bindings/swig/ruby/test/test_delta.rb
 Mon Jan 16 12:32:43 2012
@@ -77,7 +77,7 @@ class SvnDeltaTest < Test::Unit::TestCas
       if composed_window.nil?
         composed_window = window
       else
-        composed_window = composed_window.compose(window)
+        composed_window = window.compose(composed_window)
       end
     end
 

Modified: 
subversion/branches/showing-merge-info/subversion/include/private/svn_cache.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/private/svn_cache.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/include/private/svn_cache.h 
(original)
+++ 
subversion/branches/showing-merge-info/subversion/include/private/svn_cache.h 
Mon Jan 16 12:32:43 2012
@@ -295,8 +295,9 @@ svn_cache__membuffer_cache_create(svn_me
  * 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.
+ * If @a thread_safe is true, and APR is compiled with threads, all
+ * accesses to the cache will be protected with a mutex, if the shared 
+ * @a memcache has also been created with thread_safe flag set.
  *
  * These caches do not support svn_cache__iter.
  */
@@ -307,6 +308,7 @@ svn_cache__create_membuffer_cache(svn_ca
                                   svn_cache__deserialize_func_t deserialize,
                                   apr_ssize_t klen,
                                   const char *prefix,
+                                  svn_boolean_t thread_safe,
                                   apr_pool_t *result_pool);
 
 /**

Modified: 
subversion/branches/showing-merge-info/subversion/include/private/svn_client_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/private/svn_client_private.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/include/private/svn_client_private.h
 (original)
+++ 
subversion/branches/showing-merge-info/subversion/include/private/svn_client_private.h
 Mon Jan 16 12:32:43 2012
@@ -59,6 +59,29 @@ svn_client__create_status(svn_client_sta
                           apr_pool_t *result_pool,
                           apr_pool_t *scratch_pool);
 
+/* Set *ANCESTOR_URL and *ANCESTOR_REVISION to the URL and revision,
+ * respectively, of the youngest common ancestor of the two locations
+ * PATH_OR_URL1@REV1 and PATH_OR_URL2@REV2.  Set *ANCESTOR_RELPATH to
+ * NULL and *ANCESTOR_REVISION to SVN_INVALID_REVNUM if they have no
+ * common ancestor.  This function assumes that PATH_OR_URL1@REV1 and
+ * PATH_OR_URL2@REV2 both refer to the same repository.
+ *
+ * Use the authentication baton cached in CTX to authenticate against
+ * the repository.
+ *
+ * See also svn_client__get_youngest_common_ancestor().
+ */
+svn_error_t *
+svn_client__youngest_common_ancestor(const char **ancestor_url,
+                                     svn_revnum_t *ancestor_rev,
+                                     const char *path_or_url1,
+                                     const svn_opt_revision_t *revision1,
+                                     const char *path_or_url2,
+                                     const svn_opt_revision_t *revision2,
+                                     svn_client_ctx_t *ctx,
+                                     apr_pool_t *result_pool,
+                                     apr_pool_t *scratch_pool);
+
 
 /** Resolve @a peg to a repository location and open an RA session to there.
  * Set @a *target_p to the location and @a *session_p to the new session,

Modified: 
subversion/branches/showing-merge-info/subversion/include/private/svn_error_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/private/svn_error_private.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/include/private/svn_error_private.h
 (original)
+++ 
subversion/branches/showing-merge-info/subversion/include/private/svn_error_private.h
 Mon Jan 16 12:32:43 2012
@@ -39,6 +39,14 @@ extern "C" {
 svn_boolean_t
 svn_error__is_tracing_link(svn_error_t *err);
 
+/**
+ * Converts a zlib error to an svn_error_t. zerr is the error code,
+ * function is the function name, message is an optional extra part
+ * of the error message and may be NULL.
+ */
+svn_error_t *
+svn_error__wrap_zlib(int zerr, const char *function, const char *message);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: 
subversion/branches/showing-merge-info/subversion/include/private/svn_fs_util.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/private/svn_fs_util.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/include/private/svn_fs_util.h 
(original)
+++ 
subversion/branches/showing-merge-info/subversion/include/private/svn_fs_util.h 
Mon Jan 16 12:32:43 2012
@@ -44,7 +44,11 @@ extern "C" {
    ignored) we want any paths that are physically stored in the
    underlying database to look consistent.  Specifically, absolute
    filesystem paths should begin with '/', and all redundant and trailing '/'
-   characters be removed.  */
+   characters be removed.
+
+   This is similar to svn_fspath__canonicalize() but doesn't treat "."
+   segments as special.
+*/
 const char *
 svn_fs__canonicalize_abspath(const char *path, apr_pool_t *pool);
 

Modified: 
subversion/branches/showing-merge-info/subversion/include/private/svn_fspath.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/private/svn_fspath.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/include/private/svn_fspath.h 
(original)
+++ 
subversion/branches/showing-merge-info/subversion/include/private/svn_fspath.h 
Mon Jan 16 12:32:43 2012
@@ -55,6 +55,9 @@ svn_fspath__is_canonical(const char *fsp
  * The returned fspath may be statically allocated or allocated from
  * @a pool.
  *
+ * This is similar to svn_fs__canonicalize_abspath() but also treats "."
+ * segments as special.
+ *
  * @since New in 1.7.
  */
 const char *

Modified: 
subversion/branches/showing-merge-info/subversion/include/private/svn_mutex.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/private/svn_mutex.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/include/private/svn_mutex.h 
(original)
+++ 
subversion/branches/showing-merge-info/subversion/include/private/svn_mutex.h 
Mon Jan 16 12:32:43 2012
@@ -55,7 +55,7 @@ typedef void svn_mutex__t;
 
 #endif
 
-/** Initialize the @a *mutex. If @a enable_mutex is TRUE, the mutex will
+/** Initialize the @a *mutex. If @a mutex_required is TRUE, the mutex will
  * actually be created with a lifetime defined by @a result_pool. Otherwise,
  * the pointer will be set to @c NULL and @ref svn_mutex__lock as well as
  * @ref svn_mutex__unlock will be no-ops.
@@ -64,7 +64,7 @@ typedef void svn_mutex__t;
  */
 svn_error_t *
 svn_mutex__init(svn_mutex__t **mutex,
-                svn_boolean_t enable_mutex,
+                svn_boolean_t mutex_required,
                 apr_pool_t *result_pool);
 
 /** Acquire the @a mutex, if that has been enabled in @ref svn_mutex__init.

Modified: 
subversion/branches/showing-merge-info/subversion/include/private/svn_wc_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/private/svn_wc_private.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/include/private/svn_wc_private.h
 (original)
+++ 
subversion/branches/showing-merge-info/subversion/include/private/svn_wc_private.h
 Mon Jan 16 12:32:43 2012
@@ -479,6 +479,12 @@ svn_wc__node_get_url(const char **url,
  * If not NULL, sets @a revision, @a repos_relpath, @a repos_root_url and
  * @a repos_uuid to the original (if a copy) or their current values.
  *
+ * If @a copy_root_abspath is not NULL, and @a *is_copy indicates that the
+ * node was copied, set @a *copy_root_abspath to the local absolute path of
+ * the root of the copied subtree containing the node. If the copied node is
+ * a root by itself, @a *copy_root_abspath will match @a local_abspath (but
+ * won't necessarily point to the same string in memory).
+ *
  * If @a scan_deleted is TRUE, determine the origin of the deleted node. If
  * @a scan_deleted is FALSE, return NULL, SVN_INVALID_REVNUM or FALSE for
  * deleted nodes.
@@ -491,6 +497,7 @@ svn_wc__node_get_origin(svn_boolean_t *i
                         const char **repos_relpath,
                         const char **repos_root_url,
                         const char **repos_uuid,
+                        const char **copy_root_abspath,
                         svn_wc_context_t *wc_ctx,
                         const char *local_abspath,
                         svn_boolean_t scan_deleted,

Modified: subversion/branches/showing-merge-info/subversion/include/svn_delta.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/svn_delta.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/subversion/include/svn_delta.h 
(original)
+++ subversion/branches/showing-merge-info/subversion/include/svn_delta.h Mon 
Jan 16 12:32:43 2012
@@ -916,8 +916,9 @@ typedef struct svn_delta_editor_t
 
   /** In the directory represented by @a parent_baton, indicate that
    * @a path is present as a subdirectory in the edit source, but
-   * cannot be conveyed to the edit consumer (perhaps because of
-   * authorization restrictions).
+   * cannot be conveyed to the edit consumer.  Currently, this would
+   * only occur because of authorization restrictions, but may change
+   * in the future.
    *
    * Any temporary allocations may be performed in @a scratch_pool.
    */
@@ -1040,8 +1041,9 @@ typedef struct svn_delta_editor_t
 
   /** In the directory represented by @a parent_baton, indicate that
    * @a path is present as a file in the edit source, but cannot be
-   * conveyed to the edit consumer (perhaps because of authorization
-   * restrictions).
+   * cannot be conveyed to the edit consumer.  Currently, this would
+   * only occur because of authorization restrictions, but may change
+   * in the future.
    *
    * Any temporary allocations may be performed in @a scratch_pool.
    */
@@ -1095,6 +1097,7 @@ typedef svn_error_t *(*svn_delta_fetch_p
   apr_hash_t **props,
   void *baton,
   const char *path,
+  svn_revnum_t base_revision,
   apr_pool_t *result_pool,
   apr_pool_t *scratch_pool
   );
@@ -1108,6 +1111,7 @@ typedef svn_error_t *(*svn_delta_fetch_k
   svn_kind_t *kind,
   void *baton,
   const char *path,
+  svn_revnum_t base_revision,
   apr_pool_t *scratch_pool
   );
 
@@ -1121,6 +1125,7 @@ typedef svn_error_t *(*svn_delta_fetch_b
   const char **filename,
   void *baton,
   const char *path,
+  svn_revnum_t base_revision,
   apr_pool_t *result_pool,
   apr_pool_t *scratch_pool
   );
@@ -1134,11 +1139,9 @@ typedef svn_error_t *(*svn_delta_fetch_b
 typedef struct svn_delta_shim_callbacks_t
 {
   svn_delta_fetch_props_func_t fetch_props_func;
-  void *fetch_props_baton;
   svn_delta_fetch_kind_func_t fetch_kind_func;
-  void *fetch_kind_baton;
   svn_delta_fetch_base_func_t fetch_base_func;
-  void *fetch_base_baton;
+  void *fetch_baton;
 } svn_delta_shim_callbacks_t;
 
 /** Return a collection of default shim functions in @a result_pool.

Modified: 
subversion/branches/showing-merge-info/subversion/include/svn_dirent_uri.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/svn_dirent_uri.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/subversion/include/svn_dirent_uri.h 
(original)
+++ subversion/branches/showing-merge-info/subversion/include/svn_dirent_uri.h 
Mon Jan 16 12:32:43 2012
@@ -28,7 +28,7 @@
  *  - a dirent is a path on (local) disc or a UNC path (Windows) in
  *    either relative or absolute format.
  *    Examples:
- *       "/foo/bar", "X:/temp", "//server/share", "A:/" (Windows only)
+ *       "/foo/bar", "X:/temp", "//server/share", "A:/" (Windows only), ""
  *    But not:
  *       "http://server";
  *
@@ -39,13 +39,13 @@
  *       "http://server";, "file:///path/to/repos",
  *       "svn+ssh://user@host:123/My%20Stuff/file.doc"
  *    But not:
- *       "file", "dir/file", "A:/dir", "/My%20Stuff/file.doc"
+ *       "file", "dir/file", "A:/dir", "/My%20Stuff/file.doc", ""
  *
  *  - a relative path (relpath) is an unrooted path that can be joined
  *    to any other relative path, uri or dirent. A relative path is
  *    never rooted/prefixed by a '/'.
  *    Examples:
- *       "file", "dir/file", "dir/subdir/../file"
+ *       "file", "dir/file", "dir/subdir/../file", ""
  *    But not:
  *       "/file", "http://server/file";
  *
@@ -54,6 +54,8 @@
  * the path string if it's a dirent or a URI, it's up to the API user to
  * make this choice. See also issue #2028.
  *
+ * All incoming and outgoing paths are non-NULL unless otherwise documented.
+ *
  * All of these functions expect paths passed into them to be in canonical
  * form, except:
  *

Modified: subversion/branches/showing-merge-info/subversion/include/svn_fs.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/svn_fs.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/subversion/include/svn_fs.h 
(original)
+++ subversion/branches/showing-merge-info/subversion/include/svn_fs.h Mon Jan 
16 12:32:43 2012
@@ -309,8 +309,31 @@ svn_fs_delete_fs(const char *path,
  * means deleting copied, unused logfiles for a Berkeley DB source
  * filesystem.
  *
+ * If @a incremental is TRUE, make an effort to not re-copy information
+ * already present in the destination. If incremental hotcopy is not
+ * implemented, raise SVN_ERR_UNSUPPORTED_FEATURE.
+ *
+ * Use @a scratch_pool for temporary allocations.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_hotcopy2(const char *src_path,
+                const char *dest_path,
+                svn_boolean_t clean,
+                svn_boolean_t incremental,
+                svn_cancel_func_t cancel_func,
+                void *cancel_baton,
+                apr_pool_t *scratch_pool);
+
+/**
+ * Like svn_fs_hotcopy2(), but without the @a incremental parameter
+ * and without cancellation support.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.1.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_fs_hotcopy(const char *src_path,
                const char *dest_path,

Modified: subversion/branches/showing-merge-info/subversion/include/svn_repos.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/svn_repos.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/subversion/include/svn_repos.h 
(original)
+++ subversion/branches/showing-merge-info/subversion/include/svn_repos.h Mon 
Jan 16 12:32:43 2012
@@ -516,8 +516,30 @@ svn_repos_fs(svn_repos_t *repos);
  * source filesystem as part of the copy operation; currently, this
  * means deleting copied, unused logfiles for a Berkeley DB source
  * repository.
+ *
+ * If @a incremental is TRUE, make an effort to not re-copy information
+ * already present in the destination. If incremental hotcopy is not
+ * implemented by the filesystem backend, raise SVN_ERR_UNSUPPORTED_FEATURE.
+ *
+ * @since New in 1.8.
  */
 svn_error_t *
+svn_repos_hotcopy2(const char *src_path,
+                   const char *dst_path,
+                   svn_boolean_t clean_logs,
+                   svn_boolean_t incremental,
+                   svn_cancel_func_t cancel_func,
+                   void *cancel_baton,
+                   apr_pool_t *pool);
+
+/** 
+ * Like svn_repos_hotcopy2(), but without the @a incremental parameter
+ * and without cancellation support.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_repos_hotcopy(const char *src_path,
                   const char *dst_path,
                   svn_boolean_t clean_logs,

Modified: subversion/branches/showing-merge-info/subversion/include/svn_string.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/include/svn_string.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/subversion/include/svn_string.h 
(original)
+++ subversion/branches/showing-merge-info/subversion/include/svn_string.h Mon 
Jan 16 12:32:43 2012
@@ -383,6 +383,20 @@ svn_boolean_t
 svn_cstring_match_list(const char *str, const apr_array_header_t *list);
 
 /**
+ * Get the next token from @a *str interpreting any char from @a sep as a
+ * token separator.  Separators at the beginning of @a str will be skipped.
+ * Returns a pointer to the beginning of the first token in @a *str or NULL
+ * if no token is left.  Modifies @a str such that the next call will return
+ * the next token.
+ *
+ * Note that the content of @a *str may be modified by this function.
+ *
+ * @since New in 1.8.
+ */
+char *
+svn_cstring_tokenize(const char *sep, char **str);
+
+/**
  * Return the number of line breaks in @a msg, allowing any kind of newline
  * termination (CR, LF, CRLF, or LFCR), even inconsistent.
  *

Modified: 
subversion/branches/showing-merge-info/subversion/libsvn_client/client.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/libsvn_client/client.h?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/subversion/libsvn_client/client.h 
(original)
+++ subversion/branches/showing-merge-info/subversion/libsvn_client/client.h 
Mon Jan 16 12:32:43 2012
@@ -148,7 +148,9 @@ svn_client__repos_locations(const char *
  *
  * Set *OP_URL to the URL that the object PEG_URL@PEG_REVNUM had in
  * revision OP_REVNUM.
- * RA_SESSION is required. */
+ *
+ * RA_SESSION is an open RA session to the correct repository; it may be
+ * temporarily reparented inside this function. */
 svn_error_t *
 svn_client__repos_location(const char **start_url,
                            svn_ra_session_t *ra_session,
@@ -161,8 +163,8 @@ svn_client__repos_location(const char **
 
 
 /* Set *SEGMENTS to an array of svn_location_segment_t * objects, each
-   representing a reposition location segment for the history of PATH
-   (which is relative to RA_SESSION's session URL) in PEG_REVISION
+   representing a reposition location segment for the history of URL
+   in PEG_REVISION
    between END_REVISION and START_REVISION, ordered from oldest
    segment to youngest.  *SEGMENTS may be empty but it will never
    be NULL.
@@ -171,13 +173,16 @@ svn_client__repos_location(const char **
    svn_ra_get_location_segments() interface, which see for the rules
    governing PEG_REVISION, START_REVISION, and END_REVISION.
 
+   RA_SESSION is an RA session open to the repository of URL; it may be
+   temporarily reparented within this function.
+
    CTX is the client context baton.
 
    Use POOL for all allocations.  */
 svn_error_t *
 svn_client__repos_location_segments(apr_array_header_t **segments,
                                     svn_ra_session_t *ra_session,
-                                    const char *path,
+                                    const char *url,
                                     svn_revnum_t peg_revision,
                                     svn_revnum_t start_revision,
                                     svn_revnum_t end_revision,
@@ -185,19 +190,30 @@ svn_client__repos_location_segments(apr_
                                     apr_pool_t *pool);
 
 
-/* Set *ANCESTOR_RELPATH and *ANCESTOR_REVISION to the youngest common
-   ancestor path (a path relative to the root of the repository) and
-   revision, respectively, of the two locations identified as
-   PATH_OR_URL1@REV1 and PATH_OR_URL2@REV2.  Use the authentication
-   baton cached in CTX to authenticate against the repository.
-   This function assumes that PATH_OR_URL1@REV1 and PATH_OR_URL2@REV2
-   both refer to the same repository.  Use POOL for all allocations. */
+/* Find the common ancestor of two locations in a repository.
+   Ancestry is determined by the 'copy-from' relationship and the normal
+   successor relationship.
+
+   Set *ANCESTOR_RELPATH, *ANCESTOR_URL, and *ANCESTOR_REVISION to the
+   path (relative to the root of the repository, with no leading '/'),
+   URL, and revision, respectively, of the youngest common ancestor of
+   the two locations URL1@REV1 and URL2@REV2.  Set *ANCESTOR_RELPATH and
+   *ANCESTOR_URL to NULL and *ANCESTOR_REVISION to SVN_INVALID_REVNUM if
+   they have no common ancestor.  This function assumes that URL1@REV1
+   and URL2@REV2 both refer to the same repository.
+
+   Use the authentication baton cached in CTX to authenticate against
+   the repository.  Use POOL for all allocations.
+
+   See also svn_client__youngest_common_ancestor().
+*/
 svn_error_t *
 svn_client__get_youngest_common_ancestor(const char **ancestor_relpath,
+                                         const char **ancestor_url,
                                          svn_revnum_t *ancestor_revision,
-                                         const char *path_or_url1,
+                                         const char *url1,
                                          svn_revnum_t rev1,
-                                         const char *path_or_url2,
+                                         const char *url2,
                                          svn_revnum_t rev2,
                                          svn_client_ctx_t *ctx,
                                          apr_pool_t *pool);
@@ -249,11 +265,10 @@ svn_client__ra_session_from_peg(svn_ra_s
                                 apr_pool_t *pool);
 
 /* Ensure that RA_SESSION's session URL matches SESSION_URL,
-   reparenting that session if necessary.  If reparenting occurs,
-   store the previous session URL in *OLD_SESSION_URL (so that if the
+   reparenting that session if necessary.
+   Store the previous session URL in *OLD_SESSION_URL (so that if the
    reparenting is meant to be temporary, the caller can reparent the
-   session back to where it was); otherwise set *OLD_SESSION_URL to
-   NULL.
+   session back to where it was).
 
    If SESSION_URL is NULL, treat this as a magic value meaning "point
    the RA session to the root of the repository".
@@ -268,8 +283,7 @@ svn_client__ra_session_from_peg(svn_ra_s
 
        [...]
 
-       if (old_session_url)
-         SVN_ERR(svn_ra_reparent(ra_session, old_session_url, pool));
+       SVN_ERR(svn_ra_reparent(ra_session, old_session_url, pool));
 */
 svn_error_t *
 svn_client__ensure_ra_session_url(const char **old_session_url,

Modified: 
subversion/branches/showing-merge-info/subversion/libsvn_client/commit_util.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/libsvn_client/commit_util.c?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- 
subversion/branches/showing-merge-info/subversion/libsvn_client/commit_util.c 
(original)
+++ 
subversion/branches/showing-merge-info/subversion/libsvn_client/commit_util.c 
Mon Jan 16 12:32:43 2012
@@ -627,7 +627,7 @@ harvest_committables(svn_wc_context_t *w
 
           /* Determine from what parent we would be the deleted child */
           SVN_ERR(svn_wc__node_get_origin(NULL, &revision, &repos_relpath,
-                                          NULL, NULL, wc_ctx,
+                                          NULL, NULL, NULL, wc_ctx,
                                           svn_dirent_dirname(local_abspath,
                                                              scratch_pool),
                                           FALSE, scratch_pool, scratch_pool));
@@ -684,7 +684,7 @@ harvest_committables(svn_wc_context_t *w
 
           SVN_ERR(svn_wc__node_get_origin(NULL, &cf_rev,
                                       &cf_relpath, NULL,
-                                      NULL,
+                                      NULL, NULL,
                                       wc_ctx, local_abspath, FALSE,
                                       scratch_pool, scratch_pool));
 
@@ -1032,13 +1032,13 @@ svn_client__harvest_committables(svn_cli
    * Since we don't know what's included in the commit until we've
    * harvested all the targets, we can't reliably check this as we
    * go.  So in `danglers', we record named targets whose parents
-   * are unversioned, then after harvesting the total commit group, we
-   * check to make sure those parents are included.
+   * do not yet exist in the repository. Then after harvesting the total
+   * commit group, we check to make sure those parents are included.
    *
-   * Each key of danglers is an unversioned parent.  The (const char *)
-   * value is one of that parent's children which is named as part of
-   * the commit; the child is included only to make a better error
-   * message.
+   * Each key of danglers is a parent which does not exist in the
+   * repository.  The (const char *) value is one of that parent's
+   * children which is named as part of the commit; the child is
+   * included only to make a better error message.
    *
    * (The reason we don't bother to check unnamed -- i.e, implicit --
    * targets is that they can only join the commit if their parents
@@ -1122,6 +1122,22 @@ svn_client__harvest_committables(svn_cli
 
           if (is_added)
             {
+              svn_boolean_t is_copy;
+              const char *copy_root_abspath;
+
+              /* Copies are always committed recursively as long as the
+               * copy root is in the commit target list.
+               * So for nodes copied along with a parent, the copy root path
+               * is the dangling parent. See issue #4059. */
+              SVN_ERR(svn_wc__node_get_origin(&is_copy,
+                                              NULL, NULL, NULL, NULL,
+                                              &copy_root_abspath,
+                                              ctx->wc_ctx,
+                                              target_abspath,
+                                              FALSE, iterpool, iterpool));
+              if (is_copy && strcmp(copy_root_abspath, target_abspath) != 0)
+                parent_abspath = copy_root_abspath;
+
               /* Copy the parent and target into pool; iterpool
                  lasts only for this loop iteration, and we check
                  danglers after the loop is over. */
@@ -1170,31 +1186,31 @@ svn_client__harvest_committables(svn_cli
 
       svn_pool_clear(iterpool);
 
-       if (! look_up_committable(*committables, dangling_parent, iterpool))
-         {
-           const char *dangling_child = svn__apr_hash_index_val(hi);
-
-           if (ctx->notify_func2 != NULL)
-             {
-               svn_wc_notify_t *notify;
-
-               notify = svn_wc_create_notify(dangling_child,
-                                             svn_wc_notify_failed_no_parent,
-                                             scratch_pool);
-
-               ctx->notify_func2(ctx->notify_baton2, notify, iterpool);
-             }
-
-           return svn_error_createf(
-                            SVN_ERR_ILLEGAL_TARGET, NULL,
-                            _("'%s' is not under version control "
-                              "and is not part of the commit, "
-                              "yet its child '%s' is part of the commit"),
-                            /* Probably one or both of these is an entry, but
-                               safest to local_stylize just in case. */
-                            svn_dirent_local_style(dangling_parent, iterpool),
-                            svn_dirent_local_style(dangling_child, iterpool));
-         }
+      if (! look_up_committable(*committables, dangling_parent, iterpool))
+        {
+          const char *dangling_child = svn__apr_hash_index_val(hi);
+
+          if (ctx->notify_func2 != NULL)
+            {
+              svn_wc_notify_t *notify;
+
+              notify = svn_wc_create_notify(dangling_child,
+                                            svn_wc_notify_failed_no_parent,
+                                            scratch_pool);
+
+              ctx->notify_func2(ctx->notify_baton2, notify, iterpool);
+            }
+
+          return svn_error_createf(
+                           SVN_ERR_ILLEGAL_TARGET, NULL,
+                           _("'%s' is not known to exist in the repository "
+                             "and is not part of the commit, "
+                             "yet its child '%s' is part of the commit"),
+                           /* Probably one or both of these is an entry, but
+                              safest to local_stylize just in case. */
+                           svn_dirent_local_style(dangling_parent, iterpool),
+                           svn_dirent_local_style(dangling_child, iterpool));
+        }
     }
 
   svn_pool_destroy(iterpool);

Modified: subversion/branches/showing-merge-info/subversion/libsvn_client/copy.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/libsvn_client/copy.c?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/subversion/libsvn_client/copy.c 
(original)
+++ subversion/branches/showing-merge-info/subversion/libsvn_client/copy.c Mon 
Jan 16 12:32:43 2012
@@ -98,7 +98,7 @@ calculate_target_mergeinfo(svn_ra_sessio
 
       SVN_ERR(svn_wc__node_get_origin(NULL, &src_revnum,
                                       &repos_relpath, &repos_root_url,
-                                      NULL,
+                                      NULL, NULL,
                                       ctx->wc_ctx, local_abspath, FALSE,
                                       pool, pool));
 
@@ -113,20 +113,11 @@ calculate_target_mergeinfo(svn_ra_sessio
 
   if (! locally_added)
     {
-      /* Fetch any existing (explicit) mergeinfo.  We'll temporarily
-         reparent to the target URL here, just to keep the code simple.
-         We could, as an alternative, first see if the target URL was a
-         child of the session URL and use the relative "remainder",
-         falling back to this reparenting as necessary.  */
-      const char *old_session_url = NULL;
-      SVN_ERR(svn_client__ensure_ra_session_url(&old_session_url,
-                                                ra_session, src_url, pool));
+      /* Fetch any existing (explicit) mergeinfo. */
       SVN_ERR(svn_client__get_repos_mergeinfo(&src_mergeinfo, ra_session,
-                                              "", src_revnum,
+                                              src_url, src_revnum,
                                               svn_mergeinfo_inherited,
                                               TRUE, pool));
-      if (old_session_url)
-        SVN_ERR(svn_ra_reparent(ra_session, old_session_url, pool));
     }
 
   *target_mergeinfo = src_mergeinfo;
@@ -981,7 +972,7 @@ repos_to_repos_copy(const apr_array_head
         }
       else
         {
-          const char *old_url = NULL;
+          const char *old_url;
 
           src_rel = NULL;
           SVN_ERR_ASSERT(! is_move);
@@ -2127,7 +2118,7 @@ try_copy(const apr_array_header_t *sourc
                   SVN_ERR(svn_wc__node_get_origin(NULL, &copyfrom_rev,
                                                   &copyfrom_repos_relpath,
                                                   &copyfrom_repos_root_url,
-                                                  NULL,
+                                                  NULL, NULL,
                                                   ctx->wc_ctx,
                                                   pair->src_abspath_or_url,
                                                   TRUE, iterpool, iterpool));

Modified: subversion/branches/showing-merge-info/subversion/libsvn_client/diff.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/libsvn_client/diff.c?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/subversion/libsvn_client/diff.c 
(original)
+++ subversion/branches/showing-merge-info/subversion/libsvn_client/diff.c Mon 
Jan 16 12:32:43 2012
@@ -1607,7 +1607,7 @@ diff_prepare_repos_repos(const char **ur
                                  *url1, *rev1, *rev2);
       else
         return svn_error_createf(SVN_ERR_FS_NOT_FOUND, NULL,
-                                 _("Diff targets '%s and '%s' were not found "
+                                 _("Diff targets '%s' and '%s' were not found "
                                    "in the repository at revisions '%ld' and "
                                    "'%ld'"),
                                  *url1, *url2, *rev1, *rev2);

Modified: 
subversion/branches/showing-merge-info/subversion/libsvn_client/export.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/showing-merge-info/subversion/libsvn_client/export.c?rev=1231975&r1=1231974&r2=1231975&view=diff
==============================================================================
--- subversion/branches/showing-merge-info/subversion/libsvn_client/export.c 
(original)
+++ subversion/branches/showing-merge-info/subversion/libsvn_client/export.c 
Mon Jan 16 12:32:43 2012
@@ -402,7 +402,7 @@ copy_versioned_files(const char *from_ab
       const char *repos_relpath;
 
       SVN_ERR(svn_wc__node_get_origin(&is_added, NULL, &repos_relpath,
-                                      NULL, NULL,
+                                      NULL, NULL, NULL,
                                       ctx->wc_ctx, from_abspath, FALSE,
                                       pool, pool));
 
@@ -1020,6 +1020,55 @@ close_file(void *file_baton,
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+fetch_kind_func(svn_kind_t *kind,
+                void *baton,
+                const char *path,
+                svn_revnum_t base_revision,
+                apr_pool_t *scratch_pool)
+{
+  /* We know the root of the edit is a directory. */
+  if (path[0] == '\0')
+    *kind = svn_kind_dir;
+
+  /* ### TODO: We could possibly fetch the kind of the object in question
+         from the server with a second ra_session, but right now this
+         seems to work. */
+  else
+    *kind = svn_kind_unknown;
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+fetch_props_func(apr_hash_t **props,
+                 void *baton,
+                 const char *path,
+                 svn_revnum_t base_revision,
+                 apr_pool_t *result_pool,
+                 apr_pool_t *scratch_pool)
+{
+  /* Always use empty props, since the node won't have pre-existing props
+     (This is an export, remember?) */
+  *props = apr_hash_make(result_pool);
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+fetch_base_func(const char **filename,
+                void *baton,
+                const char *path,
+                svn_revnum_t base_revision,
+                apr_pool_t *result_pool,
+                apr_pool_t *scratch_pool)
+{
+  /* An export always gets text against the empty stream (i.e, full texts). */
+  *filename = NULL;
+
+  return SVN_NO_ERROR;
+}
+
 
 
 /*** Public Interfaces ***/
@@ -1180,6 +1229,11 @@ svn_client_export5(svn_revnum_t *result_
                                                     &edit_baton,
                                                     pool));
 
+          shim_callbacks->fetch_kind_func = fetch_kind_func;
+          shim_callbacks->fetch_props_func = fetch_props_func;
+          shim_callbacks->fetch_base_func = fetch_base_func;
+          shim_callbacks->fetch_baton = eb;
+
           SVN_ERR(svn_editor__insert_shims(&export_editor, &edit_baton,
                                            export_editor, edit_baton,
                                            shim_callbacks, pool, pool));


Reply via email to