You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2010/12/29 22:12:38 UTC

svn commit: r1053735 [1/8] - in /subversion/branches/performance: ./ build/ build/ac-macros/ build/generator/ build/generator/swig/ contrib/client-side/svn_load_dirs/ notes/ subversion/bindings/javahl/native/ subversion/bindings/swig/ subversion/includ...

Author: stefan2
Date: Wed Dec 29 21:12:33 2010
New Revision: 1053735

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

Added:
    subversion/branches/performance/notes/fsfs-improvements.txt
      - copied unchanged from r1053645, subversion/trunk/notes/fsfs-improvements.txt
    subversion/branches/performance/subversion/include/private/svn_error_private.h
      - copied unchanged from r1053645, subversion/trunk/subversion/include/private/svn_error_private.h
    subversion/branches/performance/subversion/tests/cmdline/upgrade_tests_data/replaced-files.tar.bz2
      - copied unchanged from r1053645, subversion/trunk/subversion/tests/cmdline/upgrade_tests_data/replaced-files.tar.bz2
    subversion/branches/performance/subversion/tests/libsvn_subr/subst_translate-test.c
      - copied unchanged from r1053645, subversion/trunk/subversion/tests/libsvn_subr/subst_translate-test.c
Removed:
    subversion/branches/performance/build/transform_libtool_scripts.sh
Modified:
    subversion/branches/performance/   (props changed)
    subversion/branches/performance/Makefile.in
    subversion/branches/performance/build/   (props changed)
    subversion/branches/performance/build.conf
    subversion/branches/performance/build/ac-macros/berkeley-db.m4
    subversion/branches/performance/build/ac-macros/swig.m4
    subversion/branches/performance/build/generator/gen_make.py
    subversion/branches/performance/build/generator/swig/__init__.py
    subversion/branches/performance/build/generator/swig/checkout_swig_header.py
    subversion/branches/performance/build/generator/swig/external_runtime.py
    subversion/branches/performance/configure.ac
    subversion/branches/performance/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in
    subversion/branches/performance/subversion/bindings/javahl/native/SVNRepos.cpp
    subversion/branches/performance/subversion/bindings/swig/INSTALL
    subversion/branches/performance/subversion/include/private/svn_client_private.h
    subversion/branches/performance/subversion/include/private/svn_ra_private.h
    subversion/branches/performance/subversion/include/private/svn_repos_private.h
    subversion/branches/performance/subversion/include/private/svn_wc_private.h
    subversion/branches/performance/subversion/include/svn_error.h
    subversion/branches/performance/subversion/include/svn_fs.h
    subversion/branches/performance/subversion/include/svn_io.h
    subversion/branches/performance/subversion/include/svn_ra.h
    subversion/branches/performance/subversion/include/svn_repos.h
    subversion/branches/performance/subversion/include/svn_subst.h
    subversion/branches/performance/subversion/include/svn_types.h
    subversion/branches/performance/subversion/libsvn_client/add.c
    subversion/branches/performance/subversion/libsvn_client/changelist.c
    subversion/branches/performance/subversion/libsvn_client/checkout.c
    subversion/branches/performance/subversion/libsvn_client/client.h
    subversion/branches/performance/subversion/libsvn_client/commit_util.c
    subversion/branches/performance/subversion/libsvn_client/copy.c
    subversion/branches/performance/subversion/libsvn_client/delete.c
    subversion/branches/performance/subversion/libsvn_client/deprecated.c
    subversion/branches/performance/subversion/libsvn_client/info.c
    subversion/branches/performance/subversion/libsvn_client/locking_commands.c
    subversion/branches/performance/subversion/libsvn_client/log.c
    subversion/branches/performance/subversion/libsvn_client/merge.c
    subversion/branches/performance/subversion/libsvn_client/mergeinfo.c
    subversion/branches/performance/subversion/libsvn_client/patch.c
    subversion/branches/performance/subversion/libsvn_client/prop_commands.c
    subversion/branches/performance/subversion/libsvn_client/ra.c
    subversion/branches/performance/subversion/libsvn_client/repos_diff.c
    subversion/branches/performance/subversion/libsvn_client/status.c
    subversion/branches/performance/subversion/libsvn_client/update.c
    subversion/branches/performance/subversion/libsvn_client/util.c
    subversion/branches/performance/subversion/libsvn_fs/fs-loader.c
    subversion/branches/performance/subversion/libsvn_fs_base/reps-strings.c
    subversion/branches/performance/subversion/libsvn_fs_base/tree.c
    subversion/branches/performance/subversion/libsvn_fs_base/util/fs_skels.c
    subversion/branches/performance/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/performance/subversion/libsvn_fs_fs/lock.c
    subversion/branches/performance/subversion/libsvn_fs_fs/rep-cache.c
    subversion/branches/performance/subversion/libsvn_fs_fs/tree.c
    subversion/branches/performance/subversion/libsvn_ra/compat.c
    subversion/branches/performance/subversion/libsvn_ra/util.c
    subversion/branches/performance/subversion/libsvn_ra_local/ra_plugin.c
    subversion/branches/performance/subversion/libsvn_ra_serf/commit.c
    subversion/branches/performance/subversion/libsvn_ra_serf/options.c
    subversion/branches/performance/subversion/libsvn_ra_serf/property.c
    subversion/branches/performance/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/performance/subversion/libsvn_ra_serf/serf.c
    subversion/branches/performance/subversion/libsvn_ra_serf/update.c
    subversion/branches/performance/subversion/libsvn_ra_serf/util.c
    subversion/branches/performance/subversion/libsvn_ra_serf/xml.c
    subversion/branches/performance/subversion/libsvn_ra_svn/client.c
    subversion/branches/performance/subversion/libsvn_repos/commit.c
    subversion/branches/performance/subversion/libsvn_repos/deprecated.c
    subversion/branches/performance/subversion/libsvn_repos/dump.c
    subversion/branches/performance/subversion/libsvn_repos/fs-wrap.c
    subversion/branches/performance/subversion/libsvn_repos/hooks.c
    subversion/branches/performance/subversion/libsvn_repos/load-fs-vtable.c
    subversion/branches/performance/subversion/libsvn_subr/cache-memcache.c
    subversion/branches/performance/subversion/libsvn_subr/deprecated.c
    subversion/branches/performance/subversion/libsvn_subr/dirent_uri.c
    subversion/branches/performance/subversion/libsvn_subr/error.c
    subversion/branches/performance/subversion/libsvn_subr/io.c
    subversion/branches/performance/subversion/libsvn_subr/mergeinfo.c
    subversion/branches/performance/subversion/libsvn_subr/opt.c
    subversion/branches/performance/subversion/libsvn_subr/prompt.c
    subversion/branches/performance/subversion/libsvn_subr/subst.c
    subversion/branches/performance/subversion/libsvn_wc/adm_crawler.c
    subversion/branches/performance/subversion/libsvn_wc/adm_ops.c
    subversion/branches/performance/subversion/libsvn_wc/deprecated.c
    subversion/branches/performance/subversion/libsvn_wc/entries.c
    subversion/branches/performance/subversion/libsvn_wc/entries.h
    subversion/branches/performance/subversion/libsvn_wc/lock.c
    subversion/branches/performance/subversion/libsvn_wc/node.c
    subversion/branches/performance/subversion/libsvn_wc/props.c
    subversion/branches/performance/subversion/libsvn_wc/revision_status.c
    subversion/branches/performance/subversion/libsvn_wc/status.c
    subversion/branches/performance/subversion/libsvn_wc/update_editor.c
    subversion/branches/performance/subversion/libsvn_wc/upgrade.c
    subversion/branches/performance/subversion/libsvn_wc/wc-metadata.sql
    subversion/branches/performance/subversion/libsvn_wc/wc-queries.sql
    subversion/branches/performance/subversion/libsvn_wc/wc.h
    subversion/branches/performance/subversion/libsvn_wc/wc_db.c
    subversion/branches/performance/subversion/libsvn_wc/wc_db.h
    subversion/branches/performance/subversion/libsvn_wc/workqueue.c
    subversion/branches/performance/subversion/mod_authz_svn/mod_authz_svn.c
    subversion/branches/performance/subversion/mod_dav_svn/dav_svn.h
    subversion/branches/performance/subversion/mod_dav_svn/deadprops.c
    subversion/branches/performance/subversion/mod_dav_svn/lock.c
    subversion/branches/performance/subversion/mod_dav_svn/merge.c
    subversion/branches/performance/subversion/mod_dav_svn/repos.c
    subversion/branches/performance/subversion/mod_dav_svn/util.c
    subversion/branches/performance/subversion/mod_dav_svn/version.c
    subversion/branches/performance/subversion/po/zh_CN.po
    subversion/branches/performance/subversion/svn/blame-cmd.c
    subversion/branches/performance/subversion/svn/cl.h
    subversion/branches/performance/subversion/svn/commit-cmd.c
    subversion/branches/performance/subversion/svn/delete-cmd.c
    subversion/branches/performance/subversion/svn/diff-cmd.c
    subversion/branches/performance/subversion/svn/info-cmd.c
    subversion/branches/performance/subversion/svn/lock-cmd.c
    subversion/branches/performance/subversion/svn/main.c
    subversion/branches/performance/subversion/svn/mergeinfo-cmd.c
    subversion/branches/performance/subversion/svn/mkdir-cmd.c
    subversion/branches/performance/subversion/svn/propget-cmd.c
    subversion/branches/performance/subversion/svn/status.c
    subversion/branches/performance/subversion/svn/unlock-cmd.c
    subversion/branches/performance/subversion/svn/util.c
    subversion/branches/performance/subversion/svnadmin/main.c
    subversion/branches/performance/subversion/svndumpfilter/main.c
    subversion/branches/performance/subversion/svnlook/main.c
    subversion/branches/performance/subversion/svnrdump/dump_editor.c
    subversion/branches/performance/subversion/svnrdump/load_editor.c
    subversion/branches/performance/subversion/svnrdump/svnrdump.c
    subversion/branches/performance/subversion/svnsync/main.c
    subversion/branches/performance/subversion/svnversion/main.c
    subversion/branches/performance/subversion/tests/cmdline/atomic-ra-revprop-change.c
    subversion/branches/performance/subversion/tests/cmdline/copy_tests.py
    subversion/branches/performance/subversion/tests/cmdline/diff_tests.py
    subversion/branches/performance/subversion/tests/cmdline/entries-dump.c
    subversion/branches/performance/subversion/tests/cmdline/merge_tree_conflict_tests.py
    subversion/branches/performance/subversion/tests/cmdline/stat_tests.py
    subversion/branches/performance/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/performance/subversion/tests/cmdline/svnlook_tests.py
    subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests.py
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests.py
    subversion/branches/performance/subversion/tests/cmdline/svntest/actions.py
    subversion/branches/performance/subversion/tests/cmdline/svntest/main.py
    subversion/branches/performance/subversion/tests/cmdline/switch_tests.py
    subversion/branches/performance/subversion/tests/cmdline/update_tests.py
    subversion/branches/performance/subversion/tests/cmdline/upgrade_tests.py
    subversion/branches/performance/subversion/tests/libsvn_client/client-test.c
    subversion/branches/performance/subversion/tests/libsvn_fs/fs-test.c
    subversion/branches/performance/subversion/tests/libsvn_fs/locks-test.c
    subversion/branches/performance/subversion/tests/libsvn_fs_base/changes-test.c
    subversion/branches/performance/subversion/tests/libsvn_fs_base/fs-base-test.c
    subversion/branches/performance/subversion/tests/libsvn_fs_fs/fs-pack-test.c
    subversion/branches/performance/subversion/tests/libsvn_repos/repos-test.c
    subversion/branches/performance/subversion/tests/libsvn_subr/   (props changed)
    subversion/branches/performance/subversion/tests/libsvn_subr/auth-test.c
    subversion/branches/performance/subversion/tests/libsvn_subr/eol-test.c
    subversion/branches/performance/subversion/tests/libsvn_subr/error-test.c
    subversion/branches/performance/subversion/tests/libsvn_wc/db-test.c
    subversion/branches/performance/subversion/tests/libsvn_wc/entries-compat.c
    subversion/branches/performance/subversion/tests/libsvn_wc/op-depth-test.c
    subversion/branches/performance/subversion/tests/libsvn_wc/pristine-store-test.c
    subversion/branches/performance/subversion/tests/svn_test_fs.c
    subversion/branches/performance/subversion/tests/svn_test_main.c
    subversion/branches/performance/tools/dev/svn-dev.el
    subversion/branches/performance/tools/dev/unix-build/Makefile.svn
    subversion/branches/performance/tools/po/l10n-report.py
    subversion/branches/performance/tools/server-side/svn-populate-node-origins-index.c

Propchange: subversion/branches/performance/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec 29 21:12:33 2010
@@ -39,4 +39,4 @@
 /subversion/branches/tc_url_rev:874351-874483
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
-/subversion/trunk:962911-1043512
+/subversion/trunk:962911-1043512,1043551-1053645

Modified: subversion/branches/performance/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/performance/Makefile.in?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/Makefile.in (original)
+++ subversion/branches/performance/Makefile.in Wed Dec 29 21:12:33 2010
@@ -351,17 +351,17 @@ install: external-install local-install 
 local-all: @BUILD_RULES@ @TRANSFORM_LIBTOOL_SCRIPTS@
 
 transform-libtool-scripts: @BUILD_RULES@
-	@$(top_srcdir)/build/transform_libtool_scripts.sh
+	@$(SHELL) $(top_srcdir)/build/transform_libtool_scripts.sh
 
 locale-gnu-pot:
 	cd $(abs_srcdir) && XGETTEXT="$(XGETTEXT)" MSGMERGE="$(MSGMERGE)" \
-	  tools/po/po-update.sh pot
+	  $(SHELL) tools/po/po-update.sh pot
 
 # "make locale-gnu-po-update" updates all translations.
 # "make locale-gnu-po-update PO=ll" updates only the ll.po file.
 locale-gnu-po-update:
 	cd $(abs_srcdir) && XGETTEXT="$(XGETTEXT)" MSGMERGE="$(MSGMERGE)" \
-	  tools/po/po-update.sh $(PO)
+	  $(SHELL) tools/po/po-update.sh $(PO)
 
 # clean everything but the bulky test output, returning the system back
 # to before 'make' was run.
@@ -824,7 +824,7 @@ install-swig-rb-doc:
 
 # ctypes-python make targets
 ctypes-python: local-all
-	$(abs_srcdir)/build/run_ctypesgen.sh "$(LT_EXECUTE)" "$(CPPFLAGS)" "$(EXTRA_CTYPES_LDFLAGS)" "$(PYTHON)" "$(CTYPESGEN)" "$(abs_srcdir)" "$(abs_builddir)" "$(libdir)" "$(SVN_APR_CONFIG)" "$(SVN_APRUTIL_CONFIG)"
+	$(SHELL) $(abs_srcdir)/build/run_ctypesgen.sh "$(LT_EXECUTE)" "$(CPPFLAGS)" "$(EXTRA_CTYPES_LDFLAGS)" "$(PYTHON)" "$(CTYPESGEN)" "$(abs_srcdir)" "$(abs_builddir)" "$(libdir)" "$(SVN_APR_CONFIG)" "$(SVN_APRUTIL_CONFIG)"
 
 install-ctypes-python: ctypes-python
 	cd $(CTYPES_PYTHON_SRC_DIR); \

Propchange: subversion/branches/performance/build/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Dec 29 21:12:33 2010
@@ -6,3 +6,4 @@ ltversion.m4
 lt~obsolete.m4
 ltmain.sh
 pkg.m4
+transform_libtool_scripts.sh

Modified: subversion/branches/performance/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build.conf?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/build.conf (original)
+++ subversion/branches/performance/build.conf Wed Dec 29 21:12:33 2010
@@ -866,6 +866,14 @@ sources = target-test.c
 install = test
 libs = libsvn_test libsvn_subr apriconv apr
 
+[subst_translate-test]
+description = Test the svn_subst_translate* functions
+type = exe
+path = subversion/tests/libsvn_subr
+sources = subst_translate-test.c
+install = test
+libs = libsvn_test libsvn_subr apriconv apr
+
 [translate-test]
 description = Test eol conversion and keyword substitution routines
 type = exe
@@ -1115,6 +1123,7 @@ libs = __ALL__
        checksum-test compat-test config-test hashdump-test mergeinfo-test opt-test path-test stream-test
        string-test eol-test time-test utf-test target-test error-test cache-test
        revision-test
+       subst_translate-test
        translate-test
        random-test window-test
        diff-diff3-test

Modified: subversion/branches/performance/build/ac-macros/berkeley-db.m4
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/ac-macros/berkeley-db.m4?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/build/ac-macros/berkeley-db.m4 (original)
+++ subversion/branches/performance/build/ac-macros/berkeley-db.m4 Wed Dec 29 21:12:33 2010
@@ -64,7 +64,7 @@ AC_DEFUN(SVN_LIB_BERKELEY_DB,
       fi
 
       if test "$withval" = "yes"; then
-        if test "$apu_db_version" != "4"; then
+        if test "$apu_db_version" -lt "4"; then
           AC_MSG_ERROR([APR-UTIL wasn't linked against Berkeley DB 4,
                         while the fs component is required.  Reinstall
                         APR-UTIL with the appropiate options.])
@@ -73,7 +73,7 @@ AC_DEFUN(SVN_LIB_BERKELEY_DB,
         status=required
 
       elif test "$apu_found" != "reconfig"; then
-        if test "$apu_db_version" != 4; then
+        if test "$apu_db_version" -lt 4; then
           AC_MSG_ERROR([APR-UTIL was installed independently, it won't be
                         possible to use the specified Berkeley DB: $withval])
         fi
@@ -115,7 +115,7 @@ AC_DEFUN(SVN_LIB_BERKELEY_DB,
                    whether apr-util is linked against Berkeley DB
                    $db_version])
       status=try-link
-    elif test "$apu_db_version" != "4"; then
+    elif test "$apu_db_version" -lt "4"; then
       status=skip
     else
       status=try-link

Modified: subversion/branches/performance/build/ac-macros/swig.m4
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/ac-macros/swig.m4?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/build/ac-macros/swig.m4 (original)
+++ subversion/branches/performance/build/ac-macros/swig.m4 Wed Dec 29 21:12:33 2010
@@ -94,13 +94,13 @@ AC_DEFUN(SVN_FIND_SWIG,
     #   packages/rpm/rhel-4/subversion.spec
     if test -n "$SWIG_VERSION" &&
        test "$SWIG_VERSION" -ge "103024" &&
-       test "$SWIG_VERSION" -le "103039"; then
+       test "$SWIG_VERSION" -le "200001"; then
       SWIG_SUITABLE=yes
     else
       SWIG_SUITABLE=no
       AC_MSG_WARN([Detected SWIG version $SWIG_VERSION_RAW])
       AC_MSG_WARN([Subversion requires 1.3.24 or later, and is known to work])
-      AC_MSG_WARN([with versions up to 1.3.39])
+      AC_MSG_WARN([with versions up to 2.0.1])
     fi
   fi
  

Modified: subversion/branches/performance/build/generator/gen_make.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/gen_make.py?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/gen_make.py (original)
+++ subversion/branches/performance/build/generator/gen_make.py Wed Dec 29 21:12:33 2010
@@ -23,6 +23,7 @@
 #
 
 import os
+import stat
 import sys
 try:
   # Python >=3.0
@@ -453,6 +454,8 @@ class Generator(gen_base.GeneratorBase):
 
     self.write_standalone()
 
+    self.write_transform_libtool_scripts(install_sources)
+
   def write_standalone(self):
     """Write autogen-standalone.mk"""
 
@@ -468,6 +471,91 @@ class Generator(gen_base.GeneratorBase):
     standalone.write(open("build-outputs.mk","r").read())
     standalone.close()
 
+  def write_transform_libtool_scripts(self, install_sources):
+    """Write build/transform_libtool_scripts.sh"""
+    script = 'build/transform_libtool_scripts.sh'
+    fd = open(script, 'w')
+    fd.write('''#!/bin/sh
+# DO NOT EDIT -- AUTOMATICALLY GENERATED
+
+transform()
+{
+  SCRIPT="$1"
+  LIBS="$2"
+  if [ -f $SCRIPT ]; then
+    if grep LD_PRELOAD "$SCRIPT" > /dev/null; then
+      :
+    elif grep LD_LIBRARY_PATH "$SCRIPT" > /dev/null; then
+      echo "Transforming $SCRIPT"
+      EXISTINGLIBS=""
+      for LIB in $LIBS; do
+        # exclude libsvn_test since the undefined test_funcs breaks libtool
+        case $LIB in
+          *libsvn_test-*) continue ;;
+        esac
+        if [ ! -f $LIB ]; then
+          continue
+        fi
+        if [ -z "$EXISTINGLIBS" ]; then
+          EXISTINGLIBS="$LIB"
+        else
+          EXISTINGLIBS="$EXISTINGLIBS $LIB"
+        fi
+      done
+      if [ ! -z "$EXISTINGLIBS" ]; then
+        cat "$SCRIPT" |
+        (
+          read LINE
+          echo "$LINE"
+          echo "LD_PRELOAD=\\"$EXISTINGLIBS\\""
+          echo "export LD_PRELOAD"
+          cat
+        ) < "$SCRIPT" > "$SCRIPT.new"
+        mv -f "$SCRIPT.new" "$SCRIPT"
+        chmod +x "$SCRIPT"
+      fi
+    fi
+  fi
+}
+
+DIR=`pwd`
+
+''')
+    libdep_cache = {}
+    paths = {}
+    for target_ob in install_sources:
+      if not isinstance(target_ob, gen_base.TargetExe):
+        continue
+      name = target_ob.name
+      libs = self._get_all_lib_deps(target_ob.name, libdep_cache, paths)
+      path = paths[name]
+      for i in range(0, len(libs)):
+        lib = libs[i]
+        libpath = paths[libs[i]]
+        libs[i] = '$DIR/%s/.libs/%s-%s.so' % (libpath, lib, self.version)
+      fd.write('transform %s/%s "%s"\n' % (path, name, " ".join(libs)))
+    fd.close()
+    mode = stat.S_IRWXU|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|stat.S_IXOTH
+    os.chmod(script, mode)
+
+  def _get_all_lib_deps(self, target_name, libdep_cache, paths):
+    if not target_name in libdep_cache:
+      libs = {}
+      path = None
+      if target_name in self.sections:
+        section = self.sections[target_name]
+        opt_libs = self.sections[target_name].options.get('libs')
+        paths[target_name] = section.options.get('path')
+        if opt_libs:
+          for lib_name in opt_libs.split():
+            if lib_name.startswith('libsvn_'):
+              libs[lib_name] = True
+            for lib in self._get_all_lib_deps(lib_name, libdep_cache, paths):
+              libs[lib] = True
+      libdep_cache[target_name] = libs.keys()[:]
+      libdep_cache[target_name].sort()
+    return libdep_cache[target_name]
+
 class UnknownDependency(Exception):
   "We don't know how to deal with the dependent to link it in."
   pass

Modified: subversion/branches/performance/build/generator/swig/__init__.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/swig/__init__.py?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/swig/__init__.py (original)
+++ subversion/branches/performance/build/generator/swig/__init__.py Wed Dec 29 21:12:33 2010
@@ -70,9 +70,8 @@ class Generator:
       swig_version = _exec.output([self.swig_path, "-version"])
       m = re.search("Version (\d+).(\d+).(\d+)", swig_version)
       if m:
-        return int(
-          "%s0%s0%s" % (m.group(1), m.group(2), m.group(3)))
+        return (m.group(1), m.group(2), m.group(3))
     except AssertionError:
       pass
-    return 0
+    return (0, 0, 0)
 

Modified: subversion/branches/performance/build/generator/swig/checkout_swig_header.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/swig/checkout_swig_header.py?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/swig/checkout_swig_header.py (original)
+++ subversion/branches/performance/build/generator/swig/checkout_swig_header.py Wed Dec 29 21:12:33 2010
@@ -60,15 +60,15 @@ class Generator(generator.swig.Generator
       os.remove(out)
     if self._skip_checkout(path):
       open(out, "w")
-    elif self.version() == 103024:
+    elif self.version() == (1, 3, 24):
       shutil.copy(build_path_join(self.swig_libdir, path), out)
     else:
       run("%s -o %s -co %s" % (self.swig_path, out, path))
 
   def _skip_checkout(self, path):
     """Should we skip this checkout?"""
-    return (path == "ruby/rubytracking.swg" and self.version() < 103026 or
-            path == "common.swg" and self.version() > 103024)
+    return (path == "ruby/rubytracking.swg" and self.version() < (1, 3, 26) or
+            path == "common.swg" and self.version() > (1, 3, 24))
 
   def _output_file(self, path):
     """Get output filename"""

Modified: subversion/branches/performance/build/generator/swig/external_runtime.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/swig/external_runtime.py?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/swig/external_runtime.py (original)
+++ subversion/branches/performance/build/generator/swig/external_runtime.py Wed Dec 29 21:12:33 2010
@@ -65,7 +65,7 @@ class Generator(generator.swig.Generator
 
     # Build runtime files
     out = self._output_file(lang)
-    if self.version() == 103024:
+    if self.version() == (1, 3, 24):
       out_file = open(out, "w")
       out_file.write(open("%s/swigrun.swg" % self.proxy_dir).read())
       out_file.write(open("%s/common.swg" % self.proxy_dir).read())
@@ -79,12 +79,12 @@ class Generator(generator.swig.Generator
 
     # SWIG 1.3.24-27 should include rubyhead.swg in their
     # external runtime, but they don't.
-    if lang == "ruby" and self.version() < 103028:
+    if lang == "ruby" and self.version() < (1, 3, 28):
       runtime = open(out).read()
       out_file = open(out, "w")
       head = open("%s/rubyhead.swg" % self.proxy_dir).read();
       out_file.write(head)
-      if self.version() >= 103026:
+      if self.version() >= (1, 3, 26):
         # SWIG 1.3.26-27 should include rubytracking.swg in their
         # external runtime, but they don't.
         tracking = open("%s/rubytracking.swg" % self.proxy_dir).read();
@@ -94,7 +94,7 @@ class Generator(generator.swig.Generator
 
     # SWIG 1.3.25 and earlier use the wrong number of arguments in calls to
     # SWIG_GetModule. We fix this below.
-    if self.version() <= 103025:
+    if self.version() <= (1, 3, 25):
       for line in fileinput.input(out, inplace=1):
         sys.stdout.write(
           re.sub(r"SWIG_GetModule\(\)", "SWIG_GetModule(NULL)", line)

Modified: subversion/branches/performance/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/performance/configure.ac?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/configure.ac (original)
+++ subversion/branches/performance/configure.ac Wed Dec 29 21:12:33 2010
@@ -268,8 +268,13 @@ AC_SUBST(LT_CFLAGS)
 AC_SUBST(LT_LDFLAGS)
 
 AC_ARG_ENABLE(local-library-preloading,
-  AS_HELP_STRING([--disable-local-library-preloading], 
-                 [Disable preloading of locally built libraries in locally built executables]),
+  AS_HELP_STRING([--enable-local-library-preloading], 
+                 [Enable preloading of locally built libraries in locally
+                  built executables.  This may be necessary for testing
+                  prior to installation on some platforms.  It doesn't work
+                  on some platforms (Darwin, OpenBSD, ...) and on platforms
+                  where it does work (Linux, ...) it may interfere with the
+                  installation process.]),
   [
   if test "$enableval" != "no"; then
     if test "$svn_enable_shared" = "yes"; then
@@ -281,11 +286,7 @@ AC_ARG_ENABLE(local-library-preloading,
     TRANSFORM_LIBTOOL_SCRIPTS=""
   fi
   ], [
-  if test "`uname`" != "Darwin" && test "$svn_enable_shared" = "yes"; then
-    TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts"
-  else
-    TRANSFORM_LIBTOOL_SCRIPTS=""
-  fi
+  TRANSFORM_LIBTOOL_SCRIPTS=""
 ])
 AC_SUBST(TRANSFORM_LIBTOOL_SCRIPTS)
 

Modified: subversion/branches/performance/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in
URL: http://svn.apache.org/viewvc/subversion/branches/performance/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in (original)
+++ subversion/branches/performance/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in Wed Dec 29 21:12:33 2010
@@ -1416,7 +1416,7 @@ sub make_targets_file
 
   foreach my $file (@_)
     {
-      print TARGETS "$file\n";
+      print TARGETS "$file\@\n";
     }
 
   close(TARGETS)

Modified: subversion/branches/performance/subversion/bindings/javahl/native/SVNRepos.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/SVNRepos.cpp?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/SVNRepos.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/SVNRepos.cpp Wed Dec 29 21:12:33 2010
@@ -322,6 +322,7 @@ void SVNRepos::load(File &path,
   SVN_JNI_ERR(svn_repos_load_fs3(repos, dataIn.getStream(requestPool),
                                  uuid_action, relativePath,
                                  usePreCommitHook, usePostCommitHook,
+                                 FALSE,
                                  notifyCallback != NULL
                                     ? ReposNotifyCallback::notify
                                     : NULL,

Modified: subversion/branches/performance/subversion/bindings/swig/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/swig/INSTALL?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/swig/INSTALL (original)
+++ subversion/branches/performance/subversion/bindings/swig/INSTALL Wed Dec 29 21:12:33 2010
@@ -65,7 +65,7 @@ BUILDING SWIG BINDINGS FOR SVN ON UNIX
 
 
 Step 1:  Install a suitable version of SWIG (which is
-         currently swig version 1.3.24 - 1.3.31).
+         currently swig version 1.3.24 - 2.0.1).
 
     * Perhaps your distribution packages a suitable version - if it does
       install it, and skip to the last bullet point in this section.
@@ -260,7 +260,7 @@ BUILDING SWIG BINDINGS FOR SVN ON WINDOW
        the --with-swig parameter to the installed location for SWIG.
        Example:
 
-        > gen-make.py -t vcproj --with-swig="C:\Program Files\SWIG-1.3.31"
+        > gen-make.py -t vcproj --with-swig="C:\Program Files\SWIG-2.0.1"
 
    4.  If you haven't already built Subversion, you should do so now.
        Instructions are in the main INSTALL file.

Modified: subversion/branches/performance/subversion/include/private/svn_client_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/private/svn_client_private.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/private/svn_client_private.h (original)
+++ subversion/branches/performance/subversion/include/private/svn_client_private.h Wed Dec 29 21:12:33 2010
@@ -50,6 +50,14 @@ svn_client__obliterate_path_rev(const ch
                                 apr_pool_t *pool);
 
 
+/** Return @c SVN_ERR_ILLEGAL_TARGET if TARGETS contains a mixture of
+ * URLs and paths; otherwise return SVN_NO_ERROR.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_client__assert_homogeneous_target_type(const apr_array_header_t *targets);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/performance/subversion/include/private/svn_ra_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/private/svn_ra_private.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/private/svn_ra_private.h (original)
+++ subversion/branches/performance/subversion/include/private/svn_ra_private.h Wed Dec 29 21:12:33 2010
@@ -68,6 +68,72 @@ svn_ra__obliterate_path_rev(svn_ra_sessi
                             const char *path,
                             apr_pool_t *pool);
 
+
+/*** Operational Locks ***/
+
+/** This is a function type which allows svn_ra__get_operational_lock()
+ * to report lock attempt failures.  If non-NULL, @a locktoken is the
+ * preexisting lock which prevented lock acquisition.
+ *
+ * @since New in 1.7.
+ */
+typedef svn_error_t *(*svn_ra__lock_retry_func_t)(void *baton,
+                                                  const svn_string_t *locktoken,
+                                                  apr_pool_t *pool);
+
+/** Acquire a lock (of sorts) on the repository associated with the
+ * given RA @a session, retrying as necessary up to @a num_retries
+ * times, and set @a *lock_string_p to the value of the acquired lock
+ * token.  Allocate the returned token from @a pool.  (See this
+ * function's counterpart svn_ra__release_operational_lock() for your
+ * lock removal needs.)
+ *
+ * @a lock_revprop_name is the name of the revision-0 property used to
+ * store the lock.
+ *
+ * If @a steal_lock is set, then replace any pre-existing lock on the
+ * repository with our own.  Iff such a theft occurs and
+ * @a stolen_lock_p is non-NULL, set @a *stolen_lock_p to the token of
+ * the lock we stole.
+ *
+ * Call @a retry_func with @a retry_baton each time the retry loop
+ * fails to acquire a lock.
+ *
+ * Use @a cancel_func and @a cancel_baton to check for early
+ * cancellation.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_ra__get_operational_lock(const svn_string_t **lock_string_p,
+                             const svn_string_t **stolen_lock_p,
+                             svn_ra_session_t *session,
+                             const char *lock_revprop_name,
+                             svn_boolean_t steal_lock,
+                             int num_retries,
+                             svn_ra__lock_retry_func_t retry_func,
+                             void *retry_baton,
+                             svn_cancel_func_t cancel_func,
+                             void *cancel_baton,
+                             apr_pool_t *pool);
+
+/** Release an operational lock (whose value is @a mylocktoken) on the
+ * repository associated with RA @a session.  (This is the counterpart
+ * to svn_ra__get_operational_lock().)
+ *
+ * @a lock_revprop_name is the name of the revision-0 property used to
+ * store the lock.
+ *
+ * Use @a scratch_pool for temporary allocations.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_ra__release_operational_lock(svn_ra_session_t *session,
+                                 const char *lock_revprop_name,
+                                 const svn_string_t *mylocktoken,
+                                 apr_pool_t *scratch_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/performance/subversion/include/private/svn_repos_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/private/svn_repos_private.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/private/svn_repos_private.h (original)
+++ subversion/branches/performance/subversion/include/private/svn_repos_private.h Wed Dec 29 21:12:33 2010
@@ -70,6 +70,42 @@ svn_repos__obliterate_path_rev(svn_repos
                                apr_pool_t *pool);
 
 
+/** Validate that property @a name is valid for use in a Subversion
+ * repository; return @c SVN_ERR_REPOS_BAD_ARGS if it isn't.  For some
+ * "svn:" properties, also validate the @a value, and return
+ * @c SVN_ERR_BAD_PROPERTY_VALUE if it is not valid.
+ * 
+ * Use @a pool for temporary allocations.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_repos__validate_prop(const char *name,
+                         const svn_string_t *value,
+                         apr_pool_t *pool);
+
+/**
+ * Given the error @a err from svn_repos_fs_commit_txn(), return an
+ * string containing either or both of the svn_fs_commit_txn() error
+ * and the SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED wrapped error from
+ * the post-commit hook.  Any error tracing placeholders in the error
+ * chain are skipped over.
+ *
+ * This function does not modify @a err.
+ *
+ * ### This method should not be necessary, but there are a few
+ * ### places, e.g. mod_dav_svn, where only a single error message
+ * ### string is returned to the caller and it is useful to have both
+ * ### error messages included in the message.
+ *
+ * Use @a pool to do any allocations in.
+ *
+ * @since New in 1.7.
+ */
+const char *
+svn_repos__post_commit_error_str(svn_error_t *err,
+                                 apr_pool_t *pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/performance/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/private/svn_wc_private.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/performance/subversion/include/private/svn_wc_private.h Wed Dec 29 21:12:33 2010
@@ -69,15 +69,6 @@ svn_wc__changelist_match(svn_wc_context_
                          apr_hash_t *clhash,
                          apr_pool_t *scratch_pool);
 
-/**
- * Return a boolean answer to the question "Is @a status something that
- * should be reported?".  @a no_ignore and @a get_all are the same as
- * svn_wc_get_status_editor4().
- */
-svn_boolean_t
-svn_wc__is_sendable_status(const svn_wc_status3_t *status,
-                           svn_boolean_t no_ignore,
-                           svn_boolean_t get_all);
 
 /* For the LOCAL_ABSPATH entry in WC_CTX, set the
  * file_external_path to URL, the file_external_peg_rev to *PEG_REV
@@ -168,6 +159,7 @@ svn_wc__strictly_is_wc_root(svn_boolean_
 
 /** A callback invoked by the generic node-walker function.  */
 typedef svn_error_t *(*svn_wc__node_found_func_t)(const char *local_abspath,
+                                                  svn_node_kind_t kind,
                                                   void *walk_baton,
                                                   apr_pool_t *scratch_pool);
 
@@ -722,6 +714,15 @@ svn_wc__get_mergeinfo_walk_info(svn_bool
                                 apr_pool_t *scratch_pool);
 
 
+/**
+ * For use by entries.c and entries-dump.c to read old-format working copies.
+ */
+svn_error_t *
+svn_wc__read_entries_old(apr_hash_t **entries,
+                         const char *dir_abspath,
+                         apr_pool_t *result_pool,
+                         apr_pool_t *scratch_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/performance/subversion/include/svn_error.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_error.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_error.h (original)
+++ subversion/branches/performance/subversion/include/svn_error.h Wed Dec 29 21:12:33 2010
@@ -57,12 +57,6 @@ extern "C" {
    there for the reasons why. */
 #include "svn_error_codes.h"
 
-/** Set the error location for debug mode. */
-void
-svn_error__locate(const char *file,
-                  long line);
-
-
 /** Put an English description of @a statcode into @a buf and return @a buf,
  * NULL-terminated. @a statcode is either an svn error or apr error.
  */
@@ -116,10 +110,6 @@ svn_error_create(apr_status_t apr_err,
                  svn_error_t *child,
                  const char *message);
 
-/** Wrapper macro to collect file and line information */
-#define svn_error_create \
-  (svn_error__locate(__FILE__,__LINE__), (svn_error_create))
-
 /** Create an error structure with the given @a apr_err and @a child,
  * with a printf-style error message produced by passing @a fmt, using
  * apr_psprintf().
@@ -131,10 +121,6 @@ svn_error_createf(apr_status_t apr_err,
                   ...)
   __attribute__ ((format(printf, 3, 4)));
 
-/** Wrapper macro to collect file and line information */
-#define svn_error_createf \
-  (svn_error__locate(__FILE__,__LINE__), (svn_error_createf))
-
 /** Wrap a @a status from an APR function.  If @a fmt is NULL, this is
  * equivalent to svn_error_create(status,NULL,NULL).  Otherwise,
  * the error message is constructed by formatting @a fmt and the
@@ -149,10 +135,6 @@ svn_error_wrap_apr(apr_status_t status,
                    ...)
        __attribute__((format(printf, 2, 3)));
 
-/** Wrapper macro to collect file and line information */
-#define svn_error_wrap_apr \
-  (svn_error__locate(__FILE__,__LINE__), (svn_error_wrap_apr))
-
 /** A quick n' easy way to create a wrapped exception with your own
  * message, before throwing it up the stack.  (It uses all of the
  * @a child's fields.)
@@ -161,10 +143,6 @@ svn_error_t *
 svn_error_quick_wrap(svn_error_t *child,
                      const char *new_msg);
 
-/** Wrapper macro to collect file and line information */
-#define svn_error_quick_wrap \
-  (svn_error__locate(__FILE__,__LINE__), (svn_error_quick_wrap))
-
 /** Compose two errors, returning the composition as a brand new error
  * and consuming the original errors.  Either or both of @a err1 and
  * @a err2 may be @c SVN_NO_ERROR.  If both are not @c SVN_NO_ERROR,
@@ -193,14 +171,17 @@ svn_error_compose(svn_error_t *chain,
 svn_error_t *
 svn_error_root_cause(svn_error_t *err);
 
-/** Return TRUE if @a err's chain contains the error code @a apr_err.
+/** Return the first error in @a err's chain that has an error code @a
+ * apr_err or #SVN_NO_ERROR if there is no error with that code.  @a
+ * err should *not* be cleared as the returned error shares memory
+ * with @a err.
  *
- * If @a err is #SVN_NO_ERROR, return FALSE.
+ * If @a err is #SVN_NO_ERROR, return #SVN_NO_ERROR.
  *
  * @since New in 1.7.
  */
-svn_boolean_t
-svn_error_has_cause(svn_error_t *err, apr_status_t apr_err);
+svn_error_t *
+svn_error_find_cause(svn_error_t *err, apr_status_t apr_err);
 
 /** Create a new error that is a deep copy of @a err and return it.
  *
@@ -222,6 +203,24 @@ void
 svn_error_clear(svn_error_t *error);
 
 
+#if defined(SVN_DEBUG)
+/** Set the error location for debug mode. */
+void
+svn_error__locate(const char *file,
+                  long line);
+
+/* Wrapper macros to collect file and line information */
+#define svn_error_create \
+  (svn_error__locate(__FILE__,__LINE__), (svn_error_create))
+#define svn_error_createf \
+  (svn_error__locate(__FILE__,__LINE__), (svn_error_createf))
+#define svn_error_wrap_apr \
+  (svn_error__locate(__FILE__,__LINE__), (svn_error_wrap_apr))
+#define svn_error_quick_wrap \
+  (svn_error__locate(__FILE__,__LINE__), (svn_error_quick_wrap))
+#endif
+
+
 /**
  * Very basic default error handler: print out error stack @a error to the
  * stdio stream @a stream, with each error prefixed by @a prefix; quit and
@@ -312,13 +311,22 @@ svn_handle_warning(FILE *stream,
 #endif
 
 /**
- * Purge from @a ERR and its child chain any links associated with
- * error tracing placeholders, and return the new top-level error
- * chain item.  @a ERR should be considered unusable after passing
- * through this function, but should *not* be cleared (as the returned
- * error is shares memory with @a ERR).
+ * Returns an error chain that is based on @a err's error chain but
+ * does not include any error tracing placeholders.  @a err is not
+ * modified, except for any allocations using its pool.
+ *
+ * The returned error chain is allocated from @a err's pool and shares
+ * its message and source filename character arrays.  The returned
+ * error chain should *not* be cleared because it is not a fully
+ * fledged error chain, only clearing @a err should be done to clear
+ * the returned error chain.  If @a err is cleared, then the returned
+ * error chain is unusable.
+ *
+ * @a err can be #SVN_NO_ERROR.  If @a err is not #SVN_NO_ERROR, then
+ * the last link in the error chain must be a non-tracing error, i.e,
+ * a real error.
  *
- * @since New in 1.6.
+ * @since New in 1.7.
  */
 svn_error_t *svn_error_purge_tracing(svn_error_t *err);
 

Modified: subversion/branches/performance/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_fs.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_fs.h (original)
+++ subversion/branches/performance/subversion/include/svn_fs.h Wed Dec 29 21:12:33 2010
@@ -811,15 +811,16 @@ svn_fs_begin_txn(svn_fs_txn_t **txn_p,
  *
  * If the commit succeeds, @a txn is invalid.
  *
- * If the commit fails, @a txn is still valid; you can make more
- * operations to resolve the conflict, or call svn_fs_abort_txn() to
- * abort the transaction.
+ * If the commit fails for any reason, @a *new_rev is an invalid
+ * revision number, an error other than #SVN_NO_ERROR is returned and
+ * @a txn is still valid; you can make more operations to resolve the
+ * conflict, or call svn_fs_abort_txn() to abort the transaction.
  *
  * @note Success or failure of the commit of @a txn is determined by
  * examining the value of @a *new_rev upon this function's return.  If
  * the value is a valid revision number, the commit was successful,
  * even though a non-@c NULL function return value may indicate that
- * something else went wrong.
+ * something else went wrong in post commit FS processing.
  */
 svn_error_t *
 svn_fs_commit_txn(const char **conflict_p,

Modified: subversion/branches/performance/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_io.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_io.h (original)
+++ subversion/branches/performance/subversion/include/svn_io.h Wed Dec 29 21:12:33 2010
@@ -1535,9 +1535,17 @@ svn_io_dir_walk(const char *dirname,
 
 /**
  * Start @a cmd with @a args, using utf8-encoded @a path as working
- * directory.  Connect @a cmd's stdin, stdout, and stderr to @a infile,
- * @a outfile, and @a errfile, except where they are NULL.  Return the
- * process handle for the invoked program in @a *cmd_proc.
+ * directory.  Return the process handle for the invoked program in @a
+ * *cmd_proc.
+ *
+ * If @a infile_pipe is TRUE, connect @a cmd's stdin to a pipe;
+ * otherwise, connect it to @a infile (which may be NULL).  If
+ * @a outfile_pipe is TRUE, connect @a cmd's stdout to a pipe; otherwise,
+ * connect it to @a outfile (which may be NULL).  If @a errfile_pipe
+ * is TRUE, connect @a cmd's stderr to a pipe; otherwise, connect it
+ * to @a errfile (which may be NULL).  (Callers must pass FALSE for
+ * each of these boolean values for which the corresponding file
+ * handle is non-NULL.)
  *
  * @a args is a list of utf8-encoded <tt>const char *</tt> arguments,
  * terminated by @c NULL.  @a args[0] is the name of the program, though it
@@ -1552,8 +1560,29 @@ svn_io_dir_walk(const char *dirname,
  * will result in error output being written to @a errfile, if non-NULL, and
  * a non-zero exit status being returned to the parent process.
  *
+ * @since New in 1.7.
+ */
+svn_error_t *svn_io_start_cmd2(apr_proc_t *cmd_proc,
+                               const char *path,
+                               const char *cmd,
+                               const char *const *args,
+                               svn_boolean_t inherit,
+                               svn_boolean_t infile_pipe,
+                               apr_file_t *infile,
+                               svn_boolean_t outfile_pipe,
+                               apr_file_t *outfile,
+                               svn_boolean_t errfile_pipe,
+                               apr_file_t *errfile,
+                               apr_pool_t *pool);
+
+/**
+ * Similar to svn_io_start_cmd2() but with @a infile_pipe, @a
+ * outfile_pipe, and @a errfile_pipe always FALSE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API
  * @since New in 1.3.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_io_start_cmd(apr_proc_t *cmd_proc,
                  const char *path,

Modified: subversion/branches/performance/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_ra.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_ra.h (original)
+++ subversion/branches/performance/subversion/include/svn_ra.h Wed Dec 29 21:12:33 2010
@@ -762,7 +762,7 @@ svn_ra_get_dated_revision(svn_ra_session
  *
  * Use @a pool for memory allocation.
  *
- * @see svn_fs_change_rev_prop2(), svn_error_has_cause().
+ * @see svn_fs_change_rev_prop2(), svn_error_find_cause().
  *
  * @since New in 1.7.
  */

Modified: subversion/branches/performance/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_repos.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_repos.h (original)
+++ subversion/branches/performance/subversion/include/svn_repos.h Wed Dec 29 21:12:33 2010
@@ -1844,15 +1844,27 @@ svn_repos_get_file_revs(svn_repos_t *rep
  * @{
  */
 
-/** Like svn_fs_commit_txn(), but invoke the @a repos's pre- and
+/** Like svn_fs_commit_txn(), but invoke the @a repos' pre- and
  * post-commit hooks around the commit.  Use @a pool for any necessary
  * allocations.
  *
- * If the pre-commit hook or svn_fs_commit_txn() fails, throw the
- * original error to caller.  If an error occurs when running the
- * post-commit hook, return the original error wrapped with
- * SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED.  If the caller sees this
- * error, it knows that the commit succeeded anyway.
+ * If the pre-commit hook fails, do not attempt to commit the
+ * transaction and throw the original error to the caller.
+ *
+ * A successful commit is indicated by a valid revision value in @a
+ * *new_rev, not if svn_fs_commit_txn() returns an error, which can
+ * occur during its post commit FS processing.  If the transaction was
+ * not committed, then return the associated error and do not execute
+ * the post-commit hook.
+ *
+ * If the commit succeeds the post-commit hook is executed.  If the
+ * post-commit hook returns an error, always wrap it with
+ * SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED; this allows the caller to
+ * find the post-commit hook error in the returned error chain.  If
+ * both svn_fs_commit_txn() and the post-commit hook return errors,
+ * then svn_fs_commit_txn()'s error is the parent error and the
+ * SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED wrapped error is the child
+ * error.
  *
  * @a conflict_p, @a new_rev, and @a txn are as in svn_fs_commit_txn().
  */
@@ -2533,6 +2545,10 @@ svn_repos_dump_fs(svn_repos_t *repos,
  * If @a use_post_commit_hook is set, call the repository's
  * post-commit hook after committing each loaded revision.
  *
+ * If @a validate_props is set, then validate Subversion revision and
+ * node properties (those in the svn: namespace) against established
+ * rules for those things.
+ *
  * If non-NULL, use @a notify_func and @a notify_baton to send notification
  * of events to the caller.
  *
@@ -2549,6 +2565,7 @@ svn_repos_load_fs3(svn_repos_t *repos,
                    const char *parent_dir,
                    svn_boolean_t use_pre_commit_hook,
                    svn_boolean_t use_post_commit_hook,
+                   svn_boolean_t validate_props,
                    svn_repos_notify_func_t notify_func,
                    void *notify_baton,
                    svn_cancel_func_t cancel_func,
@@ -2556,8 +2573,9 @@ svn_repos_load_fs3(svn_repos_t *repos,
                    apr_pool_t *pool);
 
 /**
- * Similar to svn_repos_load_fs3(), but with @a feedback_stream in place of
- * the #svn_repos_notify_func_t and baton.
+ * Similar to svn_repos_load_fs3(), but with @a feedback_stream in
+ * place of the #svn_repos_notify_func_t and baton and with
+ * @a validate_props always FALSE.
  *
  * @since New in 1.2.
  * @deprecated Provided for backward compatibility with the 1.6 API.
@@ -2732,13 +2750,16 @@ svn_repos_parse_dumpstream2(svn_stream_t
  * 'copyfrom' history to exist in the repository when it encounters
  * nodes that are added-with-history.
  *
+ * If @a validate_props is set, then validate Subversion revision and
+ * node properties (those in the svn: namespace) against established
+ * rules for those things.
+ *
  * If @a parent_dir is not NULL, then the parser will reparent all the
  * loaded nodes, from root to @a parent_dir.  The directory @a parent_dir
  * must be an existing directory in the repository.
  *
  * Print all parsing feedback to @a outstream (if non-@c NULL).
  *
- *
  * @since New in 1.7.
  */
 svn_error_t *
@@ -2746,6 +2767,7 @@ svn_repos_get_fs_build_parser3(const svn
                                void **parse_baton,
                                svn_repos_t *repos,
                                svn_boolean_t use_history,
+                               svn_boolean_t validate_props,
                                enum svn_repos_load_uuid uuid_action,
                                const char *parent_dir,
                                svn_repos_notify_func_t notify_func,
@@ -2753,8 +2775,9 @@ svn_repos_get_fs_build_parser3(const svn
                                apr_pool_t *pool);
 
 /**
- * Similar to svn_repos_get_fs_build_parser3(), but with @a outstream in place
- * if a #svn_repos_notify_func_t and baton.
+ * Similar to svn_repos_get_fs_build_parser3(), but with @a outstream
+ * in place if a #svn_repos_notify_func_t and baton and with
+ * @a validate_props always FALSE.
  *
  * @since New in 1.1.
  * @deprecated Provided for backward compatibility with the 1.6 API.

Modified: subversion/branches/performance/subversion/include/svn_subst.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_subst.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_subst.h (original)
+++ subversion/branches/performance/subversion/include/svn_subst.h Wed Dec 29 21:12:33 2010
@@ -592,19 +592,46 @@ svn_subst_stream_detranslated(svn_stream
 
 /* EOL conversion and character encodings */
 
+/** Similar to svn_subst_translate_string2(), except that the information about
+ * whether re-encoding or line ending translation were performed is discarded.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
+SVN_DEPRECATED
+svn_error_t *svn_subst_translate_string(svn_string_t **new_value,
+                                        const svn_string_t *value,
+                                        const char *encoding,
+                                        apr_pool_t *pool);
+
 /** Translate the string @a value from character encoding @a encoding to
  * UTF8, and also from its current line-ending style to LF line-endings.  If
  * @a encoding is @c NULL, translate from the system-default encoding.
  *
+ * If @a translated_to_utf8 is not @c NULL, then set @a *translated_to_utf8
+ * to @c TRUE if at least one character of @a value in the source character
+ * encoding was translated to UTF-8, or to @c FALSE otherwise.
+ *
+ * If @a translated_line_endings is not @c NULL, then set @a
+ * *translated_line_endings to @c TRUE if at least one line ending was
+ * changed to LF, or to @c FALSE otherwise.
+ *
  * Recognized line endings are LF, CR, CRLF.  If @a value has inconsistent
  * line endings, return @c SVN_ERR_IO_INCONSISTENT_EOL.
  *
- * Set @a *new_value to the translated string, allocated in @a pool.
+ * Set @a *new_value to the translated string, allocated in @a result_pool.
+ *
+ * @a scratch_pool is used for temporary allocations.
+ *
+ * @since New in 1.7.
  */
-svn_error_t *svn_subst_translate_string(svn_string_t **new_value,
-                                        const svn_string_t *value,
-                                        const char *encoding,
-                                        apr_pool_t *pool);
+svn_error_t *
+svn_subst_translate_string2(svn_string_t **new_value,
+                            svn_boolean_t *translated_to_utf8,
+                            svn_boolean_t *translated_line_endings,
+                            const svn_string_t *value,
+                            const char *encoding,
+                            apr_pool_t *result_pool,
+                            apr_pool_t *scratch_pool);
 
 /** Translate the string @a value from UTF8 and LF line-endings into native
  * character encoding and native line-endings.  If @a for_output is TRUE,

Modified: subversion/branches/performance/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_types.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_types.h (original)
+++ subversion/branches/performance/subversion/include/svn_types.h Wed Dec 29 21:12:33 2010
@@ -49,17 +49,17 @@ extern "C" {
  * @since New in 1.6.
  */
 #ifndef SVN_DEPRECATED
-#if !defined(SWIGPERL) && !defined(SWIGPYTHON) && !defined(SWIGRUBY)
-#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__==3 && __GNUC_MINOR__>=1))
-#define SVN_DEPRECATED __attribute__((deprecated))
-#elif defined(_MSC_VER) && _MSC_VER >= 1300
-#define SVN_DEPRECATED __declspec(deprecated)
-#else
-#define SVN_DEPRECATED
-#endif
-#else
-#define SVN_DEPRECATED
-#endif
+# if !defined(SWIGPERL) && !defined(SWIGPYTHON) && !defined(SWIGRUBY)
+#  if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__==3 && __GNUC_MINOR__>=1))
+#   define SVN_DEPRECATED __attribute__((deprecated))
+#  elif defined(_MSC_VER) && _MSC_VER >= 1300
+#   define SVN_DEPRECATED __declspec(deprecated)
+#  else
+#   define SVN_DEPRECATED
+#  endif
+# else
+#  define SVN_DEPRECATED
+# endif
 #endif
 
 

Modified: subversion/branches/performance/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/add.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/add.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/add.c Wed Dec 29 21:12:33 2010
@@ -45,6 +45,7 @@
 #include "client.h"
 #include "svn_ctype.h"
 
+#include "private/svn_client_private.h"
 #include "private/svn_wc_private.h"
 
 #include "svn_private_config.h"
@@ -865,27 +866,10 @@ svn_client_mkdir4(const apr_array_header
                   svn_client_ctx_t *ctx,
                   apr_pool_t *pool)
 {
-  svn_boolean_t wc_present = FALSE, url_present = FALSE;
-  int i;
-
   if (! paths->nelts)
     return SVN_NO_ERROR;
 
-  /* Check to see if at least one of our paths is a working copy
-     path or a repository url. */
-  for (i = 0; i < paths->nelts; ++i)
-    {
-      const char *path = APR_ARRAY_IDX(paths, i, const char *);
-      if (! svn_path_is_url(path))
-       wc_present = TRUE;
-      else
-       url_present = TRUE;
-    }
-
-  if (url_present && wc_present)
-    return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
-                             _("Cannot mix repository and working copy "
-                               "targets"));
+  SVN_ERR(svn_client__assert_homogeneous_target_type(paths));
 
   if (svn_path_is_url(APR_ARRAY_IDX(paths, 0, const char *)))
     {
@@ -896,6 +880,7 @@ svn_client_mkdir4(const apr_array_header
     {
       /* This is a regular "mkdir" + "svn add" */
       apr_pool_t *subpool = svn_pool_create(pool);
+      int i;
 
       for (i = 0; i < paths->nelts; i++)
         {

Modified: subversion/branches/performance/subversion/libsvn_client/changelist.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/changelist.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/changelist.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/changelist.c Wed Dec 29 21:12:33 2010
@@ -56,19 +56,17 @@ struct set_cl_fn_baton
    as LOCAL_ABSPATH is deemed a valid target of that association.  */
 static svn_error_t *
 set_node_changelist(const char *local_abspath,
+                    svn_node_kind_t kind,
                     void *baton,
                     apr_pool_t *pool)
 {
   struct set_cl_fn_baton *b = (struct set_cl_fn_baton *)baton;
-  svn_node_kind_t kind;
 
   /* See if this entry passes our changelist filtering. */
   if (! svn_wc__changelist_match(b->ctx->wc_ctx, local_abspath,
                                  b->changelist_hash, pool))
     return SVN_NO_ERROR;
 
-  SVN_ERR(svn_wc_read_kind(&kind, b->ctx->wc_ctx, local_abspath, FALSE, pool));
-
   /* We only care about files right now. */
   if (kind != svn_node_file)
     {
@@ -213,14 +211,13 @@ struct get_cl_fn_baton
 
 static svn_error_t *
 get_node_changelist(const char *local_abspath,
+                    svn_node_kind_t kind,
                     void *baton,
                     apr_pool_t *pool)
 {
   struct get_cl_fn_baton *b = (struct get_cl_fn_baton *)baton;
-  svn_node_kind_t kind;
   const char *changelist;
 
-  SVN_ERR(svn_wc_read_kind(&kind, b->wc_ctx, local_abspath, FALSE, pool));
   SVN_ERR(svn_wc__node_get_changelist(&changelist, b->wc_ctx,
                                       local_abspath, pool, pool));
 

Modified: subversion/branches/performance/subversion/libsvn_client/checkout.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/checkout.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/checkout.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/checkout.c Wed Dec 29 21:12:33 2010
@@ -211,12 +211,15 @@ svn_client__checkout_internal(svn_revnum
     }
 
   /* Have update fix the incompleteness. */
-  err = svn_client__update_internal(result_rev, local_abspath,
-                                    revision, depth, TRUE,
-                                    ignore_externals,
-                                    allow_unver_obstructions,
-                                    use_sleep, innercheckout, FALSE,
-                                    ctx, pool);
+  if (! err)
+    {
+      err = svn_client__update_internal(result_rev, local_abspath,
+                                        revision, depth, TRUE,
+                                        ignore_externals,
+                                        allow_unver_obstructions,
+                                        use_sleep, innercheckout, FALSE,
+                                        ctx, pool);
+    }
 
   if (err)
     {

Modified: subversion/branches/performance/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/client.h?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/client.h (original)
+++ subversion/branches/performance/subversion/libsvn_client/client.h Wed Dec 29 21:12:33 2010
@@ -1107,8 +1107,6 @@ const svn_opt_revision_t *
 svn_cl__rev_default_to_peg(const svn_opt_revision_t *revision,
                            const svn_opt_revision_t *peg_revision);
 
-
-
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/performance/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/commit_util.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/commit_util.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/commit_util.c Wed Dec 29 21:12:33 2010
@@ -200,6 +200,7 @@ struct add_lock_token_baton
 /* This implements the svn_wc__node_found_func_t interface. */
 static svn_error_t *
 add_lock_token(const char *local_abspath,
+               svn_node_kind_t kind,
                void *walk_baton,
                apr_pool_t *scratch_pool)
 {
@@ -1024,8 +1025,8 @@ svn_client__harvest_committables(apr_has
            * has no entry (e.g. locally deleted), issue a proper tree-
            * conflicts error instead of a "not under version control". */
           const svn_wc_conflict_description2_t *conflict;
-          svn_wc__get_tree_conflict(&conflict, wc_ctx, target_abspath,
-                                    iterpool, iterpool);
+          SVN_ERR(svn_wc__get_tree_conflict(&conflict, wc_ctx, target_abspath,
+                                            iterpool, iterpool));
           if (conflict != NULL)
             return svn_error_createf(
                        SVN_ERR_WC_FOUND_CONFLICT, NULL,

Modified: subversion/branches/performance/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/copy.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/copy.c Wed Dec 29 21:12:33 2010
@@ -983,10 +983,6 @@ repos_to_repos_copy(const apr_array_head
         }
       else if (strcmp(pair->src_abspath_or_url, top_url) == 0)
         {
-          if (is_move)
-            return svn_error_createf(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
-                                     _("Cannot move URL '%s' into itself"),
-                                     pair->src_abspath_or_url);
           src_rel = "";
           SVN_ERR(svn_ra_check_path(ra_session, src_rel, pair->src_revnum,
                                     &info->src_kind, pool));
@@ -1026,6 +1022,11 @@ repos_to_repos_copy(const apr_array_head
       /* More info for our INFO structure.  */
       info->src_path = src_rel;
       info->dst_path = dst_rel;
+
+      apr_hash_set(action_hash, info->dst_path, APR_HASH_KEY_STRING,
+                       info);
+      if (is_move && (! info->resurrection))
+        apr_hash_set(action_hash, info->src_path, APR_HASH_KEY_STRING, info);
     }
 
   if (SVN_CLIENT__HAS_LOG_MSG_FUNC(ctx))
@@ -1060,8 +1061,6 @@ repos_to_repos_copy(const apr_array_head
           item->url = svn_uri_join(top_url, info->dst_path, pool);
           item->state_flags = SVN_CLIENT_COMMIT_ITEM_ADD;
           APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *) = item;
-          apr_hash_set(action_hash, info->dst_path, APR_HASH_KEY_STRING,
-                       info);
 
           if (is_move && (! info->resurrection))
             {
@@ -1069,8 +1068,6 @@ repos_to_repos_copy(const apr_array_head
               item->url = svn_uri_join(top_url, info->src_path, pool);
               item->state_flags = SVN_CLIENT_COMMIT_ITEM_DELETE;
               APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *) = item;
-              apr_hash_set(action_hash, info->src_path, APR_HASH_KEY_STRING,
-                           info);
             }
         }
 
@@ -2077,7 +2074,7 @@ try_copy(const apr_array_header_t *sourc
                "supported"));
         }
 
-      /* Disallow moving any path onto or into itself. */
+      /* Disallow moving any path/URL onto or into itself. */
       for (i = 0; i < copy_pairs->nelts; i++)
         {
           svn_client__copy_pair_t *pair = APR_ARRAY_IDX(copy_pairs, i,
@@ -2085,10 +2082,14 @@ try_copy(const apr_array_header_t *sourc
 
           if (strcmp(pair->src_abspath_or_url,
                      pair->dst_abspath_or_url) == 0)
-            return svn_error_createf
-              (SVN_ERR_UNSUPPORTED_FEATURE, NULL,
-               _("Cannot move path '%s' into itself"),
-               svn_dirent_local_style(pair->src_abspath_or_url, pool));
+            return svn_error_createf(
+              SVN_ERR_UNSUPPORTED_FEATURE, NULL,
+              srcs_are_urls ?
+                _("Cannot move URL '%s' into itself") :
+                _("Cannot move path '%s' into itself"),
+              srcs_are_urls ?
+                pair->src_abspath_or_url :
+                svn_dirent_local_style(pair->src_abspath_or_url, pool));
         }
     }
   else

Modified: subversion/branches/performance/subversion/libsvn_client/delete.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/delete.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/delete.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/delete.c Wed Dec 29 21:12:33 2010
@@ -37,6 +37,7 @@
 #include "svn_path.h"
 #include "client.h"
 
+#include "private/svn_client_private.h"
 #include "private/svn_wc_private.h"
 
 #include "svn_private_config.h"
@@ -328,17 +329,8 @@ svn_client_delete4(const apr_array_heade
   if (! paths->nelts)
     return SVN_NO_ERROR;
 
-  /* Check that all targets are of the same type. */
+  SVN_ERR(svn_client__assert_homogeneous_target_type(paths));
   is_url = svn_path_is_url(APR_ARRAY_IDX(paths, 0, const char *));
-  for (i = 1; i < paths->nelts; i++)
-    {
-      const char *path = APR_ARRAY_IDX(paths, i, const char *);
-      if (is_url != svn_path_is_url(path))
-        return svn_error_return(
-                 svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
-                                  _("Cannot mix repository and working copy "
-                                    "targets")));
-    }
 
   if (is_url)
     {

Modified: subversion/branches/performance/subversion/libsvn_client/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/deprecated.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/deprecated.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/deprecated.c Wed Dec 29 21:12:33 2010
@@ -2106,7 +2106,7 @@ svn_client_relocate(const char *path,
                     apr_pool_t *pool)
 {
   if (! recurse)
-    svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, 0,
-                     _("Non-recursive relocation not supported"));
+    SVN_ERR(svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
+                             _("Non-recursive relocation not supported")));
   return svn_client_relocate2(path, from_prefix, to_prefix, TRUE, ctx, pool);
 }

Modified: subversion/branches/performance/subversion/libsvn_client/info.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/info.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/info.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/info.c Wed Dec 29 21:12:33 2010
@@ -334,6 +334,7 @@ struct found_entry_baton
 /* An svn_wc__node_found_func_t callback function. */
 static svn_error_t *
 info_found_node_callback(const char *local_abspath,
+                         svn_node_kind_t kind,
                          void *walk_baton,
                          apr_pool_t *pool)
 {

Modified: subversion/branches/performance/subversion/libsvn_client/locking_commands.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/locking_commands.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/locking_commands.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/locking_commands.c Wed Dec 29 21:12:33 2010
@@ -35,6 +35,7 @@
 #include "svn_pools.h"
 
 #include "svn_private_config.h"
+#include "private/svn_client_private.h"
 #include "private/svn_wc_private.h"
 
 
@@ -182,25 +183,8 @@ organize_lock_targets(const char **commo
   apr_hash_t *rel_targets_ret = apr_hash_make(pool);
   apr_pool_t *subpool = svn_pool_create(pool);
   svn_boolean_t url_mode;
-  svn_boolean_t wc_present = FALSE, url_present = FALSE;
 
-  /* Check to see if at least one of our paths is a working copy
-   * path or a repository url. */
-  for (i = 0; i < targets->nelts; ++i)
-    {
-      const char *target = APR_ARRAY_IDX(targets, i, const char *);
-      if (! svn_path_is_url(target))
-       wc_present = TRUE;
-      else
-       url_present = TRUE;
-    }
-
-  if (url_present && wc_present)
-    return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
-                             _("Cannot mix repository and working copy "
-                               "targets"));
-
-  /* All targets must be either urls or paths */
+  SVN_ERR(svn_client__assert_homogeneous_target_type(targets));
 
   url_mode = ((targets->nelts >= 1) &&
               svn_path_is_url(APR_ARRAY_IDX(targets, 0, const char *)));

Modified: subversion/branches/performance/subversion/libsvn_client/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/log.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/log.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/log.c Wed Dec 29 21:12:33 2010
@@ -452,15 +452,14 @@ svn_client_log5(const apr_array_header_t
           APR_ARRAY_PUSH(target_urls, const char *) = url;
           APR_ARRAY_PUSH(real_targets, const char *) = target;
         }
-      svn_pool_destroy(iterpool);
 
       /* if we have no valid target_urls, just exit. */
       if (target_urls->nelts == 0)
         return SVN_NO_ERROR;
 
       /* Find the base URL and condensed targets relative to it. */
-      SVN_ERR(svn_path_condense_targets(&url_or_path, &condensed_targets,
-                                        target_urls, TRUE, pool));
+      SVN_ERR(svn_uri_condense_targets(&url_or_path, &condensed_targets,
+                                       target_urls, TRUE, pool, iterpool));
 
       if (condensed_targets->nelts == 0)
         APR_ARRAY_PUSH(condensed_targets, const char *) = "";
@@ -468,6 +467,7 @@ svn_client_log5(const apr_array_header_t
       /* 'targets' now becomes 'real_targets', which has bogus,
          unversioned things removed from it. */
       targets = real_targets;
+      svn_pool_destroy(iterpool);
     }
 
 
@@ -476,7 +476,8 @@ svn_client_log5(const apr_array_header_t
      * we use our initial target path to figure out where to root the RA
      * session, otherwise we use our URL. */
     if (SVN_CLIENT__REVKIND_NEEDS_WC(peg_rev.kind))
-      SVN_ERR(svn_path_condense_targets(&ra_target, NULL, targets, TRUE, pool));
+      SVN_ERR(svn_dirent_condense_targets(&ra_target, NULL, targets,
+                                          TRUE, pool, pool));
     else
       ra_target = url_or_path;
 

Modified: subversion/branches/performance/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/merge.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/merge.c Wed Dec 29 21:12:33 2010
@@ -4456,7 +4456,7 @@ populate_remaining_ranges(apr_array_head
           /* If this is a reverse merge reorder CHILD->REMAINING_RANGES
               so it will work with the svn_rangelist_* APIs below. */
           if (revision1 > revision2)
-            svn_rangelist_reverse(child->remaining_ranges, iterpool);
+            SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, iterpool));
 
           for (j = 0; j < child->remaining_ranges->nelts; j++)
             {
@@ -4498,7 +4498,7 @@ populate_remaining_ranges(apr_array_head
             }
 
           if (revision1 > revision2) /* Reverse merge */
-            svn_rangelist_reverse(child->remaining_ranges, iterpool);
+            SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, iterpool));
         }
     }
 
@@ -5572,6 +5572,7 @@ record_missing_subtree_roots(const char 
    WB->CHILDREN_WITH_MERGEINFO array. */
 static svn_error_t *
 get_mergeinfo_walk_cb(const char *local_abspath,
+                      svn_node_kind_t kind,
                       void *walk_baton,
                       apr_pool_t *scratch_pool)
 {
@@ -5583,7 +5584,6 @@ get_mergeinfo_walk_cb(const char *local_
     !svn_path_compare_paths(local_abspath, wb->merge_target_abspath);
   const char *abs_parent_path = svn_dirent_dirname(local_abspath,
                                                    scratch_pool);
-  svn_node_kind_t kind;
   svn_depth_t depth;
   svn_boolean_t is_present;
   svn_boolean_t deleted;
@@ -5623,9 +5623,6 @@ get_mergeinfo_walk_cb(const char *local_
                                     scratch_pool));
     }
 
-  SVN_ERR(svn_wc_read_kind(&kind, wb->ctx->wc_ctx, local_abspath, TRUE,
-                           scratch_pool));
-
   immediate_child_dir = ((wb->depth == svn_depth_immediates)
                          &&(kind == svn_node_dir)
                          && (strcmp(abs_parent_path,
@@ -10305,6 +10302,7 @@ struct get_subtree_mergeinfo_walk_baton
    POOL is used only for temporary allocations. */
 static svn_error_t *
 get_subtree_mergeinfo_walk_cb(const char *local_abspath,
+                              svn_node_kind_t kind,
                               void *walk_baton,
                               apr_pool_t *pool)
 {

Modified: subversion/branches/performance/subversion/libsvn_client/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/mergeinfo.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/mergeinfo.c Wed Dec 29 21:12:33 2010
@@ -323,6 +323,7 @@ struct get_mergeinfo_catalog_walk_baton
 
 static svn_error_t *
 get_subtree_mergeinfo_walk_cb(const char *local_abspath,
+                              svn_node_kind_t kind,
                               void *walk_baton,
                               apr_pool_t *scratch_pool)
 {

Modified: subversion/branches/performance/subversion/libsvn_client/patch.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/patch.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/patch.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/patch.c Wed Dec 29 21:12:33 2010
@@ -2643,7 +2643,6 @@ apply_patches(void *baton,
 {
   svn_patch_t *patch;
   apr_pool_t *iterpool;
-  const char *patch_eol_str;
   apr_file_t *patch_file;
   apr_array_header_t *targets_info;
   apply_patches_baton_t *btn = baton;
@@ -2652,15 +2651,6 @@ apply_patches(void *baton,
   SVN_ERR(svn_io_file_open(&patch_file, btn->patch_abspath,
                            APR_READ | APR_BINARY, 0, scratch_pool));
 
-  SVN_ERR(svn_eol__detect_file_eol(&patch_eol_str, patch_file, scratch_pool));
-  if (patch_eol_str == NULL)
-    {
-      /* If we can't figure out the EOL scheme, just assume native.
-       * It's most likely a bad patch file anyway that will fail to
-       * apply later. */
-      patch_eol_str = APR_EOL_STR;
-    }
-
   /* Apply patches. */
   targets_info = apr_array_make(scratch_pool, 0,
                                 sizeof(patch_target_info_t *));

Modified: subversion/branches/performance/subversion/libsvn_client/prop_commands.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/prop_commands.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/prop_commands.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/prop_commands.c Wed Dec 29 21:12:33 2010
@@ -105,6 +105,7 @@ struct propset_walk_baton
  */
 static svn_error_t *
 propset_walk_cb(const char *local_abspath,
+                svn_node_kind_t kind,
                 void *walk_baton,
                 apr_pool_t *pool)
 {
@@ -679,8 +680,9 @@ struct propget_walk_baton
  */
 static svn_error_t *
 propget_walk_cb(const char *local_abspath,
-                  void *walk_baton,
-                  apr_pool_t *pool)
+                svn_node_kind_t kind,
+                void *walk_baton,
+                apr_pool_t *pool)
 {
   struct propget_walk_baton *wb = walk_baton;
   const svn_string_t *propval;
@@ -895,7 +897,7 @@ get_prop_from_wc(apr_hash_t *props,
   else if (svn_wc__changelist_match(ctx->wc_ctx, target_abspath,
                                     changelist_hash, pool))
     {
-      SVN_ERR(propget_walk_cb(target_abspath, &wb, pool));
+      SVN_ERR(propget_walk_cb(target_abspath, kind, &wb, pool));
     }
 
   return SVN_NO_ERROR;
@@ -1186,6 +1188,7 @@ struct proplist_walk_baton
  */
 static svn_error_t *
 proplist_walk_cb(const char *local_abspath,
+                 svn_node_kind_t kind,
                  void *walk_baton,
                  apr_pool_t *scratch_pool)
 {

Modified: subversion/branches/performance/subversion/libsvn_client/ra.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/ra.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/ra.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/ra.c Wed Dec 29 21:12:33 2010
@@ -215,6 +215,7 @@ struct invalidate_wcprop_walk_baton
    `svn_wc_entry_callbacks_t'. */
 static svn_error_t *
 invalidate_wcprop_for_node(const char *local_abspath,
+                           svn_node_kind_t kind,
                            void *walk_baton,
                            apr_pool_t *pool)
 {

Modified: subversion/branches/performance/subversion/libsvn_client/repos_diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/repos_diff.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/repos_diff.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/repos_diff.c Wed Dec 29 21:12:33 2010
@@ -1060,7 +1060,8 @@ close_directory(void *dir_baton,
     return SVN_NO_ERROR;
 
   if (eb->dry_run)
-    svn_hash__clear(svn_client__dry_run_deletions(eb->diff_cmd_baton), pool);
+    SVN_ERR(svn_hash__clear(svn_client__dry_run_deletions(eb->diff_cmd_baton),
+                            pool));
 
   err = get_dir_abspath(&local_dir_abspath, eb->wc_ctx, b->wcpath,
                         FALSE, b->pool);

Modified: subversion/branches/performance/subversion/libsvn_client/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/status.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/status.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/status.c Wed Dec 29 21:12:33 2010
@@ -292,17 +292,16 @@ svn_client_status5(svn_revnum_t *result_
     SVN_ERR(svn_io_check_path(target_abspath, &disk_kind, pool));
     err = svn_wc_read_kind(&kind, ctx->wc_ctx, target_abspath, FALSE, pool);
 
-    if (err && ((err->apr_err == SVN_ERR_WC_MISSING) ||
-                (err->apr_err == SVN_ERR_WC_NOT_WORKING_COPY)))
-    {
-      /* This error code is checked for in svn to continue after an error */
-      svn_error_clear(err);
-      return svn_error_createf(SVN_ERR_WC_NOT_WORKING_COPY, NULL,
-                               _("'%s' is not a working copy"),
-                               svn_dirent_local_style(path, pool));
-    }
-
-    SVN_ERR(err);
+    if (err && (err->apr_err == SVN_ERR_WC_MISSING))
+      {
+        /* Calling code expects SVN_ERR_WC_NOT_WORKING_COPY. */
+        svn_error_clear(err);
+        return svn_error_createf(SVN_ERR_WC_NOT_WORKING_COPY, NULL,
+                                 _("'%s' is not a working copy"),
+                                 svn_dirent_local_style(path, pool));
+      }
+    else if (err)
+      return err;
 
     /* Dir must be an existing directory or the status editor fails */
     if (kind == svn_node_dir && disk_kind == svn_node_dir)
@@ -495,14 +494,16 @@ svn_client_status5(svn_revnum_t *result_
           SVN_ERR(svn_wc_crawl_revisions5(ctx->wc_ctx,
                                           target_abspath,
                                           &lock_fetch_reporter, &rb, FALSE,
-                                          depth, TRUE, (! server_supports_depth),
+                                          depth, TRUE,
+                                          (! server_supports_depth),
                                           FALSE, NULL, NULL, NULL, NULL, pool));
         }
 
       if (ctx->notify_func2)
         {
           svn_wc_notify_t *notify
-            = svn_wc_create_notify(target_abspath, svn_wc_notify_status_completed, pool);
+            = svn_wc_create_notify(target_abspath,
+                                   svn_wc_notify_status_completed, pool);
           notify->revision = edit_revision;
           (ctx->notify_func2)(ctx->notify_baton2, notify, pool);
         }

Modified: subversion/branches/performance/subversion/libsvn_client/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/update.c?rev=1053735&r1=1053734&r2=1053735&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/update.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/update.c Wed Dec 29 21:12:33 2010
@@ -180,8 +180,8 @@ update_internal(svn_revnum_t *result_rev
      relocate our working copy first. */
   if (corrected_url)
     {
-      SVN_ERR(svn_client_relocate(anchor_abspath, anchor_url, corrected_url,
-                                  TRUE, ctx, pool));
+      SVN_ERR(svn_client_relocate2(anchor_abspath, anchor_url, corrected_url,
+                                   TRUE, ctx, pool));
       anchor_url = corrected_url;
     }