You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/08/24 10:23:07 UTC

svn commit: r1697327 [1/2] - in /subversion/branches/move-tracking-2: ./ build/ build/generator/ build/generator/templates/ notes/ subversion/ subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_fs/ subversion/libsvn_fs_base/ subver...

Author: julianfoad
Date: Mon Aug 24 08:23:06 2015
New Revision: 1697327

URL: http://svn.apache.org/r1697327
Log:
On the 'move-tracking-2' branch: catch up to trunk@1697326.

Resolved prop conflicts resulting from r1696087 which elided mergeinfo on
'notes' and 'subversion/tests/libsvn_fs_x'.

Added:
    subversion/branches/move-tracking-2/subversion/libsvn_fs_base/fs_init.h
      - copied unchanged from r1697326, subversion/trunk/subversion/libsvn_fs_base/fs_init.h
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_init.h
      - copied unchanged from r1697326, subversion/trunk/subversion/libsvn_fs_fs/fs_init.h
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_init.h
      - copied unchanged from r1697326, subversion/trunk/subversion/libsvn_fs_x/fs_init.h
    subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/
      - copied from r1696000, subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/
Removed:
    subversion/branches/move-tracking-2/tools/client-side/detach.py
Modified:
    subversion/branches/move-tracking-2/   (props changed)
    subversion/branches/move-tracking-2/INSTALL   (contents, props changed)
    subversion/branches/move-tracking-2/build/   (props changed)
    subversion/branches/move-tracking-2/build.conf   (contents, props changed)
    subversion/branches/move-tracking-2/build/generator/gen_base.py
    subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py
    subversion/branches/move-tracking-2/build/generator/gen_win.py
    subversion/branches/move-tracking-2/build/generator/templates/vcnet_vcxproj.ezt
    subversion/branches/move-tracking-2/notes/   (props changed)
    subversion/branches/move-tracking-2/notes/svnsync.txt
    subversion/branches/move-tracking-2/subversion/   (props changed)
    subversion/branches/move-tracking-2/subversion/include/private/svn_subr_private.h
    subversion/branches/move-tracking-2/subversion/libsvn_client/ra.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/cached_data.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/temp_serializer.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/   (props changed)
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_id.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/temp_serializer.c
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c
    subversion/branches/move-tracking-2/subversion/libsvn_repos/log.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/compress.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/sysinfo.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/xml.c
    subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c
    subversion/branches/move-tracking-2/subversion/svndumpfilter/svndumpfilter.c
    subversion/branches/move-tracking-2/subversion/svnrdump/load_editor.c
    subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/   (props changed)
    subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c
    subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c
    subversion/branches/move-tracking-2/tools/   (props changed)
    subversion/branches/move-tracking-2/tools/client-side/bash_completion
    subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/log.c
    subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/logic.c
    subversion/branches/move-tracking-2/tools/dev/fsfs-access-map.c
    subversion/branches/move-tracking-2/tools/dist/security/mailer.py
    subversion/branches/move-tracking-2/tools/dist/security/parser.py

Propchange: subversion/branches/move-tracking-2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug 24 08:23:06 2015
@@ -75,6 +75,7 @@
 /subversion/branches/svn-auth-x509:1603509-1655900
 /subversion/branches/svn-info-detail:1660035-1662618
 /subversion/branches/svn-mergeinfo-enhancements:870119-870195,870197-870288
+/subversion/branches/svn-mergeinfo-normalizer:1642232-1695991
 /subversion/branches/svn-patch-improvements:918519-934609
 /subversion/branches/svn_mutex:1141683-1182099
 /subversion/branches/svnpatch-diff:865738-876477
@@ -92,4 +93,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1606692-1695728
+/subversion/trunk:1606692-1697326

Modified: subversion/branches/move-tracking-2/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/INSTALL?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/INSTALL (original)
+++ subversion/branches/move-tracking-2/INSTALL Mon Aug 24 08:23:06 2015
@@ -96,9 +96,9 @@ I.    INTRODUCTION
          These diff streams are used everywhere -- over the network,
          in the repository, and in the client's working copy.
 
-      * libserf  (OPTIONAL for client)
+      * Apache Serf  (OPTIONAL for client)
 
-         The Serf library allows the Subversion client to send HTTP
+         The Apache Serf library allows the Subversion client to send HTTP
          requests.  This is necessary if you want your client to access
          a repository served by the Apache HTTP server.  There is an
          alternate 'svnserve' server as well, though, and clients
@@ -110,7 +110,7 @@ I.    INTRODUCTION
       * OpenSSL (OPTIONAL for client and server)
 
          OpenSSL enables your client to access SSL-encrypted https://
-         URLs (using libserf) in addition to unencrypted http:// URLs.
+         URLs (using Apache Serf) in addition to unencrypted http:// URLs.
          To use SSL with Subversion's WebDAV server, Apache needs to be
          compiled with OpenSSL as well.
 
@@ -313,11 +313,11 @@ I.    INTRODUCTION
       newer. The autogen.sh script knows about that.
 
 
-      5.  Serf library 1.3.4 or newer (OPTIONAL)
+      5.  Apache Serf library 1.3.4 or newer (OPTIONAL)
 
       If you want your client to be able to speak to an Apache
       server (via a http:// or https:// URL), you must link against
-      serf.  Though optional, we strongly recommend this.
+      Apache Serf.  Though optional, we strongly recommend this.
 
       In order to use ra_serf, you must install serf, and run Subversion's
       ./configure with the argument --with-serf.  If serf is installed in a
@@ -327,31 +327,31 @@ I.    INTRODUCTION
 
       instead.
 
-      Serf can be obtained via your system's package distribution
+      Apache Serf can be obtained via your system's package distribution
       system or directly from http://code.google.com/p/serf/.
 
-      For more information on serf and Subversion's ra_serf, see the file
-      subversion/libsvn_ra_serf/README.
+      For more information on Apache Serf and Subversion's ra_serf, see the
+      file subversion/libsvn_ra_serf/README.
 
       6. OpenSSL  (OPTIONAL)
 
-      ### needs some updates. I think serf automagically handles
+      ### needs some updates. I think Apache Serf automagically handles
       ### finding OpenSSL, but we may need more docco here. and w.r.t
       ### zlib.
 
-      The Serf library has support for SSL encryption by relying on the
+      The Apache Serf library has support for SSL encryption by relying on the
       OpenSSL library.
 
-        a. Using OpenSSL on the client through Serf
+        a. Using OpenSSL on the client through Apache Serf
 
-          On Unix systems, to build Serf with OpenSSL, you need OpenSSL
+          On Unix systems, to build Apache Serf with OpenSSL, you need OpenSSL
           installed on your system, and you must add "--with-ssl" as a
           "./configure" parameter.  If your OpenSSL installation is hard
-          for Serf to find, you may need to use "--with-libs=/path/to/lib"
-          in addition.  In particular, on Red Hat (but not Fedora Core) it
-          is necessary to specify "--with-libs=/usr/kerberos" for OpenSSL
-          to be found.  You can also specify a path to the zlib library
-          using "--with-libs".
+          for Apache Serf to find, you may need to use
+          "--with-libs=/path/to/lib" in addition.  In particular, on Red Hat
+          (but not Fedora Core) it is necessary to specify
+          "--with-libs=/usr/kerberos" for OpenSSL to be found.  You can also
+          specify a path to the zlib library using "--with-libs".
 
           Under Windows, you can specify the paths to these libraries by
           passing the options --with-zlib and --with-openssl to gen-make.py.
@@ -822,8 +822,8 @@ II.   INSTALLATION
 
   E.2 Notes
 
-      The Serf library supports secure connections with OpenSSL and
-      on-the-wire compression with zlib. If you want to use the
+      The Apache Serf library supports secure connections with OpenSSL
+      and on-the-wire compression with zlib. If you want to use the
       secure connections feature, you should pass the option
       "--with-openssl" to the gen-make.py script. See Section I.C.6 for
       more details.
@@ -872,7 +872,7 @@ II.   INSTALLATION
         want to build and/or test the server modules.
       * [Optional] If you checked out Subversion from the repository and want
         to build Subversion with http/https access support then install the
-        serf sources into SVN\src-trunk\serf.
+        Apache Serf sources into SVN\src-trunk\serf.
       * [Optional] If you want BDB backend support, extract the Berkeley DB
         files into SVN\src-trunk\db4-win32. It's a good idea to add
         SVN\src-trunk\db4-win32\bin to your PATH, so that Subversion can find
@@ -902,9 +902,8 @@ II.   INSTALLATION
             SVN\apr-util, and SVN\apr-iconv respectively.
       * Extract the ZLib sources into SVN\zlib if you are not using the zlib
         included in the dependencies zip file.
-      * [Optional] If you want secure connection (https) client support, or if
-        you are building with enabled support for serf extract openssl into
-        SVN\openssl-x.x.x
+      * [Optional] If you want secure connection (https) client support extract
+        openssl into SVN\openssl-x.x.x
       * [Optional] If you want localized message support, extract
         svn-win32-libintl.zip into SVN\svn-win32-libintl and extract
         gettext-x.x.x-bin.zip and gettext-x.x.x-dep.zip into
@@ -998,11 +997,11 @@ II.   INSTALLATION
       Note that you'd make sure to define ZLIB_WINAPI in the ZLib config
       header and move the lib-file into the zlib root-directory.
 
-      Serf
+      Apache Serf
 
-      ### Section about serf might be required/useful to add.
-      ### scons is required too and serf needs to be configured prior to be
-      ### able to build Subversion using:
+      ### Section about Apache Serf might be required/useful to add.
+      ### scons is required too and Apache Serf needs to be configured prior to
+      ### be able to build Subversion using:
       ### scons APR=[PATH_TO_APR] APU=[PATH_TO_APU] OPENSSL=[PATH_TO_OPENSSL]
       ### ZLIB=[PATH_TO_ZLIB] PREFIX=[PATH_TO_SERF_DEST]
       ### scons check

Propchange: subversion/branches/move-tracking-2/INSTALL
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug 24 08:23:06 2015
@@ -87,4 +87,4 @@
 /subversion/branches/verify-at-commit/INSTALL:1462039-1462408
 /subversion/branches/verify-keep-going/INSTALL:1439280-1546110
 /subversion/branches/wc-collate-path/INSTALL:1402685-1480384
-/subversion/trunk/INSTALL:1606692-1695728
+/subversion/trunk/INSTALL:1606692-1697326

Propchange: subversion/branches/move-tracking-2/build/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug 24 08:23:06 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/build:1462039-1462408
 /subversion/branches/verify-keep-going/build:1439280-1546110
 /subversion/branches/wc-collate-path/build:1402685-1480384
-/subversion/trunk/build:1606692-1695728
+/subversion/trunk/build:1606692-1697326

Modified: subversion/branches/move-tracking-2/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build.conf?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build.conf (original)
+++ subversion/branches/move-tracking-2/build.conf Mon Aug 24 08:23:06 2015
@@ -292,7 +292,8 @@ path = subversion/libsvn_fs_base
 sources = *.c bdb/*.c util/*.c
 install = bdb-lib
 libs = libsvn_delta libsvn_subr aprutil apriconv apr bdb libsvn_fs_util
-msvc-static = yes
+msvc-export = ../libsvn_fs_base/fs_init.h
+msvc-delayload = yes
 
 [libsvn_fs_fs]
 description = Subversion FSFS Repository Filesystem Library
@@ -300,7 +301,8 @@ type = fs-module
 path = subversion/libsvn_fs_fs
 install = fsmod-lib
 libs = libsvn_delta libsvn_subr aprutil apriconv apr libsvn_fs_util
-msvc-static = yes
+msvc-export = private/svn_fs_fs_private.h ../libsvn_fs_fs/fs_init.h
+msvc-delayload = yes
 
 [libsvn_fs_x]
 description = Subversion FSX Repository Filesystem Library
@@ -308,7 +310,8 @@ type = fs-module
 path = subversion/libsvn_fs_x
 install = fsmod-lib
 libs = libsvn_delta libsvn_subr aprutil apriconv apr libsvn_fs_util
-msvc-static = yes
+msvc-export = ../libsvn_fs_x/fs_init.h
+msvc-delayload = yes
 
 # Low-level grab bag of utilities
 [libsvn_fs_util]
@@ -318,7 +321,7 @@ install = fsmod-lib
 path = subversion/libsvn_fs_util
 libs = libsvn_subr aprutil apriconv apr
 msvc-libs = advapi32.lib shfolder.lib
-msvc-static = yes
+msvc-export = private/svn_fs_util.h
 
 # General API for accessing repositories
 [libsvn_ra]
@@ -331,6 +334,7 @@ add-deps = $(SVN_RA_LIB_DEPS)
 add-install-deps = $(SVN_RA_LIB_INSTALL_DEPS)
 install = lib
 msvc-export = svn_ra.h private\svn_ra_private.h
+msvc-delayload = yes
 
 # Accessing repositories via DAV through serf
 [libsvn_ra_serf]
@@ -797,6 +801,7 @@ sources = fs-base-test.c
 install = bdb-test
 libs = libsvn_test libsvn_fs libsvn_fs_base libsvn_delta
        libsvn_fs_util libsvn_subr apriconv apr
+msvc-force-static = yes
 
 [strings-reps-test]
 description = Test strings/reps in libsvn_fs_base
@@ -806,6 +811,7 @@ sources = strings-reps-test.c
 install = bdb-test
 libs = libsvn_test libsvn_fs libsvn_fs_base libsvn_delta
        libsvn_subr apriconv apr
+msvc-force-static = yes
 
 [changes-test]
 description = Test changes in libsvn_fs_base
@@ -815,6 +821,7 @@ sources = changes-test.c
 install = bdb-test
 libs = libsvn_test libsvn_fs libsvn_fs_base libsvn_delta
        libsvn_subr apriconv apr
+msvc-force-static = yes
 
 # ----------------------------------------------------------------------------
 # Tests for libsvn_fs_fs
@@ -826,6 +833,7 @@ sources = fs-fs-pack-test.c
 install = test
 libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta
        libsvn_subr apriconv apr
+msvc-force-static = yes
 
 [fs-fs-fuzzy-test]
 description = Use fuzzying to test FSFS corruption resilience
@@ -835,6 +843,7 @@ sources = fs-fs-fuzzy-test.c
 install = sub-test
 libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta
        libsvn_repos libsvn_subr apriconv apr
+msvc-force-static = yes
 
 [fs-fs-private-test]
 description = Test FSSF private API
@@ -844,6 +853,7 @@ sources = fs-fs-private-test.c
 install = test
 libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta
        libsvn_repos libsvn_subr apriconv apr
+msvc-force-static = yes
 
 # ----------------------------------------------------------------------------
 # Tests for libsvn_fs_x
@@ -855,6 +865,7 @@ sources = fs-x-pack-test.c
 install = test
 libs = libsvn_test libsvn_fs libsvn_fs_x libsvn_delta
        libsvn_subr apriconv apr
+msvc-force-static = yes
 
 [string-table-test]
 description = Test fsfs string tables
@@ -863,6 +874,7 @@ path = subversion/tests/libsvn_fs_x
 sources = string-table-test.c
 install = test
 libs = libsvn_test libsvn_fs_x libsvn_subr apr
+msvc-force-static = yes
 
 # ----------------------------------------------------------------------------
 # Tests for libsvn_fs
@@ -1542,6 +1554,7 @@ path = build/win32
 libs = __ALL_TESTS__
        diff diff3 diff4 fsfs-access-map svnauth 
        svn-populate-node-origins-index x509-parser svn-wc-db-tester
+       svn-mergeinfo-normalizer
 
 [__LIBS__]
 type = project
@@ -1656,6 +1669,13 @@ path = tools/dev/svnraisetreeconflict
 libs = libsvn_wc libsvn_subr apriconv apr
 install = tools
 
+[svn-mergeinfo-normalizer]
+type = exe
+path = tools/client-side/svn-mergeinfo-normalizer
+install = tools
+libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr
+       apriconv apr
+
 [x509-parser]
 description = Tool to verify x509 certificates
 type = exe

Propchange: subversion/branches/move-tracking-2/build.conf
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug 24 08:23:06 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/build.conf:1462039-1462408
 /subversion/branches/verify-keep-going/build.conf:1439280-1546110
 /subversion/branches/wc-collate-path/build.conf:1402685-1480384
-/subversion/trunk/build.conf:1606692-1685232
+/subversion/trunk/build.conf:1606692-1697326

Modified: subversion/branches/move-tracking-2/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build/generator/gen_base.py?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build/generator/gen_base.py (original)
+++ subversion/branches/move-tracking-2/build/generator/gen_base.py Mon Aug 24 08:23:06 2015
@@ -590,6 +590,7 @@ class TargetLinked(Target):
     self.external_lib = options.get('external-lib')
     self.external_project = options.get('external-project')
     self.msvc_libs = options.get('msvc-libs', '').split()
+    self.msvc_delayload_targets = []
 
   def add_dependencies(self):
     if self.external_lib or self.external_project:
@@ -690,6 +691,7 @@ class TargetLib(TargetLinked):
     self.link_cmd = options.get('link-cmd', '$(LINK_LIB)')
 
     self.msvc_static = options.get('msvc-static') == 'yes' # is a static lib
+    self.msvc_delayload = options.get('msvc-delayload') == 'yes' # Delay dll load
     self.msvc_fake = options.get('msvc-fake') == 'yes' # has fake target
     self.msvc_export = options.get('msvc-export', '').split()
 

Modified: subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py (original)
+++ subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py Mon Aug 24 08:23:06 2015
@@ -209,14 +209,22 @@ class Generator(gen_win.WinGeneratorBase
 
       deplist = [ ]
       for i in range(len(depends)):
-        if depends[i].fname.startswith(self.projfilesdir):
-          path = depends[i].fname[len(self.projfilesdir) + 1:]
+        dp = depends[i]
+        if dp.fname.startswith(self.projfilesdir):
+          path = dp.fname[len(self.projfilesdir) + 1:]
         else:
           path = os.path.join(os.path.relpath('.', self.projfilesdir),
-                              depends[i].fname)
+                              dp.fname)
+
+        if isinstance(dp, gen_base.TargetLib) and dp.msvc_delayload \
+           and isinstance(target, gen_base.TargetLinked):
+          delayload = self.get_output_name(dp)
+        else:
+          delayload = None
         deplist.append(gen_win.ProjectItem(guid=guids[depends[i].name],
                                            index=i,
                                            path=path,
+                                           delayload=delayload
                                            ))
 
       fname = self.get_external_project(target, self.vcproj_extension[1:])

Modified: subversion/branches/move-tracking-2/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build/generator/gen_win.py?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build/generator/gen_win.py (original)
+++ subversion/branches/move-tracking-2/build/generator/gen_win.py Mon Aug 24 08:23:06 2015
@@ -271,6 +271,7 @@ class WinGeneratorBase(gen_win_dependenc
                                   'msvc-name' : dep.name + "_dll" },
                                 self)
     target.msvc_export = dep.msvc_export
+    target.msvc_delayload = dep.msvc_delayload
 
     # move the description from the static library target to the dll.
     target.desc = dep.desc
@@ -279,6 +280,7 @@ class WinGeneratorBase(gen_win_dependenc
     # The dependency should now be static.
     dep.msvc_export = None
     dep.msvc_static = True
+    dep.msvc_delayload = False
 
     # Remove the 'lib' prefix, so that the static library will be called
     # svn_foo.lib

Modified: subversion/branches/move-tracking-2/build/generator/templates/vcnet_vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build/generator/templates/vcnet_vcxproj.ezt?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build/generator/templates/vcnet_vcxproj.ezt (original)
+++ subversion/branches/move-tracking-2/build/generator/templates/vcnet_vcxproj.ezt Mon Aug 24 08:23:06 2015
@@ -75,6 +75,7 @@
       <AdditionalDependencies>[for configs.libs][configs.libs];[end]%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>[for configs.libdirs][configs.libdirs];[end]%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
+      <DelayLoadDLLs>[for depends][if-any depends.delayload][depends.delayload];[end][end]</DelayLoadDLLs>
       <SubSystem>Console</SubSystem>
       <EnableUAC>true</EnableUAC>
       <OptimizeReferences>true</OptimizeReferences>
@@ -85,6 +86,7 @@
       <AdditionalDependencies>[for configs.libs][configs.libs];[end]%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>[for configs.libdirs][configs.libdirs];[end]%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
+      <DelayLoadDLLs>[for depends][if-any depends.delayload][depends.delayload];[end][end]</DelayLoadDLLs>
       <IgnoreSpecificDefaultLibraries>[is configs.name "Debug"]msvcrt.lib[end][is configs.name "Release"]msvcrtd.lib[end]</IgnoreSpecificDefaultLibraries>
 [if-any def_file]      <ModuleDefinitionFile>[def_file]</ModuleDefinitionFile>
 [end]    </Link>

Propchange: subversion/branches/move-tracking-2/notes/
            ('svn:mergeinfo' removed)

Modified: subversion/branches/move-tracking-2/notes/svnsync.txt
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/notes/svnsync.txt?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/notes/svnsync.txt (original)
+++ subversion/branches/move-tracking-2/notes/svnsync.txt Mon Aug 24 08:23:06 2015
@@ -27,14 +27,17 @@ exit 1
 EOF
 $ chmod +x dest/hooks/pre-revprop-change
 
-$ svnsync init --username svnsync file://`pwd`/dest \
-                                  http://svn.example.org/source/repos
+$ svnsync init --sync-username svnsync file://`pwd`/dest \
+               --source-username user  http://svn.example.org/source/repos
 Copied properties for revision 0
 $
 
 Note that the arguments to 'svnsync init' are two arbitrary repository
 URLs.  The first is the destination, which must be empty, and the second
-is the source.
+is the source.  Credentials for the source repository can be provided
+using --source-username/--source-password and for the destination using
+--sync-username/--sync-password.  These credentials are cached in the
+same way other credentials are cached.
 
 Now you can just run the 'svnsync sync' command to synchronize pending
 revisions.  This will copy any revisions that exist in the source repos

Propchange: subversion/branches/move-tracking-2/subversion/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug 24 08:23:06 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/subversion:1462039-1462408
 /subversion/branches/verify-keep-going/subversion:1439280-1546110
 /subversion/branches/wc-collate-path/subversion:1402685-1480384
-/subversion/trunk/subversion:1606692-1695728
+/subversion/trunk/subversion:1606692-1697326

Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_subr_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_subr_private.h?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/private/svn_subr_private.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/private/svn_subr_private.h Mon Aug 24 08:23:06 2015
@@ -689,6 +689,19 @@ svn_dso__pool(void);
 
 /** @} */
 
+
+/* Return the xml (expat) version we compiled against. */
+const char *svn_xml__compiled_version(void);
+
+/* Return the xml (expat) version we run against. */
+const char *svn_xml__runtime_version(void);
+
+/* Return the zlib version we compiled against. */
+const char *svn_zlib__compiled_version(void);
+
+/* Return the zlib version we run against. */
+const char *svn_zlib__runtime_version(void);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/move-tracking-2/subversion/libsvn_client/ra.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_client/ra.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_client/ra.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_client/ra.c Mon Aug 24 08:23:06 2015
@@ -727,7 +727,7 @@ repos_locations(const char **start_url,
   /* We'd better have all the paths we were looking for! */
   if (start_url)
     {
-      start_path = apr_hash_get(rev_locs, &start_revnum, sizeof(svn_revnum_t));
+      start_path = apr_hash_get(rev_locs, &start_revnum, sizeof(start_revnum));
       if (! start_path)
         return svn_error_createf
           (SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL,
@@ -739,7 +739,7 @@ repos_locations(const char **start_url,
 
   if (end_url)
     {
-      end_path = apr_hash_get(rev_locs, &end_revnum, sizeof(svn_revnum_t));
+      end_path = apr_hash_get(rev_locs, &end_revnum, sizeof(end_revnum));
       if (! end_path)
         return svn_error_createf
           (SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c Mon Aug 24 08:23:06 2015
@@ -1773,8 +1773,7 @@ svn_fs_lock_target_create(const char *to
                           svn_revnum_t current_rev,
                           apr_pool_t *result_pool)
 {
-  svn_fs_lock_target_t *target = apr_palloc(result_pool,
-                                            sizeof(svn_fs_lock_target_t));
+  svn_fs_lock_target_t *target = apr_palloc(result_pool, sizeof(*target));
 
   target->token = token;
   target->current_rev = current_rev;

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h Mon Aug 24 08:23:06 2015
@@ -22,8 +22,8 @@
  */
 
 
-#ifndef LIBSVN_FS_FS_H
-#define LIBSVN_FS_FS_H
+#ifndef LIBSVN_FS_LOADER_H
+#define LIBSVN_FS_LOADER_H
 
 #include "svn_types.h"
 #include "svn_fs.h"
@@ -184,15 +184,9 @@ typedef svn_error_t *(*fs_init_func_t)(c
    to the create and open functions and these init functions (as well
    as the open and create functions) are globally serialized so that
    they have exclusive access to the common_pool. */
-svn_error_t *svn_fs_base__init(const svn_version_t *loader_version,
-                               fs_library_vtable_t **vtable,
-                               apr_pool_t* common_pool);
-svn_error_t *svn_fs_fs__init(const svn_version_t *loader_version,
-                             fs_library_vtable_t **vtable,
-                             apr_pool_t* common_pool);
-svn_error_t *svn_fs_x__init(const svn_version_t *loader_version,
-                            fs_library_vtable_t **vtable,
-                            apr_pool_t* common_pool);
+#include "../libsvn_fs_base/fs_init.h"
+#include "../libsvn_fs_fs/fs_init.h"
+#include "../libsvn_fs_x/fs_init.h"
 
 
 
@@ -569,4 +563,4 @@ struct svn_fs_lock_target_t
 }
 #endif /* __cplusplus */
 
-#endif
+#endif /* LIBSVN_FS_LOADER_H */

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/cached_data.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/cached_data.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/cached_data.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/cached_data.c Mon Aug 24 08:23:06 2015
@@ -57,7 +57,7 @@ block_read(void **result,
            apr_pool_t *scratch_pool);
 
 
-/* Defined this to enable access logging via dgb__log_access
+/* Define this to enable access logging via dbg_log_access
 #define SVN_FS_FS__LOG_ACCESS
  */
 
@@ -91,7 +91,7 @@ dbg_log_access(svn_fs_t *fs,
   svn_fs_fs__revision_file_t *rev_file;
 
   SVN_ERR(svn_fs_fs__open_pack_or_rev_file(&rev_file, fs, revision,
-                                           scratch_pool));
+                                           scratch_pool, scratch_pool));
 
   /* determine rev / pack file offset */
   SVN_ERR(svn_fs_fs__item_offset(&offset, fs, rev_file, revision, NULL,
@@ -158,7 +158,8 @@ dbg_log_access(svn_fs_t *fs,
     {
       /* reverse index lookup: get item description in ENTRY */
       SVN_ERR(svn_fs_fs__p2l_entry_lookup(&entry, fs, rev_file, revision,
-                                          offset, scratch_pool));
+                                          offset, scratch_pool,
+                                          scratch_pool));
       if (entry)
         {
           /* more details */
@@ -183,6 +184,10 @@ dbg_log_access(svn_fs_t *fs,
              description);
     }
 
+  /* We don't know when SCRATCH_POOL will be cleared, so close the rev file
+     explicitly. */
+  SVN_ERR(svn_fs_fs__close_revision_file(rev_file));
+
 #endif
 
   return SVN_NO_ERROR;
@@ -2862,7 +2867,7 @@ svn_fs_fs__get_changes(apr_array_header_
                        svn_revnum_t rev,
                        apr_pool_t *result_pool)
 {
-  apr_off_t changes_offset = SVN_FS_FS__ITEM_INDEX_CHANGES;
+  apr_off_t item_index = SVN_FS_FS__ITEM_INDEX_CHANGES;
   svn_fs_fs__revision_file_t *revision_file;
   svn_boolean_t found;
   fs_fs_data_t *ffd = fs->fsap_data;
@@ -2897,17 +2902,26 @@ svn_fs_fs__get_changes(apr_array_header_
         }
       else
         {
+          apr_off_t changes_offset;
+
           /* Addressing is very different for old formats
            * (needs to read the revision trailer). */
           if (svn_fs_fs__use_log_addressing(fs))
-            SVN_ERR(svn_fs_fs__item_offset(&changes_offset, fs,
-                                           revision_file, rev, NULL,
-                                           SVN_FS_FS__ITEM_INDEX_CHANGES,
-                                           scratch_pool));
+            {
+              SVN_ERR(svn_fs_fs__item_offset(&changes_offset, fs,
+                                             revision_file, rev, NULL,
+                                             SVN_FS_FS__ITEM_INDEX_CHANGES,
+                                             scratch_pool));
+            }
           else
-            SVN_ERR(get_root_changes_offset(NULL, &changes_offset,
-                                            revision_file, fs, rev,
-                                            scratch_pool));
+            {
+              SVN_ERR(get_root_changes_offset(NULL, &changes_offset,
+                                              revision_file, fs, rev,
+                                              scratch_pool));
+
+              /* This variable will be used for debug logging only. */
+              item_index = changes_offset;
+            }
 
           /* Actual reading and parsing are the same, though. */
           SVN_ERR(aligned_seek(fs, revision_file->file, NULL, changes_offset,
@@ -2935,7 +2949,7 @@ svn_fs_fs__get_changes(apr_array_header_
       SVN_ERR(svn_fs_fs__close_revision_file(revision_file));
     }
 
-  SVN_ERR(dbg_log_access(fs, rev, changes_offset, *changes,
+  SVN_ERR(dbg_log_access(fs, rev, item_index, *changes,
                          SVN_FS_FS__ITEM_TYPE_CHANGES, scratch_pool));
 
   svn_pool_destroy(scratch_pool);

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c Mon Aug 24 08:23:06 2015
@@ -610,7 +610,9 @@ svn_fs_fs__id_serialize(svn_temp_seriali
   if (id == NULL)
     return;
 
-  /* serialize the id data struct itself */
+  /* Serialize the id data struct itself.
+   * Note that the structure behind IN is actually larger than a mere
+   * svn_fs_id_t . */
   svn_temp_serializer__add_leaf(context,
                                 (const void * const *)in,
                                 sizeof(fs_fs__id_t));

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/temp_serializer.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/temp_serializer.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/temp_serializer.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/temp_serializer.c Mon Aug 24 08:23:06 2015
@@ -103,9 +103,7 @@ serialize_svn_string(svn_temp_serializer
   if (string == NULL)
     return;
 
-  svn_temp_serializer__push(context,
-                            (const void * const *)s,
-                            sizeof(*string));
+  svn_temp_serializer__push(context, (const void * const *)s, sizeof(**s));
 
   /* the "string" content may actually be arbitrary binary data.
    * Thus, we cannot use svn_temp_serializer__add_string. */
@@ -143,7 +141,7 @@ serialize_representation(svn_temp_serial
   /* serialize the representation struct itself */
   svn_temp_serializer__add_leaf(context,
                                 (const void * const *)representation,
-                                sizeof(*rep));
+                                sizeof(**representation));
 }
 
 /* auxiliary structure representing the content of a directory array */
@@ -191,7 +189,7 @@ serialize_dir_entry(svn_temp_serializer_
 
   svn_temp_serializer__push(context,
                             (const void * const *)entry_p,
-                            sizeof(svn_fs_dirent_t));
+                            sizeof(**entry_p));
 
   svn_fs_fs__id_serialize(context, &entry->id);
   svn_temp_serializer__add_string(context, &entry->name);
@@ -216,8 +214,9 @@ serialize_dir(svn_fs_fs__dir_data_t *dir
   /* calculate sizes */
   int count = entries->nelts;
   apr_size_t over_provision = 2 + count / 4;
-  apr_size_t entries_len = (count + over_provision) * sizeof(svn_fs_dirent_t*);
-  apr_size_t lengths_len = (count + over_provision) * sizeof(apr_uint32_t);
+  apr_size_t total_count = count + over_provision;
+  apr_size_t entries_len = total_count * sizeof(*dir_data.entries);
+  apr_size_t lengths_len = total_count * sizeof(*dir_data.lengths);
 
   /* copy the hash entries to an auxiliary struct of known layout */
   dir_data.count = count;
@@ -416,7 +415,7 @@ serialize_txdelta_ops(svn_temp_serialize
   /* the ops form a contiguous chunk of memory with no further references */
   svn_temp_serializer__add_leaf(context,
                                 (const void * const *)ops,
-                                count * sizeof(svn_txdelta_op_t));
+                                count * sizeof(**ops));
 }
 
 /* Utility function to serialize W in the given serialization CONTEXT.
@@ -428,9 +427,7 @@ serialize_txdeltawindow(svn_temp_seriali
   svn_txdelta_window_t *window = *w;
 
   /* serialize the window struct itself */
-  svn_temp_serializer__push(context,
-                            (const void * const *)w,
-                            sizeof(svn_txdelta_window_t));
+  svn_temp_serializer__push(context, (const void * const *)w, sizeof(**w));
 
   /* serialize its sub-structures */
   serialize_txdelta_ops(context, &window->ops, window->num_ops);
@@ -1088,7 +1085,7 @@ svn_fs_fs__serialize_rep_header(void **d
   svn_fs_fs__rep_header_t *copy = apr_palloc(pool, sizeof(*copy));
   *copy = *(svn_fs_fs__rep_header_t *)in;
 
-  *data_len = sizeof(svn_fs_fs__rep_header_t);
+  *data_len = sizeof(*copy);
   *data = copy;
 
   return SVN_NO_ERROR;

Propchange: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug 24 08:23:06 2015
@@ -18,7 +18,7 @@
 /subversion/branches/fs-rep-sharing/subversion/libsvn_fs_x:869036-873803
 /subversion/branches/fsfs-format7/subversion/libsvn_fs_x:1426304,1430673,1433848,1438408,1438982,1441129,1442051,1442068,1442504,1442910,1443171,1443803,1444690,1444693,1444695,1445040,1445080,1446103,1451129,1453590,1454307,1460579,1461851,1461865,1462837,1462904,1463120,1467362,1467382,1469487,1471208,1477166,1478055,1481447,1489817,1489949,1490673-1490674,1491784,1493042,1498029
 /subversion/branches/fsfs-improvements/subversion/libsvn_fs_fs:1499981-1593795
-/subversion/branches/fsfs-improvements/subversion/libsvn_fs_x:1499981-1517476
+/subversion/branches/fsfs-improvements/subversion/libsvn_fs_x:1499981-1517476,1532583,1536949,1545955,1546837
 /subversion/branches/fsfs-lock-many/subversion/libsvn_fs_x:1571740-1577217
 /subversion/branches/fsfs-pack/subversion/libsvn_fs_x:873717-874575
 /subversion/branches/fsx/subversion/libsvn_fs_x:1507845-1508040
@@ -74,6 +74,7 @@
 /subversion/branches/subtree-mergeinfo/subversion/libsvn_fs_x:876734-878766
 /subversion/branches/svn-auth-x509/subversion/libsvn_fs_x:1603509-1655900
 /subversion/branches/svn-mergeinfo-enhancements/subversion/libsvn_fs_x:870119-870195,870197-870288
+/subversion/branches/svn-mergeinfo-normalizer/subversion/libsvn_fs_x:1642232-1695991
 /subversion/branches/svn-patch-improvements/subversion/libsvn_fs_x:918519-934609
 /subversion/branches/svn_mutex/subversion/libsvn_fs_x:1141683-1182099
 /subversion/branches/svnpatch-diff/subversion/libsvn_fs_x:865738-876477
@@ -92,4 +93,4 @@
 /subversion/branches/verify-keep-going/subversion/libsvn_fs_x:1439280-1492639,1546002-1546110
 /subversion/branches/wc-collate-path/subversion/libsvn_fs_x:1402685-1480384
 /subversion/trunk/subversion/libsvn_fs_fs:1415133-1596500,1596567,1597414,1597989,1598273,1599140,1600872,1601633,1603485-1603487,1603499,1603605,1604128,1604188,1604413-1604414,1604416-1604417,1604421,1604442,1604700,1604717,1604720,1604726,1604755,1604794,1604802,1604824,1604836,1604844,1604902-1604903,1604911,1604925,1604933,1604947,1605059-1605060,1605064-1605065,1605068,1605071-1605073,1605075,1605123,1605188-1605189,1605191,1605197,1605444,1605633,1606132,1606142,1606144,1606514,1606526,1606528,1606551,1606554,1606564,1606598-1606599,1606656,1606658,1606662,1606744,1606840,1607085,1607572,1612407,1612810,1613339,1613872,1614611,1615348,1615351-1615352,1615356,1616338-1616339,1616613,1617586,1617688,1618138,1618151,1618153,1618226,1618641,1618653,1618662,1619068,1619358,1619413,1619769,1619774,1620602,1620909,1620912,1620928,1620930,1621275,1621635,1622931,1622937,1622942,1622946,1622959-1622960,1622963,1622987,1623007,1623368,1623373,1623377,1623379,1623381,1623398,1623402,162
 4011,1624265,1624512,1626246,1626871,1626873,1626886,1627497-1627498,1627502,1627947-1627949,1627966,1628083,1628093,1628158-1628159,1628161,1628392-1628393,1628415,1628427,1628676,1628738,1628762,1628764,1629854-1629855,1629857,1629865,1629873,1629875,1629879,1630067,1630070,1631049-1631051,1631075,1631115,1631171,1631180,1631185-1631186,1631196-1631197,1631239-1631240,1631548,1631550,1631563,1631567,1631588,1631598,1632646,1632776,1632849,1632851-1632853,1632856-1632857,1632868,1632908,1632926,1633232,1633617-1633618,1634872,1634875,1634879-1634880,1634920,1636478,1636483,1636629,1636644,1637184,1637186,1637330,1637358,1637363,1637393,1639319,1639322,1639335,1639348,1639352,1639355,1639358,1639414,1639419,1639426,1639430,1639436,1639440,1639549,1640061-1640062,1640197,1640915,1640966,1641013,1643139,1643233,1645567,1646021,1646712,1646716,1647537,1647540-1647541,1647820,1647905,1648230,1648238,1648241-1648243,1648253,1648272,1648532,1648537-1648539,1648542,1648591,1648612,1653608,
 1658482
-/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914,1606692-1695728
+/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914,1606692-1697326

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_id.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_id.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_id.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_id.c Mon Aug 24 08:23:06 2015
@@ -85,6 +85,13 @@ struct svn_fs_x__id_context_t
      is not.*/
   const char *fs_path;
 
+  /* If FS is NULL, this points to svn_fs_open() as passed to the library. */
+  svn_error_t *(*svn_fs_open_)(svn_fs_t **,
+      const char *,
+      apr_hash_t *,
+      apr_pool_t *,
+      apr_pool_t *);
+
   /* Pool that this context struct got allocated in. */
   apr_pool_t *owner;
 
@@ -118,11 +125,14 @@ static apr_status_t
 fs_cleanup(void *baton)
 {
   svn_fs_x__id_context_t *context = baton;
+  svn_fs_x__data_t *ffd = context->fs->fsap_data;
 
   /* Remember the FS_PATH to potentially reopen and mark the FS as n/a. */
   context->fs_path = apr_pstrdup(context->owner, context->fs->path);
+  context->svn_fs_open_ = ffd->svn_fs_open_;
   context->fs = NULL;
 
+
   /* No need for further notifications because from now on, everything is
      allocated in OWNER. */
   apr_pool_cleanup_kill(context->owner, context, owner_cleanup);
@@ -137,8 +147,12 @@ get_fs(svn_fs_x__id_context_t *context)
 {
   if (!context->fs)
     {
-      svn_error_t *err = svn_fs_open2(&context->fs, context->fs_path, NULL,
-                                      context->owner, context->owner);
+      svn_error_t *err;
+
+      SVN_ERR_ASSERT_NO_RETURN(context->svn_fs_open_);
+
+      err = context->svn_fs_open_(&context->fs, context->fs_path, NULL,
+                                  context->owner, context->owner);
       if (err)
         {
           svn_error_clear(err);

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/temp_serializer.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_x/temp_serializer.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_x/temp_serializer.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_x/temp_serializer.c Mon Aug 24 08:23:06 2015
@@ -224,7 +224,7 @@ serialize_dir_entry(svn_temp_serializer_
 
   svn_temp_serializer__push(context,
                             (const void * const *)entry_p,
-                            sizeof(svn_fs_x__dirent_t));
+                            sizeof(**entry_p));
 
   svn_temp_serializer__add_string(context, &entry->name);
 
@@ -1108,7 +1108,7 @@ svn_fs_x__serialize_changes(void **data,
 
   svn_temp_serializer__push(context,
                             (const void * const *)&changes.changes,
-                            changes.count * sizeof(svn_fs_x__change_t*));
+                            changes.count * sizeof(**changes.changes));
 
   for (i = 0; i < changes.count; ++i)
     serialize_change(context, &changes.changes[i]);

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c Mon Aug 24 08:23:06 2015
@@ -65,7 +65,9 @@ ssl_convert_serf_failures(int failures)
   apr_uint32_t svn_failures = 0;
   apr_size_t i;
 
-  for (i = 0; i < sizeof(serf_failure_map) / (2 * sizeof(apr_uint32_t)); ++i)
+  for (i = 0;
+       i < sizeof(serf_failure_map) / (sizeof(serf_failure_map[0]));
+       ++i)
     {
       if (failures & serf_failure_map[i][0])
         {

Modified: subversion/branches/move-tracking-2/subversion/libsvn_repos/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_repos/log.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_repos/log.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_repos/log.c Mon Aug 24 08:23:06 2015
@@ -1907,8 +1907,7 @@ store_search(svn_mergeinfo_t processed,
       const char *path = APR_ARRAY_IDX(paths, i, const char *);
       svn_rangelist_t *ranges = apr_array_make(processed_pool, 1,
                                                sizeof(svn_merge_range_t*));
-      svn_merge_range_t *range = apr_palloc(processed_pool,
-                                            sizeof(svn_merge_range_t));
+      svn_merge_range_t *range = apr_palloc(processed_pool, sizeof(*range));
 
       range->start = start;
       range->end = end;
@@ -2176,7 +2175,7 @@ do_logs(svn_fs_t *fs,
           if (rev_mergeinfo)
             {
               struct added_deleted_mergeinfo *add_and_del_mergeinfo =
-                apr_hash_get(rev_mergeinfo, &current, sizeof(svn_revnum_t));
+                apr_hash_get(rev_mergeinfo, &current, sizeof(current));
               added_mergeinfo = add_and_del_mergeinfo->added_mergeinfo;
               deleted_mergeinfo = add_and_del_mergeinfo->deleted_mergeinfo;
               has_children = (apr_hash_count(added_mergeinfo) > 0

Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/compress.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/compress.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/compress.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/compress.c Mon Aug 24 08:23:06 2015
@@ -31,6 +31,21 @@
 
 #include "svn_private_config.h"
 
+const char *
+svn_zlib__compiled_version(void)
+{
+  static const char zlib_version_str[] = ZLIB_VERSION;
+
+  return zlib_version_str;
+}
+
+const char *
+svn_zlib__runtime_version(void)
+{
+  return zlibVersion();
+}
+
+
 /* The zlib compressBound function was not exported until 1.2.0. */
 #if ZLIB_VERNUM >= 0x1200
 #define svnCompressBound(LEN) compressBound(LEN)

Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c Mon Aug 24 08:23:06 2015
@@ -942,8 +942,9 @@ static svn_error_t *
 data_available_handler_apr(void *baton, svn_boolean_t *data_available)
 {
   struct baton_apr *btn = baton;
-  apr_pollfd_t pfd;
   apr_status_t status;
+#if !defined(WIN32) || APR_FILES_AS_SOCKETS
+  apr_pollfd_t pfd;
   int n;
 
   pfd.desc_type = APR_POLL_FILE;
@@ -973,6 +974,24 @@ data_available_handler_apr(void *baton,
                                     "failed")),
                               NULL);
     }
+#else
+  HANDLE h;
+  DWORD dwAvail;
+  status = apr_os_file_get(&h, btn->file);
+
+  if (status)
+    return svn_error_wrap_apr(status, NULL);
+
+  if (PeekNamedPipe(h, NULL, 0, NULL, &dwAvail, NULL))
+    {
+      *data_available = (dwAvail > 0);
+      return SVN_NO_ERROR;
+    }
+
+  return svn_error_create(SVN_ERR_STREAM_NOT_SUPPORTED,
+                          svn_error_wrap_apr(apr_get_os_error(), NULL),
+                          _("Windows doesn't support polling on files"));
+#endif
 }
 
 static svn_boolean_t

Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/sysinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/sysinfo.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/sysinfo.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/sysinfo.c Mon Aug 24 08:23:06 2015
@@ -45,6 +45,7 @@
 #include "svn_version.h"
 
 #include "private/svn_sqlite.h"
+#include "private/svn_subr_private.h"
 
 #include "sysinfo.h"
 #include "svn_private_config.h"
@@ -125,7 +126,7 @@ const apr_array_header_t *
 svn_sysinfo__linked_libs(apr_pool_t *pool)
 {
   svn_version_ext_linked_lib_t *lib;
-  apr_array_header_t *array = apr_array_make(pool, 3, sizeof(*lib));
+  apr_array_header_t *array = apr_array_make(pool, 5, sizeof(*lib));
 
   lib = &APR_ARRAY_PUSH(array, svn_version_ext_linked_lib_t);
   lib->name = "APR";
@@ -142,6 +143,11 @@ svn_sysinfo__linked_libs(apr_pool_t *poo
 #endif
 
   lib = &APR_ARRAY_PUSH(array, svn_version_ext_linked_lib_t);
+  lib->name = "Expat";
+  lib->compiled_version = apr_pstrdup(pool, svn_xml__compiled_version());
+  lib->runtime_version = apr_pstrdup(pool, svn_xml__runtime_version());
+
+  lib = &APR_ARRAY_PUSH(array, svn_version_ext_linked_lib_t);
   lib->name = "SQLite";
   lib->compiled_version = apr_pstrdup(pool, svn_sqlite__compiled_version());
 #ifdef SVN_SQLITE_INLINE
@@ -150,6 +156,11 @@ svn_sysinfo__linked_libs(apr_pool_t *poo
   lib->runtime_version = apr_pstrdup(pool, svn_sqlite__runtime_version());
 #endif
 
+  lib = &APR_ARRAY_PUSH(array, svn_version_ext_linked_lib_t);
+  lib->name = "ZLib";
+  lib->compiled_version = apr_pstrdup(pool, svn_zlib__compiled_version());
+  lib->runtime_version = apr_pstrdup(pool, svn_zlib__runtime_version());
+
   return array;
 }
 

Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c Mon Aug 24 08:23:06 2015
@@ -691,8 +691,7 @@ x509_get_ext(apr_array_header_t *dnsname
           else
             {
               /* We found a dNSName entry */
-              x509_buf *dnsname = apr_palloc(dnsnames->pool,
-                                             sizeof(x509_buf));
+              x509_buf *dnsname = apr_palloc(dnsnames->pool, sizeof(*dnsname));
               dnsname->tag = ASN1_IA5_STRING; /* implicit based on dNSName */
               dnsname->len = len;
               dnsname->p = *p;

Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/xml.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/xml.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/xml.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/xml.c Mon Aug 24 08:23:06 2015
@@ -45,6 +45,28 @@
 #error Expat is unusable -- it has been compiled for wide characters
 #endif
 
+const char *
+svn_xml__compiled_version(void)
+{
+  static const char xml_version_str[] = APR_STRINGIFY(XML_MAJOR_VERSION)
+                                        "." APR_STRINGIFY(XML_MINOR_VERSION)
+                                        "." APR_STRINGIFY(XML_MICRO_VERSION);
+
+  return xml_version_str;
+}
+
+const char *
+svn_xml__runtime_version(void)
+{
+  const char *expat_version = XML_ExpatVersion();
+
+  if (!strncmp(expat_version, "expat_", 6))
+    expat_version += 6;
+
+  return expat_version;
+}
+
+
 /* The private internals for a parser object. */
 struct svn_xml_parser_t
 {

Modified: subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c Mon Aug 24 08:23:06 2015
@@ -2067,7 +2067,7 @@ parse_querystring(request_rec *r, const
         return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
                                     "Couldn't trace history.", pool);
 
-      newpath = apr_hash_get(locations, &working_rev, sizeof(svn_revnum_t));
+      newpath = apr_hash_get(locations, &working_rev, sizeof(working_rev));
       if (! newpath)
         return dav_svn__new_error(pool, HTTP_NOT_FOUND, 0, 0,
                                   "path doesn't exist in that revision.");

Modified: subversion/branches/move-tracking-2/subversion/svndumpfilter/svndumpfilter.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svndumpfilter/svndumpfilter.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svndumpfilter/svndumpfilter.c (original)
+++ subversion/branches/move-tracking-2/subversion/svndumpfilter/svndumpfilter.c Mon Aug 24 08:23:06 2015
@@ -640,7 +640,7 @@ new_node_record(void **node_baton,
               cf_orig_rev = SVN_STR_TO_REV(val);
               cf_renum_val = apr_hash_get(pb->renumber_history,
                                           &cf_orig_rev,
-                                          sizeof(svn_revnum_t));
+                                          sizeof(cf_orig_rev));
               if (! (cf_renum_val && SVN_IS_VALID_REVNUM(cf_renum_val->rev)))
                 return svn_error_createf
                   (SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
@@ -730,14 +730,14 @@ adjust_mergeinfo(svn_string_t **final_va
                                                        svn_merge_range_t *);
 
               revmap_start = apr_hash_get(pb->renumber_history,
-                                          &range->start, sizeof(svn_revnum_t));
+                                          &range->start, sizeof(range->start));
               if (! (revmap_start && SVN_IS_VALID_REVNUM(revmap_start->rev)))
                 return svn_error_createf
                   (SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
                    _("No valid revision range 'start' in filtered stream"));
 
               revmap_end = apr_hash_get(pb->renumber_history,
-                                        &range->end, sizeof(svn_revnum_t));
+                                        &range->end, sizeof(range->end));
               if (! (revmap_end && SVN_IS_VALID_REVNUM(revmap_end->rev)))
                 return svn_error_createf
                   (SVN_ERR_NODE_UNEXPECTED_KIND, NULL,

Modified: subversion/branches/move-tracking-2/subversion/svnrdump/load_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnrdump/load_editor.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnrdump/load_editor.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnrdump/load_editor.c Mon Aug 24 08:23:06 2015
@@ -167,8 +167,7 @@ set_revision_mapping(apr_hash_t *rev_map
                                          sizeof(svn_revnum_t) * 2);
   mapped_revs[0] = from_rev;
   mapped_revs[1] = to_rev;
-  apr_hash_set(rev_map, mapped_revs,
-               sizeof(svn_revnum_t), mapped_revs + 1);
+  apr_hash_set(rev_map, mapped_revs, sizeof(*mapped_revs), mapped_revs + 1);
 }
 
 /* Return the revision to which FROM_REV maps in REV_MAP, or

Propchange: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/
            ('svn:mergeinfo' removed)

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c Mon Aug 24 08:23:06 2015
@@ -332,15 +332,16 @@ static svn_error_t *
 check_tunnel_callback_test(const svn_test_opts_t *opts,
                            apr_pool_t *pool)
 {
-  tunnel_baton_t b = { TUNNEL_MAGIC };
+  tunnel_baton_t *b = apr_pcalloc(pool, sizeof(*b));
   svn_ra_callbacks2_t *cbtable;
   svn_ra_session_t *session;
-  svn_error_t *err;
+
+  b->magic = TUNNEL_MAGIC;
 
   SVN_ERR(svn_ra_create_callbacks(&cbtable, pool));
   cbtable->check_tunnel_func = check_tunnel;
   cbtable->open_tunnel_func = open_tunnel;
-  cbtable->tunnel_baton = &b;
+  cbtable->tunnel_baton = b;
   SVN_ERR(svn_cmdline_create_auth_baton2(&cbtable->auth_baton,
                                          TRUE  /* non_interactive */,
                                          "jrandom", "rayjandom",
@@ -350,12 +351,12 @@ check_tunnel_callback_test(const svn_tes
                                          FALSE, FALSE, FALSE, FALSE,
                                          NULL, NULL, NULL, pool));
 
-  b.last_check = TRUE;
-  err = svn_ra_open4(&session, NULL, "svn+foo://localhost/no-repo",
-                     NULL, cbtable, NULL, NULL, pool);
-  svn_error_clear(err);
-  SVN_TEST_ASSERT(err);
-  SVN_TEST_ASSERT(!b.last_check);
+  b->last_check = TRUE;
+  SVN_TEST_ASSERT_ERROR(svn_ra_open4(&session, NULL,
+                                     "svn+foo://localhost/no-repo",
+                                     NULL, cbtable, NULL, NULL, pool),
+                        SVN_ERR_RA_CANNOT_CREATE_SESSION);
+  SVN_TEST_ASSERT(!b->last_check);
   return SVN_NO_ERROR;
 }
 
@@ -363,14 +364,15 @@ static svn_error_t *
 tunnel_callback_test(const svn_test_opts_t *opts,
                      apr_pool_t *pool)
 {
-  tunnel_baton_t b = { TUNNEL_MAGIC };
+  tunnel_baton_t *b = apr_pcalloc(pool, sizeof(*b));
   apr_pool_t *scratch_pool = svn_pool_create(pool);
   const char *url;
   svn_ra_callbacks2_t *cbtable;
   svn_ra_session_t *session;
-  svn_error_t *err;
   const char tunnel_repos_name[] = "test-repo-tunnel";
 
+  b->magic = TUNNEL_MAGIC;
+
   SVN_ERR(svn_test__create_repos(NULL, tunnel_repos_name, opts, scratch_pool));
 
   /* Immediately close the repository to avoid race condition with svnserve
@@ -382,7 +384,7 @@ tunnel_callback_test(const svn_test_opts
   SVN_ERR(svn_ra_create_callbacks(&cbtable, pool));
   cbtable->check_tunnel_func = check_tunnel;
   cbtable->open_tunnel_func = open_tunnel;
-  cbtable->tunnel_baton = &b;
+  cbtable->tunnel_baton = b;
   SVN_ERR(svn_cmdline_create_auth_baton2(&cbtable->auth_baton,
                                          TRUE  /* non_interactive */,
                                          "jrandom", "rayjandom",
@@ -392,20 +394,13 @@ tunnel_callback_test(const svn_test_opts
                                          FALSE, FALSE, FALSE, FALSE,
                                          NULL, NULL, NULL, pool));
 
-  b.last_check = FALSE;
-  err = svn_ra_open4(&session, NULL, url, NULL, cbtable, NULL, NULL,
-                     scratch_pool);
-  if (err && err->apr_err == SVN_ERR_TEST_FAILED)
-    {
-      svn_handle_error2(err, stderr, FALSE, "svn_tests: ");
-      svn_error_clear(err);
-      return SVN_NO_ERROR;
-    }
-  SVN_ERR(err);
-  SVN_TEST_ASSERT(b.last_check);
-  SVN_TEST_ASSERT(b.open_count > 0);
+  b->last_check = FALSE;
+  SVN_ERR(svn_ra_open4(&session, NULL, url, NULL, cbtable, NULL, NULL,
+                        scratch_pool));
+  SVN_TEST_ASSERT(b->last_check);
+  SVN_TEST_ASSERT(b->open_count > 0);
   svn_pool_destroy(scratch_pool);
-  SVN_TEST_ASSERT(b.open_count == 0);
+  SVN_TEST_ASSERT(b->open_count == 0);
   return SVN_NO_ERROR;
 }
 
@@ -1517,6 +1512,66 @@ ra_list_has_props(const svn_test_opts_t
   return SVN_NO_ERROR;
 }
 
+/* Test ra_svn tunnel editor handling, including polling. */
+
+static svn_error_t *
+tunnel_run_checkout(const svn_test_opts_t *opts,
+                       apr_pool_t *pool)
+{
+  tunnel_baton_t *b = apr_pcalloc(pool, sizeof(*b));
+  apr_pool_t *scratch_pool = svn_pool_create(pool);
+  const char *url;
+  svn_ra_callbacks2_t *cbtable;
+  svn_ra_session_t *session;
+  const char tunnel_repos_name[] = "test-run_checkout";
+  svn_ra_reporter3_t *reporter;
+  void *report_baton;
+
+  b->magic = TUNNEL_MAGIC;
+
+  SVN_ERR(svn_test__create_repos(NULL, tunnel_repos_name, opts, scratch_pool));
+
+  /* Immediately close the repository to avoid race condition with svnserve
+  (and then the cleanup code) with BDB when our pool is cleared. */
+  svn_pool_clear(scratch_pool);
+
+  url = apr_pstrcat(pool, "svn+test://localhost/", tunnel_repos_name,
+    SVN_VA_NULL);
+  SVN_ERR(svn_ra_create_callbacks(&cbtable, pool));
+  cbtable->check_tunnel_func = check_tunnel;
+  cbtable->open_tunnel_func = open_tunnel;
+  cbtable->tunnel_baton = b;
+  SVN_ERR(svn_cmdline_create_auth_baton2(&cbtable->auth_baton,
+    TRUE  /* non_interactive */,
+    "jrandom", "rayjandom",
+    NULL,
+    TRUE  /* no_auth_cache */,
+    FALSE /* trust_server_cert */,
+    FALSE, FALSE, FALSE, FALSE,
+    NULL, NULL, NULL, pool));
+
+  b->last_check = FALSE;
+
+  SVN_ERR(svn_ra_open4(&session, NULL, url, NULL, cbtable, NULL, NULL,
+                       scratch_pool));
+
+  SVN_ERR(commit_changes(session, pool));
+
+  SVN_ERR(svn_ra_do_update3(session,
+                            &reporter, &report_baton,
+                            1, "",
+                            svn_depth_infinity, FALSE, FALSE,
+                            svn_delta_default_editor(pool), NULL,
+                            pool, pool));
+
+  SVN_ERR(reporter->set_path(report_baton, "", 0, svn_depth_infinity, FALSE,
+                             NULL, pool));
+
+  SVN_ERR(reporter->finish_report(report_baton, pool));
+
+  return SVN_NO_ERROR;
+}
+
 
 /* The test table.  */
 
@@ -1547,6 +1602,8 @@ static struct svn_test_descriptor_t test
                        "check how ra layers handle errors from callbacks"),
     SVN_TEST_OPTS_PASS(ra_list_has_props,
                        "check list has_props performance"),
+    SVN_TEST_OPTS_PASS(tunnel_run_checkout,
+                       "verify checkout over a tunnel"),
     SVN_TEST_NULL
   };
 

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c Mon Aug 24 08:23:06 2015
@@ -750,8 +750,7 @@ check_locations_info(apr_hash_t *locatio
   unsigned int i;
   for (i = 0; info->rev != 0; ++i, ++info)
     {
-      const char *p = apr_hash_get(locations, &info->rev, sizeof
-                                   (svn_revnum_t));
+      const char *p = apr_hash_get(locations, &info->rev, sizeof(info->rev));
       if (!p)
         return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
                                  "Missing path for revision %ld", info->rev);
@@ -2999,7 +2998,7 @@ file_rev_handler(void *baton, const char
 {
   apr_hash_t *ht = baton;
   const char *author;
-  file_revs_t *file_rev = apr_hash_get(ht, &rev, sizeof(svn_revnum_t));
+  file_revs_t *file_rev = apr_hash_get(ht, &rev, sizeof(rev));
 
   if (!file_rev)
     return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
@@ -3017,7 +3016,7 @@ file_rev_handler(void *baton, const char
 
   /* Remove this revision from this list so we'll be able to verify that we
      have seen all expected revisions. */
-  apr_hash_set(ht, &rev, sizeof(svn_revnum_t), NULL);
+  apr_hash_set(ht, &rev, sizeof(rev), NULL);
 
   return SVN_NO_ERROR;
 }
@@ -3055,16 +3054,16 @@ test_get_file_revs(const svn_test_opts_t
 
   for (i = 0; i < sizeof(trunk_results) / sizeof(trunk_results[0]); i++)
     apr_hash_set(ht_trunk_results, &trunk_results[i].rev,
-                 sizeof(svn_revnum_t), &trunk_results[i]);
+                 sizeof(trunk_results[i].rev), &trunk_results[i]);
 
   for (i = 0; i < sizeof(branch_results) / sizeof(branch_results[0]); i++)
     apr_hash_set(ht_branch_results, &branch_results[i].rev,
-                 sizeof(svn_revnum_t), &branch_results[i]);
+                 sizeof(branch_results[i].rev), &branch_results[i]);
 
   for (i = 0; i < sizeof(trunk_results) / sizeof(trunk_results[0]); i++)
     if (!trunk_results[i].result_of_merge)
       apr_hash_set(ht_reverse_results, &trunk_results[i].rev,
-                   sizeof(svn_revnum_t), &trunk_results[i]);
+                   sizeof(trunk_results[i].rev), &trunk_results[i]);
 
   /* Check for feature support */
   if (opts->server_minor_version && (opts->server_minor_version < 5))
@@ -3680,7 +3679,7 @@ verify_locations(apr_hash_t *actual,
   for (hi = apr_hash_first(pool, expected); hi; hi = apr_hash_next(hi))
     {
       const svn_revnum_t *rev = apr_hash_this_key(hi);
-      const char *path = apr_hash_get(actual, rev, sizeof(svn_revnum_t));
+      const char *path = apr_hash_get(actual, rev, sizeof(*rev));
 
       if (!path)
         return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
@@ -3696,7 +3695,7 @@ verify_locations(apr_hash_t *actual,
   for (hi = apr_hash_first(pool, actual); hi; hi = apr_hash_next(hi))
     {
       const svn_revnum_t *rev = apr_hash_this_key(hi);
-      const char *path = apr_hash_get(expected, rev, sizeof(svn_revnum_t));
+      const char *path = apr_hash_get(expected, rev, sizeof(*rev));
 
       if (!path)
         return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
@@ -3723,7 +3722,7 @@ set_expected(apr_hash_t *expected,
 {
   svn_revnum_t *rp = apr_palloc(pool, sizeof(svn_revnum_t));
   *rp = rev;
-  apr_hash_set(expected, rp, sizeof(svn_revnum_t), path);
+  apr_hash_set(expected, rp, sizeof(*rp), path);
 }
 
 static svn_error_t *

Propchange: subversion/branches/move-tracking-2/tools/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug 24 08:23:06 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/tools:1462039-1462408
 /subversion/branches/verify-keep-going/tools:1439280-1546110
 /subversion/branches/wc-collate-path/tools:1402685-1480384
-/subversion/trunk/tools:1606692-1695728
+/subversion/trunk/tools:1606692-1697326

Modified: subversion/branches/move-tracking-2/tools/client-side/bash_completion
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/client-side/bash_completion?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/client-side/bash_completion (original)
+++ subversion/branches/move-tracking-2/tools/client-side/bash_completion Mon Aug 24 08:23:06 2015
@@ -423,6 +423,7 @@ _svn()
 		else
 			# show schemas
 			COMPREPLY=( $(compgen -W "$urlSchemas" -- $cur) )
+			compopt -o nospace
 			return
 		fi
 	fi
@@ -440,10 +441,12 @@ _svn()
 	    elif [[ "$here" == */trunk* ]] ; then
 	      # we guess that it is a merge from a branch
 	      COMPREPLY=( $(compgen -W ${here/\/trunk*/\/branches\/} -- $cur ) )
+	      compopt -o nospace
 	      return 0
 	    else
 	      # no se, let us suggest the repository root...
-	      COMPREPLY=( $(compgen -W $(_svn_info Root) -- $cur ) )
+	      COMPREPLY=( $(compgen -W $(_svn_info Root)/ -- $cur ) )
+	      compopt -o nospace
 	      return 0
 	    fi
 	  elif [[ $URL == */branches/* && $here == */trunk* && \

Modified: subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/log.c?rev=1697327&r1=1696000&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/log.c (original)
+++ subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/log.c Mon Aug 24 08:23:06 2015
@@ -327,7 +327,7 @@ svn_min__log(svn_min__log_t **log,
 
   revprops = apr_array_make(scratch_pool, 0, sizeof(const char *));
 
-  /* The log objec to fill. */
+  /* The log object to fill. */
   result = apr_pcalloc(result_pool, sizeof(*result));
   result->unique_paths = svn_hash__make(scratch_pool);
   result->first_rev = SVN_INVALID_REVNUM;

Modified: subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/logic.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/logic.c?rev=1697327&r1=1696000&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/logic.c (original)
+++ subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/logic.c Mon Aug 24 08:23:06 2015
@@ -214,7 +214,11 @@ show_branch_elision(const char *branch,
                                   scratch_pool));
         }
     }
-  else if (opt_state->verbose)
+  else if (   opt_state->verbose
+           || (opt_state->run_analysis && (   implied_in_parent->nelts
+                                           || subtree_only->nelts
+                                           || implied_in_subtree->nelts
+                                           || parent_only->nelts)))
     {
       SVN_ERR(svn_rangelist_remove(&subtree_only, implied_in_parent,
                                    subtree_only, TRUE, scratch_pool));
@@ -802,26 +806,6 @@ remove_lines(svn_min__log_t *log,
       subtree_ranges = item->value;
       parent_ranges = svn_hash_gets(parent_mergeinfo, parent_path);
 
-      /* Is there any? */
-      if (!parent_ranges)
-        {
-          /* There is none.  Before we flag that as a problem, maybe the
-             branch has been deleted after all?  This time contact the
-             repository. */
-          SVN_ERR(remove_obsolete_line(&state, lookup, log,
-                                       subtree_mergeinfo, subtree_path,
-                                       opt_state, NULL, FALSE, FALSE,
-                                       iterpool));
-
-          /* If still relevant, we need to keep the whole m/i on this node.
-             Therefore, report the problem. */
-          if (state != ds_deleted)
-            SVN_ERR(show_missing_parent(subtree_path, !*parent_path,
-                                        opt_state, scratch_pool));
-
-          continue;
-        }
-
       /* We don't know how to handle reverse ranges (there should be none).
          So, we must check for them - just to be sure. */
       reverse_ranges = find_reverse_ranges(subtree_ranges, iterpool);
@@ -860,25 +844,78 @@ remove_lines(svn_min__log_t *log,
           continue;
         }
 
-      non_recursive_ranges = find_non_recursive_ranges(parent_ranges,
-                                                       iterpool);
-      if (non_recursive_ranges->nelts)
+      if (parent_ranges && parent_ranges->nelts)
         {
-          /* We really found non-recursive merges at the parent?
-             Try to get rid of them at the parent and sub-node alike. */
+          non_recursive_ranges = find_non_recursive_ranges(parent_ranges,
+                                                          iterpool);
+          if (non_recursive_ranges->nelts)
+            {
+              /* We really found non-recursive merges at the parent?
+                Try to get rid of them at the parent and sub-node alike. */
+              SVN_ERR(remove_obsolete_line(&state, lookup, log,
+                                          subtree_mergeinfo, parent_path,
+                                          opt_state, NULL, FALSE, FALSE,
+                                          iterpool));
+              if (state == ds_deleted)
+                SVN_ERR(remove_obsolete_line(&state, lookup, log,
+                                            subtree_mergeinfo, subtree_path,
+                                            opt_state, NULL, FALSE, FALSE,
+                                            iterpool));
+              if (state != ds_deleted)
+                SVN_ERR(show_non_recursive_ranges(parent_path,
+                                                  non_recursive_ranges,
+                                                  opt_state, iterpool));
+
+              continue;
+            }
+        }
+
+      /* Are there any parent ranges to which to elide sub-tree m/i? */
+      if (!parent_ranges)
+        {
+          /* There is none.  Before we flag that as a problem, maybe the
+             branch has been deleted after all?  This time contact the
+             repository. */
           SVN_ERR(remove_obsolete_line(&state, lookup, log,
-                                       subtree_mergeinfo, parent_path,
+                                       subtree_mergeinfo, subtree_path,
                                        opt_state, NULL, FALSE, FALSE,
                                        iterpool));
+
           if (state == ds_deleted)
-            SVN_ERR(remove_obsolete_line(&state, lookup, log,
-                                         subtree_mergeinfo, subtree_path,
-                                         opt_state, NULL, FALSE, FALSE,
-                                         iterpool));
-          if (state != ds_deleted)
-            SVN_ERR(show_non_recursive_ranges(parent_path,
-                                              non_recursive_ranges,
-                                              opt_state, iterpool));
+            continue;
+
+          /* Find revs that are missing in the sub-tree- m/i but affect
+             paths in the sub-tree. */
+          subtree_only = subtree_ranges;
+          operative_in_subtree
+            = svn_min__operative(log, subtree_path, subtree_only, iterpool);
+          SVN_ERR(remove_overlapping_history(&implied_in_subtree,
+                                             &operative_in_subtree, log,
+                                             subtree_path, fs_path,
+                                             iterpool, iterpool));
+
+          if (operative_in_subtree->nelts)
+            {
+              /* If still relevant, we need to keep the whole m/i on this
+                 node.  Therefore, report the problem. */
+              SVN_ERR(show_missing_parent(subtree_path, !*parent_path,
+                                          opt_state, scratch_pool));
+            }
+          else
+            {
+              /* This branch entry is some sort of artefact that doesn't
+                 refer to any actual changes and can therefore be removed.
+                 Report why that is. */
+              apr_array_header_t *empty = operative_in_subtree;
+              SVN_ERR(svn_rangelist_remove(&subtree_only, implied_in_subtree,
+                                           subtree_only, TRUE, iterpool));
+              SVN_ERR(show_branch_elision(subtree_path, empty,
+                                          subtree_only, empty, empty, empty,
+                                          implied_in_subtree, opt_state,
+                                          iterpool));
+
+              svn_hash_sets(subtree_mergeinfo, subtree_path, NULL);
+            }
 
           continue;
         }
@@ -1451,8 +1488,8 @@ show_obsoletes_summary(svn_min__branch_l
           /* Reasonably reduce the output. */
           eliminate_subpaths(surviving_copies);
           SVN_ERR(svn_cmdline_printf(iterpool,
-                                     _("    [copied or moved] %s\n"),
-                                     path));
+                                     _("    [r%ld, copied or moved] %s\n"),
+                                     deletion_rev, path));
           for (k = 0; k < surviving_copies->nelts && k < limit; ++k)
             {
               path = APR_ARRAY_IDX(surviving_copies, k, const char *);
@@ -1513,6 +1550,43 @@ add_wc_info(svn_min__cmd_baton_t *baton,
   return SVN_NO_ERROR;
 }
 
+/* Set *URL to a URL within CMD_BATON's repository that covers all FS paths
+ * in WC_MERGEINFO.  Use SESSION to access the repository.  Allocate *URL
+ * in RESULT_POOL and use SCRATCH_POOL for temporary allocations.
+ */
+static svn_error_t *
+get_url(const char **url,
+        apr_array_header_t *wc_mergeinfo,
+        svn_ra_session_t *session,
+        svn_min__cmd_baton_t *cmd_baton,
+        apr_pool_t *result_pool,
+        apr_pool_t *scratch_pool)
+{
+  /* This is the deepest FS path that we may use. */
+  const char *path = svn_min__common_parent(wc_mergeinfo, scratch_pool,
+                                            scratch_pool);
+  SVN_ERR_ASSERT(*path == '/');
+  ++path;
+
+  /* While we are not at the repository root, check that PATH actually
+   * exists @HEAD.  If it doesn't retry with its parent. */
+  while (strlen(path))
+    {
+      svn_node_kind_t kind;
+      SVN_ERR(svn_ra_check_path(session, path, SVN_INVALID_REVNUM, &kind,
+                                scratch_pool));
+      if (kind != svn_node_none)
+        break;
+
+      path = svn_dirent_dirname(path, scratch_pool);
+    }
+
+  /* Construct the result. */
+  *url = svn_path_url_add_component2(cmd_baton->repo_root, path,
+                                     result_pool);
+
+  return SVN_NO_ERROR;
+}
 
 svn_error_t *
 svn_min__run_normalize(void *baton,
@@ -1527,9 +1601,8 @@ svn_min__run_normalize(void *baton,
     {
       apr_array_header_t *wc_mergeinfo;
       svn_min__log_t *log = NULL;
+      svn_ra_session_t *session = NULL;
       svn_min__branch_lookup_t *lookup = cmd_baton->lookup;
-      const char *url;
-      const char *common_path;
 
       /* next target */
       svn_pool_clear(iterpool);
@@ -1544,29 +1617,29 @@ svn_min__run_normalize(void *baton,
       if (wc_mergeinfo->nelts == 0)
         continue;
 
-      /* fetch log */
-      if (needs_log(cmd_baton->opt_state))
+      /* Open RA session.  Even if we don't need it for LOOKUP, checking
+       * the url for the LOG will require the session object. */
+      if (   (!lookup && needs_session(cmd_baton->opt_state))
+          || needs_log(cmd_baton->opt_state))
         {
           svn_pool_clear(subpool);
-          common_path = svn_min__common_parent(wc_mergeinfo, subpool, subpool);
-          SVN_ERR_ASSERT(*common_path == '/');
-          url = svn_path_url_add_component2(cmd_baton->repo_root,
-                                            common_path + 1,
-                                            subpool);
-          SVN_ERR(svn_min__log(&log, url, cmd_baton, iterpool, subpool));
+          SVN_ERR(add_wc_info(baton, i, iterpool, subpool));
+          SVN_ERR(svn_client_open_ra_session2(&session, cmd_baton->repo_root,
+                                              NULL, cmd_baton->ctx, iterpool,
+                                              subpool));
+          if (!lookup)
+            lookup = svn_min__branch_lookup_create(session, iterpool);
         }
 
-      /* open RA session */
-      if (!lookup && needs_session(cmd_baton->opt_state))
+      /* fetch log */
+      if (needs_log(cmd_baton->opt_state))
         {
-          svn_ra_session_t *session;
+          const char *url;
 
           svn_pool_clear(subpool);
-          SVN_ERR(add_wc_info(baton, i, iterpool, subpool));
-          SVN_ERR(svn_client_open_ra_session2(&session, cmd_baton->repo_root,
-                                              NULL, cmd_baton->ctx, iterpool,
-                                              subpool));
-          lookup = svn_min__branch_lookup_create(session, iterpool);
+          SVN_ERR(get_url(&url, wc_mergeinfo, session, cmd_baton, subpool,
+                          subpool));
+          SVN_ERR(svn_min__log(&log, url, cmd_baton, iterpool, subpool));
         }
 
       /* actual normalization */

Modified: subversion/branches/move-tracking-2/tools/dev/fsfs-access-map.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dev/fsfs-access-map.c?rev=1697327&r1=1697326&r2=1697327&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dev/fsfs-access-map.c (original)
+++ subversion/branches/move-tracking-2/tools/dev/fsfs-access-map.c Mon Aug 24 08:23:06 2015
@@ -225,7 +225,7 @@ open_file(const char *name, int handle)
       *key = handle;
 
       handle_info = apr_pcalloc(pool, sizeof(*handle_info));
-      apr_hash_set(handles, key, sizeof(handle), handle_info);
+      apr_hash_set(handles, key, sizeof(*key), handle_info);
     }
 
   /* link handle to file */