You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2014/02/06 09:45:09 UTC
svn commit: r1565116 [1/3] - in /subversion/branches/fsfs-ucsnorm: ./
build/ac-macros/ build/generator/ subversion/bindings/javahl/native/
subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/
subversion/bindings/javahl/src/org/apache/s...
Author: brane
Date: Thu Feb 6 08:45:07 2014
New Revision: 1565116
URL: http://svn.apache.org/r1565116
Log:
On the fsfs-ucsnorm branch: Sync with trunk up to r1565115.
Added:
subversion/branches/fsfs-ucsnorm/subversion/include/svn_client_mtcc.h
- copied unchanged from r1565115, subversion/trunk/subversion/include/svn_client_mtcc.h
subversion/branches/fsfs-ucsnorm/tools/buildbot/master/README
- copied unchanged from r1565115, subversion/trunk/tools/buildbot/master/README
Removed:
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mtcc.h
subversion/branches/fsfs-ucsnorm/tools/buildbot/master/Feeder.py
subversion/branches/fsfs-ucsnorm/tools/buildbot/master/SVNMailNotifier.py
subversion/branches/fsfs-ucsnorm/tools/buildbot/master/master.cfg
subversion/branches/fsfs-ucsnorm/tools/buildbot/master/private-sample.py
subversion/branches/fsfs-ucsnorm/tools/buildbot/master/public_html/
Modified:
subversion/branches/fsfs-ucsnorm/ (props changed)
subversion/branches/fsfs-ucsnorm/CHANGES
subversion/branches/fsfs-ucsnorm/build.conf
subversion/branches/fsfs-ucsnorm/build/ac-macros/java.m4
subversion/branches/fsfs-ucsnorm/build/generator/gen_win_dependencies.py
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/ClientContext.cpp
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.cpp
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.h
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.cpp
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.h
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/RemoteSessionContext.cpp
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java
subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_wc_private.h
subversion/branches/fsfs-ucsnorm/subversion/include/svn_client.h
subversion/branches/fsfs-ucsnorm/subversion/include/svn_error_codes.h
subversion/branches/fsfs-ucsnorm/subversion/include/svn_io.h
subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra.h
subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra_svn.h
subversion/branches/fsfs-ucsnorm/subversion/include/svn_repos.h
subversion/branches/fsfs-ucsnorm/subversion/include/svn_wc.h
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/add.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit_util.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy_foreign.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/diff.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/merge.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mergeinfo.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mtcc.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/patch.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/prop_commands.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/ra.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/revisions.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/util.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_delta/svndiff.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_delta/text_delta.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_base/lock.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_fs/cached_data.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_fs/cached_data.h
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_fs/dag.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_fs/recovery.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_fs/transaction.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_x/ (props changed)
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_x/cached_data.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_x/index.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_fs_x/pack.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_ra_serf/update.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_ra_svn/client.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_ra_svn/cyrus_auth.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_ra_svn/deprecated.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_ra_svn/editorp.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_ra_svn/marshal.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_ra_svn/ra_svn.h
subversion/branches/fsfs-ucsnorm/subversion/libsvn_ra_svn/streams.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_repos/deprecated.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_repos/load-fs-vtable.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_repos/load.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_repos/reporter.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_subr/cache-membuffer.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_subr/config_file.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_subr/deprecated.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_subr/hash.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_subr/nls.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_subr/packed_data.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_subr/sqlite.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_subr/stream.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_subr/subst.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_wc/adm_crawler.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_wc/adm_ops.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_wc/deprecated.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_wc/info.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_wc/node.c
subversion/branches/fsfs-ucsnorm/subversion/libsvn_wc/wc.h
subversion/branches/fsfs-ucsnorm/subversion/libsvn_wc/wc_db.c
subversion/branches/fsfs-ucsnorm/subversion/mod_authz_svn/mod_authz_svn.c
subversion/branches/fsfs-ucsnorm/subversion/mod_dav_svn/repos.c
subversion/branches/fsfs-ucsnorm/subversion/svnadmin/svnadmin.c
subversion/branches/fsfs-ucsnorm/subversion/svnmucc/svnmucc.c
subversion/branches/fsfs-ucsnorm/subversion/svnserve/serve.c
subversion/branches/fsfs-ucsnorm/subversion/svnserve/svnserve.c
subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/diff_tests.py
subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnadmin_tests.py
subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svntest/main.py
subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_client/client-test.c
subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_client/mtcc-test.c
subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_ra/ra-test.c
subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/spillbuf-test.c
subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/stream-test.c
subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/pristine-store-test.c
subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/utils.c
subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/wc-test.c
subversion/branches/fsfs-ucsnorm/subversion/tests/svn_test_fs.c
subversion/branches/fsfs-ucsnorm/tools/dev/unix-build/Makefile.svn
subversion/branches/fsfs-ucsnorm/tools/server-side/fsfs-stats.c
Propchange: subversion/branches/fsfs-ucsnorm/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1561502-1565115
Modified: subversion/branches/fsfs-ucsnorm/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/CHANGES?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/CHANGES (original)
+++ subversion/branches/fsfs-ucsnorm/CHANGES Thu Feb 6 08:45:07 2014
@@ -370,6 +370,53 @@ http://svn.apache.org/repos/asf/subversi
* swig-pl: make svn_auth_set_parameter() usable (r1553823)
+Version 1.8.6
+(12 Feb 2014, from /branches/1.8.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.8.6
+
+ User-visible changes:
+ - Client-side bugfixes:
+ * use CryptoAPI to validate intermediary certificates on Windows (r1564623)
+ * fix automatic relocate for wcs not at repository root (r1541638 et al)
+ * diff: fix when target is a drive root on Windows (r1541635)
+ * wc: improve performance when used with SQLite 3.8 (r1542765)
+ * copy: fix some scenarios that broke the working copy (r1560690)
+ * move: fix errors when moving files between an external and the parent
+ working copy (r1551524, r1551579)
+ * log: resolve performance regression in certain scenarios (r1553101 et al)
+ * merge: decrease work to detect differences between 3 files (r1548486)
+ * checkout: don't require flush support for symlinks on Windows (r1547774)
+ * commit: don't change file permissions inappropriately (issue #4440)
+ * commit: fix assertion due to invalid pool lifetime (r1553376 et al)
+ * version: don't cut off the distribution version on Linux (r1544878 et al)
+ * flush stdout before exiting to avoid information being lost (r1499470)
+ * status: fix missing sentinel value on warning codes (r1543145)
+
+ - Server-side bugfixes:
+ * reduce memory usage during checkout and export (r1564215)
+ * fsfs: create rep-cache.db with proper permissions (issue #3437)
+ * mod_dav_svn: prevent crashes with SVNListParentPath on (CVE-2014-0032)
+ * mod_dav_svn: fix SVNAllowBulkUpdates directive merging (r1548105)
+ * mod_dav_svn: include requested property changes in reports (r1557522)
+ * svnserve: correct default cache size in help text (r1563110)
+ * svnadmin dump: reduce size of dump files with '--deltas' (r1554978)
+
+ Developer-visible changes:
+ - API changes:
+ * numerous documentation fixes
+ * svn_client_commit_item3_dup() fix pool lifetime issues (r1550803)
+ * ra_serf: properly ask multiple certificate validation providers for
+ acceptance of certificate failures (r1535532)
+ * release internal fs objects when closing commit editor (r1555499)
+ * svn_client_proplist4() don't call the callback multiple times for
+ the same path in order to deliver inherited properties (r1549858 et al)
+
+ - Bindings:
+ * javahl: make test suite run without installing on OS X (r1535115)
+ * swig: fix building out of tarball on OS X (r1555654)
+ * swig-pl: fix with --enable-sqlite-compatibility-version (r1559009)
+
+
Version 1.8.5
(25 November 2013, from /branches/1.8.x)
http://svn.apache.org/repos/asf/subversion/tags/1.8.5
@@ -677,7 +724,7 @@ http://svn.apache.org/repos/asf/subversi
* decreased default http timeout for ra_serf (issue #3968)
* prevent ra_serf from corrupting the working copy (issue #3993)
* ra_serf transmits property changes inline to reduce requests (r1378927)
- * allow client to avoid SSL certificate prompts (issue #2410)
+ * by default avoid SSL certificate prompts in client (issue #2410)
* improve interactive resolution of property conflicts (r1387678 et al)
* make ra_serf raise an error upon delta-base mismatch (issue #4235)
* tune ra_svn transmit buffer handling (r1391788)
@@ -925,6 +972,25 @@ http://svn.apache.org/repos/asf/subversi
* fix some reference counting bugs in swig-py bindings (r1464899, r1466524)
+Version 1.7.15
+(12 Feb 2014, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.15
+
+ User-visible changes:
+ - Client-side bugfixes:
+ * copy: fix some scenarios that broke the working copy (r1560690)
+ * diff: fix regressions due to fixes in 1.7.14 (issue #4460)
+
+ - Server-side bugfixes:
+ * mod_dav_svn: prevent crashes with SVNListParentPath on (CVE-2014-0032)
+ * reduce memory usage during checkout and export (r1564215)
+
+ Developer-visible changes:
+ - General:
+ * fix failure in checkout_tests.py
+ * support compiling against Cyrus sasl 2.1.25 (r1404912, r1413402)
+
+
Version 1.7.14
(25 Nov 2013, from /branches/1.7.x)
http://svn.apache.org/repos/asf/subversion/tags/1.7.14
Modified: subversion/branches/fsfs-ucsnorm/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/build.conf?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/build.conf (original)
+++ subversion/branches/fsfs-ucsnorm/build.conf Thu Feb 6 08:45:07 2014
@@ -248,7 +248,7 @@ type = lib
path = subversion/libsvn_client
libs = libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr apriconv apr
install = lib
-msvc-export = svn_client.h private/svn_client_private.h
+msvc-export = svn_client.h svn_client_mtcc.h private/svn_client_private.h
# Routines for binary diffing and tree-deltas
[libsvn_delta]
@@ -1561,7 +1561,7 @@ install = tools
libs = libsvn_repos libsvn_fs libsvn_subr apr
[svn-populate-node-origins-index]
-description = Repository node origin cache populate tool
+description = Tool to populate a repository's node origins index
type = exe
path = tools/server-side
sources = svn-populate-node-origins-index.c
Modified: subversion/branches/fsfs-ucsnorm/build/ac-macros/java.m4
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/build/ac-macros/java.m4?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/build/ac-macros/java.m4 (original)
+++ subversion/branches/fsfs-ucsnorm/build/ac-macros/java.m4 Thu Feb 6 08:45:07 2014
@@ -194,7 +194,7 @@ AC_DEFUN(SVN_FIND_JDK,
if test "$enable_debugging" = "yes"; then
JAVAC_FLAGS="-g -Xlint -Xlint:unchecked -Xlint:serial -Xlint:path $JAVAC_FLAGS"
if test -z "$JAVAC_COMPAT_FLAGS"; then
- JAVAC_COMPAT_FLAGS="$JAVAC_FLAGS -Xlint:-unchecked -Xlint:-deprecation -Xlint:-dep-ann"
+ JAVAC_COMPAT_FLAGS="$JAVAC_FLAGS -Xlint:-unchecked -Xlint:-deprecation -Xlint:-dep-ann -Xlint:-rawtypes"
fi
fi
fi
Modified: subversion/branches/fsfs-ucsnorm/build/generator/gen_win_dependencies.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/build/generator/gen_win_dependencies.py?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/build/generator/gen_win_dependencies.py (original)
+++ subversion/branches/fsfs-ucsnorm/build/generator/gen_win_dependencies.py Thu Feb 6 08:45:07 2014
@@ -358,6 +358,7 @@ class GenDependenciesBase(gen_base.Gener
lib_dir = os.path.join(self.apr_path, 'LibR')
dll_dir = None
debug_dll_dir = None
+ dll_name = None
defines.extend(["APR_DECLARE_STATIC"])
if not os.path.isdir(lib_dir) and \
@@ -388,19 +389,20 @@ class GenDependenciesBase(gen_base.Gener
else:
dll_dir = os.path.join(self.apr_path, 'bin')
debug_dll_dir = None
-
- bin_files = os.listdir(dll_dir)
- if debug_dll_dir and os.path.isdir(debug_dll_dir):
- debug_bin_files = os.listdir(debug_dll_dir)
- else:
- debug_bin_files = bin_files
-
+
extra_bin = []
-
- for bin in bin_files:
- if bin in debug_bin_files:
- if re.match('^(lib)?apr[-_].*' + suffix + '(d)?.dll$', bin):
- extra_bin.append(bin)
+
+ if dll_dir:
+ bin_files = os.listdir(dll_dir)
+ if debug_dll_dir and os.path.isdir(debug_dll_dir):
+ debug_bin_files = os.listdir(debug_dll_dir)
+ else:
+ debug_bin_files = bin_files
+
+ for bin in bin_files:
+ if bin in debug_bin_files:
+ if re.match('^(lib)?apr[-_].*' + suffix + '(d)?.dll$', bin):
+ extra_bin.append(bin)
self._libraries['apr'] = SVNCommonLibrary('apr', inc_path, lib_dir, lib_name,
apr_version,
@@ -465,7 +467,8 @@ class GenDependenciesBase(gen_base.Gener
lib_dir = os.path.join(self.apr_util_path, 'LibR')
dll_dir = None
debug_dll_dir = None
- defines.extend(["APR_DECLARE_STATIC"])
+ dll_name = None
+ defines.extend(["APU_DECLARE_STATIC"])
if not os.path.isdir(lib_dir) and \
os.path.isfile(os.path.join(self.apr_util_path, 'lib', lib_name)):
@@ -494,18 +497,19 @@ class GenDependenciesBase(gen_base.Gener
dll_dir = os.path.join(self.apr_util_path, 'bin')
debug_dll_dir = None
- bin_files = os.listdir(dll_dir)
- if debug_dll_dir and os.path.isdir(debug_dll_dir):
- debug_bin_files = os.listdir(debug_dll_dir)
- else:
- debug_bin_files = bin_files
-
extra_bin = []
+
+ if dll_dir:
+ bin_files = os.listdir(dll_dir)
+ if debug_dll_dir and os.path.isdir(debug_dll_dir):
+ debug_bin_files = os.listdir(debug_dll_dir)
+ else:
+ debug_bin_files = bin_files
- for bin in bin_files:
- if bin in debug_bin_files:
- if re.match('^(lib)?aprutil[-_].*' + suffix + '(d)?.dll$', bin):
- extra_bin.append(bin)
+ for bin in bin_files:
+ if bin in debug_bin_files:
+ if re.match('^(lib)?aprutil[-_].*' + suffix + '(d)?.dll$', bin):
+ extra_bin.append(bin)
self._libraries['aprutil'] = SVNCommonLibrary('apr-util', inc_path, lib_dir,
lib_name,
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/ClientContext.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/ClientContext.cpp?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/ClientContext.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/ClientContext.cpp Thu Feb 6 08:45:07 2014
@@ -75,7 +75,6 @@ ClientContext::ClientContext(jobject jsv
{
m_context->check_tunnel_func = checkTunnel;
m_context->open_tunnel_func = openTunnel;
- m_context->close_tunnel_func = closeTunnel;
m_context->tunnel_baton = m_jtunnelcb;
}
}
@@ -91,14 +90,12 @@ void ClientContext::setTunnelCallback(jo
{
m_context->check_tunnel_func = checkTunnel;
m_context->open_tunnel_func = openTunnel;
- m_context->close_tunnel_func = closeTunnel;
m_context->tunnel_baton = m_jtunnelcb;
}
else
{
m_context->check_tunnel_func = NULL;
m_context->open_tunnel_func = NULL;
- m_context->close_tunnel_func = NULL;
m_context->tunnel_baton = NULL;
}
}
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.cpp?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.cpp Thu Feb 6 08:45:07 2014
@@ -46,6 +46,7 @@
#include <apr_time.h>
#include "svn_pools.h"
+#include "svn_error.h"
#include "svn_fs.h"
#include "svn_ra.h"
#include "svn_utf.h"
@@ -117,6 +118,34 @@ bool initialize_jni_util(JNIEnv *env)
return JNIUtil::JNIGlobalInit(env);
}
+namespace {
+
+volatile svn_atomic_t *gentle_crash_write_loc = NULL;
+
+svn_error_t *
+gently_crash_the_jvm(svn_boolean_t can_return,
+ const char *file, int line, const char *expr)
+{
+ if (!can_return)
+ {
+ // Try not to abort; aborting prevents the JVM from creating
+ // a crash log, which is oh so useful for debugging.
+ // We can't just raise a SEGV signal, either, because it will
+ // be not be caught in the context that we're interested in
+ // getting the stack trace from.
+
+ // Try reading from and writing to the zero page
+ const svn_atomic_t zeropage = svn_atomic_read(gentle_crash_write_loc);
+ svn_atomic_set(gentle_crash_write_loc, zeropage);
+ }
+
+ // Forward to the standard malfunction handler, which does call
+ // abort when !can_return; this will only happen if the write to the
+ // zero page did not cause a SEGV.
+ return svn_error_raise_on_malfunction(can_return, file, line, expr);
+}
+} // Anonymous namespace
+
/**
* Initialize the environment for all requests.
* This method must be called in a single-threaded context.
@@ -244,6 +273,10 @@ bool JNIUtil::JNIGlobalInit(JNIEnv *env)
if (isExceptionThrown())
return false;
+ // Set a malfunction handler that tries not to call abort, because
+ // that would prevent the JVM from creating a crash and stack log file.
+ svn_error_set_malfunction_handler(gently_crash_the_jvm);
+
return true;
}
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.h Thu Feb 6 08:45:07 2014
@@ -285,4 +285,13 @@ class JNIUtil
SVN_ERR(JNIUtil::checkJavaException((errorcode))); \
} while(0)
+#define SVN_JNI_CATCH_VOID(statement) \
+ do { \
+ do { statement; } while(0); \
+ if (JNIUtil::getEnv()->ExceptionCheck()) { \
+ JNIUtil::getEnv()->ExceptionClear(); \
+ return; \
+ } \
+ } while(0)
+
#endif // JNIUTIL_H
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.cpp?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.cpp Thu Feb 6 08:45:07 2014
@@ -489,7 +489,8 @@ public:
: request_in(NULL),
request_out(NULL),
response_in(NULL),
- response_out(NULL)
+ response_out(NULL),
+ jclosecb(NULL)
{
#if APR_VERSION_AT_LEAST(1, 3, 0)
status = apr_file_pipe_create_ex(&request_in, &request_out,
@@ -519,6 +520,7 @@ public:
apr_file_t *response_in;
apr_file_t *response_out;
apr_status_t status;
+ jobject jclosecb;
};
jobject create_Channel(const char *class_name, JNIEnv *env, apr_file_t *fd)
@@ -572,10 +574,13 @@ OperationContext::checkTunnel(void *tunn
}
svn_error_t *
-OperationContext::openTunnel(apr_file_t **request, apr_file_t **response,
- void **tunnel_context, void *tunnel_baton,
+OperationContext::openTunnel(svn_stream_t **request, svn_stream_t **response,
+ svn_ra_close_tunnel_func_t *close_func,
+ void **close_baton,
+ void *tunnel_baton,
const char *tunnel_name, const char *user,
const char *hostname, int port,
+ svn_cancel_func_t cancel_func, void *cancel_baton,
apr_pool_t *pool)
{
TunnelContext *tc = new TunnelContext(pool);
@@ -586,9 +591,10 @@ OperationContext::openTunnel(apr_file_t
svn_error_wrap_apr(tc->status, _("Could not open tunnel streams")));
}
- *tunnel_context = tc;
- *request = tc->request_out;
- *response = tc->response_in;
+ *close_func = closeTunnel;
+ *close_baton = tc;
+ *request = svn_stream_from_aprfile2(tc->request_out, FALSE, pool);
+ *response = svn_stream_from_aprfile2(tc->response_in, FALSE, pool);
JNIEnv *env = JNIUtil::getEnv();
@@ -613,60 +619,47 @@ OperationContext::openTunnel(apr_file_t
jclass cls = env->FindClass(JAVA_PACKAGE"/callback/TunnelAgent");
SVN_JNI_CATCH(, SVN_ERR_BASE);
SVN_JNI_CATCH(
- mid = env->GetMethodID(cls, "openTunnel",
- "(Ljava/nio/channels/ReadableByteChannel;"
- "Ljava/nio/channels/WritableByteChannel;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;I)V"),
+ mid = env->GetMethodID(
+ cls, "openTunnel",
+ "(Ljava/nio/channels/ReadableByteChannel;"
+ "Ljava/nio/channels/WritableByteChannel;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;I)"
+ "L"JAVA_PACKAGE"/callback/TunnelAgent$CloseTunnelCallback;"),
SVN_ERR_BASE);
}
jobject jtunnelcb = jobject(tunnel_baton);
SVN_JNI_CATCH(
- env->CallVoidMethod(jtunnelcb, mid, jrequest, jresponse,
- jtunnel_name, juser, jhostname, jint(port)),
+ tc->jclosecb = env->CallObjectMethod(
+ jtunnelcb, mid, jrequest, jresponse,
+ jtunnel_name, juser, jhostname, jint(port)),
SVN_ERR_BASE);
return SVN_NO_ERROR;
}
-svn_error_t *
-OperationContext::closeTunnel(void *tunnel_context, void *tunnel_baton,
- const char *tunnel_name, const char *user,
- const char *hostname, int port)
+void
+OperationContext::closeTunnel(void *tunnel_context, void *)
{
- delete static_cast<TunnelContext*>(tunnel_context);
-
- jstring jtunnel_name = JNIUtil::makeJString(tunnel_name);
- SVN_JNI_CATCH(, SVN_ERR_BASE);
-
- jstring juser = JNIUtil::makeJString(user);
- SVN_JNI_CATCH(, SVN_ERR_BASE);
+ TunnelContext* tc = static_cast<TunnelContext*>(tunnel_context);
+ jobject jclosecb = tc->jclosecb;
+ delete tc;
- jstring jhostname = JNIUtil::makeJString(hostname);
- SVN_JNI_CATCH(, SVN_ERR_BASE);
+ if (!jclosecb)
+ return;
JNIEnv *env = JNIUtil::getEnv();
static jmethodID mid = 0;
if (0 == mid)
{
- jclass cls = env->FindClass(JAVA_PACKAGE"/callback/TunnelAgent");
- SVN_JNI_CATCH(, SVN_ERR_BASE);
- SVN_JNI_CATCH(
- mid = env->GetMethodID(cls, "closeTunnel",
- "(Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;I)V"),
- SVN_ERR_BASE);
+ jclass cls;
+ SVN_JNI_CATCH_VOID(
+ cls= env->FindClass(
+ JAVA_PACKAGE"/callback/TunnelAgent$CloseTunnelCallback"));
+ SVN_JNI_CATCH_VOID(mid = env->GetMethodID(cls, "closeTunnel", "()V"));
}
-
- jobject jtunnelcb = jobject(tunnel_baton);
- SVN_JNI_CATCH(
- env->CallVoidMethod(jtunnelcb, mid,
- jtunnel_name, juser, jhostname, jint(port)),
- SVN_ERR_BASE);
-
- return SVN_NO_ERROR;
+ SVN_JNI_CATCH_VOID(env->CallVoidMethod(jclosecb, mid));
}
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.h Thu Feb 6 08:45:07 2014
@@ -69,16 +69,16 @@ class OperationContext
void *tunnel_baton, const char *tunnel_name);
static svn_error_t *openTunnel(
- apr_file_t **request, apr_file_t **response,
- void **tunnel_context, void *tunnel_baton,
+ svn_stream_t **request, svn_stream_t **response,
+ svn_ra_close_tunnel_func_t *close_func, void **close_baton,
+ void *tunnel_baton,
const char *tunnel_name, const char *user,
const char *hostname, int port,
+ svn_cancel_func_t cancel_func, void *cancel_baton,
apr_pool_t *pool);
- static svn_error_t *closeTunnel(
- void *tunnel_context, void *tunnel_baton,
- const char *tunnel_name, const char *user,
- const char *hostname, int port);
+ static void closeTunnel(
+ void *tunnel_context, void *tunnel_baton);
public:
OperationContext(SVN::Pool &pool);
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/RemoteSessionContext.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/RemoteSessionContext.cpp?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/RemoteSessionContext.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/RemoteSessionContext.cpp Thu Feb 6 08:45:07 2014
@@ -75,7 +75,6 @@ RemoteSessionContext::RemoteSessionConte
{
m_raCallbacks->check_tunnel_func = checkTunnel;
m_raCallbacks->open_tunnel_func = openTunnel;
- m_raCallbacks->close_tunnel_func = closeTunnel;
m_raCallbacks->tunnel_baton = m_jtunnelcb;
}
}
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java Thu Feb 6 08:45:07 2014
@@ -50,6 +50,22 @@ public interface TunnelAgent
boolean checkTunnel(String name);
/**
+ * Callback interface returned from {@link #openTunnel()}.
+ */
+ public static interface CloseTunnelCallback
+ {
+ /**
+ * This callback method is called when a tunnel needs to be closed
+ * and the request and response streams detached from it.
+ * <p>
+ * <b>Note:</b> Errors on connection-close are not propagated
+ * to the implementation, therefore this method cannot throw
+ * any exceptions.
+ */
+ void closeTunnel();
+ }
+
+ /**
* This callback method is called when a tunnel needs to be
* created and the request and response streams attached to it.
* @param request The request stream of the tunnel. The tunnel
@@ -63,21 +79,16 @@ public interface TunnelAgent
* @param user the tunnel username
* @param hostname the host part of the svn+tunnel:// URL
* @param port the port part of the svn+tunnel:// URL
+ *
+ * @return an instance od {@link CloseTunnelCallback}, which will
+ * be invoked when the connection is closed, or
+ * <code>null</code>.
+ *
* @throws any exception will abort the connection
*/
- void openTunnel(ReadableByteChannel request, WritableByteChannel response,
- String name, String user, String hostname, int port)
- throws Throwable;
-
- /**
- * This callback method is called when a tunnel needs to be closed
- * and the request and response streams detached from it.
- * @param name the name of the tunnel, as in
- * <tt>svn+</tt><em>name</em><tt>://...</tt>
- * @param user the tunnel username
- * @param hostname the host part of the svn+tunnel:// URL
- * @param port the port part of the svn+tunnel:// URL
- */
- void closeTunnel(String name, String user, String hostname, int port)
+ CloseTunnelCallback openTunnel(ReadableByteChannel request,
+ WritableByteChannel response,
+ String name, String user,
+ String hostname, int port)
throws Throwable;
}
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java Thu Feb 6 08:45:07 2014
@@ -405,7 +405,7 @@ public class RemoteSession extends JNIOb
/*
* Private helper methods.
*/
- private final static void maybe_clear(Map clearable)
+ private final static<K,V> void maybe_clear(Map<K,V> clearable)
{
if (clearable != null && !clearable.isEmpty())
try {
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java Thu Feb 6 08:45:07 2014
@@ -104,8 +104,10 @@ public class RevisionRange implements Co
try
{
long revNum = Long.parseLong(revisionElement.trim());
- this.from = new Revision.Number(revNum);
- this.to = this.from;
+ if (revNum <= 0)
+ return;
+ this.to = new Revision.Number(revNum);
+ this.from = new Revision.Number(revNum - 1);
}
catch (NumberFormatException e)
{
@@ -133,8 +135,17 @@ public class RevisionRange implements Co
{
if (from != null && to != null)
{
- String rep = (from.equals(to) ? from.toString()
- : from.toString() + '-' + to.toString());
+ String rep;
+
+ if (from.getKind() == Revision.Kind.number
+ && to.getKind() == Revision.Kind.number
+ && (((Revision.Number)from).getNumber() + 1
+ == ((Revision.Number)to).getNumber()))
+ rep = to.toString();
+ else if (from.equals(to)) // Such ranges should never happen
+ rep = from.toString();
+ else
+ rep = from.toString() + '-' + to.toString();
if (!inheritable)
return rep + '*';
return rep;
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Thu Feb 6 08:45:07 2014
@@ -3933,30 +3933,37 @@ public class BasicTests extends SVNTests
assertEquals(1, result.size());
}
- private class Tunnel extends Thread implements TunnelAgent
+ private class Tunnel extends Thread
+ implements TunnelAgent, TunnelAgent.CloseTunnelCallback
{
public boolean checkTunnel(String name)
{
return name.equals("test");
}
- public void openTunnel(ReadableByteChannel request,
- WritableByteChannel response,
- String name, String user,
- String hostname, int port)
+ public TunnelAgent.CloseTunnelCallback
+ openTunnel(ReadableByteChannel request,
+ WritableByteChannel response,
+ String name, String user,
+ String hostname, int port)
{
this.request = request;
this.response = response;
start();
+ return this;
}
- public void closeTunnel(String name, String user,
- String hostname, int port)
- throws Throwable
- {
- request.close();
- join();
- response.close();
+ public void closeTunnel()
+ {
+ Throwable t = null;
+ try {
+ request.close();
+ join();
+ response.close();
+ } catch (Throwable ex) {
+ t = ex;
+ }
+ assertEquals("No exception thrown", null, t);
}
private ReadableByteChannel request;
Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java Thu Feb 6 08:45:07 2014
@@ -71,7 +71,7 @@ public class RunTests
try
{
Class<?> clazz = Class.forName(className);
- final Class<?>[] argTypes = new Class[] { String.class };
+ final Class<?>[] argTypes = new Class<?>[] { String.class };
Constructor<?> ctor =
clazz.getDeclaredConstructor(argTypes);
methodName = methodName.substring(i + 1);
Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_wc_private.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_wc_private.h Thu Feb 6 08:45:07 2014
@@ -465,18 +465,6 @@ svn_wc__node_get_repos_info(svn_revnum_t
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
-
-
-/**
- * Get the depth of @a local_abspath using @a wc_ctx. If @a local_abspath is
- * not in the working copy, return @c SVN_ERR_WC_PATH_NOT_FOUND.
- */
-svn_error_t *
-svn_wc__node_get_depth(svn_depth_t *depth,
- svn_wc_context_t *wc_ctx,
- const char *local_abspath,
- apr_pool_t *scratch_pool);
-
/**
* Get the changed revision, date and author for @a local_abspath using @a
* wc_ctx. Allocate the return values in @a result_pool; use @a scratch_pool
@@ -524,6 +512,8 @@ 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 not NULL, set @a depth, to the recorded depth on @a local_abspath.
+ *
* 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
@@ -542,6 +532,7 @@ svn_wc__node_get_origin(svn_boolean_t *i
const char **repos_relpath,
const char **repos_root_url,
const char **repos_uuid,
+ svn_depth_t *depth,
const char **copy_root_abspath,
svn_wc_context_t *wc_ctx,
const char *local_abspath,
@@ -550,18 +541,6 @@ svn_wc__node_get_origin(svn_boolean_t *i
apr_pool_t *scratch_pool);
/**
- * Set @a *is_deleted to TRUE if @a local_abspath is deleted, using
- * @a wc_ctx. If @a local_abspath is not in the working copy, return
- * @c SVN_ERR_WC_PATH_NOT_FOUND. Use @a scratch_pool for all temporary
- * allocations.
- */
-svn_error_t *
-svn_wc__node_is_status_deleted(svn_boolean_t *is_deleted,
- svn_wc_context_t *wc_ctx,
- const char *local_abspath,
- apr_pool_t *scratch_pool);
-
-/**
* Set @a *deleted_ancestor_abspath to the root of the delete operation
* that deleted @a local_abspath. If @a local_abspath itself was deleted
* and has no deleted ancestor, @a *deleted_ancestor_abspath will equal
Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_client.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_client.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_client.h Thu Feb 6 08:45:07 2014
@@ -1040,17 +1040,7 @@ typedef struct svn_client_ctx_t
*/
svn_ra_open_tunnel_func_t open_tunnel_func;
- /** Close-tunnel callback
- *
- * If not @c NULL, this callback will be invoked when the pool that
- * owns the connection created by the open_tunnel callback is
- * cleared or destroyed. This callback is used only for ra_svn and
- * ignored by the other RA modules.
- * @since New in 1.9.
- */
- svn_ra_close_tunnel_func_t close_tunnel_func;
-
- /** A baton used with open_tunnel_func and close_tunnel_func.
+ /** The baton used with check_tunnel_func and open_tunnel_func.
* @since New in 1.9.
*/
void *tunnel_baton;
@@ -6653,189 +6643,6 @@ svn_client_open_ra_session(svn_ra_sessio
/** @} end group: Client session related functions */
-/**
- *
- * @defgroup clnt_mtcc Multi Command Context related functions
- *
- * @{
- *
- */
-
-/** This is a structure which stores a list of repository commands
- * that can be played to a repository as a single operation
- *
- * Use svn_client_mtcc_create() to create instances
- *
- * @since New in 1.9.
- */
-typedef struct svn_client_mtcc_t svn_client_mtcc_t;
-
-/** Creates a new multicommand context for an operation on @a anchor_url and
- * its descendants.
- *
- * Allocate the context in @a result_pool and perform temporary allocations in
- * @a scratch_pool.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_create(svn_client_mtcc_t **mtcc,
- const char *anchor_url,
- svn_revnum_t base_revision,
- svn_client_ctx_t *ctx,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
-/** Adds a file add operation of @a relpath to @a mtcc. If @a src_checksum
- * is not null it will be provided to the repository to verify if the file
- * was transfered succesfull.
- *
- * Perform temporary allocations in @a scratch_pool.
- *
- * @note The current implementation keeps @a src_stream open until @a mtcc
- * is committed.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_add_add_file(const char *relpath,
- svn_stream_t *src_stream,
- const svn_checksum_t *src_checksum,
- svn_client_mtcc_t *mtcc,
- apr_pool_t *scratch_pool);
-
-/** Adds a copy operation of the node @a src_relpath at revision @a revision
- * to @a dst_relpath to @a mtcc.
- *
- * Perform temporary allocations in @a scratch_pool.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_add_copy(const char *src_relpath,
- svn_revnum_t revision,
- const char *dst_relpath,
- svn_client_mtcc_t *mtcc,
- apr_pool_t *scratch_pool);
-
-/** Adds a delete of @a relpath to @a mtcc.
- *
- * Perform temporary allocations in @a scratch_pool.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_add_delete(const char *relpath,
- svn_client_mtcc_t *mtcc,
- apr_pool_t *scratch_pool);
-
-/** Adds an mkdir operation of @a relpath to @a mtcc.
- *
- * Perform temporary allocations in @a scratch_pool.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_add_mkdir(const char *relpath,
- svn_client_mtcc_t *mtcc,
- apr_pool_t *scratch_pool);
-
-
-/** Adds a move operation of the node @a src_relpath to @a dst_relpath to
- * @a mtcc.
- *
- * Perform temporary allocations in @a scratch_pool.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_add_move(const char *src_relpath,
- const char *dst_relpath,
- svn_client_mtcc_t *mtcc,
- apr_pool_t *scratch_pool);
-
-/** Adds a propset operation for the property @a propname to @a propval
- * (which can be NULL for a delete) on @a relpath to @a mtcc.
- *
- * If @a skip_checks is not FALSE Subversion defined properties are verified
- * for correctness like svn_client_propset_remote()
- *
- * Perform temporary allocations in @a scratch_pool.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_add_propset(const char *relpath,
- const char *propname,
- const svn_string_t *propval,
- svn_boolean_t skip_checks,
- svn_client_mtcc_t *mtcc,
- apr_pool_t *scratch_pool);
-
-
-/** Adds an update file operation for @a relpath to @a mtcc.
- *
- * The final version of the file is provided with @a src_stream. If @a
- * src_checksum is provided it will be provided to the repository to verify
- * the final result.
- *
- * If @a base_checksum is provided it will be used by the repository to verify
- * if the base file matches this checksum.
- *
- * If @a base_stream is not NULL only the binary diff from @a base_stream to
- * @a src_stream is written to the repository.
- *
- * Perform temporary allocations in @a scratch_pool.
- *
- * @note Callers should assume that the mtcc requires @a src_stream and @a
- * base_stream to be valid until @a mtcc is committed.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_add_update_file(const char *relpath,
- svn_stream_t *src_stream,
- const svn_checksum_t *src_checksum,
- svn_stream_t *base_stream,
- const svn_checksum_t *base_checksum,
- svn_client_mtcc_t *mtcc,
- apr_pool_t *scratch_pool);
-
-/** Obtains the kind of node at @a relpath in the current state of @a mtcc.
- * This value might be from the cache (in case of modifications, copies)
- * or fetched from the repository.
- *
- * If @a check_repository is TRUE, verify the node type with the repository at
- * least once and cache the result for further checks.
- *
- * When a node does not exist this functions sets @a *kind to @c svn_node_node.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_check_path(svn_node_kind_t *kind,
- const char *relpath,
- svn_boolean_t check_repository,
- svn_client_mtcc_t *mtcc,
- apr_pool_t *scratch_pool);
-
-/** Commits all operations stored in @a mtcc as a new revision and destroys
- * @a mtcc.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_client_mtcc_commit(apr_hash_t *revprop_table,
- svn_commit_callback2_t commit_callback,
- void *commit_baton,
- svn_client_mtcc_t *mtcc,
- apr_pool_t *scratch_pool);
-
-
-/** @} end group: Multi Command Context related functions */
-
-
-
/** @} */
#ifdef __cplusplus
Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_error_codes.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_error_codes.h Thu Feb 6 08:45:07 2014
@@ -322,6 +322,11 @@ SVN_ERROR_START
SVN_ERR_STREAM_CATEGORY_START + 3,
"Stream doesn't support seeking")
+ /** Since New in 1.9. */
+ SVN_ERRDEF(SVN_ERR_STREAM_NOT_SUPPORTED,
+ SVN_ERR_STREAM_CATEGORY_START + 4,
+ "Stream doesn't support this capability")
+
/* node errors */
SVN_ERRDEF(SVN_ERR_NODE_UNKNOWN_KIND,
Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_io.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_io.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_io.h Thu Feb 6 08:45:07 2014
@@ -831,14 +831,16 @@ svn_io_dir_file_copy(const char *src_pat
* On entry to the handler, the pointed-to value should be the amount
* of data which can be read or the amount of data to write. When the
* handler returns, the value is reset to the amount of data actually
- * read or written. Handlers are obliged to complete a read or write
- * to the maximum extent possible; thus, a short read with no
- * associated error implies the end of the input stream, and a short
- * write should never occur without an associated error.
- *
- * In Subversion 1.7 reset support was added as an optional feature of
- * streams. If a stream implements resetting it allows reading the data
- * again after a successful call to svn_stream_reset().
+ * read or written. The write and full read handler are obliged to
+ * complete a read or write to the maximum extent possible; thus, a
+ * short read with no associated error implies the end of the input
+ * stream, and a short write should never occur without an associated
+ * error. In Subversion 1.9 the stream api was extended to also support
+ * limited reads via the new svn_stream_read2() api.
+ *
+ * In Subversion 1.7 mark, seek and reset support was added as an optional
+ * feature of streams. If a stream implements resetting it allows reading
+ * the data again after a successful call to svn_stream_reset().
*/
typedef struct svn_stream_t svn_stream_t;
@@ -888,7 +890,15 @@ typedef svn_error_t *(*svn_stream_mark_f
* @since New in 1.7.
*/
typedef svn_error_t *(*svn_stream_seek_fn_t)(void *baton,
- const svn_stream_mark_t *mark);
+ const svn_stream_mark_t *mark);
+
+/** Poll handler for generic streams that support incomplete reads, @see
+ * svn_stream_t and svn_stream_data_available().
+ *
+ * @since New in 1.9.
+ */
+typedef svn_error_t *(*svn_stream_data_available_fn_t)(void *baton,
+ svn_boolean_t *data_available);
/** Create a generic stream. @see svn_stream_t. */
svn_stream_t *
@@ -900,7 +910,24 @@ void
svn_stream_set_baton(svn_stream_t *stream,
void *baton);
-/** Set @a stream's read function to @a read_fn */
+/** Set @a stream's read functions to @a read_fn and @a read_full_fn. If
+ * @a read_full_fn is NULL a default implementation based on multiple calls
+ * to @a read_fn will be used.
+ *
+ * @since New in 1.9.
+ */
+void
+svn_stream_set_read2(svn_stream_t *stream,
+ svn_read_fn_t read_fn,
+ svn_read_fn_t read_full_fn);
+
+/** Set @a stream's read function to @a read_fn.
+ *
+ * This function sets only the full read function to read_fn.
+ *
+ * @deprecated Provided for backward compatibility with the 1.8 API.
+ */
+SVN_DEPRECATED
void
svn_stream_set_read(svn_stream_t *stream,
svn_read_fn_t read_fn);
@@ -939,6 +966,14 @@ void
svn_stream_set_seek(svn_stream_t *stream,
svn_stream_seek_fn_t seek_fn);
+/** Set @a stream's data available function to @a data_available_fn
+ *
+ * @since New in 1.9.
+ */
+void
+svn_stream_set_data_available(svn_stream_t *stream,
+ svn_stream_data_available_fn_t data_available);
+
/** Create a stream that is empty for reading and infinite for writing. */
svn_stream_t *
svn_stream_empty(apr_pool_t *pool);
@@ -1172,7 +1207,40 @@ svn_stream_checksummed(svn_stream_t *str
svn_boolean_t read_all,
apr_pool_t *pool);
-/** Read from a generic stream. @see svn_stream_t. */
+/** Read from a generic stream until @a buffer is filled upto @a *len or
+ * until EOF is reached. @see svn_stream_t
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_stream_read_full(svn_stream_t *stream,
+ char *buffer,
+ apr_size_t *len);
+
+/** Read all currently available upto @a *len into @a buffer. Use
+ * svn_stream_read_full() if you want to wait for the buffer to be filled
+ * or EOF. If the stream doesn't support limited reads this function will
+ * return an #SVN_ERR_STREAM_NOT_SUPPORTED error.
+ *
+ * A 0 byte read signals the end of the stream.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_stream_read2(svn_stream_t *stream,
+ char *buffer,
+ apr_size_t *len);
+
+
+/** Read from a generic stream until the buffer is completely filled or EOF.
+ * @see svn_stream_t.
+ *
+ * @note This function is a wrapper of svn_stream_read_full() now, which name
+ * better documents the behavior of this function.
+ *
+ * @deprecated Provided for backward compatibilty with the 1.8 API
+ */
+SVN_DEPRECATED
svn_error_t *
svn_stream_read(svn_stream_t *stream,
char *buffer,
@@ -1248,6 +1316,20 @@ svn_stream_mark(svn_stream_t *stream,
svn_error_t *
svn_stream_seek(svn_stream_t *stream, const svn_stream_mark_t *mark);
+/** When a stream supports polling for available data, obtain a boolean
+ * indicating whether data is waiting to be read. If the stream doesn't
+ * support polling this function returns a #SVN_ERR_STREAM_NOT_SUPPORTED
+ * error.
+ *
+ * If the data_available callback is implemented and the stream is at the end
+ * the stream will set @a *data_available to FALSE.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_stream_data_available(svn_stream_t *stream,
+ svn_boolean_t *data_available);
+
/** Return a writable stream which, when written to, writes to both of the
* underlying streams. Both of these streams will be closed upon closure of
* the returned stream; use svn_stream_disown() if this is not the desired
Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra.h Thu Feb 6 08:45:07 2014
@@ -284,47 +284,50 @@ typedef svn_boolean_t (*svn_ra_check_tun
void *tunnel_baton, const char *tunnel_name);
/**
+ * Callback function for closing a tunnel in ra_svn.
+ *
+ * This function will be called when the pool that owns the tunnel
+ * connection is cleared or destroyed.
+ *
+ * @a tunnel_context is the baton as returned from the
+ * svn_ra_open_tunnel_func_t.
+ *
+ * @a tunnel_baton was returned by the open-tunnel callback.
+ *
+ * @since New in 1.9.
+ */
+typedef void (*svn_ra_close_tunnel_func_t)(
+ void *close_baton, void *tunnel_baton);
+
+/**
* Callback function for opening a tunnel in ra_svn.
*
* Given the @a tunnel_name, tunnel @a user and server @a hostname and
* @a port, open a tunnel to the server and return its file handles,
* which are owned by @a pool, in @a request and @a response.
*
- * @a request and @a response are the standard input and output,
+ * @a request and @a response represent the standard input and output,
* respectively, of the process on the other end of the tunnel.
*
- * @a tunnel_context will be passed on to the close-unnel callback.
+ * If @a *close_func is set it will be called with @a close_baton when
+ * the tunnel is closed.
*
- * @a tunnel_baton is the baton as originally passed to ra_open.
+ * The optional @a cancel_func callback can be invoked as usual to allow
+ * the user to preempt potentially lengthy operations.
+ *
+ * @a tunnel_baton is the baton as set in the callbacks.
*
* @since New in 1.9.
*/
typedef svn_error_t *(*svn_ra_open_tunnel_func_t)(
- apr_file_t **request, apr_file_t **response,
- void **tunnel_context, void *tunnel_baton,
+ svn_stream_t **request, svn_stream_t **response,
+ svn_ra_close_tunnel_func_t *close_func, void **close_baton,
+ void *tunnel_baton,
const char *tunnel_name, const char *user,
const char *hostname, int port,
+ svn_cancel_func_t cancel_func, void *cancel_baton,
apr_pool_t *pool);
-/**
- * Callback function for closing a tunnel in ra_svn.
- *
- * This function will be called when the pool that owns the tunnel
- * connection is cleared or destroyed. It receives the @a baton that
- * was created by the open-tunnel callback, and the same
- * @a tunnel_name, @a user, @a hostname and @a port parameters.
- *
- * @a tunel_baton was returned by the open-tunnel callback.
- *
- * @a open_baton is the baton as originally passed to ra_open.
- *
- * @since New in 1.9.
- */
-typedef svn_error_t *(*svn_ra_close_tunnel_func_t)(
- void *tunnel_context, void *tunnel_baton,
- const char *tunnel_name, const char *user,
- const char *hostname, int port);
-
/**
* The update Reporter.
@@ -614,16 +617,6 @@ typedef struct svn_ra_callbacks2_t
*/
svn_ra_open_tunnel_func_t open_tunnel_func;
- /** Close-tunnel callback
- *
- * If not @c NULL, this callback will be invoked when the pool that
- * owns the connection created by the open_tunnel callback is
- * cleared or destroyed. This callback is used only for ra_svn and
- * ignored by the other RA modules.
- * @since New in 1.9.
- */
- svn_ra_close_tunnel_func_t close_tunnel_func;
-
/** A baton used with open_tunnel_func and close_tunnel_func.
* @since New in 1.9.
*/
Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra_svn.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_ra_svn.h Thu Feb 6 08:45:07 2014
@@ -165,9 +165,9 @@ typedef struct svn_ra_svn_item_t
typedef svn_error_t *(*svn_ra_svn_edit_callback)(void *baton);
/** Initialize a connection structure for the given socket or
- * input/output files.
+ * input/output streams.
*
- * Either @a sock or @a in_file/@a out_file must be set, not both.
+ * Either @a sock or @a in_stream/@a out_stream must be set, not both.
* @a compression_level specifies the desired network data compression
* level (zlib) from 0 (no compression) to 9 (best but slowest).
*
@@ -184,10 +184,29 @@ typedef svn_error_t *(*svn_ra_svn_edit_c
* It defines the number of bytes that must have been sent since the last
* check before the next check will be made.
*
+ * @note If @a out_stream is an wrapped apr_file_t* the backing file will be
+ * used for some operations.
+ *
* Allocate the result in @a pool.
*
+ * @since New in 1.9
+ */
+svn_ra_svn_conn_t *svn_ra_svn_create_conn4(apr_socket_t *sock,
+ svn_stream_t *in_stream,
+ svn_stream_t *out_stream,
+ int compression_level,
+ apr_size_t zero_copy_limit,
+ apr_size_t error_check_interval,
+ apr_pool_t *result_pool);
+
+
+/** Similar to svn_ra_svn_create_conn4() but only supports apr_file_t handles
+ * instead of the more generic streams.
+ *
* @since New in 1.8
+ * @deprecated Provided for backward compatibility with the 1.8 API.
*/
+SVN_DEPRECATED
svn_ra_svn_conn_t *svn_ra_svn_create_conn3(apr_socket_t *sock,
apr_file_t *in_file,
apr_file_t *out_file,
Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_repos.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_repos.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_repos.h Thu Feb 6 08:45:07 2014
@@ -2854,6 +2854,11 @@ svn_repos_dump_fs(svn_repos_t *repos,
* node properties (those in the svn: namespace) against established
* rules for those things.
*
+ * If @a ignore_dates is set, ignore any revision datestamps found in
+ * @a dumpstream, allowing the revisions created by the load process
+ * to be stamped as if they were newly created via the normal commit
+ * process.
+ *
* If non-NULL, use @a notify_func and @a notify_baton to send notification
* of events to the caller.
*
@@ -2861,9 +2866,33 @@ svn_repos_dump_fs(svn_repos_t *repos,
* @a cancel_baton as argument to see if the client wishes to cancel
* the load.
*
- * @since New in 1.8.
+ * @since New in 1.9.
*/
svn_error_t *
+svn_repos_load_fs5(svn_repos_t *repos,
+ svn_stream_t *dumpstream,
+ svn_revnum_t start_rev,
+ svn_revnum_t end_rev,
+ enum svn_repos_load_uuid uuid_action,
+ const char *parent_dir,
+ svn_boolean_t use_pre_commit_hook,
+ svn_boolean_t use_post_commit_hook,
+ svn_boolean_t validate_props,
+ svn_boolean_t ignore_dates,
+ svn_repos_notify_func_t notify_func,
+ void *notify_baton,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *pool);
+
+/** Similar to svn_repos_load_fs5(), but with @a ignore_dates
+ * always passed as FALSE.
+ *
+ * @since New in 1.9.
+ * @deprecated Provided for backward compatibility with the 1.8 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
svn_repos_load_fs4(svn_repos_t *repos,
svn_stream_t *dumpstream,
svn_revnum_t start_rev,
@@ -3126,6 +3155,7 @@ svn_repos_get_fs_build_parser4(const svn
apr_pool_t *pool);
+
/**
* A vtable that is driven by svn_repos_parse_dumpstream2().
* Similar to #svn_repos_parse_fns3_t except that it lacks
Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_wc.h?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_wc.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_wc.h Thu Feb 6 08:45:07 2014
@@ -4730,10 +4730,9 @@ svn_wc_delete(const char *path,
* addition to the working copy. The added node will have the properties
* provided in @a props, or none if that is NULL.
*
- * Check and canonicalize the properties in the same way as
- * svn_wc_prop_set4(). Return an error and don't add the node if the
- * properties are not valid on this node. Unlike svn_wc_prop_set4()
- * there is no option to skip some of the checks and canonicalizations.
+ * Unless @a skip_checks is TRUE, check and canonicalize the properties in the
+ * same way as svn_wc_prop_set4(). Return an error and don't add the node if
+ * the properties are not valid on this node.
*
* ### The error code on validity check failure should be specified, and
* preferably should be a single code.
@@ -4747,8 +4746,25 @@ svn_wc_delete(const char *path,
*
* ### TODO: Split into add_dir, add_file, add_symlink?
*
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_wc_add_from_disk3(svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ const apr_hash_t *props,
+ svn_boolean_t skip_checks,
+ svn_wc_notify_func2_t notify_func,
+ void *notify_baton,
+ apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_wc_add_from_disk3(), but always passes FALSE for
+ * @a skip_som_prop_canon
+ *
* @since New in 1.8.
+ * @deprecated Provided for backward compatibility with the 1.8 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_wc_add_from_disk2(svn_wc_context_t *wc_ctx,
const char *local_abspath,
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/add.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/add.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/add.c Thu Feb 6 08:45:07 2014
@@ -316,7 +316,8 @@ add_file(const char *local_abspath,
}
/* Add the file */
- SVN_ERR(svn_wc_add_from_disk2(ctx->wc_ctx, local_abspath, properties,
+ SVN_ERR(svn_wc_add_from_disk3(ctx->wc_ctx, local_abspath, properties,
+ FALSE /* skip checks */,
ctx->notify_func2, ctx->notify_baton2, pool));
return SVN_NO_ERROR;
@@ -378,7 +379,8 @@ add_dir_recursive(const char *dir_abspat
iterpool = svn_pool_create(scratch_pool);
/* Add this directory to revision control. */
- err = svn_wc_add_from_disk2(ctx->wc_ctx, dir_abspath, NULL /*props*/,
+ err = svn_wc_add_from_disk3(ctx->wc_ctx, dir_abspath, NULL /*props*/,
+ FALSE /* skip checks */,
ctx->notify_func2, ctx->notify_baton2,
iterpool);
if (err)
@@ -873,8 +875,9 @@ add(const char *local_abspath,
parent_abspath, local_abspath);
SVN_ERR(svn_io_make_dir_recursively(parent_abspath, scratch_pool));
- SVN_ERR(svn_wc_add_from_disk2(ctx->wc_ctx, parent_abspath,
+ SVN_ERR(svn_wc_add_from_disk3(ctx->wc_ctx, parent_abspath,
NULL /*props*/,
+ FALSE /* skip checks */,
ctx->notify_func2, ctx->notify_baton2,
scratch_pool));
}
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit.c Thu Feb 6 08:45:07 2014
@@ -110,7 +110,8 @@ get_ra_editor(const svn_delta_editor_t *
continue;
svn_pool_clear(iterpool);
- SVN_ERR(svn_wc__node_get_origin(NULL, NULL, &relpath, NULL, NULL, NULL,
+ SVN_ERR(svn_wc__node_get_origin(NULL, NULL, &relpath, NULL, NULL,
+ NULL, NULL,
ctx->wc_ctx, item->path, FALSE, pool,
iterpool));
if (relpath)
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit_util.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit_util.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/commit_util.c Thu Feb 6 08:45:07 2014
@@ -505,7 +505,7 @@ harvest_not_present_for_copy(svn_wc_cont
/* Determine from what parent we would be the deleted child */
SVN_ERR(svn_wc__node_get_origin(
NULL, &parent_rev, &parent_repos_relpath,
- &parent_repos_root_url, NULL, NULL,
+ &parent_repos_root_url, NULL, NULL, NULL,
wc_ctx,
svn_dirent_dirname(this_abspath,
scratch_pool),
@@ -943,7 +943,7 @@ harvest_status_callback(void *status_bat
* directory. In either case, we require the op-root of the parent
* to be part of the commit. See issue #4059. */
SVN_ERR(svn_wc__node_get_origin(&parent_is_copy, NULL, NULL, NULL,
- NULL, ©_root_abspath,
+ NULL, NULL, ©_root_abspath,
wc_ctx, parent_abspath,
FALSE, scratch_pool, scratch_pool));
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy.c Thu Feb 6 08:45:07 2014
@@ -1494,7 +1494,8 @@ wc_to_repos_copy(const apr_array_header_
continue;
svn_pool_clear(iterpool);
- SVN_ERR(svn_wc__node_get_origin(NULL, NULL, &relpath, NULL, NULL, NULL,
+ SVN_ERR(svn_wc__node_get_origin(NULL, NULL, &relpath, NULL, NULL,
+ NULL, NULL,
ctx->wc_ctx, item->path, FALSE,
scratch_pool, iterpool));
if (relpath)
@@ -2194,7 +2195,7 @@ try_copy(svn_boolean_t *timestamp_sleep,
SVN_ERR(svn_wc__node_get_origin(NULL, ©from_rev,
©from_repos_relpath,
©from_repos_root_url,
- NULL, NULL,
+ NULL, NULL, NULL,
ctx->wc_ctx,
pair->src_abspath_or_url,
TRUE, iterpool, iterpool));
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy_foreign.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy_foreign.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy_foreign.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/copy_foreign.c Thu Feb 6 08:45:07 2014
@@ -161,7 +161,7 @@ dir_change_prop(void *dir_baton,
if (! db->created)
{
/* We can still store them in the hash for immediate addition
- with the svn_wc_add_from_disk2() call */
+ with the svn_wc_add_from_disk3() call */
if (! db->properties)
db->properties = apr_hash_make(db->pool);
@@ -214,9 +214,10 @@ ensure_added(struct dir_baton_t *db,
db->created = TRUE;
/* Add the directory with all the already collected properties */
- SVN_ERR(svn_wc_add_from_disk2(db->eb->wc_ctx,
+ SVN_ERR(svn_wc_add_from_disk3(db->eb->wc_ctx,
db->local_abspath,
db->properties,
+ TRUE /* skip checks */,
db->eb->notify_func,
db->eb->notify_baton,
scratch_pool));
@@ -307,7 +308,7 @@ file_change_prop(void *file_baton,
}
/* We store all properties in the hash for immediate addition
- with the svn_wc_add_from_disk2() call */
+ with the svn_wc_add_from_disk3() call */
if (! fb->properties)
fb->properties = apr_hash_make(fb->pool);
@@ -376,7 +377,8 @@ file_close(void *file_baton,
fb->pool)));
}
- SVN_ERR(svn_wc_add_from_disk2(eb->wc_ctx, fb->local_abspath, fb->properties,
+ SVN_ERR(svn_wc_add_from_disk3(eb->wc_ctx, fb->local_abspath, fb->properties,
+ TRUE /* skip checks */,
eb->notify_func, eb->notify_baton,
fb->pool));
@@ -539,12 +541,14 @@ svn_client__copy_foreign(const char *url
if (!already_locked)
SVN_WC__CALL_WITH_WRITE_LOCK(
- svn_wc_add_from_disk2(ctx->wc_ctx, dst_abspath, props,
+ svn_wc_add_from_disk3(ctx->wc_ctx, dst_abspath, props,
+ TRUE /* skip checks */,
ctx->notify_func2, ctx->notify_baton2,
scratch_pool),
ctx->wc_ctx, dir_abspath, FALSE, scratch_pool);
else
- SVN_ERR(svn_wc_add_from_disk2(ctx->wc_ctx, dst_abspath, props,
+ SVN_ERR(svn_wc_add_from_disk3(ctx->wc_ctx, dst_abspath, props,
+ TRUE /* skip checks */,
ctx->notify_func2, ctx->notify_baton2,
scratch_pool));
}
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/diff.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/diff.c Thu Feb 6 08:45:07 2014
@@ -1848,6 +1848,7 @@ diff_repos_wc(const char *path_or_url1,
svn_revnum_t cf_revision;
const char *cf_repos_relpath;
const char *cf_repos_root_url;
+ svn_depth_t cf_depth;
SVN_ERR_ASSERT(! svn_path_is_url(path2));
@@ -1927,7 +1928,7 @@ diff_repos_wc(const char *path_or_url1,
&cf_revision,
&cf_repos_relpath,
&cf_repos_root_url,
- NULL, NULL,
+ NULL, &cf_depth, NULL,
ctx->wc_ctx, abspath2,
FALSE, pool, pool));
@@ -1960,7 +1961,6 @@ diff_repos_wc(const char *path_or_url1,
{
const char *copyfrom_parent_url;
const char *copyfrom_basename;
- svn_depth_t copy_depth;
cmd_baton->repos_wc_diff_target_is_copy = TRUE;
@@ -1999,15 +1999,12 @@ diff_repos_wc(const char *path_or_url1,
diff_editor, diff_edit_baton, pool));
/* Report the copy source. */
- SVN_ERR(svn_wc__node_get_depth(©_depth, ctx->wc_ctx, abspath2,
- pool));
-
- if (copy_depth == svn_depth_unknown)
- copy_depth = svn_depth_infinity;
+ if (cf_depth == svn_depth_unknown)
+ cf_depth = svn_depth_infinity;
SVN_ERR(reporter->set_path(reporter_baton, "",
cf_revision,
- copy_depth, FALSE, NULL, scratch_pool));
+ cf_depth, FALSE, NULL, scratch_pool));
if (strcmp(target, copyfrom_basename) != 0)
SVN_ERR(reporter->link_path(reporter_baton, target,
@@ -2016,7 +2013,7 @@ diff_repos_wc(const char *path_or_url1,
cf_repos_relpath,
scratch_pool),
cf_revision,
- copy_depth, FALSE, NULL, scratch_pool));
+ cf_depth, FALSE, NULL, scratch_pool));
/* Finish the report to generate the diff. */
SVN_ERR(reporter->finish_report(reporter_baton, pool));
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/merge.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/merge.c Thu Feb 6 08:45:07 2014
@@ -759,7 +759,7 @@ filter_self_referential_mergeinfo(apr_ar
/* If PATH itself has been added there is no need to filter. */
SVN_ERR(svn_wc__node_get_origin(&is_copy, &target_base.rev, &repos_relpath,
&target_base.repos_root_url,
- &target_base.repos_uuid, NULL,
+ &target_base.repos_uuid, NULL, NULL,
ctx->wc_ctx, target_abspath, FALSE,
pool, pool));
@@ -2724,7 +2724,7 @@ merge_dir_opened(void **new_dir_baton,
if (old_tc)
{
- /* svn_wc_add4 and svn_wc_add_from_disk2 can't add a node
+ /* svn_wc_add4 and svn_wc_add_from_disk3 can't add a node
over an existing tree conflict */
/* ### These functions should take some tree conflict argument
@@ -2762,8 +2762,9 @@ merge_dir_opened(void **new_dir_baton,
}
else
{
- SVN_ERR(svn_wc_add_from_disk2(merge_b->ctx->wc_ctx, local_abspath,
+ SVN_ERR(svn_wc_add_from_disk3(merge_b->ctx->wc_ctx, local_abspath,
apr_hash_make(scratch_pool),
+ FALSE /* skip checks */,
NULL, NULL /* no notify! */,
scratch_pool));
}
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mergeinfo.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mergeinfo.c Thu Feb 6 08:45:07 2014
@@ -624,7 +624,7 @@ svn_client__get_wc_or_repos_mergeinfo_ca
a URL and without that we cannot get accurate mergeinfo for
TARGET_WCPATH. */
SVN_ERR(svn_wc__node_get_origin(NULL, &target_rev, &repos_relpath,
- &repos_root, NULL, NULL,
+ &repos_root, NULL, NULL, NULL,
ctx->wc_ctx, local_abspath, FALSE,
scratch_pool, scratch_pool));
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mtcc.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mtcc.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mtcc.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/mtcc.c Thu Feb 6 08:45:07 2014
@@ -29,15 +29,68 @@
#include "svn_pools.h"
#include "svn_subst.h"
+#include "svn_client_mtcc.h"
+
+
#include "svn_private_config.h"
#include "client.h"
-#include "mtcc.h"
#include <assert.h>
#define SVN_PATH_IS_EMPTY(s) ((s)[0] == '\0')
+/* The kind of operation to perform in an svn_client_mtcc_op_t */
+typedef enum svn_client_mtcc_kind_t
+{
+ OP_OPEN_DIR,
+ OP_OPEN_FILE,
+ OP_ADD_DIR,
+ OP_ADD_FILE,
+ OP_DELETE,
+} svn_client_mtcc_kind_t;
+
+typedef struct svn_client_mtcc_op_t
+{
+ const char *name; /* basename of operation */
+ svn_client_mtcc_kind_t kind; /* editor operation */
+
+ apr_array_header_t *children; /* List of svn_client_mtcc_op_t * */
+
+ const char *src_relpath; /* For ADD_DIR, ADD_FILE */
+ svn_revnum_t src_rev; /* For ADD_DIR, ADD_FILE */
+ svn_stream_t *src_stream; /* For ADD_FILE, OPEN_FILE */
+ svn_checksum_t *src_checksum; /* For ADD_FILE, OPEN_FILE */
+ svn_stream_t *base_stream; /* For ADD_FILE, OPEN_FILE */
+ const svn_checksum_t *base_checksum; /* For ADD_FILE, OPEN_FILE */
+
+ apr_array_header_t *prop_mods; /* For all except DELETE
+ List of svn_prop_t */
+
+ svn_boolean_t performed_stat; /* Verified kind with repository */
+} svn_client_mtcc_op_t;
+
+/* Check if the mtcc doesn't contain any modifications yet */
+#define MTCC_UNMODIFIED(mtcc) \
+ ((mtcc->root_op->kind == OP_OPEN_DIR \
+ || mtcc->root_op->kind == OP_OPEN_FILE) \
+ && (mtcc->root_op->prop_mods == NULL \
+ || !mtcc->root_op->prop_mods->nelts) \
+ && (mtcc->root_op->children == NULL \
+ || !mtcc->root_op->children->nelts))
+
+struct svn_client_mtcc_t
+{
+ apr_pool_t *pool;
+ svn_revnum_t head_revision;
+ svn_revnum_t base_revision;
+
+ svn_ra_session_t *ra_session;
+ svn_client_ctx_t *ctx;
+
+ svn_client_mtcc_op_t *root_op;
+};
+
static svn_client_mtcc_op_t *
mtcc_op_create(const char *name,
svn_boolean_t add,
Modified: subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/patch.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/patch.c?rev=1565116&r1=1565115&r2=1565116&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/patch.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/libsvn_client/patch.c Thu Feb 6 08:45:07 2014
@@ -2455,8 +2455,9 @@ create_missing_parents(patch_target_t *t
if (ctx->cancel_func)
SVN_ERR(ctx->cancel_func(ctx->cancel_baton));
- SVN_ERR(svn_wc_add_from_disk2(ctx->wc_ctx, local_abspath,
+ SVN_ERR(svn_wc_add_from_disk3(ctx->wc_ctx, local_abspath,
NULL /*props*/,
+ FALSE /* skip checks */,
ctx->notify_func2, ctx->notify_baton2,
iterpool));
}
@@ -2586,8 +2587,9 @@ install_patched_target(patch_target_t *t
* Suppress notification, we'll do that later (and also
* during dry-run). Don't allow cancellation because
* we'd rather notify about what we did before aborting. */
- SVN_ERR(svn_wc_add_from_disk2(ctx->wc_ctx, target->local_abspath,
+ SVN_ERR(svn_wc_add_from_disk3(ctx->wc_ctx, target->local_abspath,
NULL /*props*/,
+ FALSE /* skip checks */,
NULL, NULL, pool));
}
@@ -2679,8 +2681,9 @@ install_patched_prop_targets(patch_targe
{
SVN_ERR(svn_io_file_create_empty(target->local_abspath,
scratch_pool));
- SVN_ERR(svn_wc_add_from_disk2(ctx->wc_ctx, target->local_abspath,
+ SVN_ERR(svn_wc_add_from_disk3(ctx->wc_ctx, target->local_abspath,
NULL /*props*/,
+ FALSE /* skip checks */,
/* suppress notification */
NULL, NULL,
iterpool));