subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From phi...@apache.org
Subject svn commit: r1243461 [1/5] - in /subversion/branches/multi-layer-moves: ./ build/ notes/api-errata/1.7/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/swig/ subversion/bindings/swig/i...
Date Mon, 13 Feb 2012 10:10:47 GMT
Author: philip
Date: Mon Feb 13 10:10:43 2012
New Revision: 1243461

URL: http://svn.apache.org/viewvc?rev=1243461&view=rev
Log:
Sync the multi-layer-moves branch with trunk@1243459.

Added:
    subversion/branches/multi-layer-moves/tools/dev/mergegraph/
      - copied from r1243459, subversion/trunk/tools/dev/mergegraph/
    subversion/branches/multi-layer-moves/tools/examples/info.rb
      - copied unchanged from r1243459, subversion/trunk/tools/examples/info.rb
Modified:
    subversion/branches/multi-layer-moves/   (props changed)
    subversion/branches/multi-layer-moves/CHANGES
    subversion/branches/multi-layer-moves/build/run_tests.py
    subversion/branches/multi-layer-moves/notes/api-errata/1.7/ra001.txt
    subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.cpp
    subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.h
    subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
    subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
    subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
    subversion/branches/multi-layer-moves/subversion/bindings/swig/core.i
    subversion/branches/multi-layer-moves/subversion/bindings/swig/include/svn_containers.swg
    subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
    subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
    subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/native/t/3client.t
    subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
    subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
    subversion/branches/multi-layer-moves/subversion/bindings/swig/python/tests/client.py
    subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
    subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h
    subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/svn/core.rb
    subversion/branches/multi-layer-moves/subversion/include/private/svn_auth_private.h
    subversion/branches/multi-layer-moves/subversion/include/private/svn_cache.h
    subversion/branches/multi-layer-moves/subversion/include/private/svn_wc_private.h
    subversion/branches/multi-layer-moves/subversion/include/svn_checksum.h
    subversion/branches/multi-layer-moves/subversion/include/svn_client.h
    subversion/branches/multi-layer-moves/subversion/include/svn_config.h
    subversion/branches/multi-layer-moves/subversion/include/svn_delta.h
    subversion/branches/multi-layer-moves/subversion/include/svn_editor.h
    subversion/branches/multi-layer-moves/subversion/include/svn_io.h
    subversion/branches/multi-layer-moves/subversion/include/svn_repos.h
    subversion/branches/multi-layer-moves/subversion/include/svn_utf.h
    subversion/branches/multi-layer-moves/subversion/include/svn_wc.h
    subversion/branches/multi-layer-moves/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
    subversion/branches/multi-layer-moves/subversion/libsvn_auth_kwallet/kwallet.cpp
    subversion/branches/multi-layer-moves/subversion/libsvn_client/commit_util.c
    subversion/branches/multi-layer-moves/subversion/libsvn_client/deprecated.c
    subversion/branches/multi-layer-moves/subversion/libsvn_client/diff.c
    subversion/branches/multi-layer-moves/subversion/libsvn_client/status.c
    subversion/branches/multi-layer-moves/subversion/libsvn_client/switch.c
    subversion/branches/multi-layer-moves/subversion/libsvn_client/update.c
    subversion/branches/multi-layer-moves/subversion/libsvn_delta/compat.c
    subversion/branches/multi-layer-moves/subversion/libsvn_delta/editor.c
    subversion/branches/multi-layer-moves/subversion/libsvn_fs_fs/caching.c
    subversion/branches/multi-layer-moves/subversion/libsvn_fs_fs/fs.h
    subversion/branches/multi-layer-moves/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/multi-layer-moves/subversion/libsvn_ra_neon/merge.c
    subversion/branches/multi-layer-moves/subversion/libsvn_ra_serf/update.c
    subversion/branches/multi-layer-moves/subversion/libsvn_repos/commit.c
    subversion/branches/multi-layer-moves/subversion/libsvn_repos/fs-wrap.c
    subversion/branches/multi-layer-moves/subversion/libsvn_repos/hooks.c
    subversion/branches/multi-layer-moves/subversion/libsvn_repos/load-fs-vtable.c
    subversion/branches/multi-layer-moves/subversion/libsvn_repos/log.c
    subversion/branches/multi-layer-moves/subversion/libsvn_repos/reporter.c
    subversion/branches/multi-layer-moves/subversion/libsvn_repos/repos.c
    subversion/branches/multi-layer-moves/subversion/libsvn_repos/repos.h
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/cache-inprocess.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/cache-memcache.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/checksum.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/cmdline.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/deprecated.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/gpg_agent.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/io.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/macos_keychain.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/simple_providers.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/skel.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/ssl_client_cert_pw_providers.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/stream.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/svn_base64.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/utf.c
    subversion/branches/multi-layer-moves/subversion/libsvn_subr/win32_crypto.c
    subversion/branches/multi-layer-moves/subversion/libsvn_wc/deprecated.c
    subversion/branches/multi-layer-moves/subversion/libsvn_wc/diff_editor.c
    subversion/branches/multi-layer-moves/subversion/libsvn_wc/status.c
    subversion/branches/multi-layer-moves/subversion/libsvn_wc/update_editor.c
    subversion/branches/multi-layer-moves/subversion/mod_authz_svn/mod_authz_svn.c
    subversion/branches/multi-layer-moves/subversion/mod_dav_svn/dav_svn.h
    subversion/branches/multi-layer-moves/subversion/mod_dav_svn/liveprops.c
    subversion/branches/multi-layer-moves/subversion/mod_dav_svn/mod_dav_svn.c
    subversion/branches/multi-layer-moves/subversion/mod_dav_svn/repos.c
    subversion/branches/multi-layer-moves/subversion/svn/cl.h
    subversion/branches/multi-layer-moves/subversion/svn/diff-cmd.c
    subversion/branches/multi-layer-moves/subversion/svn/log-cmd.c
    subversion/branches/multi-layer-moves/subversion/svn/main.c
    subversion/branches/multi-layer-moves/subversion/svnrdump/dump_editor.c
    subversion/branches/multi-layer-moves/subversion/svnserve/serve.c
    subversion/branches/multi-layer-moves/subversion/tests/cmdline/commit_tests.py
    subversion/branches/multi-layer-moves/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/multi-layer-moves/subversion/tests/cmdline/svnrdump_tests.py
    subversion/branches/multi-layer-moves/subversion/tests/cmdline/switch_tests.py
    subversion/branches/multi-layer-moves/subversion/tests/cmdline/update_tests.py
    subversion/branches/multi-layer-moves/subversion/tests/libsvn_subr/checksum-test.c
    subversion/branches/multi-layer-moves/subversion/tests/libsvn_subr/stream-test.c
    subversion/branches/multi-layer-moves/tools/client-side/svnmucc/svnmucc.c
    subversion/branches/multi-layer-moves/tools/dev/merge-graph.py   (contents, props changed)
    subversion/branches/multi-layer-moves/tools/dist/backport.pl
    subversion/branches/multi-layer-moves/tools/examples/get-location-segments.py

Propchange: subversion/branches/multi-layer-moves/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Feb 13 10:10:43 2012
@@ -57,3 +57,4 @@
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
 /subversion/branches/uris-as-urls:1060426-1064427
+/subversion/trunk:1239019-1243459

Modified: subversion/branches/multi-layer-moves/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/CHANGES?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/CHANGES (original)
+++ subversion/branches/multi-layer-moves/CHANGES Mon Feb 13 10:10:43 2012
@@ -16,6 +16,10 @@ http://svn.apache.org/repos/asf/subversi
     * 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)
+    * new SVNUseUTF8 configuration option for mod_dav_svn (issue #2487)
+    * new SVNHooksEnv configuration option for mod_dav_svn (r1239966)
+    * new --ignore-properties option for 'svn diff' (r1239553. -617)
+    * new --patch-compatible option for 'svn diff' (r1239561)
 
   - Client-side bugfixes:
     *
@@ -38,9 +42,12 @@ http://svn.apache.org/repos/asf/subversi
 
 
 Version 1.7.3
-(XX XXX 2012, from /branches/1.7.x)
+(14 Feb 2012, from /branches/1.7.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.7.3
 
+  General:
+    * ship mod_dontdothat with the standard release
+
   User-visible changes:
     * fix segfault on 'svn rm $ROOT_URL' (issue #4074)
     * replace a couple of assertions in favor of errors (r1207858, -949)
@@ -54,11 +61,33 @@ http://svn.apache.org/repos/asf/subversi
     * improve 'svn log --with-all-revprops' over ra-dav (issue #4082)
     * fix segfault when remapping a file external (issue #4093)
     * fix segfault caused by obstructing unversioned dir (r1229677)
-    * fix regression on first update of external dir with '-r' (issue #4053) 
+    * fix regression on first update of external dir with '-r' (issue #4053)
+    * fix various EOL-handling problems in 'svn patch' (issues #3814, #3991)
+    * fix segfault in 'svn revert' (r1229303)
+    * improve correctness of 'svn patch --dry-run' (r1231944, -5)
+    * enforce revisions given in 'svn:externals' (issue #4053)
+    * fix potential corruption on 32-bit FSFS with large files (r1230212)
+    * make 'svn status --xml' show new files (issue #4097)
+    * fix 'svn mergeinfo' correctness (issue #4050)
+    * return the correct status for non-present nodes (r1232202, -07, -21, -22)
+    * improve SASL error messages (r1236343, et al)
+    * improve server cert error code for ra_serf (r1232413)
+    * fix SVNParentPath listings for parent path symlinks (r1221767, -80)
+    * fix mod_dav_svn's handling of POST errors (issue #4086)
+    * log some mod_dav_svn errors, rather than ignoring them (r1237720, -9596)
+    * relax requirements for canonicalization in mod_dav_svn (r1236173)
+    * fix a rare source of FSFS corruption (r1240752)
+    * allow committing the result of some copy operations (issue #4059)
+    * prevent one-byte buffer overflow in base64 decoding (r1242337)
 
   Developer-visible changes:
     * JavaHL: Add missing notify action, fixing an exception (r1221793)
+    * fix swig-py memory leak (r1235264, -296, -302, -736)
     * fix spurious test suite failure (r1220742, -50)
+    * allow running tests on UNC shares (r1225491)
+    * bindings: see platform-specific password providers (r1242660, -1)
+    * skip 'svnrdump dump' tests over ra_serf (r1242537)
+    * convert a few ra_serf assertions to errors (r1242607)
 
 
 Version 1.7.2

Modified: subversion/branches/multi-layer-moves/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/build/run_tests.py?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/build/run_tests.py (original)
+++ subversion/branches/multi-layer-moves/build/run_tests.py Mon Feb 13 10:10:43 2012
@@ -43,7 +43,6 @@ separated list of test numbers; the defa
 '''
 
 # A few useful constants
-LINE_LENGTH = 45
 SVN_VER_MINOR = 8
 
 import os, re, subprocess, sys, imp
@@ -72,6 +71,38 @@ class TextColors:
     cls.SUCCESS = ''
 
 
+def _get_term_width():
+  'Attempt to discern the width of the terminal'
+  # This may not work on all platforms, in which case the default of 80
+  # characters is used.  Improvements welcomed.
+
+  def ioctl_GWINSZ(fd):
+    try:
+      import fcntl, termios, struct, os
+      cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234'))
+    except:
+      return None
+    return cr
+
+  cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
+  if not cr:
+    try:
+      fd = os.open(os.ctermid(), os.O_RDONLY)
+      cr = ioctl_GWINSZ(fd)
+      os.close(fd)
+    except:
+      pass
+  if not cr:
+    try:
+      cr = (env['LINES'], env['COLUMNS'])
+    except:
+      cr = None
+  if not cr:
+    # Default
+    cr = (25, 80)
+  return int(cr[1])
+
+
 class TestHarness:
   '''Test harness for Subversion tests.
   '''
@@ -511,14 +542,17 @@ class TestHarness:
 
     progabs = os.path.abspath(os.path.join(self.srcdir, prog))
     old_cwd = os.getcwd()
+    line_length = _get_term_width()
+    dots_needed = line_length \
+                    - len(test_info) \
+                    - len('Running tests in ') \
+                    - len('success')
     try:
       os.chdir(progdir)
       if progbase[-3:] == '.py':
-        failed = self._run_py_test(progabs, test_nums,
-                                   (LINE_LENGTH - len(test_info)))
+        failed = self._run_py_test(progabs, test_nums, dots_needed)
       else:
-        failed = self._run_c_test(prog, test_nums,
-                                  (LINE_LENGTH - len(test_info)))
+        failed = self._run_c_test(prog, test_nums, dots_needed)
     except:
       os.chdir(old_cwd)
       raise

Modified: subversion/branches/multi-layer-moves/notes/api-errata/1.7/ra001.txt
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/notes/api-errata/1.7/ra001.txt?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/notes/api-errata/1.7/ra001.txt (original)
+++ subversion/branches/multi-layer-moves/notes/api-errata/1.7/ra001.txt Mon Feb 13 10:10:43 2012
@@ -3,7 +3,7 @@ API ERRATA -- $Id$
 Root Cause of Errata: 
  Library(s) Affected: libsvn_ra, RA servers (svnserve, mod_dav_svn)
 Function(s) Affected: svn_delta_editor_t
-     New Behavior in: 1.7 (default), 1.4 (client optional)
+     New Behavior in: 1.8 (default), 1.4 (client optional)
       Related Issues: #2932, #3628
 
 

Modified: subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.cpp?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.cpp Mon Feb 13 10:10:43 2012
@@ -829,10 +829,11 @@ jbyteArray SVNClient::propertyGet(const 
         return NULL;
 
     apr_hash_t *props;
-    SVN_JNI_ERR(svn_client_propget3(&props, name,
+    SVN_JNI_ERR(svn_client_propget4(&props, name,
                                     intPath.c_str(), pegRevision.revision(),
                                     revision.revision(), NULL, svn_depth_empty,
-                                    NULL, ctx, subPool.getPool()),
+                                    NULL, ctx, subPool.getPool(),
+                                    subPool.getPool()),
                 NULL);
 
     apr_hash_index_t *hi;
@@ -935,7 +936,7 @@ void SVNClient::diff(const char *target1
                      OutputStream &outputStream, svn_depth_t depth,
                      StringArray &changelists,
                      bool ignoreAncestry, bool noDiffDelete, bool force,
-                     bool showCopiesAsAdds)
+                     bool showCopiesAsAdds, bool ignoreProps)
 {
     SVN::Pool subPool(pool);
     const char *c_relToDir = relativeToDir ?
@@ -971,7 +972,8 @@ void SVNClient::diff(const char *target1
                                    noDiffDelete,
                                    showCopiesAsAdds,
                                    force,
-                                   FALSE,
+                                   ignoreProps,
+                                   FALSE, /* use_git_diff_format */
                                    SVN_APR_LOCALE_CHARSET,
                                    outputStream.getStream(subPool),
                                    NULL /* error file */,
@@ -997,7 +999,8 @@ void SVNClient::diff(const char *target1
                                noDiffDelete,
                                showCopiesAsAdds,
                                force,
-                               FALSE,
+                               ignoreProps,
+                               FALSE, /* use_git_diff_format */
                                SVN_APR_LOCALE_CHARSET,
                                outputStream.getStream(subPool),
                                NULL /* error stream */,
@@ -1013,11 +1016,11 @@ void SVNClient::diff(const char *target1
                      const char *relativeToDir, OutputStream &outputStream,
                      svn_depth_t depth, StringArray &changelists,
                      bool ignoreAncestry, bool noDiffDelete, bool force,
-                     bool showCopiesAsAdds)
+                     bool showCopiesAsAdds, bool ignoreProps)
 {
     diff(target1, revision1, target2, revision2, NULL, relativeToDir,
          outputStream, depth, changelists, ignoreAncestry, noDiffDelete, force,
-         showCopiesAsAdds);
+         showCopiesAsAdds, ignoreProps);
 }
 
 void SVNClient::diff(const char *target, Revision &pegRevision,
@@ -1025,11 +1028,12 @@ void SVNClient::diff(const char *target,
                      const char *relativeToDir, OutputStream &outputStream,
                      svn_depth_t depth, StringArray &changelists,
                      bool ignoreAncestry, bool noDiffDelete, bool force,
-                     bool showCopiesAsAdds)
+                     bool showCopiesAsAdds, bool ignoreProps)
 {
     diff(target, startRevision, NULL, endRevision, &pegRevision,
          relativeToDir, outputStream, depth, changelists,
-         ignoreAncestry, noDiffDelete, force, showCopiesAsAdds);
+         ignoreAncestry, noDiffDelete, force, showCopiesAsAdds,
+         ignoreProps);
 }
 
 void

Modified: subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/SVNClient.h Mon Feb 13 10:10:43 2012
@@ -177,13 +177,13 @@ class SVNClient :public SVNBase
             const char *relativeToDir, OutputStream &outputStream,
             svn_depth_t depth, StringArray &changelists,
             bool ignoreAncestry, bool noDiffDelete, bool force,
-            bool showCopiesAsAdds);
+            bool showCopiesAsAdds, bool ignoreProps);
   void diff(const char *target, Revision &pegevision,
             Revision &startRevision, Revision &endRevision,
             const char *relativeToDir, OutputStream &outputStream,
             svn_depth_t depth, StringArray &changelists,
             bool ignoreAncestry, bool noDiffDelete, bool force,
-            bool showCopiesAsAdds);
+            bool showCopiesAsAdds, bool ignoreProps);
   void diffSummarize(const char *target1, Revision &revision1,
                      const char *target2, Revision &revision2,
                      svn_depth_t depth, StringArray &changelists,
@@ -212,7 +212,7 @@ class SVNClient :public SVNBase
             OutputStream &outputStream, svn_depth_t depth,
             StringArray &changelists,
             bool ignoreAncestry, bool noDiffDelete, bool force,
-            bool showCopiesAsAdds);
+            bool showCopiesAsAdds, bool ignoreProps);
 
   Path m_lastPath;
   ClientContext context;

Modified: subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Mon Feb 13 10:10:43 2012
@@ -1171,12 +1171,12 @@ JNIEXPORT void JNICALL Java_org_apache_s
 }
 
 JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Ljava_io_OutputStream_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZZZZ
+Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Ljava_io_OutputStream_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZZZZZ
 (JNIEnv *env, jobject jthis, jstring jtarget1, jobject jrevision1,
  jstring jtarget2, jobject jrevision2, jstring jrelativeToDir,
  jobject jstream, jobject jdepth, jobject jchangelists,
  jboolean jignoreAncestry, jboolean jnoDiffDeleted, jboolean jforce,
- jboolean jcopiesAsAdds)
+ jboolean jcopiesAsAdds, jboolean jignoreProps)
 {
   JNIEntry(SVNClient, diff);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -1217,16 +1217,16 @@ Java_org_apache_subversion_javahl_SVNCli
            EnumMapper::toDepth(jdepth), changelists,
            jignoreAncestry ? true:false,
            jnoDiffDeleted ? true:false, jforce ? true:false,
-           jcopiesAsAdds ? true:false);
+           jcopiesAsAdds ? true:false, jignoreProps ? true:false);
 }
 
 JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Ljava_io_OutputStream_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZZZZ
+Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Ljava_io_OutputStream_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZZZZZ
 (JNIEnv *env, jobject jthis, jstring jtarget, jobject jpegRevision,
  jobject jstartRevision, jobject jendRevision, jstring jrelativeToDir,
  jobject jstream, jobject jdepth, jobject jchangelists,
  jboolean jignoreAncestry, jboolean jnoDiffDeleted, jboolean jforce,
- jboolean jcopiesAsAdds)
+ jboolean jcopiesAsAdds, jboolean jignoreProps)
 {
   JNIEntry(SVNClient, diff);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -1267,7 +1267,7 @@ Java_org_apache_subversion_javahl_SVNCli
            dataOut, EnumMapper::toDepth(jdepth), changelists,
            jignoreAncestry ? true:false,
            jnoDiffDeleted ? true:false, jforce ? true:false,
-           jcopiesAsAdds ? true:false);
+           jcopiesAsAdds ? true:false, jignoreProps ? true:false);
 }
 
 JNIEXPORT void JNICALL

Modified: subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Mon Feb 13 10:10:43 2012
@@ -521,13 +521,14 @@ public interface ISVNClient
      * @param force         diff even on binary files
      * @param copiesAsAdds  if set, copied files will be shown in their
      *                      entirety, not as diffs from their sources
+     * @param ignoreProps   don't show property diffs
      * @throws ClientException
      */
     void diff(String target1, Revision revision1, String target2,
               Revision revision2, String relativeToDir, OutputStream outStream,
               Depth depth, Collection<String> changelists,
               boolean ignoreAncestry, boolean noDiffDeleted, boolean force,
-              boolean copiesAsAdds)
+              boolean copiesAsAdds, boolean ignoreProps)
             throws ClientException;
 
     void diff(String target1, Revision revision1, String target2,
@@ -552,6 +553,7 @@ public interface ISVNClient
      * @param force         diff even on binary files
      * @param copiesAsAdds  if set, copied files will be shown in their
      *                      entirety, not as diffs from their sources
+     * @param ignoreProps   don't show property diffs
      * @throws ClientException
      */
     void diff(String target, Revision pegRevision, Revision startRevision,
@@ -559,7 +561,7 @@ public interface ISVNClient
               OutputStream outStream,
               Depth depth, Collection<String> changelists,
               boolean ignoreAncestry, boolean noDiffDeleted, boolean force,
-              boolean copiesAsAdds)
+              boolean copiesAsAdds, boolean ignoreProps)
             throws ClientException;
 
     void diff(String target, Revision pegRevision, Revision startRevision,

Modified: subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Mon Feb 13 10:10:43 2012
@@ -278,7 +278,7 @@ public class SVNClient implements ISVNCl
             OutputStream stream = new FileOutputStream(outFileName);
             diff(target1, revision1, target2, revision2, relativeToDir,
                  stream, depth, changelists, ignoreAncestry, noDiffDeleted,
-                 force, copiesAsAdds);
+                 force, copiesAsAdds, false);
         } catch (FileNotFoundException ex) {
             throw ClientException.fromException(ex);
         }
@@ -289,7 +289,8 @@ public class SVNClient implements ISVNCl
                             OutputStream stream, Depth depth,
                             Collection<String> changelists,
                             boolean ignoreAncestry, boolean noDiffDeleted,
-                            boolean force, boolean copiesAsAdds)
+                            boolean force, boolean copiesAsAdds,
+                            boolean ignoreProps)
             throws ClientException;
 
     public void diff(String target, Revision pegRevision,
@@ -304,7 +305,7 @@ public class SVNClient implements ISVNCl
             OutputStream stream = new FileOutputStream(outFileName);
             diff(target, pegRevision, startRevision, endRevision,
                  relativeToDir, stream, depth, changelists, ignoreAncestry,
-                 noDiffDeleted, force, copiesAsAdds);
+                 noDiffDeleted, force, copiesAsAdds, false);
         } catch (FileNotFoundException ex) {
             throw ClientException.fromException(ex);
         }
@@ -315,7 +316,8 @@ public class SVNClient implements ISVNCl
                             String relativeToDir, OutputStream stream,
                             Depth depth, Collection<String> changelists,
                             boolean ignoreAncestry, boolean noDiffDeleted,
-                            boolean force, boolean copiesAsAdds)
+                            boolean force, boolean copiesAsAdds,
+                            boolean ignoreProps)
             throws ClientException;
 
     public native void diffSummarize(String target1, Revision revision1,

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/core.i
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/core.i?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/core.i (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/core.i Mon Feb 13 10:10:43 2012
@@ -698,6 +698,7 @@ svn_swig_pl_set_current_pool (apr_pool_t
 %authprompt_callback_typemap(ssl_server_trust)
 %authprompt_callback_typemap(ssl_client_cert)
 %authprompt_callback_typemap(ssl_client_cert_pw)
+%authprompt_callback_typemap(gnome_keyring_unlock)
 
 /* -----------------------------------------------------------------------
  * For all the various functions that set a callback baton create a reference
@@ -781,6 +782,34 @@ svn_swig_pl_set_current_pool (apr_pool_t
 %include svn_mergeinfo_h.swg
 %include svn_io_h.swg
 
+
+
+#ifdef SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_FUNC
+%inline %{
+/* Helper function to set the gnome-keyring unlock prompt function. This
+ * C function accepts an auth baton, a function and a prompt baton, but
+ * the below callback_typemap uses both the function and the prompt
+ * baton, so the resulting binding has just two arguments: The auth
+ * baton and the prompt function.
+ * The prompt function should again have two arguments: The keyring name
+ * (string) and a pool (except for the ruby version, which doesn't have
+ * the pool argument). It should return the entered password (string).
+ * This binding generated for this function generates a reference to the
+ * prompt function that was passed into this. The caller should store
+ * that reference somewhere, to prevent the function from being garbage
+ * collected...
+ */
+static void svn_auth_set_gnome_keyring_unlock_prompt_func(svn_auth_baton_t *ab,
+                                                          svn_auth_gnome_keyring_unlock_prompt_func_t prompt_func,
+                                                          void *prompt_baton) {
+    svn_auth_set_parameter(ab, SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_FUNC,
+                           prompt_func);
+    svn_auth_set_parameter(ab, SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_BATON,
+                           prompt_baton);
+}
+%}
+#endif
+
 #if defined(SWIGPERL) || defined(SWIGRUBY)
 %include svn_md5_h.swg
 #endif

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/include/svn_containers.swg?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/include/svn_containers.swg Mon Feb 13 10:10:43 2012
@@ -825,8 +825,8 @@
 #ifdef SWIGPYTHON
 %typemap(argout) apr_array_header_t **RANGELIST {
   %append_output
-    (svn_swig_py_rangelist_to_list(*$1, $descriptor(svn_merge_range_t *),
-                                   _global_py_pool));
+    (svn_swig_py_pointerlist_to_list(*$1, $descriptor(svn_merge_range_t *),
+                                     _global_py_pool));
   if (PyErr_Occurred()) {
     SWIG_fail;
   }
@@ -873,3 +873,20 @@
                     $descriptor(svn_auth_provider_object_t *)));
 }
 #endif
+
+#ifdef SWIGPYTHON
+%typemap(argout) apr_array_header_t **providers {
+  %append_output
+    (svn_swig_py_pointerlist_to_list(*$1, $descriptor(svn_auth_provider_object_t *),
+                                     _global_py_pool));
+  if (PyErr_Occurred()) {
+    SWIG_fail;
+  }
+}
+#endif
+
+#ifdef SWIGRUBY
+%typemap(argout) apr_array_header_t **providers {
+  %append_output(svn_swig_rb_apr_array_to_array_auth_provider_object(*$1));
+}
+#endif

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c Mon Feb 13 10:10:43 2012
@@ -984,6 +984,34 @@ svn_error_t *svn_ra_make_callbacks(svn_r
     return SVN_NO_ERROR;
 }
 
+svn_error_t *svn_swig_pl_thunk_gnome_keyring_unlock_prompt(char **keyring_password,
+                                                           const char *keyring_name,
+                                                           void *baton,
+                                                           apr_pool_t *pool)
+{
+    SV *result;
+    STRLEN len;
+    /* The baton is the actual prompt function passed from perl, so we
+     * call that one and process the result. */
+    svn_swig_pl_callback_thunk(CALL_SV,
+                               baton, &result,
+                               "sS", keyring_name,
+                               pool, POOLINFO);
+    if (!SvOK(result) || result == &PL_sv_undef) {
+        *keyring_password = NULL;
+    }
+    else if (SvPOK(result)) {
+        *keyring_password = apr_pstrdup(pool, SvPV(result, len));
+    }
+    else {
+        SvREFCNT_dec(result);
+        croak("not a string");
+    }
+
+    SvREFCNT_dec(result);
+    return SVN_NO_ERROR;
+}
+
 svn_error_t *svn_swig_pl_thunk_simple_prompt(svn_auth_cred_simple_t **cred,
                                              void *baton,
                                              const char *realm,

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h Mon Feb 13 10:10:43 2012
@@ -144,6 +144,11 @@ svn_error_t *svn_ra_make_callbacks(svn_r
 				   SV *perl_callbacks,
 				   apr_pool_t *pool);
 
+/* thunked gnome_keyring_unlock_prompt callback function */
+svn_error_t *svn_swig_pl_thunk_gnome_keyring_unlock_prompt(char **keyring_password,
+                                                           const char *keyring_name,
+                                                           void *baton,
+                                                           apr_pool_t *pool);
 /* thunked simple_prompt callback function */
 svn_error_t *svn_swig_pl_thunk_simple_prompt(svn_auth_cred_simple_t **cred,
                                              void *baton,

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/native/t/3client.t
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/native/t/3client.t?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/native/t/3client.t (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/perl/native/t/3client.t Mon Feb 13 10:10:43 2012
@@ -20,7 +20,7 @@
 #
 #
 
-use Test::More tests => 119;
+use Test::More tests => 120;
 use strict;
 
 # shut up about variables that are only used once.
@@ -477,6 +477,28 @@ foreach my $p (@providers) {
 }
 ok($ok, 'svn_auth_get_platform_specific_client_providers returns _p_svn_auth_provider_object_t\'s');
 
+SKIP: {
+  skip 'Gnome-Keyring support not compiled in', 1
+      unless defined &SVN::Core::auth_set_gnome_keyring_unlock_prompt_func;
+
+  # Test setting gnome_keyring prompt function. This just sets the proper
+  # attributes in the auth baton and checks the return value (which should
+  # be a reference to the passed function reference). This does not
+  # actually try the prompt, since that would require setting up a
+  # gnome-keyring-daemon...
+  sub gnome_keyring_unlock_prompt {
+      my $keyring_name = shift;
+      my $pool = shift;
+
+      'test';
+  }
+
+  my $callback = \&gnome_keyring_unlock_prompt;
+  my $result = SVN::Core::auth_set_gnome_keyring_unlock_prompt_func(
+                   $ctx->auth(), $callback);
+  is(${$result}, $callback, 'auth_set_gnome_keyring_unlock_prompt_func result equals paramter');
+}
+
 END {
 diag('cleanup');
 rmtree($testpath);

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Mon Feb 13 10:10:43 2012
@@ -650,7 +650,7 @@ PyObject *svn_swig_py_stringhash_to_dict
   return convert_hash(hash, convert_string, NULL, NULL);
 }
 
-static PyObject *convert_rangelist(void *value, void *ctx, PyObject *py_pool)
+static PyObject *convert_pointerlist(void *value, void *ctx, PyObject *py_pool)
 {
   int i;
   PyObject *list;
@@ -662,11 +662,11 @@ static PyObject *convert_rangelist(void 
 
   for (i = 0; i < array->nelts; i++)
     {
-      svn_merge_range_t *range = APR_ARRAY_IDX(array, i, svn_merge_range_t *);
+      void *ptr = APR_ARRAY_IDX(array, i, void *);
       PyObject *obj;
       int result;
 
-      obj = convert_to_swigtype(range, ctx, py_pool);
+      obj = convert_to_swigtype(ptr, ctx, py_pool);
       if (obj == NULL)
         goto error;
 
@@ -681,18 +681,18 @@ static PyObject *convert_rangelist(void 
   return NULL;
 }
 
-PyObject *svn_swig_py_rangelist_to_list(apr_array_header_t *rangelist,
-                                        swig_type_info *type,
-                                        PyObject *py_pool)
+PyObject *svn_swig_py_pointerlist_to_list(apr_array_header_t *list,
+                                          swig_type_info *type,
+                                          PyObject *py_pool)
 {
-  return convert_rangelist(rangelist, type, py_pool);
+  return convert_pointerlist(list, type, py_pool);
 }
 
 PyObject *svn_swig_py_mergeinfo_to_dict(apr_hash_t *hash,
                                         swig_type_info *type,
                                         PyObject *py_pool)
 {
-  return convert_hash(hash, convert_rangelist, type, py_pool);
+  return convert_hash(hash, convert_pointerlist, type, py_pool);
 }
 
 static PyObject *convert_mergeinfo_hash(void *value, void *ctx,
@@ -2804,6 +2804,41 @@ svn_error_t *svn_swig_py_changelist_rece
 }
 
 svn_error_t *
+svn_swig_py_auth_gnome_keyring_unlock_prompt_func(char **keyring_passwd,
+                                                  const char *keyring_name,
+                                                  void *baton,
+                                                  apr_pool_t *pool)
+{
+  /* The baton is the actual prompt function passed from python */
+  PyObject *function = baton;
+  PyObject *result;
+  svn_error_t *err = SVN_NO_ERROR;
+  *keyring_passwd = NULL;
+
+  if ((function == NULL) || (function == Py_None))
+    return SVN_NO_ERROR;
+
+  svn_swig_py_acquire_py_lock();
+
+  if ((result = PyObject_CallFunction(function,
+                                      (char *)"sO&",
+                                      keyring_name,
+                                      make_ob_pool, pool)) == NULL)
+    {
+      err = callback_exception_error();
+    }
+  else
+    {
+      *keyring_passwd = make_string_from_ob(result, pool);
+      Py_DECREF(result);
+    }
+
+  svn_swig_py_release_py_lock();
+  return err;
+}
+
+
+svn_error_t *
 svn_swig_py_auth_simple_prompt_func(svn_auth_cred_simple_t **cred,
                                     void *baton,
                                     const char *realm,

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h Mon Feb 13 10:10:43 2012
@@ -135,9 +135,9 @@ PyObject *svn_swig_py_locationhash_to_di
 /* helper function to convert an apr_array_header_t* (of
    svn_merge_range_t *) to a Python list */
 SVN_SWIG_SWIGUTIL_EXPORT
-PyObject *svn_swig_py_rangelist_to_list(apr_array_header_t *rangelist,
-                                        swig_type_info *type,
-                                        PyObject *py_pool);
+PyObject *svn_swig_py_pointerlist_to_list(apr_array_header_t *list,
+                                          swig_type_info *type,
+                                          PyObject *py_pool);
 
 /* helper function to convert an apr_hash_t* (const char *->array of
    svn_merge_range_t *) to a Python dict */
@@ -423,6 +423,13 @@ svn_error_t *svn_swig_py_changelist_rece
 
 /* auth provider callbacks */
 SVN_SWIG_SWIGUTIL_EXPORT
+svn_error_t * svn_swig_py_auth_gnome_keyring_unlock_prompt_func(
+        char **keyring_passwd,
+        const char *keyring_name,
+        void *baton,
+        apr_pool_t *pool);
+
+SVN_SWIG_SWIGUTIL_EXPORT
 svn_error_t *svn_swig_py_auth_simple_prompt_func(
     svn_auth_cred_simple_t **cred,
     void *baton,

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/python/tests/client.py
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/python/tests/client.py?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/python/tests/client.py (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/python/tests/client.py Mon Feb 13 10:10:43 2012
@@ -374,6 +374,29 @@ class SubversionClientTestCase(unittest.
 
     self.assertEqual(readme_text, 'This is a test.\n')
 
+  def test_platform_providers(self):
+    providers = core.svn_auth_get_platform_specific_client_providers(None, None)
+    # Not much more we can test in this minimal environment.
+    self.assert_(isinstance(providers, list))
+    self.assert_(not filter(lambda x:
+                             not isinstance(x, core.svn_auth_provider_object_t),
+                            providers))
+
+  def testGnomeKeyring(self):
+    if not hasattr(core, 'svn_auth_set_gnome_keyring_unlock_prompt_func'):
+      # gnome-keying not compiled in, do nothing
+      return
+
+    # This tests setting the gnome-keyring unlock prompt function as an
+    # auth baton parameter. It doesn't actually call gnome-keyring
+    # stuff, since that would require having a gnome-keyring running. We
+    # just test if this doesn't error out, there's not even a return
+    # value to test.
+    def prompt_func(realm_string, pool):
+      return "Foo"
+
+    core.svn_auth_set_gnome_keyring_unlock_prompt_func(self.client_ctx.auth_baton, prompt_func)
+
 def suite():
     return unittest.defaultTestLoader.loadTestsFromTestCase(
       SubversionClientTestCase)

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c Mon Feb 13 10:10:43 2012
@@ -1313,6 +1313,9 @@ DEFINE_APR_ARRAY_TO_ARRAY(VALUE, svn_swi
 DEFINE_APR_ARRAY_TO_ARRAY(VALUE, svn_swig_rb_apr_array_to_array_merge_range,
                           c2r_merge_range_dup, EMPTY_CPP_ARGUMENT,
                           svn_merge_range_t *, NULL)
+DEFINE_APR_ARRAY_TO_ARRAY(VALUE, svn_swig_rb_apr_array_to_array_auth_provider_object,
+                          c2r_swig_type, EMPTY_CPP_ARGUMENT,
+                          svn_auth_provider_object_t *, "svn_auth_provider_object_t*")
 
 static VALUE
 c2r_merge_range_array(void *value, void *ctx)
@@ -2960,6 +2963,41 @@ svn_swig_rb_auth_simple_prompt_func(svn_
 }
 
 svn_error_t *
+svn_swig_rb_auth_gnome_keyring_unlock_prompt_func(char **keyring_passwd,
+                                                  const char *keyring_name,
+                                                  void *baton,
+                                                  apr_pool_t *pool)
+{
+  svn_error_t *err = SVN_NO_ERROR;
+  VALUE proc, rb_pool;
+  *keyring_passwd = NULL;
+
+  svn_swig_rb_from_baton((VALUE)baton, &proc, &rb_pool);
+
+  if (!NIL_P(proc)) {
+    char error_message[] =
+      "svn_auth_gnome_keyring_unlock_prompt_func_t should"
+      "return a string, not '%s'.";
+
+    callback_baton_t cbb;
+    VALUE result;
+
+    cbb.receiver = proc;
+    cbb.message = id_call;
+    cbb.args = rb_ary_new3(1, c2r_string2(keyring_name));
+    result = invoke_callback_handle_error((VALUE)(&cbb), rb_pool, &err);
+
+    if (!NIL_P(result)) {
+      if (!RTEST(rb_obj_is_kind_of(result, rb_cString)))
+        rb_raise(rb_eTypeError, error_message, r2c_inspect(result));
+      *keyring_passwd = (char *)r2c_string(result, NULL, pool);
+    }
+  }
+
+  return err;
+}
+
+svn_error_t *
 svn_swig_rb_auth_username_prompt_func(svn_auth_cred_username_t **cred,
                                       void *baton,
                                       const char *realm,

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h Mon Feb 13 10:10:43 2012
@@ -154,6 +154,8 @@ SVN_RB_SWIG_SWIGUTIL_EXPORT
 VALUE svn_swig_rb_apr_array_to_array_external_item2(const apr_array_header_t *ary);
 SVN_RB_SWIG_SWIGUTIL_EXPORT
 VALUE svn_swig_rb_apr_array_to_array_merge_range(const apr_array_header_t *ary);
+SVN_RB_SWIG_SWIGUTIL_EXPORT
+VALUE svn_swig_rb_apr_array_to_array_auth_provider_object(const apr_array_header_t *ary);
 
 SVN_RB_SWIG_SWIGUTIL_EXPORT
 VALUE svn_swig_rb_prop_apr_array_to_hash_prop(const apr_array_header_t *ary);
@@ -378,6 +380,13 @@ svn_error_t *svn_swig_rb_wc_relocation_v
 
 /* auth provider callbacks */
 SVN_RB_SWIG_SWIGUTIL_EXPORT
+svn_error_t * svn_swig_rb_auth_gnome_keyring_unlock_prompt_func(
+    char **keyring_passwd,
+    const char *keyring_name,
+    void *baton,
+    apr_pool_t *pool);
+
+SVN_RB_SWIG_SWIGUTIL_EXPORT
 svn_error_t *svn_swig_rb_auth_simple_prompt_func(
     svn_auth_cred_simple_t **cred,
     void *baton,

Modified: subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/svn/core.rb
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/svn/core.rb?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/svn/core.rb (original)
+++ subversion/branches/multi-layer-moves/subversion/bindings/swig/ruby/svn/core.rb Mon Feb 13 10:10:43 2012
@@ -279,6 +279,10 @@ module Svn
         add_prompt_provider("ssl_client_cert_pw", args, prompt, klass)
       end
 
+      def add_platform_specific_client_providers(config=nil)
+        add_providers(Core.auth_get_platform_specific_client_providers(config))
+      end
+
       private
       def add_prompt_provider(name, args, prompt, credential_class)
         real_prompt = Proc.new do |*prompt_args|
@@ -294,6 +298,10 @@ module Svn
       end
 
       def add_provider(provider)
+        add_providers([provider])
+      end
+
+      def add_providers(new_providers)
         if auth_baton
           providers = auth_baton.providers
           parameters = auth_baton.parameters
@@ -301,7 +309,7 @@ module Svn
           providers = []
           parameters = {}
         end
-        self.auth_baton = AuthBaton.new(providers + [provider], parameters)
+        self.auth_baton = AuthBaton.new(providers + new_providers, parameters)
       end
     end
 

Modified: subversion/branches/multi-layer-moves/subversion/include/private/svn_auth_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/include/private/svn_auth_private.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/include/private/svn_auth_private.h (original)
+++ subversion/branches/multi-layer-moves/subversion/include/private/svn_auth_private.h Mon Feb 13 10:10:43 2012
@@ -53,9 +53,12 @@ extern "C" {
    from an external store, using REALMSTRING and USERNAME as keys.
    (The behavior is undefined if REALMSTRING or USERNAME are NULL.)
    If NON_INTERACTIVE is set, the user must not be involved in the
-   retrieval process.  POOL is used for any necessary allocation. */
-typedef svn_boolean_t (*svn_auth__password_get_t)
-  (const char **password,
+   retrieval process.  Set *DONE to TRUE if a password was stored
+   in *PASSWORD, to FALSE otherwise. POOL is used for any necessary
+   allocation. */
+typedef svn_error_t * (*svn_auth__password_get_t)
+  (svn_boolean_t *done,
+   const char **password,
    apr_hash_t *creds,
    const char *realmstring,
    const char *username,
@@ -66,10 +69,12 @@ typedef svn_boolean_t (*svn_auth__passwo
 /* A function that stores PASSWORD (or some encrypted version thereof)
    either directly in CREDS, or externally using REALMSTRING and USERNAME
    as keys into the external store.  If NON_INTERACTIVE is set, the user
-   must not be involved in the storage process.  POOL is used for any
-   necessary allocation. */
-typedef svn_boolean_t (*svn_auth__password_set_t)
-  (apr_hash_t *creds,
+   must not be involved in the storage process. Set *DONE to TRUE if the
+   password was store, to FALSE otherwise. POOL is used for any necessary
+   allocation. */
+typedef svn_error_t * (*svn_auth__password_set_t)
+  (svn_boolean_t *done,
+   apr_hash_t *creds,
    const char *realmstring,
    const char *username,
    const char *password,
@@ -111,8 +116,9 @@ svn_auth__simple_save_creds_helper(svn_b
 /* Implementation of svn_auth__password_get_t that retrieves
    the plaintext password from CREDS when USERNAME matches the stored
    credentials. */
-svn_boolean_t
-svn_auth__simple_password_get(const char **password,
+svn_error_t *
+svn_auth__simple_password_get(svn_boolean_t *done,
+                              const char **password,
                               apr_hash_t *creds,
                               const char *realmstring,
                               const char *username,
@@ -122,8 +128,9 @@ svn_auth__simple_password_get(const char
 
 /* Implementation of svn_auth__password_set_t that stores
    the plaintext password in CREDS. */
-svn_boolean_t
-svn_auth__simple_password_set(apr_hash_t *creds,
+svn_error_t *
+svn_auth__simple_password_set(svn_boolean_t *done,
+                              apr_hash_t *creds,
                               const char *realmstring,
                               const char *username,
                               const char *password,
@@ -169,8 +176,9 @@ svn_auth__ssl_client_cert_pw_file_save_c
 /* This implements the svn_auth__password_get_t interface.
    Set **PASSPHRASE to the plaintext passphrase retrieved from CREDS;
    ignore other parameters. */
-svn_boolean_t
-svn_auth__ssl_client_cert_pw_get(const char **passphrase,
+svn_error_t *
+svn_auth__ssl_client_cert_pw_get(svn_boolean_t *done,
+                                 const char **passphrase,
                                  apr_hash_t *creds,
                                  const char *realmstring,
                                  const char *username,
@@ -180,8 +188,9 @@ svn_auth__ssl_client_cert_pw_get(const c
 
 /* This implements the svn_auth__password_set_t interface.
    Store PASSPHRASE in CREDS; ignore other parameters. */
-svn_boolean_t
-svn_auth__ssl_client_cert_pw_set(apr_hash_t *creds,
+svn_error_t *
+svn_auth__ssl_client_cert_pw_set(svn_boolean_t *done,
+                                 apr_hash_t *creds,
                                  const char *realmstring,
                                  const char *username,
                                  const char *passphrase,

Modified: subversion/branches/multi-layer-moves/subversion/include/private/svn_cache.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/include/private/svn_cache.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/include/private/svn_cache.h (original)
+++ subversion/branches/multi-layer-moves/subversion/include/private/svn_cache.h Mon Feb 13 10:10:43 2012
@@ -342,9 +342,9 @@ svn_cache__is_cachable(svn_cache__t *cac
 /**
  * Fetches a value indexed by @a key from @a cache into @a *value,
  * setting @a *found to TRUE iff it is in the cache and FALSE if it is
- * not found.  The value is copied into @a result_pool using the copy
+ * not found.  @a key may be NULL in which case @a *found will be
+ * FALSE.  The value is copied into @a result_pool using the deserialize
  * function provided to the cache's constructor.
- * ### what copy function? there are serialize/deserialize functions, no copy functions
  */
 svn_error_t *
 svn_cache__get(void **value,
@@ -357,7 +357,8 @@ svn_cache__get(void **value,
  * Stores the value @a value under the key @a key in @a cache.  Uses @a
  * scratch_pool for temporary allocations.  The cache makes copies of
  * @a key and @a value if necessary (that is, @a key and @a value may
- * have shorter lifetimes than the cache).
+ * have shorter lifetimes than the cache).  @a key may be NULL in which
+ * case the cache will remain unchanged.
  *
  * If there is already a value for @a key, this will replace it.  Bear
  * in mind that in some circumstances this may leak memory (that is,
@@ -401,8 +402,10 @@ svn_cache__iter(svn_boolean_t *completed
 /**
  * Similar to svn_cache__get() but will call a specific de-serialization
  * function @a func. @a found will be set depending on whether the @a key
- * has been found. Even if that reports @c TRUE, @a values may still return
- * a @c NULL pointer depending on the logic inside @a func.
+ * has been found. Even if that reports @c TRUE, @a value may still return
+ * a @c NULL pointer depending on the logic inside @a func.  For a @a NULL
+ * @a key, no data will be found.  @a value will be allocated in
+ * @a result_pool.
  */
 svn_error_t *
 svn_cache__get_partial(void **value,
@@ -417,8 +420,8 @@ svn_cache__get_partial(void **value,
  * Find the item identified by @a key in the @a cache. If it has been found,
  * call @a func for it and @a baton to potentially modify the data. Changed
  * data will be written back to the cache. If the item cannot be found,
- * @a func does not get called. @a scratch_pool is used for temporary
- * allocations.
+ * or if @a key is NULL, @a func does not get called. @a scratch_pool is
+ * used for temporary allocations.
  */
 svn_error_t *
 svn_cache__set_partial(svn_cache__t *cache,

Modified: subversion/branches/multi-layer-moves/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/include/private/svn_wc_private.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/multi-layer-moves/subversion/include/private/svn_wc_private.h Mon Feb 13 10:10:43 2012
@@ -1303,6 +1303,316 @@ svn_wc__resolve_relative_external_url(co
                                       apr_pool_t *result_pool,
                                       apr_pool_t *scratch_pool);
 
+
+/**
+ * Set @a *editor and @a *edit_baton to an editor that generates
+ * #svn_wc_status3_t structures and sends them through @a status_func /
+ * @a status_baton.  @a anchor_abspath is a working copy directory
+ * directory which will be used as the root of our editor.  If @a
+ * target_basename is not "", it represents a node in the @a anchor_abspath
+ * which is the subject of the editor drive (otherwise, the @a
+ * anchor_abspath is the subject).
+ *
+ * If @a set_locks_baton is non-@c NULL, it will be set to a baton that can
+ * be used in a call to the svn_wc_status_set_repos_locks() function.
+ *
+ * Callers drive this editor to describe working copy out-of-dateness
+ * with respect to the repository.  If this information is not
+ * available or not desired, callers should simply call the
+ * close_edit() function of the @a editor vtable.
+ *
+ * If the editor driver calls @a editor's set_target_revision() vtable
+ * function, then when the edit drive is completed, @a *edit_revision
+ * will contain the revision delivered via that interface.
+ *
+ * Assuming the target is a directory, then:
+ *
+ *   - If @a get_all is FALSE, then only locally-modified entries will be
+ *     returned.  If TRUE, then all entries will be returned.
+ *
+ *   - If @a depth is #svn_depth_empty, a status structure will
+ *     be returned for the target only; if #svn_depth_files, for the
+ *     target and its immediate file children; if
+ *     #svn_depth_immediates, for the target and its immediate
+ *     children; if #svn_depth_infinity, for the target and
+ *     everything underneath it, fully recursively.
+ *
+ *     If @a depth is #svn_depth_unknown, take depths from the
+ *     working copy and behave as above in each directory's case.
+ *
+ *     If the given @a depth is incompatible with the depth found in a
+ *     working copy directory, the found depth always governs.
+ *
+ * If @a no_ignore is set, statuses that would typically be ignored
+ * will instead be reported.
+ *
+ * @a ignore_patterns is an array of file patterns matching
+ * unversioned files to ignore for the purposes of status reporting,
+ * or @c NULL if the default set of ignorable file patterns should be used.
+ *
+ * If @a cancel_func is non-NULL, call it with @a cancel_baton while building
+ * the @a statushash to determine if the client has canceled the operation.
+ *
+ * If @a depth_as_sticky is set handle @a depth like when depth_is_sticky is
+ * passed for updating. This will show excluded nodes show up as added in the
+ * repository.
+ *
+ * If @a server_performs_filtering is TRUE, assume that the server handles
+ * the ambient depth filtering, so this doesn't have to be handled in the
+ * editor.
+ *
+ * Allocate the editor itself in @a result_pool, and use @a scratch_pool
+ * for temporary allocations. The editor will do its temporary allocations
+ * in a subpool of @a result_pool.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_wc__get_status_editor(const svn_delta_editor_t **editor,
+                          void **edit_baton,
+                          void **set_locks_baton,
+                          svn_revnum_t *edit_revision,
+                          svn_wc_context_t *wc_ctx,
+                          const char *anchor_abspath,
+                          const char *target_basename,
+                          svn_depth_t depth,
+                          svn_boolean_t get_all,
+                          svn_boolean_t no_ignore,
+                          svn_boolean_t depth_as_sticky,
+                          svn_boolean_t server_performs_filtering,
+                          const apr_array_header_t *ignore_patterns,
+                          svn_wc_status_func4_t status_func,
+                          void *status_baton,
+                          svn_cancel_func_t cancel_func,
+                          void *cancel_baton,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool);
+
+
+/**
+ * Set @a *editor and @a *edit_baton to an editor and baton for updating a
+ * working copy.
+ *
+ * @a anchor_abspath is a local working copy directory, with a fully recursive
+ * write lock in @a wc_ctx, which will be used as the root of our editor.
+ *
+ * @a target_basename is the entry in @a anchor_abspath that will actually be
+ * updated, or the empty string if all of @a anchor_abspath should be updated.
+ *
+ * The editor invokes @a notify_func with @a notify_baton as the update
+ * progresses, if @a notify_func is non-NULL.
+ *
+ * If @a cancel_func is non-NULL, the editor will invoke @a cancel_func with
+ * @a cancel_baton as the update progresses to see if it should continue.
+ *
+ * If @a conflict_func is non-NULL, then invoke it with @a
+ * conflict_baton whenever a conflict is encountered, giving the
+ * callback a chance to resolve the conflict before the editor takes
+ * more drastic measures (such as marking a file conflicted, or
+ * bailing out of the update).
+ *
+ * If @a external_func is non-NULL, then invoke it with @a external_baton
+ * whenever external changes are encountered, giving the callback a chance
+ * to store the external information for processing.
+ *
+ * If @a diff3_cmd is non-NULL, then use it as the diff3 command for
+ * any merging; otherwise, use the built-in merge code.
+ *
+ * @a preserved_exts is an array of filename patterns which, when
+ * matched against the extensions of versioned files, determine for
+ * which such files any related generated conflict files will preserve
+ * the original file's extension as their own.  If a file's extension
+ * does not match any of the patterns in @a preserved_exts (which is
+ * certainly the case if @a preserved_exts is @c NULL or empty),
+ * generated conflict files will carry Subversion's custom extensions.
+ *
+ * @a target_revision is a pointer to a revision location which, after
+ * successful completion of the drive of this editor, will be
+ * populated with the revision to which the working copy was updated.
+ *
+ * If @a use_commit_times is TRUE, then all edited/added files will
+ * have their working timestamp set to the last-committed-time.  If
+ * FALSE, the working files will be touched with the 'now' time.
+ *
+ * If @a allow_unver_obstructions is TRUE, then allow unversioned
+ * obstructions when adding a path.
+ *
+ * If @a adds_as_modification is TRUE, a local addition at the same path
+ * as an incoming addition of the same node kind results in a normal node
+ * with a possible local modification, instead of a tree conflict.
+ *
+ * If @a depth is #svn_depth_infinity, update fully recursively.
+ * Else if it is #svn_depth_immediates, update the uppermost
+ * directory, its file entries, and the presence or absence of
+ * subdirectories (but do not descend into the subdirectories).
+ * Else if it is #svn_depth_files, update the uppermost directory
+ * and its immediate file entries, but not subdirectories.
+ * Else if it is #svn_depth_empty, update exactly the uppermost
+ * target, and don't touch its entries.
+ *
+ * If @a depth_is_sticky is set and @a depth is not
+ * #svn_depth_unknown, then in addition to updating PATHS, also set
+ * their sticky ambient depth value to @a depth.
+ *
+ * If @a server_performs_filtering is TRUE, assume that the server handles
+ * the ambient depth filtering, so this doesn't have to be handled in the
+ * editor.
+ *
+ * If @a fetch_dirents_func is not NULL, the update editor may call this
+ * callback, when asked to perform a depth restricted update. It will do this
+ * before returning the editor to allow using the primary ra session for this.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_wc__get_update_editor(const svn_delta_editor_t **editor,
+                          void **edit_baton,
+                          svn_revnum_t *target_revision,
+                          svn_wc_context_t *wc_ctx,
+                          const char *anchor_abspath,
+                          const char *target_basename,
+                          svn_boolean_t use_commit_times,
+                          svn_depth_t depth,
+                          svn_boolean_t depth_is_sticky,
+                          svn_boolean_t allow_unver_obstructions,
+                          svn_boolean_t adds_as_modification,
+                          svn_boolean_t server_performs_filtering,
+                          svn_boolean_t clean_checkout,
+                          const char *diff3_cmd,
+                          const apr_array_header_t *preserved_exts,
+                          svn_wc_dirents_func_t fetch_dirents_func,
+                          void *fetch_dirents_baton,
+                          svn_wc_conflict_resolver_func2_t conflict_func,
+                          void *conflict_baton,
+                          svn_wc_external_update_t external_func,
+                          void *external_baton,
+                          svn_cancel_func_t cancel_func,
+                          void *cancel_baton,
+                          svn_wc_notify_func2_t notify_func,
+                          void *notify_baton,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool);
+
+
+/**
+ * A variant of svn_wc__get_update_editor().
+ *
+ * Set @a *editor and @a *edit_baton to an editor and baton for "switching"
+ * a working copy to a new @a switch_url.  (Right now, this URL must be
+ * within the same repository that the working copy already comes
+ * from.)  @a switch_url must not be @c NULL.
+ *
+ * All other parameters behave as for svn_wc__get_update_editor().
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_wc__get_switch_editor(const svn_delta_editor_t **editor,
+                          void **edit_baton,
+                          svn_revnum_t *target_revision,
+                          svn_wc_context_t *wc_ctx,
+                          const char *anchor_abspath,
+                          const char *target_basename,
+                          const char *switch_url,
+                          svn_boolean_t use_commit_times,
+                          svn_depth_t depth,
+                          svn_boolean_t depth_is_sticky,
+                          svn_boolean_t allow_unver_obstructions,
+                          svn_boolean_t server_performs_filtering,
+                          const char *diff3_cmd,
+                          const apr_array_header_t *preserved_exts,
+                          svn_wc_dirents_func_t fetch_dirents_func,
+                          void *fetch_dirents_baton,
+                          svn_wc_conflict_resolver_func2_t conflict_func,
+                          void *conflict_baton,
+                          svn_wc_external_update_t external_func,
+                          void *external_baton,
+                          svn_cancel_func_t cancel_func,
+                          void *cancel_baton,
+                          svn_wc_notify_func2_t notify_func,
+                          void *notify_baton,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool);
+
+
+
+/**
+ * Return an @a editor/@a edit_baton for diffing a working copy against the
+ * repository. The editor is allocated in @a result_pool; temporary
+ * calculations are performed in @a scratch_pool.
+ *
+ * This editor supports diffing either the actual files and properties in the
+ * working copy (when @a use_text_base is #FALSE), or the current pristine
+ * information (when @a use_text_base is #TRUE) against the editor driver.
+ *
+ * @a anchor_abspath/@a target represent the base of the hierarchy to be
+ * compared. The diff callback paths will be relative to this path.
+ *
+ * Diffs will be reported as valid relpaths, with @a anchor_abspath being
+ * the root ("").
+ *
+ * @a callbacks/@a callback_baton is the callback table to use.
+ *
+ * If @a depth is #svn_depth_empty, just diff exactly @a target or
+ * @a anchor_path if @a target is empty.  If #svn_depth_files then do the same
+ * and for top-level file entries as well (if any).  If
+ * #svn_depth_immediates, do the same as #svn_depth_files but also diff
+ * top-level subdirectories at #svn_depth_empty.  If #svn_depth_infinity,
+ * then diff fully recursively.
+ *
+ * @a ignore_ancestry determines whether paths that have discontinuous node
+ * ancestry are treated as delete/add or as simple modifications.  If
+ * @a ignore_ancestry is @c FALSE, then any discontinuous node ancestry will
+ * result in the diff given as a full delete followed by an add.
+ *
+ * @a show_copies_as_adds determines whether paths added with history will
+ * appear as a diff against their copy source, or whether such paths will
+ * appear as if they were newly added in their entirety.
+ *
+ * If @a use_git_diff_format is TRUE, copied paths will be treated as added
+ * if they weren't modified after being copied. This allows the callbacks
+ * to generate appropriate --git diff headers for such files.
+ *
+ * Normally, the difference from repository->working_copy is shown.
+ * If @a reverse_order is TRUE, then show working_copy->repository diffs.
+ *
+ * If @a cancel_func is non-NULL, it will be used along with @a cancel_baton
+ * to periodically check if the client has canceled the operation.
+ *
+ * @a changelist_filter is an array of <tt>const char *</tt> changelist
+ * names, used as a restrictive filter on items whose differences are
+ * reported; that is, don't generate diffs about any item unless
+ * it's a member of one of those changelists.  If @a changelist_filter is
+ * empty (or altogether @c NULL), no changelist filtering occurs.
+ *
+  * If @a server_performs_filtering is TRUE, assume that the server handles
+ * the ambient depth filtering, so this doesn't have to be handled in the
+ * editor.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_wc__get_diff_editor(const svn_delta_editor_t **editor,
+                        void **edit_baton,
+                        svn_wc_context_t *wc_ctx,
+                        const char *anchor_abspath,
+                        const char *target,
+                        svn_depth_t depth,
+                        svn_boolean_t ignore_ancestry,
+                        svn_boolean_t show_copies_as_adds,
+                        svn_boolean_t use_git_diff_format,
+                        svn_boolean_t use_text_base,
+                        svn_boolean_t reverse_order,
+                        svn_boolean_t server_performs_filtering,
+                        const apr_array_header_t *changelist_filter,
+                        const svn_wc_diff_callbacks4_t *callbacks,
+                        void *callback_baton,
+                        svn_cancel_func_t cancel_func,
+                        void *cancel_baton,
+                        apr_pool_t *result_pool,
+                        apr_pool_t *scratch_pool);
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/multi-layer-moves/subversion/include/svn_checksum.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/include/svn_checksum.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/include/svn_checksum.h (original)
+++ subversion/branches/multi-layer-moves/subversion/include/svn_checksum.h Mon Feb 13 10:10:43 2012
@@ -239,6 +239,14 @@ svn_checksum_final(svn_checksum_t **chec
 apr_size_t
 svn_checksum_size(const svn_checksum_t *checksum);
 
+/**
+ * Return @c TRUE iff CHECKSUM matches the checksum for the empty string.
+ *
+ * @since New in 1.8.
+ */
+svn_boolean_t
+svn_checksum_is_empty_checksum(svn_checksum_t *checksum);
+
 
 /**
  * Return an error of type #SVN_ERR_CHECKSUM_MISMATCH for @a actual and

Modified: subversion/branches/multi-layer-moves/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/include/svn_client.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/include/svn_client.h (original)
+++ subversion/branches/multi-layer-moves/subversion/include/svn_client.h Mon Feb 13 10:10:43 2012
@@ -2877,6 +2877,7 @@ svn_client_diff6(const apr_array_header_
                  svn_boolean_t no_diff_deleted,
                  svn_boolean_t show_copies_as_adds,
                  svn_boolean_t ignore_content_type,
+                 svn_boolean_t ignore_prop_diff,
                  svn_boolean_t use_git_diff_format,
                  const char *header_encoding,
                  svn_stream_t *outstream,
@@ -2886,7 +2887,8 @@ svn_client_diff6(const apr_array_header_
                  apr_pool_t *pool);
 
 /** Similar to svn_client_diff6(), but with @a outfile and @a errfile,
- * instead of @a outstream and @a errstream.
+ * instead of @a outstream and @a errstream, and always showing property
+ * changes.
  *
  * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.7.
@@ -3035,6 +3037,7 @@ svn_client_diff_peg6(const apr_array_hea
                      svn_boolean_t no_diff_deleted,
                      svn_boolean_t show_copies_as_adds,
                      svn_boolean_t ignore_content_type,
+                     svn_boolean_t ignore_prop_diff,
                      svn_boolean_t use_git_diff_format,
                      const char *header_encoding,
                      svn_stream_t *outstream,
@@ -3044,7 +3047,8 @@ svn_client_diff_peg6(const apr_array_hea
                      apr_pool_t *pool);
 
 /** Similar to svn_client_diff_peg6(), but with @a outfile and @a errfile,
- * instead of @a outstream and @a errstream.
+ * instead of @a outstream and @a errstream, and always showing property
+ * changes.
  *
  * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.7.

Modified: subversion/branches/multi-layer-moves/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/include/svn_config.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/include/svn_config.h (original)
+++ subversion/branches/multi-layer-moves/subversion/include/svn_config.h Mon Feb 13 10:10:43 2012
@@ -135,6 +135,8 @@ typedef struct svn_config_t svn_config_t
 #define SVN_CONFIG_OPTION_USE_SASL                  "use-sasl"
 #define SVN_CONFIG_OPTION_MIN_SSF                   "min-encryption"
 #define SVN_CONFIG_OPTION_MAX_SSF                   "max-encryption"
+/** @since New in 1.8. */
+#define SVN_CONFIG_SECTION_HOOKS_ENV            "hooks-env"
 
 /* For repository password database */
 #define SVN_CONFIG_SECTION_USERS                "users"

Modified: subversion/branches/multi-layer-moves/subversion/include/svn_delta.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-layer-moves/subversion/include/svn_delta.h?rev=1243461&r1=1243460&r2=1243461&view=diff
==============================================================================
--- subversion/branches/multi-layer-moves/subversion/include/svn_delta.h (original)
+++ subversion/branches/multi-layer-moves/subversion/include/svn_delta.h Mon Feb 13 10:10:43 2012
@@ -792,8 +792,9 @@ svn_txdelta_skip_svndiff_window(apr_file
  * number of operations later.  As a result, an editor driver must not
  * assume that an error from an editing function resulted from the
  * particular operation being detected.  Moreover, once an editing
- * function returns an error, the edit is dead; the only further
- * operation which may be called on the editor is abort_edit.
+ * function (including @c close_edit) returns an error, the edit is
+ * dead; the only further operation which may be called on the editor
+ * is @c abort_edit.
  */
 typedef struct svn_delta_editor_t
 {



Mime
View raw message