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

svn commit: r1043705 [1/4] - in /subversion/branches/performance: ./ build/ build/ac-macros/ build/generator/templates/ contrib/hook-scripts/ contrib/server-side/ notes/api-errata/ notes/api-errata/1.7/ subversion/bindings/javahl/native/ subversion/bin...

Author: hwright
Date: Wed Dec  8 21:53:38 2010
New Revision: 1043705

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

Added:
    subversion/branches/performance/notes/api-errata/1.7/
      - copied from r1043512, subversion/trunk/notes/api-errata/1.7/
    subversion/branches/performance/notes/api-errata/1.7/wc001.txt
      - copied unchanged from r1043512, subversion/trunk/notes/api-errata/1.7/wc001.txt
    subversion/branches/performance/notes/api-errata/1.7/wc002.txt
      - copied unchanged from r1043512, subversion/trunk/notes/api-errata/1.7/wc002.txt
    subversion/branches/performance/notes/api-errata/1.7/wc003.txt
      - copied unchanged from r1043512, subversion/trunk/notes/api-errata/1.7/wc003.txt
    subversion/branches/performance/notes/api-errata/1.7/wc004.txt
      - copied unchanged from r1043512, subversion/trunk/notes/api-errata/1.7/wc004.txt
    subversion/branches/performance/notes/api-errata/1.7/wc005.txt
      - copied unchanged from r1043512, subversion/trunk/notes/api-errata/1.7/wc005.txt
    subversion/branches/performance/notes/api-errata/1.7/wc006.txt
      - copied unchanged from r1043512, subversion/trunk/notes/api-errata/1.7/wc006.txt
    subversion/branches/performance/notes/api-errata/1.7/wc007.txt
      - copied unchanged from r1043512, subversion/trunk/notes/api-errata/1.7/wc007.txt
    subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Depth.java
      - copied unchanged from r1043512, subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Depth.java
    subversion/branches/performance/tools/dev/wc-ng/populate-pristine.py
      - copied unchanged from r1043512, subversion/trunk/tools/dev/wc-ng/populate-pristine.py
Removed:
    subversion/branches/performance/contrib/hook-scripts/README
    subversion/branches/performance/notes/api-errata/wc001.txt
    subversion/branches/performance/notes/api-errata/wc002.txt
    subversion/branches/performance/notes/api-errata/wc003.txt
    subversion/branches/performance/notes/api-errata/wc004.txt
    subversion/branches/performance/notes/api-errata/wc005.txt
    subversion/branches/performance/notes/api-errata/wc006.txt
    subversion/branches/performance/notes/api-errata/wc007.txt
    subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/Depth.java
Modified:
    subversion/branches/performance/   (props changed)
    subversion/branches/performance/CHANGES
    subversion/branches/performance/build/ac-macros/java.m4
    subversion/branches/performance/build/generator/templates/build_zlib.ezt
    subversion/branches/performance/build/generator/templates/svn_config.vcxproj.ezt
    subversion/branches/performance/build/generator/templates/zlib.dsp.ezt
    subversion/branches/performance/build/generator/templates/zlib.vcproj.ezt
    subversion/branches/performance/build/generator/templates/zlib.vcxproj.ezt
    subversion/branches/performance/build/transform_libtool_scripts.sh
    subversion/branches/performance/configure.ac
    subversion/branches/performance/contrib/server-side/fsfsverify.py
    subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp
    subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp
    subversion/branches/performance/subversion/bindings/javahl/native/JNIUtil.h
    subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
    subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info.java
    subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java
    subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
    subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java
    subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
    subversion/branches/performance/subversion/include/private/svn_file_handle_cache.h   (props changed)
    subversion/branches/performance/subversion/include/private/svn_temp_serializer.h   (props changed)
    subversion/branches/performance/subversion/include/private/svn_wc_private.h
    subversion/branches/performance/subversion/include/svn_checksum.h
    subversion/branches/performance/subversion/include/svn_client.h
    subversion/branches/performance/subversion/include/svn_dirent_uri.h
    subversion/branches/performance/subversion/include/svn_editor.h
    subversion/branches/performance/subversion/include/svn_io.h
    subversion/branches/performance/subversion/include/svn_path.h
    subversion/branches/performance/subversion/include/svn_types.h
    subversion/branches/performance/subversion/libsvn_client/add.c
    subversion/branches/performance/subversion/libsvn_client/checkout.c
    subversion/branches/performance/subversion/libsvn_client/copy.c
    subversion/branches/performance/subversion/libsvn_client/diff.c
    subversion/branches/performance/subversion/libsvn_client/info.c
    subversion/branches/performance/subversion/libsvn_client/merge.c
    subversion/branches/performance/subversion/libsvn_client/update.c
    subversion/branches/performance/subversion/libsvn_fs/fs-loader.c
    subversion/branches/performance/subversion/libsvn_fs_fs/fs.h
    subversion/branches/performance/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/performance/subversion/libsvn_fs_fs/fs_fs.h
    subversion/branches/performance/subversion/libsvn_fs_fs/temp_serializer.c   (props changed)
    subversion/branches/performance/subversion/libsvn_fs_fs/temp_serializer.h   (props changed)
    subversion/branches/performance/subversion/libsvn_fs_fs/tree.c
    subversion/branches/performance/subversion/libsvn_fs_util/caching.c   (props changed)
    subversion/branches/performance/subversion/libsvn_repos/load-fs-vtable.c
    subversion/branches/performance/subversion/libsvn_repos/repos.c
    subversion/branches/performance/subversion/libsvn_repos/rev_hunt.c
    subversion/branches/performance/subversion/libsvn_subr/checksum.c
    subversion/branches/performance/subversion/libsvn_subr/eol.c
    subversion/branches/performance/subversion/libsvn_subr/svn_file_handle_cache.c   (props changed)
    subversion/branches/performance/subversion/libsvn_subr/svn_temp_serializer.c   (props changed)
    subversion/branches/performance/subversion/libsvn_wc/entries.c
    subversion/branches/performance/subversion/libsvn_wc/node.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/svn/checkout-cmd.c
    subversion/branches/performance/subversion/svn/copy-cmd.c
    subversion/branches/performance/subversion/svn/export-cmd.c
    subversion/branches/performance/subversion/svn/mkdir-cmd.c
    subversion/branches/performance/subversion/svn/switch-cmd.c
    subversion/branches/performance/subversion/svn/update-cmd.c
    subversion/branches/performance/subversion/tests/cmdline/authz_tests.py
    subversion/branches/performance/subversion/tests/cmdline/basic_tests.py
    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_tests.py
    subversion/branches/performance/subversion/tests/cmdline/externals_tests.py
    subversion/branches/performance/subversion/tests/cmdline/input_validation_tests.py
    subversion/branches/performance/subversion/tests/cmdline/merge_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/upgrade_tests.py
    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/tools/dev/unix-build/Makefile.svn
    subversion/branches/performance/tools/dist/collect_sigs.py

Propchange: subversion/branches/performance/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Dec  8 21:53:38 2010
@@ -16,7 +16,7 @@ build-outputs.mk
 autogen-standalone.mk
 autom4te.cache
 gen-make.opts
-tests.log
+tests.log*
 fails.log
 db4-win32
 db

Propchange: subversion/branches/performance/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec  8 21:53:38 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-1039497
+/subversion/trunk:962911-1043512

Modified: subversion/branches/performance/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/performance/CHANGES?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/CHANGES (original)
+++ subversion/branches/performance/CHANGES Wed Dec  8 21:53:38 2010
@@ -443,9 +443,9 @@ http://svn.apache.org/repos/asf/subversi
     * fix building Ruby bindings with Ruby 1.9 (r35852, r35883)
 
 
-Version 1.5.8
-(?? ??? 2010, from /branches/1.5.x)
-http://svn.apache.org/repos/asf/subversion/tags/1.5.8
+Version 1.5.9
+(06 Dec 2010, from /branches/1.5.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.5.9
 
  User-visible changes:
   * fix proxying of LOCK and UNLOCK requests with WebDAV proxies (r36159)
@@ -455,13 +455,21 @@ http://svn.apache.org/repos/asf/subversi
   * fixed: repeated mergeinfo of conflicting properties fails (issue #3250)
   * fix segfault in wc->URL copy (r37646, -56)
   * make 'svn up --set-depth infinity' expand shallow subtrees (r37169)
+  * resolve symlinks when checking for ~/.subversion (r36023)
   * make default depth of 'svn merge' infinity (r37156)
+  * don't allow foreign merges to add foreign mergeinfo (issue #3383)
   * error if attempting to reintegrate to/from the repo root (r37385)
+  * let 'svnadmin load' tolerate mergeinfo with "\r\n" (r37768)
   * improve memory performance in 'svn merge' (issue #3393)
   * fixed: 'SVNPathAuthz short_circuit' unsolicited read access (issue #3695)
            See CVE-2010-3315, and descriptive advisory at
            http://subversion.apache.org/security/CVE-2010-3315-advisory.txt
   * prevent crash in mod_dav_svn when using SVNParentPath (r1033166)
+  * limit memory fragmentation in svnserve (r1022675)
+  * fix server-side memory leaks triggered by 'blame -g' (r1032808)
+  * perform MIME type matching case-insensitively (issue #3479)
+  * respect Apache's ServerSignature directive (r880082)
+  * error early if attempting to use Serf >= 0.4.0 (r1041545)
 
  Developer-visible changes:
   * fix pointer dereference (r36783)
@@ -469,6 +477,10 @@ http://svn.apache.org/repos/asf/subversi
   * make basic_tests 12 compatible with Windows and Python 2.5+ (r35930)
 
 
+Version 1.5.8
+(Not released, see changes for 1.5.9.)
+
+
 Version 1.5.7
 (06 Aug 2009, from /branches/1.5.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.5.7

Modified: subversion/branches/performance/build/ac-macros/java.m4
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/ac-macros/java.m4?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/build/ac-macros/java.m4 (original)
+++ subversion/branches/performance/build/ac-macros/java.m4 Wed Dec  8 21:53:38 2010
@@ -87,7 +87,7 @@ AC_DEFUN(SVN_FIND_JDK,
 
     if test "$OSX_VER" = "10.4"; then
       dnl For OS X 10.4, the SDK version is 10.4u instead of 10.4.
-      OSX_VER = "$OSX_VERu"
+      OSX_VER="10.4u"
     fi
 
     OSX_SYS_JAVA_FRAMEWORK="/System/Library/Frameworks/JavaVM.framework"

Modified: subversion/branches/performance/build/generator/templates/build_zlib.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/templates/build_zlib.ezt?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/templates/build_zlib.ezt (original)
+++ subversion/branches/performance/build/generator/templates/build_zlib.ezt Wed Dec  8 21:53:38 2010
@@ -25,32 +25,47 @@
 @rem *
 @rem * From this directory, run this batch file like so:
 @rem *
-@rem *    .\build_zlib debug|release (rebuild)
+@rem *    .\build_zlib debug|release Win32|X64 [rebuild|clean]
 @rem *
 @rem **************************************************************************
 
 @rem **************************************************************************
 cd /D [zlib_path]
 set exitcode=0
+set zlib_version=[zlib_version]
+
+if /i "%1" == "release" goto release
+if /i "%1" == "debug" goto debug
+goto pIerr
+
+:checkplatform
+if /i "%2" == "Win32" goto PWin32
+if /i "%2" == "x64" goto PX64
+goto pIIerr
+
+:checkrebuild
+
 [if-any use_ml]
 @rem **************************************************************************
 @rem Compile ASM sources with ML
 set ASFLAGS=-nologo -Zi -coff
 set LOC=-DASMV -DASMINF
-set OBJA=gvmat32c.obj gvmat32.obj inffas32.obj
+[is zlib_version "1.2.4"]
+set OBJA=contrib\masmx86\gvmat32c.obj contrib\masmx86\gvmat32.obj contrib\masmx86\inffas32.obj
 set ASM_OPTS=ASFLAGS="%ASFLAGS%" LOC="%LOC%" OBJA="%OBJA%"
-if not exist gvmat32c.c    copy contrib\masmx86\gvmat32c.c .
-if not exist gvmat32.asm   copy contrib\masmx86\gvmat32.asm .
-if not exist inffas32.asm  copy contrib\masmx86\inffas32.asm .[end]
+[else]
+if /i "%2" == "Win32" (
+  set ASM_OPTS=LOC="-DASMV -DASMINF" OBJA="inffas32.obj match686.obj"
+) else if /i "%2" == "x64" (
+  set ASM_OPTS=LOC="-DASMV -DASMINF" OBJA="inffasx64.obj gvmat64.obj inffas8664.c" AS=ml64 
+)
+[end]
+[end]
 
-if /i "%1" == "release" goto release
-if /i "%1" == "debug" goto debug
-goto pIerr
 
-:checkrebuild
-if /i "%2" == "rebuild" goto rebuild
-if /i "%2" == "clean" goto clean
-if not "%2" == "" goto pIIerr
+if /i "%3" == "rebuild" goto rebuild
+if /i "%3" == "clean" goto clean
+if not "%3" == "" goto pIIIerr
 set target= %STATICLIB%
 goto build
 
@@ -66,19 +81,31 @@ goto build
 :release
 set STATICLIB=zlibstat.lib
 set CC_OPTS=/MD /O2 /Zi
-goto checkrebuild
+goto checkplatform
 
 @rem **************************************************************************
 :debug
 set STATICLIB=zlibstatD.lib
-set CC_OPTS=/MDd /Gm /Gi /ZI /Od /GZ /D_DEBUG
+set CC_OPTS=/MDd /Gm /ZI /Od /GZ /D_DEBUG
+goto checkplatform
+
+@rem **************************************************************************
+:PWin32
+goto checkrebuild
+
+@rem **************************************************************************
+:PX64
 goto checkrebuild
 
 @rem **************************************************************************
 :build
-set COMMON_CC_OPTS=/nologo /W3 /FD /DWIN32 /D_WINDOWS
-set CFLAGS=%COMMON_CC_OPTS% %CC_OPTS% $(LOC)
-set BUILD_OPTS=%ASM_OPTS% CFLAGS="%COMMON_CC_OPTS% %CC_OPTS% $(LOC)"
+set COMMON_CC_OPTS=/nologo /W3 /DWIN32 /D_WINDOWS
+[is zlib_version "1.2.4"]
+set CFLAGS=%COMMON_CC_OPTS% %CC_OPTS% %LOC%
+set BUILD_OPTS=%ASM_OPTS% CFLAGS="%COMMON_CC_OPTS% %CC_OPTS% %LOC%"
+[else]
+set BUILD_OPTS=%ASM_OPTS%
+[end]
 @echo nmake /f win32\Makefile.msc %BUILD_OPTS% STATICLIB=%STATICLIB% %target%
 nmake /nologo /f win32\Makefile.msc %BUILD_OPTS% STATICLIB=%STATICLIB% %target%
 if not errorlevel 0 goto err
@@ -91,7 +118,13 @@ goto err
 
 @rem **************************************************************************
 :pIIerr
-echo error: Second parameter should be "rebuild" or empty
+echo error: Second parameter should be "Win32" or "X64"
+goto err
+
+
+@rem **************************************************************************
+:pIIIerr
+echo error: Third parameter should be "rebuild" or empty
 goto err
 
 @rem **************************************************************************

Modified: subversion/branches/performance/build/generator/templates/svn_config.vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/templates/svn_config.vcxproj.ezt?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/templates/svn_config.vcxproj.ezt (original)
+++ subversion/branches/performance/build/generator/templates/svn_config.vcxproj.ezt Wed Dec  8 21:53:38 2010
@@ -54,8 +54,7 @@
     <CustomBuild Include="..\..\..\subversion\svn_private_config.hw">
       <FileType>Document</FileType>
 [for configs][for platforms]      <Message Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">Creating svn_private_config.h from svn_private_config.hw.</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">copy ..\..\..\subversion\svn_private_config.hw ..\..\..\subversion\svn_private_config.h &gt; nul
-</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">copy ..\..\..\subversion\svn_private_config.hw ..\..\..\subversion\svn_private_config.h &gt; nul:</Command>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">..\..\..\subversion\svn_private_config.h;%(Outputs)</Outputs>
 [end][end]    </CustomBuild>
 [for sql]    <CustomBuild Include="..\..\..\[sql.source]">

Modified: subversion/branches/performance/build/generator/templates/zlib.dsp.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/templates/zlib.dsp.ezt?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/templates/zlib.dsp.ezt (original)
+++ subversion/branches/performance/build/generator/templates/zlib.dsp.ezt Wed Dec  8 21:53:38 2010
@@ -32,7 +32,7 @@ CFG=zlib - Win32 Debug
 # PROP BASE Use_Debug_Libraries 0
 # PROP BASE Output_Dir "[zlib_path]\Release"
 # PROP BASE Intermediate_Dir "[zlib_path]\Release"
-# PROP BASE Cmd_Line "build_zlib.bat release"
+# PROP BASE Cmd_Line "build_zlib.bat release Win32"
 # PROP BASE Rebuild_Opt "rebuild"
 # PROP BASE Target_File "[zlib_path]\zlibstat.lib"
 # PROP BASE Bsc_Name ""
@@ -40,7 +40,7 @@ CFG=zlib - Win32 Debug
 # PROP Use_Debug_Libraries 0
 # PROP Output_Dir "[zlib_path]\Release"
 # PROP Intermediate_Dir "[zlib_path]\Release"
-# PROP Cmd_Line "cmd /c build_zlib.bat release"
+# PROP Cmd_Line "cmd /c build_zlib.bat release Win32"
 # PROP Rebuild_Opt "rebuild"
 # PROP Target_File "[zlib_path]\zlibstat.lib"
 # PROP Bsc_Name ""
@@ -51,7 +51,7 @@ CFG=zlib - Win32 Debug
 # PROP BASE Use_Debug_Libraries 1
 # PROP BASE Output_Dir "[zlib_path]\Debug"
 # PROP BASE Intermediate_Dir "[zlib_path]\Debug"
-# PROP BASE Cmd_Line "build_zlib.bat debug"
+# PROP BASE Cmd_Line "build_zlib.bat debug Win32"
 # PROP BASE Rebuild_Opt "rebuild"
 # PROP BASE Target_File "[zlib_path]\zlibstatD.lib"
 # PROP BASE Bsc_Name ""
@@ -59,7 +59,7 @@ CFG=zlib - Win32 Debug
 # PROP Use_Debug_Libraries 1
 # PROP Output_Dir "[zlib_path]\Debug"
 # PROP Intermediate_Dir "[zlib_path]\Debug"
-# PROP Cmd_Line "cmd /c build_zlib.bat debug"
+# PROP Cmd_Line "cmd /c build_zlib.bat debug Win32"
 # PROP Rebuild_Opt "rebuild"
 # PROP Target_File "[zlib_path]\zlibstatD.lib"
 # PROP Bsc_Name ""

Modified: subversion/branches/performance/build/generator/templates/zlib.vcproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/templates/zlib.vcproj.ezt?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/templates/zlib.vcproj.ezt (original)
+++ subversion/branches/performance/build/generator/templates/zlib.vcproj.ezt Wed Dec  8 21:53:38 2010
@@ -40,9 +40,9 @@
 			ATLMinimizesCRunTimeLibraryUsage="FALSE">
 			<Tool
 				Name="VCNMakeTool"
-				BuildCommandLine="cmd /c build_zlib.bat debug"
-				ReBuildCommandLine="cmd /c build_zlib.bat debug rebuild"
-				CleanCommandLine="cmd /c build_zlib.bat debug clean"
+				BuildCommandLine="cmd /c build_zlib.bat debug [platforms]"
+				ReBuildCommandLine="cmd /c build_zlib.bat debug [platforms] rebuild"
+				CleanCommandLine="cmd /c build_zlib.bat debug [platforms] clean"
 				Output="[zlib_path]\zlibstatD.lib"/>
 		</Configuration>
 		<Configuration
@@ -56,9 +56,9 @@
 			ATLMinimizesCRunTimeLibraryUsage="FALSE">
 			<Tool
 				Name="VCNMakeTool"
-				BuildCommandLine="cmd /c build_zlib.bat release"
-				ReBuildCommandLine="cmd /c build_zlib.bat release rebuild"
-				CleanCommandLine="cmd /c build_zlib.bat release clean"
+				BuildCommandLine="cmd /c build_zlib.bat release [platforms]"
+				ReBuildCommandLine="cmd /c build_zlib.bat release [platforms] rebuild"
+				CleanCommandLine="cmd /c build_zlib.bat release [platforms] clean"
 				Output="[zlib_path]\zlibstat.lib"/>
 		</Configuration>
 [end]	</Configurations>

Modified: subversion/branches/performance/build/generator/templates/zlib.vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/templates/zlib.vcxproj.ezt?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/templates/zlib.vcxproj.ezt (original)
+++ subversion/branches/performance/build/generator/templates/zlib.vcxproj.ezt Wed Dec  8 21:53:38 2010
@@ -44,9 +44,9 @@
   <PropertyGroup>
 [for configs][for platforms]    <OutDir Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">.\</OutDir>
     <IntDir Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">.\</IntDir>
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">cmd /c "$(ProjectDir)build_zlib.bat" [configs]</NMakeBuildCommandLine>
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">cmd /c "$(ProjectDir)build_zlib.bat" [configs] rebuild</NMakeReBuildCommandLine>
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">cmd /c "$(ProjectDir)build_zlib.bat" [configs] clean</NMakeCleanCommandLine>
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">cmd /c "$(ProjectDir)build_zlib.bat" [configs] [platforms]</NMakeBuildCommandLine>
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">cmd /c "$(ProjectDir)build_zlib.bat" [configs] [platforms] rebuild</NMakeReBuildCommandLine>
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">cmd /c "$(ProjectDir)build_zlib.bat" [configs] [platforms] clean</NMakeCleanCommandLine>
     <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">[zlib_path]\[is configs "Release"]zlibstat.lib[else]zlibstatD.lib[end]</NMakeOutput>
 [end][end]  </PropertyGroup>
   <ItemDefinitionGroup>

Modified: subversion/branches/performance/build/transform_libtool_scripts.sh
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/transform_libtool_scripts.sh?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/build/transform_libtool_scripts.sh (original)
+++ subversion/branches/performance/build/transform_libtool_scripts.sh Wed Dec  8 21:53:38 2010
@@ -21,6 +21,7 @@
 #
 
 # Dependencies of libraries
+# TODO: generate from build.conf
 subr="subr"
 auth_gnome_keyring="auth_gnome_keyring $subr"
 auth_kwallet="auth_kwallet $subr"
@@ -39,11 +40,9 @@ ra="ra $delta $ra_local $ra_neon $ra_ser
 wc="wc $delta $diff $subr"
 client="client $delta $diff $ra $subr $wc"
 
-# Variable 'libraries' containing names of variables corresponding to libraries
-libraries="auth_gnome_keyring auth_kwallet client delta diff fs fs_base fs_fs fs_util ra ra_local ra_neon ra_serf ra_svn repos subr wc"
-
-for library in $libraries; do
-  # Delete duplicates in dependencies of libraries
+# Delete duplicates in dependencies of libraries
+ls subversion | grep libsvn_ | while read library_dir; do
+  library=`basename $library_dir | sed s/libsvn_//`
   library_dependencies="$(echo -n $(for x in $(eval echo "\$$library"); do echo $x; done | sort -u))"
   eval "$library=\$library_dependencies"
 done

Modified: subversion/branches/performance/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/performance/configure.ac?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/configure.ac (original)
+++ subversion/branches/performance/configure.ac Wed Dec  8 21:53:38 2010
@@ -844,11 +844,10 @@ if test "$enable_disallowing_of_undefine
   LDFLAGS="$LDFLAGS -Wl,--no-undefined"
   AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"])
   LDFLAGS="$old_LDFLAGS"
-  libraries="auth_gnome_keyring auth_kwallet client delta diff fs fs_base fs_fs fs_util ra ra_local ra_neon ra_serf ra_svn repos subr wc"
   if test "$svn_wl_no_undefined" = "yes"; then
     AC_MSG_RESULT([yes])
-    for library in $libraries; do
-      eval "libsvn_${library}_LDFLAGS=-Wl,--no-undefined"
+    ls "$abs_srcdir"/subversion | grep libsvn_ | while read library_dir; do
+      eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
     done
   else
     AC_MSG_RESULT([no])
@@ -1041,7 +1040,7 @@ SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
 
 AC_PATH_PROG(PERL, perl, none)
 
-AC_PATH_PROG(RUBY, ruby, none)
+AC_PATH_PROGS(RUBY, ruby ruby1.8, none)
 if test "$RUBY" != "none"; then
   if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)'; then
     AC_PATH_PROG(RDOC, rdoc, none)
@@ -1257,7 +1256,9 @@ AC_CONFIG_FILES([Makefile])
 SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
 SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
 SVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
-SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
+if test -e packages/solaris/pkginfo.in; then
+  SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
+fi
 AC_SUBST(SVN_CONFIG_SCRIPT_FILES)
 
 AC_OUTPUT

Modified: subversion/branches/performance/contrib/server-side/fsfsverify.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/contrib/server-side/fsfsverify.py?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/contrib/server-side/fsfsverify.py (original)
+++ subversion/branches/performance/contrib/server-side/fsfsverify.py Wed Dec  8 21:53:38 2010
@@ -20,6 +20,13 @@ import optparse
 import sys
 import re
 
+try:
+    import hashlib
+    md5_new = hashlib.md5
+except ImportError:
+    import md5
+    md5_new = md5.new
+
 
 # A handy constant for refering to the NULL digest (one that
 # matches every digest).
@@ -70,6 +77,10 @@ class NoMoreData(FsfsVerifyException):
   pass
 
 
+class CmdlineError(FsfsVerifyException):
+  pass
+
+
 LOG_INSTRUCTIONS = 1
 LOG_WINDOWS = 2
 LOG_SVNDIFF = 4
@@ -350,8 +361,8 @@ class Window(object):
           self.isDataCompressed = True
       except Exception, e:
         new_e = InvalidCompressedStream(
-          "Invalid compressed data stream at offset %d (%s)" % (offset,
-                                                                str(e)),
+          "Invalid compressed data stream at offset %d (%s, %s)\n" % (
+              offset, str(e), repr(self)),
           offset)
         new_e.windowOffset = self.windowOffset
         raise new_e
@@ -522,7 +533,7 @@ class Rep(object):
     self.length = int(length)
     self.size = int(size)
 
-    self.digest = digest
+    self.digest = digest.strip()
     self.currentRev = currentRev
 
     self.contentType = contentType
@@ -561,16 +572,14 @@ class Rep(object):
                                                       self.contentType)
 
     if header == 'DELTA':
-      # Consume the rest of the DELTA header
-      while f.read(1) != '\n':
-        pass
-
+      line = f.readline()
+      digest = None
+      
       # This should be the start of the svndiff stream
       actual_start = f.tell()
       try:
         svndiff = Svndiff(f, self.length)
         svndiff.verify()
-        digest = None
       except Exception, e:
         e.rep = self
         e.noderev = self.noderev
@@ -582,8 +591,7 @@ class Rep(object):
       if f.read(1) != '\n':
         raise DataCorrupt, "Expected a '\\n' after PLAIN"
 
-      import md5
-      m = md5.new()
+      m = md5_new()
       m.update(f.read(self.length))
 
       if self.digest and self.digest != NULL_DIGEST \
@@ -592,15 +600,19 @@ class Rep(object):
           "PLAIN data is corrupted.  Expected digest '%s', computed '%s'." % (
             self.digest, m.hexdigest())
 
-      if f.read(7) != 'ENDREP\n':
-        raise DataCorrupt, "Terminating ENDREP missing!"
+      buf = f.read(6)
+      if buf != 'ENDREP':
+        raise DataCorrupt, "Terminating ENDREP missing! %r, %r" % (buf, self)
+        pass
 
 
 class TextRep(Rep):
   def __init__(self, rev, offset, length, size, digest,
-               contentType, currentRev, noderev):
+               contentType, currentRev, noderev, sha1=None, uniquifier=None):
     super(TextRep,self).__init__('text', rev, offset, length, size,
                                  digest, contentType, currentRev, noderev)
+    self.sha1 = None
+    self.uniquifier = None
 
 
 class PropRep(Rep):
@@ -650,6 +662,7 @@ class NodeRev(object):
     self.nodeOffset = f.tell()
 
     while True:
+      currentOffset = f.tell()
       line = f.readline()
       if line == '':
         raise IOError, "Unexpected end of file"
@@ -666,8 +679,12 @@ class NodeRev(object):
         raise
 
       # pull of the leading space and trailing new line
+      if len(value) < 2:
+          raise FsfsVerifyException("value needs to contain 2 or more bytes (%d)" % currentOffset)
       value = value[1:-1]
 
+      assert value != ""
+
       if field == 'id':
         self.id = NodeId(value)
       elif field == 'type':
@@ -681,7 +698,16 @@ class NodeRev(object):
         length = int(values[2])
         size = int(values[3])
         digest = values[4]
-        # TODO SHA1 digest
+        
+        if len(values) > 5:
+            sha1 = values[5]
+        else:
+            sha1 = None
+        
+        if len(values) > 6:
+            uniquifier = values[6]
+        else:
+            uniquifier = None
 
         if rev != currentRev:
           contentType = None
@@ -692,7 +718,7 @@ class NodeRev(object):
           f.seek(savedOffset)
 
         self.text = TextRep(rev, offset, length, size, digest,
-                            contentType, currentRev, self)
+                            contentType, currentRev, self, sha1, uniquifier)
       elif field == 'props':
         (rev, offset, length, size, digest) = value.split(' ')
         rev = int(rev)
@@ -723,6 +749,28 @@ class NodeRev(object):
           offset = f.tell()
           f.seek(self.text.offset)
           self.dir = getDirHash(f)
+          
+          for k,v in self.dir.items():
+              nodeType, nodeId = v
+              
+              if nodeId.rev != self.id.rev:
+                  if not os.path.exists(str(nodeId.rev)):
+                      print "Can't check %s" % repr(nodeId)
+                      continue
+                  with open(str(nodeId.rev),'rb') as tmp:
+                      tmp.seek(nodeId.offset)
+                      idLine = tmp.readline()
+              else:
+                  f.seek(nodeId.offset)
+                  idLine = f.readline()
+              
+              if idLine != ("id: %s\n" % nodeId):
+                  raise DataCorrupt(
+                     ("Entry for '%s' at " % k ) +
+                     ("offset %d is pointing to an " % self.text.offset) +
+                     ("invalid location (node claims to be at offset %d)" % (
+                       nodeId.offset))
+                    )
           f.seek(offset)
         else:
           # The directory entries are stored in another file.
@@ -851,7 +899,7 @@ class RegexpStrategy(WalkStrategy):
     self.nodeFile = open(filename, 'rb')
 
   def _nodeWalker(self):
-    nodeId_re = re.compile(r'^id: [a-z0-9\./]+$')
+    nodeId_re = re.compile(r'^id: [a-z0-9\./\-]+$')
 
     self.f.seek(0)
     offset = 0
@@ -913,6 +961,11 @@ def truncate(noderev, revFile):
   fields[3] = '0' * len(fields[3])
   fields[4] = '0' * len(fields[4])
   fields[5] = 'd41d8cd98f00b204e9800998ecf8427e'
+
+  if len(fields) > 6:
+    fields[6] = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
+    fields[7] = fields[7].strip()
+
   newTextRep = ' '.join(fields) + '\x0a'
   assert(len(newTextRep) == overallLength)
   revFile.write(newTextRep)
@@ -1106,8 +1159,9 @@ if __name__ == '__main__':
     match = re.match('([0-9]+)', os.path.basename(filename))
     currentRev = int(match.group(1), 10)
   except:
-    raise CmdlineError, \
-      "The file name must start with a decimal number that indicates the revision"
+    raise CmdlineError(
+      "The file name must start with a decimal " +
+      "number that indicates the revision")
 
   if options.noderevRegexp:
     strategy = RegexpStrategy(filename, root, currentRev)

Modified: subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp Wed Dec  8 21:53:38 2010
@@ -206,7 +206,7 @@ CreateJ::Info(const char *path, const sv
                              "Ljava/lang/String;Ljava/lang/String;"
                              "Ljava/lang/String;Ljava/lang/String;"
                              "Ljava/lang/String;Ljava/lang/String;JJ"
-                             "L"JAVA_PACKAGE"/Depth;"
+                             "L"JAVA_PACKAGE"/types/Depth;"
                              "L"JAVA_PACKAGE"/ConflictDescriptor;)V");
       if (mid == 0 || JNIUtil::isJavaExceptionThrown())
         POP_AND_RETURN_NULL;

Modified: subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp Wed Dec  8 21:53:38 2010
@@ -176,14 +176,14 @@ int EnumMapper::toLogLevel(jobject jLogL
 svn_depth_t EnumMapper::toDepth(jobject jdepth)
 {
   // The offset for depths is -2
-  return (svn_depth_t) (getOrdinal(JAVA_PACKAGE"/Depth", jdepth) - 2);
+  return (svn_depth_t) (getOrdinal(JAVA_PACKAGE"/types/Depth", jdepth) - 2);
 }
 
 jobject EnumMapper::mapDepth(svn_depth_t depth)
 {
   // We're assuming a valid value for the C enum above
   // The offset for depths is -2
-  return mapEnum(JAVA_PACKAGE"/Depth", ((int) depth) + 2);
+  return mapEnum(JAVA_PACKAGE"/types/Depth", ((int) depth) + 2);
 }
 
 jobject EnumMapper::mapOperation(svn_wc_operation_t operation)

Modified: subversion/branches/performance/subversion/bindings/javahl/native/JNIUtil.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/JNIUtil.h?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/JNIUtil.h (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/JNIUtil.h Wed Dec  8 21:53:38 2010
@@ -179,7 +179,7 @@ class JNIUtil
   static JNIMutex *g_logMutex;
 
   /**
-   * Flag, that an exception occured during our initialization.
+   * Flag, that an exception occurred during our initialization.
    */
   static bool g_initException;
 

Modified: subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Wed Dec  8 21:53:38 2010
@@ -760,7 +760,7 @@ Java_org_apache_subversion_javahl_SVNCli
 }
 
 JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_Depth_2ZZZ
+Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZ
 (JNIEnv *env, jobject jthis, jstring jpath1, jobject jrevision1,
  jstring jpath2, jobject jrevision2, jstring jlocalPath, jboolean jforce,
  jobject jdepth, jboolean jignoreAncestry, jboolean jdryRun,
@@ -800,7 +800,7 @@ Java_org_apache_subversion_javahl_SVNCli
 }
 
 JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_util_List_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_Depth_2ZZZ
+Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_util_List_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZ
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
  jobject jranges, jstring jlocalPath, jboolean jforce, jobject jdepth,
  jboolean jignoreAncestry, jboolean jdryRun, jboolean jrecordOnly)
@@ -1128,7 +1128,7 @@ JNIEXPORT void JNICALL Java_org_apache_s
 }
 
 JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Ljava_lang_String_2Lorg_apache_subversion_javahl_Depth_2Ljava_util_Collection_2ZZZZ
+Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZZZZ
 (JNIEnv *env, jobject jthis, jstring jtarget1, jobject jrevision1,
  jstring jtarget2, jobject jrevision2, jstring jrelativeToDir,
  jstring joutfileName, jobject jdepth, jobject jchangelists,
@@ -1178,7 +1178,7 @@ Java_org_apache_subversion_javahl_SVNCli
 }
 
 JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Ljava_lang_String_2Lorg_apache_subversion_javahl_Depth_2Ljava_util_Collection_2ZZZZ
+Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZZZZ
 (JNIEnv *env, jobject jthis, jstring jtarget, jobject jpegRevision,
  jobject jstartRevision, jobject jendRevision, jstring jrelativeToDir,
  jstring joutfileName, jobject jdepth, jobject jchangelists,
@@ -1228,7 +1228,7 @@ Java_org_apache_subversion_javahl_SVNCli
 }
 
 JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_diffSummarize__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Depth_2Ljava_util_Collection_2ZLorg_apache_subversion_javahl_callback_DiffSummaryCallback_2
+Java_org_apache_subversion_javahl_SVNClient_diffSummarize__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZLorg_apache_subversion_javahl_callback_DiffSummaryCallback_2
 (JNIEnv *env, jobject jthis, jstring jtarget1, jobject jrevision1,
  jstring jtarget2, jobject jrevision2, jobject jdepth, jobject jchangelists,
  jboolean jignoreAncestry, jobject jdiffSummaryReceiver)
@@ -1271,7 +1271,7 @@ Java_org_apache_subversion_javahl_SVNCli
 }
 
 JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_diffSummarize__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Depth_2Ljava_util_Collection_2ZLorg_apache_subversion_javahl_callback_DiffSummaryCallback_2
+Java_org_apache_subversion_javahl_SVNClient_diffSummarize__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_Revision_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZLorg_apache_subversion_javahl_callback_DiffSummaryCallback_2
 (JNIEnv *env, jobject jthis, jstring jtarget, jobject jPegRevision,
  jobject jStartRevision, jobject jEndRevision, jobject jdepth,
  jobject jchangelists, jboolean jignoreAncestry,

Modified: subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info.java?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info.java Wed Dec  8 21:53:38 2010
@@ -25,7 +25,7 @@ package org.apache.subversion.javahl;
 
 import java.util.Date;
 
-import org.apache.subversion.javahl.types.NodeKind;
+import org.apache.subversion.javahl.types.*;
 
 /**
  * this class is returned by {@link ISVNClient#info2} and contains information

Modified: subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java Wed Dec  8 21:53:38 2010
@@ -122,27 +122,27 @@ public final class Depth
         return (recurse ? unknown : immediates);
     }
     
-    public static org.apache.subversion.javahl.Depth toADepth(int depth)
+    public static org.apache.subversion.javahl.types.Depth toADepth(int depth)
     {
        switch(depth)
        {
             case infinity:
-                return org.apache.subversion.javahl.Depth.infinity;
+                return org.apache.subversion.javahl.types.Depth.infinity;
             case immediates:
-                return org.apache.subversion.javahl.Depth.immediates;
+                return org.apache.subversion.javahl.types.Depth.immediates;
             case files:
-                return org.apache.subversion.javahl.Depth.files;
+                return org.apache.subversion.javahl.types.Depth.files;
             case empty:
-                return org.apache.subversion.javahl.Depth.empty;
+                return org.apache.subversion.javahl.types.Depth.empty;
             case exclude:
-                return org.apache.subversion.javahl.Depth.exclude;
+                return org.apache.subversion.javahl.types.Depth.exclude;
             case unknown:
             default:
-                return org.apache.subversion.javahl.Depth.unknown;
+                return org.apache.subversion.javahl.types.Depth.unknown;
        }
     }
 
-    public static int fromADepth(org.apache.subversion.javahl.Depth aDepth)
+    public static int fromADepth(org.apache.subversion.javahl.types.Depth aDepth)
     {
         switch(aDepth)
         {

Modified: subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java Wed Dec  8 21:53:38 2010
@@ -2353,7 +2353,7 @@ public class SVNClient implements SVNCli
         	aSVNClient.info2(path,
         					org.apache.subversion.javahl.Revision.HEAD,
         					org.apache.subversion.javahl.Revision.HEAD,
-        					org.apache.subversion.javahl.Depth.empty,
+        					org.apache.subversion.javahl.types.Depth.empty,
         				    null, new org.apache.subversion.javahl.callback.InfoCallback()
         	{
 				public void singleInfo(org.apache.subversion.javahl.Info info) {

Modified: subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java Wed Dec  8 21:53:38 2010
@@ -23,6 +23,7 @@
 package org.apache.subversion.javahl;
 
 import org.apache.subversion.javahl.callback.*;
+import org.apache.subversion.javahl.types.*;
 
 import java.io.File;
 import java.io.FileInputStream;

Modified: subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java Wed Dec  8 21:53:38 2010
@@ -23,7 +23,7 @@
 package org.apache.subversion.javahl;
 
 import org.apache.subversion.javahl.callback.*;
-import org.apache.subversion.javahl.types.NodeKind;
+import org.apache.subversion.javahl.types.*;
 
 import java.io.File;
 import java.io.FileInputStream;

Propchange: subversion/branches/performance/subversion/include/private/svn_file_handle_cache.h
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec  8 21:53:38 2010
@@ -1 +1 @@
-/subversion/trunk/subversion/include/private/svn_file_handle_cache.h:962911-1027198
+/subversion/trunk/subversion/include/private/svn_file_handle_cache.h:962911-1027198,1039498-1043512

Propchange: subversion/branches/performance/subversion/include/private/svn_temp_serializer.h
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec  8 21:53:38 2010
@@ -1 +1 @@
-/subversion/trunk/subversion/include/private/svn_temp_serializer.h:962911-1027198
+/subversion/trunk/subversion/include/private/svn_temp_serializer.h:962911-1027198,1039498-1043512

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=1043705&r1=1043704&r2=1043705&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  8 21:53:38 2010
@@ -706,6 +706,21 @@ svn_wc__node_get_schedule(svn_wc_schedul
                           const char *local_abspath,
                           apr_pool_t *scratch_pool);
 
+/**
+ * Helper function which fetches all the relevant information for
+ * libsvn_client/merge.c:get_mergeinfo_walk_cb().  This combines several
+ * svn_wc__db_read_info() calls into one, limiting the number of database
+ * accesses, and, more importantly, system calls.
+ */
+svn_error_t *
+svn_wc__get_mergeinfo_walk_info(svn_boolean_t *is_present,
+                                svn_boolean_t *is_deleted,
+                                svn_boolean_t *is_absent,
+                                svn_depth_t *depth,
+                                svn_wc_context_t *wc_ctx,
+                                const char *local_abspath,
+                                apr_pool_t *scratch_pool);
+
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/performance/subversion/include/svn_checksum.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_checksum.h?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_checksum.h (original)
+++ subversion/branches/performance/subversion/include/svn_checksum.h Wed Dec  8 21:53:38 2010
@@ -121,9 +121,11 @@ svn_checksum_to_cstring_display(const sv
 
 /** Return the hex representation of @a checksum, allocating the
  * string in @a pool.  If @a checksum->digest is all zeros (that is,
- * 0, not '0'), then return NULL.
+ * 0, not '0') then return NULL. In 1.7+, @a checksum may be NULL
+ * and NULL will be returned in that case.
  *
  * @since New in 1.6.
+ * @note Passing NULL for @a checksum in 1.6 will cause a segfault.
  */
 const char *
 svn_checksum_to_cstring(const svn_checksum_t *checksum,

Modified: subversion/branches/performance/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_client.h?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_client.h (original)
+++ subversion/branches/performance/subversion/include/svn_client.h Wed Dec  8 21:53:38 2010
@@ -1000,8 +1000,11 @@ svn_client_create_context(svn_client_ctx
  * converting them to UTF-8, followed by targets from @a known_targets
  * (which might come from, for example, the "--targets" command line option).
  *
- * On each URL target, do some IRI-to-URI encoding and some auto-escaping.
- * On each local path, canonicalize case and path separators.
+ * Process each target in one of the following ways.  For a repository-
+ * relative URL: resolve to a full URL, contacting the repository if
+ * necessary to do so, and then treat as a full URL.  For a URL: do some
+ * IRI-to-URI encoding and some auto-escaping, and canonicalize.  For a
+ * local path: canonicalize case and path separators.
  *
  * Allocate @a *targets_p and its elements in @a pool.
  *

Modified: subversion/branches/performance/subversion/include/svn_dirent_uri.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_dirent_uri.h?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_dirent_uri.h (original)
+++ subversion/branches/performance/subversion/include/svn_dirent_uri.h Wed Dec  8 21:53:38 2010
@@ -42,14 +42,21 @@
  *    Examples: "file", "dir/file", "dir/subdir/../file"
  *    But not: "/file", "http://server/file"
  *
+ *  - a Subversion filesystem path (fspath), otherwise known as a path
+ *    within a repository, is a path relative to the root of the repository
+ *    filesystem, that starts with a slash ("/").  The rules for a fspath
+ *    are the same as for a relpath except for the leading '/'.  A fspath
+ *    never ends with '/' except when the whole path is just '/'.
+ *
+ *    The fspath API is private.
+ *
  * This distinction is needed because on Windows we have to handle some
  * dirents and URIs differently. Since it's not possible to determine from
  * the path string if it's a dirent or a URI, it's up to the API user to
  * make this choice. See also issue #2028.
  *
- * Nearly all the @c svn_dirent_xxx, @c svn_relpath_xxx and @c svn_uri_xxx
- * functions expect paths passed into them to be in canonical form.  The only
- * functions which do *not* have such expectations are:
+ * All of these functions expect paths passed into them to be in canonical
+ * form, except:
  *
  *    - @c svn_dirent_canonicalize()
  *    - @c svn_dirent_is_canonical()
@@ -61,10 +68,12 @@
  *    - @c svn_relpath_local_style()
  *    - @c svn_uri_canonicalize()
  *    - @c svn_uri_is_canonical()
+ *    - @c svn_fspath__is_canonical()
  *
- * Code that works with repository paths should always use repository
- * root based relative paths (relpaths), or uris if it has to specify the
- * repository itself too.
+ * Code that works with a path-in-repository should use, in order of
+ * preference: a relpath (preferred), or a fspath (widely used by legacy
+ * code), or a relative URI (not recommended except in the context of
+ * splitting or joining to a full URL).
  *
  * All code that works with local files, MUST USE the dirent apis.
  *
@@ -812,13 +821,6 @@ svn_uri_get_file_url_from_dirent(const c
                                  apr_pool_t *pool);
 
 
-/**************************************************************************
- * A private API for Subversion filesystem paths, otherwise known as paths
- * within a repository, that start with a '/'.  The rules for a fspath are
- * the same as for a relpath except for the leading '/'.  A fspath never
- * ends with '/' except when the whole path is just '/'.
- **************************************************************************/
-
 /** Return TRUE iff @a fspath is canonical.
  * @a fspath need not be canonical, of course.
  *

Modified: subversion/branches/performance/subversion/include/svn_editor.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_editor.h?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_editor.h (original)
+++ subversion/branches/performance/subversion/include/svn_editor.h Wed Dec  8 21:53:38 2010
@@ -198,7 +198,7 @@ extern "C" {
  *
  * - @b Complete/Abort: The driver will end transmission by calling \n
  *    svn_editor_complete() if successful, or \n
- *    svn_editor_abort() if an error or cancellation occured.
+ *    svn_editor_abort() if an error or cancellation occurred.
  * \n\n
  *
  * <h3>Driving Order Restrictions</h3>

Modified: subversion/branches/performance/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_io.h?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_io.h (original)
+++ subversion/branches/performance/subversion/include/svn_io.h Wed Dec  8 21:53:38 2010
@@ -692,8 +692,13 @@ svn_error_t *
 svn_io_file_flush_to_disk(apr_file_t *file,
                           apr_pool_t *pool);
 
-/** Copy file @a file from location @a src_path to location @a dest_path.
- * Use @a pool for memory allocations.
+/** Copy the file whose basename (or relative path) is @a file within
+ * directory @a src_path to the same basename (or relative path) within
+ * directory @a dest_path.  Overwrite the destination file if it already
+ * exists.  The destination directory (including any directory
+ * components in @a name) must already exist.  Set the destination
+ * file's permissions to match those of the source.  Use @a pool for
+ * memory allocations.
  */
 svn_error_t *
 svn_io_dir_file_copy(const char *src_path,

Modified: subversion/branches/performance/subversion/include/svn_path.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_path.h?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_path.h (original)
+++ subversion/branches/performance/subversion/include/svn_path.h Wed Dec  8 21:53:38 2010
@@ -65,10 +65,9 @@ extern "C" {
 
 /** Convert @a path from the local style to the canonical internal style.
  *
- * New code should use either svn_dirent_internal_style() (for local paths) or
- * svn_relpath_internal_style() (for relative paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_internal_style() or
+ * svn_relpath_internal_style().
  */
 SVN_DEPRECATED
 const char *
@@ -76,10 +75,9 @@ svn_path_internal_style(const char *path
 
 /** Convert @a path from the canonical internal style to the local style.
  *
- * New code should use either svn_dirent_local_style() (for local paths) or
- * svn_relpath_local_style() (for relative paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_local_style() or
+ * svn_relpath_local_style().
  */
 SVN_DEPRECATED
 const char *
@@ -109,10 +107,9 @@ svn_path_local_style(const char *path, a
  * @a component won't be detected. An absolute URI can only be used
  * for the base.
  *
- * New code should use either svn_dirent_join() (for local paths) or
- * svn_uri_join() (for urls) or svn_relpath_join() (for relative paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_join(), svn_uri_join(),
+ * svn_relpath_join() or svn_fspath__join().
  */
 SVN_DEPRECATED
 char *
@@ -129,10 +126,10 @@ svn_path_join(const char *base, const ch
  * This function does not support URLs.
  *
  * See svn_path_join() for further notes about joining paths.
- * 
- * New code should use svn_dirent_join_many() instead.
- * 
+ *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * For new code, consider using svn_dirent_join_many() or a sequence of
+ * calls to one of the *_join() functions.
  */
 SVN_DEPRECATED
 char *
@@ -151,10 +148,9 @@ svn_path_join_many(apr_pool_t *pool, con
  *
  * @note If an empty string is passed, then an empty string will be returned.
  *
- * New code should use either svn_dirent_basename() (for local paths) or
- * svn_uri_basename() (for urls) or svn_relpath_basename (for relative paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_basename(), svn_uri_basename(),
+ * svn_relpath_basename() or svn_fspath__basename().
  */
 SVN_DEPRECATED
 char *
@@ -166,10 +162,9 @@ svn_path_basename(const char *path, apr_
  *
  * The returned dirname will be allocated in @a pool.
  *
- * New code should use either svn_dirent_dirname() (for local paths) or
- * svn_uri_dirname() (for urls) or svn_relpath_dirname() (for relative paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_dirname(), svn_uri_dirname(),
+ * svn_relpath_dirname() or svn_fspath__dirname().
  */
 SVN_DEPRECATED
 char *
@@ -239,10 +234,9 @@ svn_path_remove_components(svn_stringbuf
  *             - <pre>"bar"           ==>  ""   and "bar"</pre>
  *             - <pre>""              ==>  ""   and ""</pre>
  *
- * New code should use either svn_dirent_split() (for local paths) or
- * svn_uri_split() (for urls) or svn_relpath_split() (for relative paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_split(), svn_uri_split(),
+ * svn_relpath_split() or svn_fspath__split().
  */
 SVN_DEPRECATED
 void
@@ -259,6 +253,7 @@ svn_path_split(const char *path,
 int
 svn_path_is_empty(const char *path);
 
+
 #ifndef SVN_DIRENT_URI_H
 /* This declaration has been moved to svn_dirent_uri.h, and remains
    here only for compatibility reasons. */
@@ -266,6 +261,7 @@ svn_boolean_t
 svn_dirent_is_root(const char *dirent, apr_size_t len);
 #endif /* SVN_DIRENT_URI_H */
 
+
 /** Return a new path (or URL) like @a path, but transformed such that
  * some types of path specification redundancies are removed.
  *
@@ -279,11 +275,9 @@ svn_dirent_is_root(const char *dirent, a
  * The returned path may be statically allocated, equal to @a path, or
  * allocated from @a pool.
  *
- * New code should use either svn_dirent_canonicalize() (for local paths) or
- * svn_uri_canonicalize() (for urls) or svn_relpath_canonicalize() (for 
- * relative paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_canonicalize(), svn_uri_canonicalize(),
+ * svn_relpath_canonicalize() or svn_fspath__canonicalize().
  */
 SVN_DEPRECATED
 const char *
@@ -292,12 +286,10 @@ svn_path_canonicalize(const char *path, 
 /** Return @c TRUE iff path is canonical. Use @a pool for temporary
  * allocations.
  *
- * New code should use either svn_dirent_is_canonical() (for local paths) or
- * svn_uri_is_canonical() (for urls) or svn_relpath_is_canonical() (for
- * relative paths).
- *
  * @since New in 1.5.
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_is_canonical(), svn_uri_is_canonical(),
+ * svn_relpath_is_canonical() or svn_fspath__is_canonical().
  */
 SVN_DEPRECATED
 svn_boolean_t
@@ -321,11 +313,10 @@ svn_path_compare_paths(const char *path1
  * different resources), and (b) share a common ancestor in their path
  * component, i.e. 'protocol://' is not a sufficient ancestor.
  *
- * New code should use either svn_dirent_get_longest_ancestor() 
- * (for local paths) or svn_uri_get_longest_ancestor() (for urls) 
- * or svn_relpath_get_longest_ancestor() (for relative paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_get_longest_ancestor(),
+ * svn_uri_get_longest_ancestor(), svn_relpath_get_longest_ancestor() or
+ * svn_fspath__get_longest_ancestor().
  */
 SVN_DEPRECATED
 char *
@@ -339,9 +330,8 @@ svn_path_get_longest_ancestor(const char
  * @a relative may be a URL, in which case no attempt is made to convert it,
  * and a copy of the URL is returned.
  *
- * New code should use svn_dirent_get_absolute() instead.
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_get_absolute() on a non-URL input.
  */
 SVN_DEPRECATED
 svn_error_t *
@@ -356,6 +346,8 @@ svn_path_get_absolute(const char **pabso
  * a file, since directories do not normally vanish.
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should implement the required logic directly; no direct
+ * replacement is provided.
  */
 SVN_DEPRECATED
 svn_error_t *
@@ -392,13 +384,12 @@ svn_path_split_if_file(const char *path,
  * If there are no items in @a targets, set @a *pcommon and (if
  * applicable) @a *pcondensed_targets to @c NULL.
  *
- * New code should use either svn_dirent_condense_targets() (for local paths)
- * or svn_uri_condense_targets() (for urls).
- *
  * @note There is no guarantee that @a *pcommon is within a working
  * copy.
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_condense_targets() or
+ * svn_uri_condense_targets().
  */
 SVN_DEPRECATED
 svn_error_t *
@@ -519,11 +510,9 @@ svn_path_is_dotpath_present(const char *
  *       in which case a pointer into @a path2 will be returned to
  *       identify the remainder path.
  *
- * New code should use either svn_dirent_is_child() (for local paths) or
- * svn_uri_is_child() (for urls) or svn_relpath_is_child() 
- * (for relative paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_is_child(), svn_uri_is_child(),
+ * svn_relpath_is_child() or svn_fspath__is_child().
  */
 SVN_DEPRECATED
 const char *
@@ -534,11 +523,9 @@ svn_path_is_child(const char *path1, con
  *
  * @since New in 1.3.
  *
- * New code should use either svn_dirent_is_ancestor() (for local paths) or
- * svn_uri_is_ancestor() (for urls) or svn_relpath_is_ancestor() (for relative 
- * paths).
- *
  * @deprecated Provided for backward compatibility with the 1.6 API.
+ * New code should use svn_dirent_is_ancestor(), svn_uri_is_ancestor(),
+ * svn_relpath_is_ancestor() or svn_fspath__is_ancestor().
  */
 SVN_DEPRECATED
 svn_boolean_t

Modified: subversion/branches/performance/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_types.h?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_types.h (original)
+++ subversion/branches/performance/subversion/include/svn_types.h Wed Dec  8 21:53:38 2010
@@ -71,22 +71,44 @@ extern "C" {
  */
 typedef struct svn_error_t
 {
-  /** APR error value, possibly SVN_ custom err */
+  /** APR error value; possibly an SVN_ custom error code (see
+   * `svn_error_codes.h' for a full listing).
+   */
   apr_status_t apr_err;
 
-  /** details from producer of error */
+  /** Details from the producer of error.
+   *
+   * Note that if this error was generated by Subversion's API, you'll
+   * probably want to use svn_err_best_message() to get a single
+   * decriptive string for this error chain (see the @a child member)
+   * or svn_handle_error2() to print the error chain in full.  This is
+   * because Subversion's API functions sometimes add many links to
+   * the error chain that lack details (used only to produce virtual
+   * stack traces).  (Use svn_error_purge_tracing() to remove those
+   * trace-only links from the error chain.)
+   */
   const char *message;
 
-  /** ptr to the error we "wrap" */
+  /** Pointer to the error we "wrap" (may be @c NULL).  Via this
+   * member, individual error object can be strung together into an
+   * "error chain".
+   */
   struct svn_error_t *child;
 
-  /** The pool holding this error and any child errors it wraps */
+  /** The pool in which this error object is allocated.  (If
+   * Subversion's APIs are used to manage error chains, then this pool
+   * will contain the whole error chain of which this object is a
+   * member.) */
   apr_pool_t *pool;
 
-  /** Source file where the error originated.  Only used iff @c SVN_DEBUG. */
+  /** Source file where the error originated (iff @c SVN_DEBUG;
+   * undefined otherwise).
+   */
   const char *file;
 
-  /** Source line where the error originated.  Only used iff @c SVN_DEBUG. */
+  /** Source line where the error originated (iff @c SVN_DEBUG;
+   * undefined otherwise).
+   */
   long line;
 
 } svn_error_t;

Modified: subversion/branches/performance/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/add.c?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/add.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/add.c Wed Dec  8 21:53:38 2010
@@ -673,16 +673,6 @@ mkdir_urls(const apr_array_header_t *url
   const char *common;
   int i;
 
-  /* Early exit when there is a mix of URLs and local paths. */
-  for (i = 0; i < urls->nelts; i++)
-    {
-      const char *url = APR_ARRAY_IDX(urls, i, const char *);
-      if (! svn_path_is_url(url))
-        return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
-                                 _("Illegal repository URL '%s'"),
-                                 url);
-    }
-
   /* Find any non-existent parent directories */
   if (make_parents)
     {
@@ -875,9 +865,28 @@ 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"));
+
   if (svn_path_is_url(APR_ARRAY_IDX(paths, 0, const char *)))
     {
       SVN_ERR(mkdir_urls(paths, make_parents, revprop_table, commit_callback,
@@ -887,7 +896,6 @@ 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/checkout.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/checkout.c?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/checkout.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/checkout.c Wed Dec  8 21:53:38 2010
@@ -92,7 +92,7 @@ svn_client__checkout_internal(svn_revnum
 
   /* Sanity check.  Without these, the checkout is meaningless. */
   SVN_ERR_ASSERT(local_abspath != NULL);
-  SVN_ERR_ASSERT(url != NULL);
+  SVN_ERR_ASSERT(svn_uri_is_canonical(url, pool));
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
   /* Fulfill the docstring promise of svn_client_checkout: */
@@ -101,9 +101,6 @@ svn_client__checkout_internal(svn_revnum
       && (revision->kind != svn_opt_revision_head))
     return svn_error_create(SVN_ERR_CLIENT_BAD_REVISION, NULL, NULL);
 
-  /* Canonicalize the URL. */
-  url = svn_uri_canonicalize(url, pool);
-
   {
     svn_boolean_t have_repos_root_url;
     svn_boolean_t have_repos_uuid;

Modified: subversion/branches/performance/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/copy.c?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/copy.c Wed Dec  8 21:53:38 2010
@@ -1944,10 +1944,19 @@ try_copy(const apr_array_header_t *sourc
           svn_pool_clear(iterpool);
 
           if (src_is_url)
-            pair->src_abspath_or_url = apr_pstrdup(pool, source->path);
+            {
+              pair->src_abspath_or_url = apr_pstrdup(pool, source->path);
+              src_basename = svn_uri_basename(pair->src_abspath_or_url,
+                                              iterpool);
+            }
           else
-            SVN_ERR(svn_dirent_get_absolute(&pair->src_abspath_or_url,
-                                            source->path, pool));
+            {
+              SVN_ERR(svn_dirent_get_absolute(&pair->src_abspath_or_url,
+                                              source->path, pool));
+              src_basename = svn_dirent_basename(pair->src_abspath_or_url,
+                                                 iterpool);
+            }
+            
           pair->src_op_revision = *source->revision;
           pair->src_peg_revision = *source->peg_revision;
 
@@ -1956,12 +1965,7 @@ try_copy(const apr_array_header_t *sourc
                                             src_is_url,
                                             TRUE,
                                             iterpool));
-          if (src_is_url)
-            src_basename = svn_uri_basename(pair->src_abspath_or_url,
-                                            iterpool);
-          else
-            src_basename = svn_dirent_basename(pair->src_abspath_or_url,
-                                               iterpool);
+
           if (srcs_are_urls && ! dst_is_url)
             src_basename = svn_path_uri_decode(src_basename, iterpool);
 

Modified: subversion/branches/performance/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/diff.c?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/diff.c Wed Dec  8 21:53:38 2010
@@ -448,7 +448,7 @@ print_git_diff_header_modified(svn_strea
 
 /* Print a git diff header showing the OPERATION to the stream OS using
  * HEADER_ENCODING. Return suitable diff labels for the git diff in *LABEL1
- * and *LABEL2. PATH is the path being diffed, ORIG_TARGET1 and ORIG_TARGET2
+ * and *LABEL2. REPOS_RELPATH1 and REPOS_RELPATH2 are relative to reposroot.
  * are the paths passed to the original diff command. REV1 and REV2 are
  * revisions being diffed. COPYFROM_PATH indicates where the diffed item
  * was copied from. RA_SESSION and WC_CTX are used to adjust paths in the
@@ -460,9 +460,8 @@ static svn_error_t *
 print_git_diff_header(svn_stream_t *os,
                       const char **label1, const char **label2,
                       svn_diff_operation_kind_t operation,
-                      const char *path,
-                      const char *path1,
-                      const char *path2,
+                      const char *repos_relpath1,
+                      const char *repos_relpath2,
                       svn_revnum_t rev1,
                       svn_revnum_t rev2,
                       const char *copyfrom_path,
@@ -472,18 +471,6 @@ print_git_diff_header(svn_stream_t *os,
                       const char *wc_root_abspath,
                       apr_pool_t *scratch_pool)
 {
-  const char *repos_relpath1;
-  const char *repos_relpath2;
-
-  SVN_ERR(adjust_relative_to_repos_root(&repos_relpath1, path, path1,
-                                        ra_session, wc_ctx,
-                                        wc_root_abspath,
-                                        scratch_pool));
-  SVN_ERR(adjust_relative_to_repos_root(&repos_relpath2, path, path2,
-                                        ra_session, wc_ctx,
-                                        wc_root_abspath,
-                                        scratch_pool));
-
   if (operation == svn_diff_op_deleted)
     {
       SVN_ERR(print_git_diff_header_deleted(os, header_encoding,
@@ -574,10 +561,6 @@ display_prop_diffs(const apr_array_heade
   const char *path1 = apr_pstrdup(pool, orig_path1);
   const char *path2 = apr_pstrdup(pool, orig_path2);
 
-  /* If we're creating a diff on the wc root, path would be empty. */
-  if (path[0] == '\0')
-    path = apr_psprintf(pool, ".");
-
   if (use_git_diff_format)
     {
       SVN_ERR(adjust_relative_to_repos_root(&path1, path, orig_path1,
@@ -590,6 +573,10 @@ display_prop_diffs(const apr_array_heade
                                             pool));
     }
 
+  /* If we're creating a diff on the wc root, path would be empty. */
+  if (path[0] == '\0')
+    path = apr_psprintf(pool, ".");
+
   if (show_diff_header)
     {
       const char *label1;
@@ -618,9 +605,8 @@ display_prop_diffs(const apr_array_heade
 
           os = svn_stream_from_aprfile2(file, TRUE, pool);
           SVN_ERR(print_git_diff_header(os, &label1, &label2,
-                                        svn_diff_op_modified, path,
-                                        orig_path1, orig_path2,
-                                        rev1, rev2, NULL,
+                                        svn_diff_op_modified,
+                                        path1, path2, rev1, rev2, NULL,
                                         encoding, ra_session, wc_ctx,
                                         wc_root_abspath, pool));
           SVN_ERR(svn_stream_close(os));
@@ -989,16 +975,25 @@ diff_content_changed(const char *path,
                    path, equal_string));
 
           if (diff_cmd_baton->use_git_diff_format)
-            SVN_ERR(print_git_diff_header(os, &label1, &label2, operation,
-                                          path, diff_cmd_baton->orig_path_1,
-                                          diff_cmd_baton->orig_path_2,
-                                          rev1, rev2,
-                                          copyfrom_path,
-                                          diff_cmd_baton->header_encoding,
-                                          diff_cmd_baton->ra_session,
-                                          diff_cmd_baton->wc_ctx,
-                                          diff_cmd_baton->wc_root_abspath,
-                                          subpool));
+            {
+              const char *tmp_path1, *tmp_path2;
+              SVN_ERR(adjust_relative_to_repos_root(
+                         &tmp_path1, path, diff_cmd_baton->orig_path_1,
+                         diff_cmd_baton->ra_session, diff_cmd_baton->wc_ctx,
+                         diff_cmd_baton->wc_root_abspath, subpool));
+              SVN_ERR(adjust_relative_to_repos_root(
+                         &tmp_path2, path, diff_cmd_baton->orig_path_2,
+                         diff_cmd_baton->ra_session, diff_cmd_baton->wc_ctx,
+                         diff_cmd_baton->wc_root_abspath, subpool));
+              SVN_ERR(print_git_diff_header(os, &label1, &label2, operation,
+                                            tmp_path1, tmp_path2, rev1, rev2,
+                                            copyfrom_path,
+                                            diff_cmd_baton->header_encoding,
+                                            diff_cmd_baton->ra_session,
+                                            diff_cmd_baton->wc_ctx,
+                                            diff_cmd_baton->wc_root_abspath,
+                                            subpool));
+            }
 
           /* Output the actual diff */
           if (svn_diff_contains_diffs(diff) || diff_cmd_baton->force_empty)

Modified: subversion/branches/performance/subversion/libsvn_client/info.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/info.c?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/info.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/info.c Wed Dec  8 21:53:38 2010
@@ -156,8 +156,7 @@ build_info_for_entry(svn_info_t **info,
 
   SVN_ERR(svn_wc__node_get_base_checksum(&checksum, wc_ctx, local_abspath,
                                          pool, pool));
-  if (checksum)
-    tmpinfo->checksum = svn_checksum_to_cstring(checksum, pool);
+  tmpinfo->checksum = svn_checksum_to_cstring(checksum, pool);
 
   SVN_ERR(svn_wc__node_get_depth(&tmpinfo->depth, wc_ctx,
                                  local_abspath, pool));

Modified: subversion/branches/performance/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/merge.c?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/merge.c Wed Dec  8 21:53:38 2010
@@ -5592,18 +5592,16 @@ get_mergeinfo_walk_cb(const char *local_
 
   /* TODO(#2843) How to deal with a excluded item on merge? */
 
+  SVN_ERR(svn_wc__get_mergeinfo_walk_info(&is_present, &deleted, &absent,
+                                          &depth,
+                                          wb->ctx->wc_ctx, local_abspath,
+                                          scratch_pool));
+
   /* Ignore LOCAL_ABSPATH if its parent thinks it exists, but it is not
      actually present. */
-  SVN_ERR(svn_wc__node_is_status_present(&is_present, wb->ctx->wc_ctx,
-                                         local_abspath, scratch_pool));
   if (!is_present)
     return SVN_NO_ERROR;
 
-  SVN_ERR(svn_wc__node_is_status_deleted(&deleted, wb->ctx->wc_ctx,
-                                         local_abspath, scratch_pool));
-  SVN_ERR(svn_wc__node_is_status_absent(&absent, wb->ctx->wc_ctx,
-                                        local_abspath, scratch_pool));
-
    if (deleted || absent)
     {
       propval = NULL;
@@ -5627,8 +5625,6 @@ get_mergeinfo_walk_cb(const char *local_
 
   SVN_ERR(svn_wc_read_kind(&kind, wb->ctx->wc_ctx, local_abspath, TRUE,
                            scratch_pool));
-  SVN_ERR(svn_wc__node_get_depth(&depth, wb->ctx->wc_ctx, local_abspath,
-                                 scratch_pool));
 
   immediate_child_dir = ((wb->depth == svn_depth_immediates)
                          &&(kind == svn_node_dir)

Modified: subversion/branches/performance/subversion/libsvn_client/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/update.c?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/update.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/update.c Wed Dec  8 21:53:38 2010
@@ -397,10 +397,19 @@ svn_client_update4(apr_array_header_t **
 
   for (i = 0; i < paths->nelts; ++i)
     {
+      path = APR_ARRAY_IDX(paths, i, const char *);
+
+      if (svn_path_is_url(path))
+        return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
+                                 _("'%s' is not a local path"), path);
+    }
+
+  for (i = 0; i < paths->nelts; ++i)
+    {
       svn_boolean_t sleep;
-      svn_boolean_t skipped = FALSE;
       svn_error_t *err = SVN_NO_ERROR;
       svn_revnum_t result_rev;
+      const char *local_abspath;
       path = APR_ARRAY_IDX(paths, i, const char *);
 
       svn_pool_clear(subpool);
@@ -408,57 +417,30 @@ svn_client_update4(apr_array_header_t **
       if (ctx->cancel_func && (err = ctx->cancel_func(ctx->cancel_baton)))
         break;
 
-      if (svn_path_is_url(path))
-        {
-          skipped = TRUE;
-        }
-      else
-        {
-          const char *local_abspath;
-
-          SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, subpool));
-          err = svn_client__update_internal(&result_rev, local_abspath,
-                                            revision, depth, depth_is_sticky,
-                                            ignore_externals,
-                                            allow_unver_obstructions,
-                                            &sleep, FALSE, make_parents,
-                                            ctx, subpool);
-
-          if (err && err->apr_err != SVN_ERR_WC_NOT_WORKING_COPY)
-            {
-              return svn_error_return(err);
-            }
+      SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, subpool));
+      err = svn_client__update_internal(&result_rev, local_abspath,
+                                        revision, depth, depth_is_sticky,
+                                        ignore_externals,
+                                        allow_unver_obstructions,
+                                        &sleep, FALSE, make_parents,
+                                        ctx, subpool);
 
-          if (err)
-            {
-              /* SVN_ERR_WC_NOT_WORKING_COPY: it's not versioned */
-              svn_error_clear(err);
-              skipped = TRUE;
-            }
+      if (err && err->apr_err != SVN_ERR_WC_NOT_WORKING_COPY)
+        {
+          return svn_error_return(err);
         }
 
-      if (skipped)
+      if (err)
         {
+          /* SVN_ERR_WC_NOT_WORKING_COPY: it's not versioned */
+          svn_error_clear(err);
           result_rev = SVN_INVALID_REVNUM;
           if (ctx->notify_func2)
             {
               svn_wc_notify_t *notify;
-
-              if (svn_path_is_url(path))
-                {
-                  /* For some historic reason this user error is supported,
-                     and must provide correct notifications. */
-                  notify = svn_wc_create_notify_url(path,
-                                                    svn_wc_notify_skip,
-                                                    subpool);
-                }
-              else
-                {
-                  notify = svn_wc_create_notify(path,
-                                                svn_wc_notify_skip,
-                                                subpool);
-                }
-
+              notify = svn_wc_create_notify(path,
+                                            svn_wc_notify_skip,
+                                            subpool);
               (*ctx->notify_func2)(ctx->notify_baton2, notify, subpool);
             }
         }

Modified: subversion/branches/performance/subversion/libsvn_fs/fs-loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_fs/fs-loader.c?rev=1043705&r1=1043704&r2=1043705&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/branches/performance/subversion/libsvn_fs/fs-loader.c Wed Dec  8 21:53:38 2010
@@ -684,7 +684,15 @@ svn_fs_commit_txn(const char **conflict_
   SVN_ERR(txn->vtable->commit(conflict_p, new_rev, txn, pool));
 
 #ifdef PACK_AFTER_EVERY_COMMIT
-  SVN_ERR(svn_fs_pack(fs_path, NULL, NULL, NULL, NULL, pool));
+  {
+    svn_error_t *err = svn_fs_pack(fs_path, NULL, NULL, NULL, NULL, pool);
+    if (err && err->apr_err == SVN_ERR_UNSUPPORTED_FEATURE)
+      /* Pre-1.6 filesystem. */
+      svn_error_clear(err);
+    else if (err)
+      /* Real error. */
+      return svn_error_return(err);
+  }
 #endif
 
   return SVN_NO_ERROR;